From 80e680eb9c7a06ab7986da3aa82355061da2c655 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Wed, 17 Jun 2020 16:14:46 +0200 Subject: [PATCH 01/47] fix fluid tank voxel shape gap --- .../contraptions/fluids/FluidTankBlock.java | 205 ++++++++++-------- .../fluids/FluidTankRenderer.java | 2 +- 2 files changed, 110 insertions(+), 97 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java index 6ef74d921..9e665f575 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.fluids; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.BlockItemUseContext; @@ -14,6 +15,7 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.world.IBlockReader; import net.minecraft.world.ILightReader; import net.minecraft.world.IWorld; @@ -23,114 +25,125 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class FluidTankBlock extends Block { - public static final BooleanProperty TOP = BooleanProperty.create("top"); - public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom"); + public static final BooleanProperty TOP = BooleanProperty.create("top"); + public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom"); - public FluidTankBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - setDefaultState(getDefaultState().with(TOP, true) - .with(BOTTOM, true)); - } - public static boolean shouldDrawDiagonalFiller(ILightReader world, BlockPos pos, BlockState state, boolean north, - boolean east) { - if (!isTank(state)) - return false; - int northOffset = north ? 1 : -1; - int eastOffset = east ? 1 : -1; - if (!isTank(world.getBlockState(pos.north(northOffset)))) - return false; - if (!isTank(world.getBlockState(pos.east(eastOffset)))) - return false; - return !isTank(world.getBlockState(pos.east(eastOffset) - .north(northOffset))); - } + public FluidTankBlock(Properties p_i48440_1_) { + super(p_i48440_1_); + setDefaultState(getDefaultState().with(TOP, true) + .with(BOTTOM, true)); + } - public static boolean shouldDrawCapFiller(ILightReader world, BlockPos pos, BlockState state, Direction direction, - boolean top) { - if (!isTank(state)) - return false; - if (top && !state.get(TOP)) - return false; - if (!top && !state.get(BOTTOM)) - return false; - BlockPos adjacentPos = pos.offset(direction); - BlockState adjacentState = world.getBlockState(adjacentPos); - if (!isTank(adjacentState)) - return false; - if (top && adjacentState.get(TOP)) - return false; - return top || !adjacentState.get(BOTTOM); - } + public static boolean shouldDrawDiagonalFiller(ILightReader world, BlockPos pos, BlockState state, boolean north, + boolean east) { + if (!isTank(state)) + return false; + int northOffset = north ? 1 : -1; + int eastOffset = east ? 1 : -1; + if (!isTank(world.getBlockState(pos.north(northOffset)))) + return false; + if (!isTank(world.getBlockState(pos.east(eastOffset)))) + return false; + return !isTank(world.getBlockState(pos.east(eastOffset) + .north(northOffset))); + } - public static boolean isTank(BlockState state) { - return state.getBlock() instanceof FluidTankBlock; - } + public static boolean shouldDrawCapFiller(ILightReader world, BlockPos pos, BlockState state, Direction direction, + boolean top) { + if (!isTank(state)) + return false; + if (top && !state.get(TOP)) + return false; + if (!top && !state.get(BOTTOM)) + return false; + BlockPos adjacentPos = pos.offset(direction); + BlockState adjacentState = world.getBlockState(adjacentPos); + if (!isTank(adjacentState)) + return false; + if (top && adjacentState.get(TOP)) + return false; + return top || !adjacentState.get(BOTTOM); + } - @Override - protected void fillStateContainer(Builder p_206840_1_) { - p_206840_1_.add(TOP, BOTTOM); - } + public static boolean isTank(BlockState state) { + return state.getBlock() instanceof FluidTankBlock; + } - @Override - public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { - World world = p_196258_1_.getWorld(); - BlockPos pos = p_196258_1_.getPos(); - BlockState state = super.getStateForPlacement(p_196258_1_); - state = updateState(state, world, pos, Direction.UP); - state = updateState(state, world, pos, Direction.DOWN); - return state; - } + @Override + protected void fillStateContainer(Builder p_206840_1_) { + p_206840_1_.add(TOP, BOTTOM); + } - private boolean isTankToDirection(IBlockReader world, BlockPos pos, Direction direction) { - return world.getBlockState(pos.offset(direction)).getBlock() instanceof FluidTankBlock; - } + @Override + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + World world = p_196258_1_.getWorld(); + BlockPos pos = p_196258_1_.getPos(); + BlockState state = super.getStateForPlacement(p_196258_1_); + state = updateState(state, world, pos, Direction.UP); + state = updateState(state, world, pos, Direction.DOWN); + return state; + } - public AxisAlignedBB getTankBodyShape(IBlockReader world, BlockPos pos) { - return new AxisAlignedBB((isTankToDirection(world, pos, Direction.WEST) ? 0 : 2) / 16f, - (isTankToDirection(world, pos, Direction.DOWN) ? 0 : 4) / 16f, - (isTankToDirection(world, pos, Direction.NORTH) ? 0 : 2) / 16f, - (isTankToDirection(world, pos, Direction.EAST) ? 16 : 14) / 16f, - (isTankToDirection(world, pos, Direction.UP) ? 16 : 12) / 16f, - (isTankToDirection(world, pos, Direction.SOUTH) ? 16 : 14) / 16f); - } + private boolean isTankToDirection(IBlockReader world, BlockPos pos, Direction direction) { + return world.getBlockState(pos.offset(direction)).getBlock() instanceof FluidTankBlock; + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, - ISelectionContext p_220053_4_) { - boolean top = state.get(TOP); - boolean bottom = state.get(BOTTOM); - return top ? bottom ? AllShapes.TANK_TOP_BOTTOM : AllShapes.TANK_TOP - : bottom ? AllShapes.TANK_BOTTOM : AllShapes.TANK; - } + public AxisAlignedBB getTankShape(IBlockReader world, BlockPos pos) { + return new AxisAlignedBB((isTankToDirection(world, pos, Direction.WEST) ? 0 : 2) / 16f, + (isTankToDirection(world, pos, Direction.DOWN) ? 0 : 4) / 16f, + (isTankToDirection(world, pos, Direction.NORTH) ? 0 : 2) / 16f, + (isTankToDirection(world, pos, Direction.EAST) ? 16 : 14) / 16f, + (isTankToDirection(world, pos, Direction.UP) ? 16 : 12) / 16f, + (isTankToDirection(world, pos, Direction.SOUTH) ? 16 : 14) / 16f); - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world, - BlockPos pos, BlockPos p_196271_6_) { - return updateState(state, world, pos, direction); - } + } - private BlockState updateState(BlockState state, ILightReader reader, BlockPos pos, Direction direction) { - if (direction.getAxis() - .isHorizontal()) - return state; - return state.with(direction == Direction.UP ? TOP : BOTTOM, - !AllBlocks.FLUID_TANK.has(reader.getBlockState(pos.offset(direction)))); - } + public AxisAlignedBB getBodyShape(IBlockReader world, BlockPos pos) { + return new AxisAlignedBB((isTankToDirection(world, pos, Direction.WEST) ? 0 : 1) / 16f, + 0.25f, + (isTankToDirection(world, pos, Direction.NORTH) ? 0 : 1) / 16f, + (isTankToDirection(world, pos, Direction.EAST) ? 16 : 15) / 16f, + 0.75f, + (isTankToDirection(world, pos, Direction.SOUTH) ? 16 : 15) / 16f); + } - @Override - @OnlyIn(Dist.CLIENT) - public boolean isSideInvisible(BlockState state, BlockState adjacentBlockState, Direction side) { - return adjacentBlockState.getBlock() == this; - } + @Override + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, + ISelectionContext p_220053_4_) { + boolean top = state.get(TOP); + boolean bottom = state.get(BOTTOM); + return VoxelShapes.or(top ? bottom ? AllShapes.TANK_TOP_BOTTOM : AllShapes.TANK_TOP + : bottom ? AllShapes.TANK_BOTTOM : AllShapes.TANK, VoxelShapes.create(getBodyShape(world, pos))); + } - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world, + BlockPos pos, BlockPos p_196271_6_) { + return updateState(state, world, pos, direction); + } - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.FLUID_TANK.create(); - } + private BlockState updateState(BlockState state, ILightReader reader, BlockPos pos, Direction direction) { + if (direction.getAxis() + .isHorizontal()) + return state; + return state.with(direction == Direction.UP ? TOP : BOTTOM, + !AllBlocks.FLUID_TANK.has(reader.getBlockState(pos.offset(direction)))); + } + + @Override + @OnlyIn(Dist.CLIENT) + public boolean isSideInvisible(BlockState state, BlockState adjacentBlockState, Direction side) { + return adjacentBlockState.getBlock() == this; + } + + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.FLUID_TANK.create(); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankRenderer.java index 452de1254..54405a81e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankRenderer.java @@ -175,7 +175,7 @@ public class FluidTankRenderer extends SafeTileEntityRenderer getTanksToRender(FluidTankTileEntity te) { - return Collections.singletonList(new FluidTankRenderInfo(te, ((FluidTankBlock) te.getBlockState().getBlock()).getTankBodyShape(te.getWorld(), te.getPos()))); + return Collections.singletonList(new FluidTankRenderInfo(te, ((FluidTankBlock) te.getBlockState().getBlock()).getTankShape(te.getWorld(), te.getPos()))); } private static class FluidTankRenderInfo { From dc43f10451b0e5577da8fb1b52e9927c53a1b117 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Wed, 17 Jun 2020 16:53:36 +0200 Subject: [PATCH 02/47] pipe water logging --- .../contraptions/fluids/FluidPipeBlock.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java index 20c2ff3e2..f9a05f43f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java @@ -3,9 +3,13 @@ package com.simibubi.create.content.contraptions.fluids; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; import net.minecraft.block.SixWayBlock; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.AxisDirection; @@ -17,10 +21,11 @@ import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import javax.annotation.Nullable; -public class FluidPipeBlock extends SixWayBlock { +public class FluidPipeBlock extends SixWayBlock implements IWaterLoggable { public FluidPipeBlock(Properties properties) { super(4 / 16f, properties); + this.setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); } public static boolean isPipe(BlockState state) { @@ -98,18 +103,22 @@ public class FluidPipeBlock extends SixWayBlock { @Override protected void fillStateContainer(Builder builder) { - builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN); + builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN, BlockStateProperties.WATERLOGGED); } @Override public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); return updateBlockState(getDefaultState(), context.getNearestLookingDirection(), null, context.getWorld(), - context.getPos()); + context.getPos()).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); } @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } return updateBlockState(state, direction, direction.getOpposite(), world, pos); } @@ -139,4 +148,9 @@ public class FluidPipeBlock extends SixWayBlock { return state.with(FACING_TO_PROPERTY_MAP.get(preferredDirection), true) .with(FACING_TO_PROPERTY_MAP.get(preferredDirection.getOpposite()), true); } + + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); + } } From c51e2abf48581e947aaae49ae093774c9f8d69e7 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Wed, 17 Jun 2020 23:16:27 +0200 Subject: [PATCH 03/47] water logging and contraptions --- .../structureMovement/Contraption.java | 1322 ++++++++--------- .../piston/MechanicalPistonHeadBlock.java | 127 +- .../piston/PistonExtensionPoleBlock.java | 145 +- .../structureMovement/pulley/PulleyBlock.java | 230 +-- .../pulley/PulleyTileEntity.java | 296 ++-- .../contraptions/fluids/FluidPipeBlock.java | 1 + .../contraptions/fluids/PumpBlock.java | 98 +- .../relays/elementary/CogWheelBlock.java | 153 +- .../relays/elementary/ShaftBlock.java | 131 +- 9 files changed, 1329 insertions(+), 1174 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index a34df62e1..f89f05aa0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -1,25 +1,5 @@ package com.simibubi.create.content.contraptions.components.structureMovement; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.BiConsumer; -import java.util.function.BiPredicate; -import java.util.stream.Collectors; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.tuple.MutablePair; -import org.apache.commons.lang3.tuple.Pair; - import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.saw.SawBlock; @@ -42,20 +22,15 @@ import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.AbstractButtonBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.ChestBlock; -import net.minecraft.block.DoorBlock; -import net.minecraft.block.PressurePlateBlock; -import net.minecraft.block.SlimeBlock; +import net.minecraft.block.*; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderTypeLookup; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.nbt.NBTUtil; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.ChestType; import net.minecraft.state.properties.DoubleBlockHalf; import net.minecraft.tileentity.TileEntity; @@ -72,651 +47,666 @@ import net.minecraft.world.gen.feature.template.Template.BlockInfo; import net.minecraftforge.common.util.Constants.BlockFlags; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import org.apache.commons.lang3.tuple.MutablePair; +import org.apache.commons.lang3.tuple.Pair; + +import javax.annotation.Nullable; +import java.util.*; +import java.util.function.BiConsumer; +import java.util.function.BiPredicate; +import java.util.stream.Collectors; + +import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; +import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; public abstract class Contraption { - public Map blocks; - public Map storage; - public List> actors; - public CombinedInvWrapper inventory; - public List customRenderTEs; - public Set> superglue; + public Map blocks; + public Map storage; + public List> actors; + public CombinedInvWrapper inventory; + public List customRenderTEs; + public Set> superglue; - public AxisAlignedBB bounds; - public boolean stalled; + public AxisAlignedBB bounds; + public boolean stalled; - protected Set cachedColliders; - protected Direction cachedColliderDirection; - protected BlockPos anchor; + protected Set cachedColliders; + protected Direction cachedColliderDirection; + protected BlockPos anchor; + protected List glueToRemove; + List renderOrder; - List renderOrder; - protected List glueToRemove; + public Contraption() { + blocks = new HashMap<>(); + storage = new HashMap<>(); + actors = new ArrayList<>(); + superglue = new HashSet<>(); + renderOrder = new ArrayList<>(); + customRenderTEs = new ArrayList<>(); + glueToRemove = new ArrayList<>(); + } - public Contraption() { - blocks = new HashMap<>(); - storage = new HashMap<>(); - actors = new ArrayList<>(); - superglue = new HashSet<>(); - renderOrder = new ArrayList<>(); - customRenderTEs = new ArrayList<>(); - glueToRemove = new ArrayList<>(); + protected static boolean isChassis(BlockState state) { + return state.getBlock() instanceof AbstractChassisBlock; + } + + public static CompoundNBT getTileEntityNBT(World world, BlockPos pos) { + TileEntity tileentity = world.getTileEntity(pos); + CompoundNBT compoundnbt = null; + if (tileentity != null) { + compoundnbt = tileentity.write(new CompoundNBT()); + compoundnbt.remove("x"); + compoundnbt.remove("y"); + compoundnbt.remove("z"); + } + return compoundnbt; + } + + public static Contraption fromNBT(World world, CompoundNBT nbt) { + String type = nbt.getString("Type"); + Contraption contraption = AllContraptionTypes.fromType(type); + contraption.readNBT(world, nbt); + return contraption; + } + + public static boolean isFrozen() { + return AllConfigs.SERVER.control.freezeContraptions.get(); + } + + protected static MovementBehaviour getMovement(BlockState state) { + Block block = state.getBlock(); + if (!(block instanceof IPortableBlock)) + return null; + return ((IPortableBlock) block).getMovementBehaviour(); + } + + public Set getColliders(World world, Direction movementDirection) { + if (blocks == null) + return null; + if (cachedColliders == null || cachedColliderDirection != movementDirection) { + cachedColliders = new HashSet<>(); + cachedColliderDirection = movementDirection; + + for (BlockInfo info : blocks.values()) { + BlockPos offsetPos = info.pos.offset(movementDirection); + if (info.state.getCollisionShape(world, offsetPos) + .isEmpty()) + continue; + if (blocks.containsKey(offsetPos) && !blocks.get(offsetPos).state.getCollisionShape(world, offsetPos) + .isEmpty()) + continue; + cachedColliders.add(info.pos); + } + + } + return cachedColliders; + } + + public boolean searchMovedStructure(World world, BlockPos pos, @Nullable Direction forcedDirection) { + List frontier = new ArrayList<>(); + Set visited = new HashSet<>(); + anchor = pos; + + if (bounds == null) + bounds = new AxisAlignedBB(BlockPos.ZERO); + + if (!BlockMovementTraits.isBrittle(world.getBlockState(pos))) + frontier.add(pos); + if (!addToInitialFrontier(world, pos, forcedDirection, frontier)) + return false; + for (int limit = 100000; limit > 0; limit--) { + if (frontier.isEmpty()) + return true; + if (!moveBlock(world, frontier.remove(0), forcedDirection, frontier, visited)) + return false; + } + return false; + } + + public void gatherStoredItems() { + List list = storage.values() + .stream() + .map(MountedStorage::getItemHandler) + .collect(Collectors.toList()); + inventory = new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); + } + + protected boolean addToInitialFrontier(World world, BlockPos pos, Direction forcedDirection, + List frontier) { + return true; + } + + protected boolean moveBlock(World world, BlockPos pos, Direction forcedDirection, List frontier, + Set visited) { + visited.add(pos); + frontier.remove(pos); + + if (!world.isBlockPresent(pos)) + return false; + if (isAnchoringBlockAt(pos)) + return true; + if (!BlockMovementTraits.movementNecessary(world, pos)) + return true; + if (!BlockMovementTraits.movementAllowed(world, pos)) + return false; + BlockState state = world.getBlockState(pos); + if (isChassis(state) && !moveChassis(world, pos, forcedDirection, frontier, visited)) + return false; + + if (AllBlocks.ADJUSTABLE_CRATE.has(state)) + AdjustableCrateBlock.splitCrate(world, pos); + if (AllBlocks.BELT.has(state)) { + BlockPos nextPos = BeltBlock.nextSegmentPosition(state, pos, true); + BlockPos prevPos = BeltBlock.nextSegmentPosition(state, pos, false); + if (nextPos != null && !visited.contains(nextPos)) + frontier.add(nextPos); + if (prevPos != null && !visited.contains(prevPos)) + frontier.add(prevPos); + } + + // Pulleys drag their rope and their attached structure + if (state.getBlock() instanceof PulleyBlock) { + int limit = AllConfigs.SERVER.kinetics.maxRopeLength.get(); + BlockPos ropePos = pos; + while (limit-- >= 0) { + ropePos = ropePos.down(); + if (!world.isBlockPresent(ropePos)) + break; + BlockState ropeState = world.getBlockState(ropePos); + Block block = ropeState.getBlock(); + if (!(block instanceof RopeBlock) && !(block instanceof MagnetBlock)) { + if (!visited.contains(ropePos)) + frontier.add(ropePos); + break; + } + add(ropePos, capture(world, ropePos)); + } + } + + // Pistons drag their attaches poles and extension + if (state.getBlock() instanceof MechanicalPistonBlock) { + int limit = AllConfigs.SERVER.kinetics.maxPistonPoles.get(); + Direction direction = state.get(MechanicalPistonBlock.FACING); + if (state.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED) { + BlockPos searchPos = pos; + while (limit-- >= 0) { + searchPos = searchPos.offset(direction); + BlockState blockState = world.getBlockState(searchPos); + if (isExtensionPole(blockState)) { + if (blockState.get(PistonExtensionPoleBlock.FACING) + .getAxis() != direction.getAxis()) + break; + if (!visited.contains(searchPos)) + frontier.add(searchPos); + continue; + } + if (isPistonHead(blockState)) + if (!visited.contains(searchPos)) + frontier.add(searchPos); + break; + } + if (limit <= -1) + return false; + } + + BlockPos searchPos = pos; + while (limit-- >= 0) { + searchPos = searchPos.offset(direction.getOpposite()); + BlockState blockState = world.getBlockState(searchPos); + if (isExtensionPole(blockState)) { + if (blockState.get(PistonExtensionPoleBlock.FACING) + .getAxis() != direction.getAxis()) + break; + if (!visited.contains(searchPos)) + frontier.add(searchPos); + continue; + } + break; + } + + if (limit <= -1) + return false; + } + + // Doors try to stay whole + if (state.getBlock() instanceof DoorBlock) { + BlockPos otherPartPos = pos.up(state.get(DoorBlock.HALF) == DoubleBlockHalf.LOWER ? 1 : -1); + if (!visited.contains(otherPartPos)) + frontier.add(otherPartPos); + } + + Map superglue = SuperGlueHandler.gatherGlue(world, pos); + + // Slime blocks drag adjacent blocks if possible + boolean isSlimeBlock = state.getBlock() instanceof SlimeBlock; + for (Direction offset : Direction.values()) { + BlockPos offsetPos = pos.offset(offset); + BlockState blockState = world.getBlockState(offsetPos); + if (isAnchoringBlockAt(offsetPos)) + continue; + if (!BlockMovementTraits.movementAllowed(world, offsetPos)) { + if (offset == forcedDirection && isSlimeBlock) + return false; + continue; + } + + boolean wasVisited = visited.contains(offsetPos); + boolean faceHasGlue = superglue.containsKey(offset); + boolean blockAttachedTowardsFace = + BlockMovementTraits.isBlockAttachedTowards(blockState, offset.getOpposite()); + boolean brittle = BlockMovementTraits.isBrittle(blockState); + + if (!wasVisited && ((isSlimeBlock && !brittle) || blockAttachedTowardsFace || faceHasGlue)) + frontier.add(offsetPos); + + if (faceHasGlue) + addGlue(superglue.get(offset)); + } + + add(pos, capture(world, pos)); + return blocks.size() <= AllConfigs.SERVER.kinetics.maxBlocksMoved.get(); } - public Set getColliders(World world, Direction movementDirection) { - if (blocks == null) - return null; - if (cachedColliders == null || cachedColliderDirection != movementDirection) { - cachedColliders = new HashSet<>(); - cachedColliderDirection = movementDirection; - - for (BlockInfo info : blocks.values()) { - BlockPos offsetPos = info.pos.offset(movementDirection); - if (info.state.getCollisionShape(world, offsetPos) - .isEmpty()) - continue; - if (blocks.containsKey(offsetPos) && !blocks.get(offsetPos).state.getCollisionShape(world, offsetPos) - .isEmpty()) - continue; - cachedColliders.add(info.pos); - } - - } - return cachedColliders; - } - - public boolean searchMovedStructure(World world, BlockPos pos, @Nullable Direction forcedDirection) { - List frontier = new ArrayList<>(); - Set visited = new HashSet<>(); - anchor = pos; - - if (bounds == null) - bounds = new AxisAlignedBB(BlockPos.ZERO); - - if (!BlockMovementTraits.isBrittle(world.getBlockState(pos))) - frontier.add(pos); - if (!addToInitialFrontier(world, pos, forcedDirection, frontier)) - return false; - for (int limit = 100000; limit > 0; limit--) { - if (frontier.isEmpty()) - return true; - if (!moveBlock(world, frontier.remove(0), forcedDirection, frontier, visited)) - return false; - } - return false; - } - - public void gatherStoredItems() { - List list = storage.values() - .stream() - .map(MountedStorage::getItemHandler) - .collect(Collectors.toList()); - inventory = new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); - } - - protected boolean addToInitialFrontier(World world, BlockPos pos, Direction forcedDirection, - List frontier) { - return true; - } - - protected boolean moveBlock(World world, BlockPos pos, Direction forcedDirection, List frontier, - Set visited) { - visited.add(pos); - frontier.remove(pos); - - if (!world.isBlockPresent(pos)) - return false; - if (isAnchoringBlockAt(pos)) - return true; - if (!BlockMovementTraits.movementNecessary(world, pos)) - return true; - if (!BlockMovementTraits.movementAllowed(world, pos)) - return false; - BlockState state = world.getBlockState(pos); - if (isChassis(state) && !moveChassis(world, pos, forcedDirection, frontier, visited)) - return false; - - if (AllBlocks.ADJUSTABLE_CRATE.has(state)) - AdjustableCrateBlock.splitCrate(world, pos); - if (AllBlocks.BELT.has(state)) { - BlockPos nextPos = BeltBlock.nextSegmentPosition(state, pos, true); - BlockPos prevPos = BeltBlock.nextSegmentPosition(state, pos, false); - if (nextPos != null && !visited.contains(nextPos)) - frontier.add(nextPos); - if (prevPos != null && !visited.contains(prevPos)) - frontier.add(prevPos); - } - - // Pulleys drag their rope and their attached structure - if (state.getBlock() instanceof PulleyBlock) { - int limit = AllConfigs.SERVER.kinetics.maxRopeLength.get(); - BlockPos ropePos = pos; - while (limit-- >= 0) { - ropePos = ropePos.down(); - if (!world.isBlockPresent(ropePos)) - break; - BlockState ropeState = world.getBlockState(ropePos); - Block block = ropeState.getBlock(); - if (!(block instanceof RopeBlock) && !(block instanceof MagnetBlock)) { - if (!visited.contains(ropePos)) - frontier.add(ropePos); - break; - } - add(ropePos, capture(world, ropePos)); - } - } - - // Pistons drag their attaches poles and extension - if (state.getBlock() instanceof MechanicalPistonBlock) { - int limit = AllConfigs.SERVER.kinetics.maxPistonPoles.get(); - Direction direction = state.get(MechanicalPistonBlock.FACING); - if (state.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED) { - BlockPos searchPos = pos; - while (limit-- >= 0) { - searchPos = searchPos.offset(direction); - BlockState blockState = world.getBlockState(searchPos); - if (isExtensionPole(blockState)) { - if (blockState.get(PistonExtensionPoleBlock.FACING) - .getAxis() != direction.getAxis()) - break; - if (!visited.contains(searchPos)) - frontier.add(searchPos); - continue; - } - if (isPistonHead(blockState)) - if (!visited.contains(searchPos)) - frontier.add(searchPos); - break; - } - if (limit <= -1) - return false; - } - - BlockPos searchPos = pos; - while (limit-- >= 0) { - searchPos = searchPos.offset(direction.getOpposite()); - BlockState blockState = world.getBlockState(searchPos); - if (isExtensionPole(blockState)) { - if (blockState.get(PistonExtensionPoleBlock.FACING) - .getAxis() != direction.getAxis()) - break; - if (!visited.contains(searchPos)) - frontier.add(searchPos); - continue; - } - break; - } - - if (limit <= -1) - return false; - } - - // Doors try to stay whole - if (state.getBlock() instanceof DoorBlock) { - BlockPos otherPartPos = pos.up(state.get(DoorBlock.HALF) == DoubleBlockHalf.LOWER ? 1 : -1); - if (!visited.contains(otherPartPos)) - frontier.add(otherPartPos); - } - - Map superglue = SuperGlueHandler.gatherGlue(world, pos); - - // Slime blocks drag adjacent blocks if possible - boolean isSlimeBlock = state.getBlock() instanceof SlimeBlock; - for (Direction offset : Direction.values()) { - BlockPos offsetPos = pos.offset(offset); - BlockState blockState = world.getBlockState(offsetPos); - if (isAnchoringBlockAt(offsetPos)) - continue; - if (!BlockMovementTraits.movementAllowed(world, offsetPos)) { - if (offset == forcedDirection && isSlimeBlock) - return false; - continue; - } - - boolean wasVisited = visited.contains(offsetPos); - boolean faceHasGlue = superglue.containsKey(offset); - boolean blockAttachedTowardsFace = - BlockMovementTraits.isBlockAttachedTowards(blockState, offset.getOpposite()); - boolean brittle = BlockMovementTraits.isBrittle(blockState); - - if (!wasVisited && ((isSlimeBlock && !brittle) || blockAttachedTowardsFace || faceHasGlue)) - frontier.add(offsetPos); - - if (faceHasGlue) - addGlue(superglue.get(offset)); - } - - add(pos, capture(world, pos)); - if (blocks.size() > AllConfigs.SERVER.kinetics.maxBlocksMoved.get()) - return false; - - return true; - } - - protected boolean isAnchoringBlockAt(BlockPos pos) { - return pos.equals(anchor); - } - - protected static boolean isChassis(BlockState state) { - return state.getBlock() instanceof AbstractChassisBlock; - } - - private boolean moveChassis(World world, BlockPos pos, Direction movementDirection, List frontier, - Set visited) { - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof ChassisTileEntity)) - return false; - ChassisTileEntity chassis = (ChassisTileEntity) te; - chassis.addAttachedChasses(frontier, visited); - List includedBlockPositions = chassis.getIncludedBlockPositions(movementDirection, false); - if (includedBlockPositions == null) - return false; - for (BlockPos blockPos : includedBlockPositions) - if (!visited.contains(blockPos)) - frontier.add(blockPos); - return true; - } - - protected Pair capture(World world, BlockPos pos) { - BlockState blockstate = world.getBlockState(pos); - if (AllBlocks.MECHANICAL_SAW.has(blockstate)) - blockstate = blockstate.with(SawBlock.RUNNING, true); - if (blockstate.getBlock() instanceof ChestBlock) - blockstate = blockstate.with(ChestBlock.TYPE, ChestType.SINGLE); - if (AllBlocks.ADJUSTABLE_CRATE.has(blockstate)) - blockstate = blockstate.with(AdjustableCrateBlock.DOUBLE, false); - if (AllBlocks.REDSTONE_CONTACT.has(blockstate)) - blockstate = blockstate.with(RedstoneContactBlock.POWERED, true); - if (blockstate.getBlock() instanceof AbstractButtonBlock) { - blockstate = blockstate.with(AbstractButtonBlock.POWERED, false); - world.getPendingBlockTicks() - .scheduleTick(pos, blockstate.getBlock(), -1); - } - if (blockstate.getBlock() instanceof PressurePlateBlock) { - blockstate = blockstate.with(PressurePlateBlock.POWERED, false); - world.getPendingBlockTicks() - .scheduleTick(pos, blockstate.getBlock(), -1); - } - CompoundNBT compoundnbt = getTileEntityNBT(world, pos); - TileEntity tileentity = world.getTileEntity(pos); - return Pair.of(new BlockInfo(pos, blockstate, compoundnbt), tileentity); - } - - public static CompoundNBT getTileEntityNBT(World world, BlockPos pos) { - TileEntity tileentity = world.getTileEntity(pos); - CompoundNBT compoundnbt = null; - if (tileentity != null) { - compoundnbt = tileentity.write(new CompoundNBT()); - compoundnbt.remove("x"); - compoundnbt.remove("y"); - compoundnbt.remove("z"); - } - return compoundnbt; - } - - public void addGlue(SuperGlueEntity entity) { - BlockPos pos = entity.getHangingPosition(); - Direction direction = entity.getFacingDirection(); - BlockPos localPos = pos.subtract(anchor); - this.superglue.add(Pair.of(localPos, direction)); - glueToRemove.add(entity); - } - - public void add(BlockPos pos, Pair pair) { - BlockInfo captured = pair.getKey(); - BlockPos localPos = pos.subtract(anchor); - BlockInfo blockInfo = new BlockInfo(localPos, captured.state, captured.nbt); - - if (blocks.put(localPos, blockInfo) != null) - return; - bounds = bounds.union(new AxisAlignedBB(localPos)); - - TileEntity te = pair.getValue(); - if (te != null && MountedStorage.canUseAsStorage(te)) - storage.put(localPos, new MountedStorage(te)); - if (captured.state.getBlock() instanceof IPortableBlock) - getActors().add(MutablePair.of(blockInfo, null)); - } - - public static Contraption fromNBT(World world, CompoundNBT nbt) { - String type = nbt.getString("Type"); - Contraption contraption = AllContraptionTypes.fromType(type); - contraption.readNBT(world, nbt); - return contraption; - } - - public void readNBT(World world, CompoundNBT nbt) { - blocks.clear(); - renderOrder.clear(); - customRenderTEs.clear(); - - nbt.getList("Blocks", 10) - .forEach(c -> { - CompoundNBT comp = (CompoundNBT) c; - BlockInfo info = new BlockInfo(NBTUtil.readBlockPos(comp.getCompound("Pos")), - NBTUtil.readBlockState(comp.getCompound("Block")), - comp.contains("Data") ? comp.getCompound("Data") : null); - blocks.put(info.pos, info); - - if (world.isRemote) { - Block block = info.state.getBlock(); - if (RenderTypeLookup.canRenderInLayer(info.state, RenderType.getTranslucent())) - renderOrder.add(info.pos); - else - renderOrder.add(0, info.pos); - CompoundNBT tag = info.nbt; - if (tag == null || block instanceof IPortableBlock) - return; - - tag.putInt("x", info.pos.getX()); - tag.putInt("y", info.pos.getY()); - tag.putInt("z", info.pos.getZ()); - - TileEntity te = TileEntity.create(tag); - te.setLocation(new WrappedWorld(world) { - - @Override - public BlockState getBlockState(BlockPos pos) { - if (!pos.equals(te.getPos())) - return Blocks.AIR.getDefaultState(); - return info.state; - } - - }, te.getPos()); - if (te instanceof KineticTileEntity) - ((KineticTileEntity) te).setSpeed(0); - te.getBlockState(); - customRenderTEs.add(te); - } - }); - - actors.clear(); - nbt.getList("Actors", 10) - .forEach(c -> { - CompoundNBT comp = (CompoundNBT) c; - BlockInfo info = blocks.get(NBTUtil.readBlockPos(comp.getCompound("Pos"))); - MovementContext context = MovementContext.readNBT(world, info, comp); - context.contraption = this; - getActors().add(MutablePair.of(info, context)); - }); - - superglue.clear(); - nbt.getList("Superglue", 10) - .forEach(c -> { - CompoundNBT comp = (CompoundNBT) c; - superglue.add(Pair.of(NBTUtil.readBlockPos(comp.getCompound("Pos")), - Direction.byIndex(comp.getByte("Direction")))); - }); - - storage.clear(); - nbt.getList("Storage", 10) - .forEach(c -> { - CompoundNBT comp = (CompoundNBT) c; - storage.put(NBTUtil.readBlockPos(comp.getCompound("Pos")), - new MountedStorage(comp.getCompound("Data"))); - }); - List list = storage.values() - .stream() - .map(MountedStorage::getItemHandler) - .collect(Collectors.toList()); - inventory = new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); - - if (nbt.contains("BoundsFront")) - bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", 5)); - - stalled = nbt.getBoolean("Stalled"); - anchor = NBTUtil.readBlockPos(nbt.getCompound("Anchor")); - } - - public CompoundNBT writeNBT() { - CompoundNBT nbt = new CompoundNBT(); - nbt.putString("Type", getType().id); - ListNBT blocksNBT = new ListNBT(); - for (BlockInfo block : this.blocks.values()) { - CompoundNBT c = new CompoundNBT(); - c.put("Block", NBTUtil.writeBlockState(block.state)); - c.put("Pos", NBTUtil.writeBlockPos(block.pos)); - if (block.nbt != null) - c.put("Data", block.nbt); - blocksNBT.add(c); - } - - ListNBT actorsNBT = new ListNBT(); - for (MutablePair actor : getActors()) { - CompoundNBT compound = new CompoundNBT(); - compound.put("Pos", NBTUtil.writeBlockPos(actor.left.pos)); - getMovement(actor.left.state).writeExtraData(actor.right); - actor.right.writeToNBT(compound); - actorsNBT.add(compound); - } - - ListNBT superglueNBT = new ListNBT(); - for (Pair glueEntry : superglue) { - CompoundNBT c = new CompoundNBT(); - c.put("Pos", NBTUtil.writeBlockPos(glueEntry.getKey())); - c.putByte("Direction", (byte) glueEntry.getValue() - .getIndex()); - superglueNBT.add(c); - } - - ListNBT storageNBT = new ListNBT(); - for (BlockPos pos : storage.keySet()) { - CompoundNBT c = new CompoundNBT(); - MountedStorage mountedStorage = storage.get(pos); - if (!mountedStorage.isWorking()) - continue; - c.put("Pos", NBTUtil.writeBlockPos(pos)); - c.put("Data", mountedStorage.serialize()); - storageNBT.add(c); - } - - nbt.put("Blocks", blocksNBT); - nbt.put("Actors", actorsNBT); - nbt.put("Superglue", superglueNBT); - nbt.put("Storage", storageNBT); - nbt.put("Anchor", NBTUtil.writeBlockPos(anchor)); - nbt.putBoolean("Stalled", stalled); - - if (bounds != null) { - ListNBT bb = NBTHelper.writeAABB(bounds); - nbt.put("BoundsFront", bb); - } - - return nbt; - } - - public static boolean isFrozen() { - return AllConfigs.SERVER.control.freezeContraptions.get(); - } - - public void removeBlocksFromWorld(IWorld world, BlockPos offset) { - removeBlocksFromWorld(world, offset, (pos, state) -> false); - } - - public void removeBlocksFromWorld(IWorld world, BlockPos offset, BiPredicate customRemoval) { - storage.values() - .forEach(MountedStorage::empty); - glueToRemove.forEach(SuperGlueEntity::remove); - - for (boolean brittles : Iterate.trueAndFalse) { - for (Iterator iterator = blocks.values() - .iterator(); iterator.hasNext();) { - BlockInfo block = iterator.next(); - if (brittles != BlockMovementTraits.isBrittle(block.state)) - continue; - - BlockPos add = block.pos.add(anchor) - .add(offset); - if (customRemoval.test(add, block.state)) - continue; - Block blockIn = world.getBlockState(add) - .getBlock(); - if (block.state.getBlock() != blockIn) - iterator.remove(); - world.getWorld() - .removeTileEntity(add); - int flags = 67; - if (blockIn instanceof DoorBlock) - flags = flags | 32 | 16; - world.setBlockState(add, Blocks.AIR.getDefaultState(), flags); - } - } - } - - public void addBlocksToWorld(World world, BlockPos offset, Vec3d rotation) { - addBlocksToWorld(world, offset, rotation, (pos, state) -> false); - } - - public void addBlocksToWorld(World world, BlockPos offset, Vec3d rotation, - BiPredicate customPlacement) { - stop(world); - - StructureTransform transform = new StructureTransform(offset, rotation); - - for (boolean nonBrittles : Iterate.trueAndFalse) { - for (BlockInfo block : blocks.values()) { - if (nonBrittles == BlockMovementTraits.isBrittle(block.state)) - continue; - - BlockPos targetPos = transform.apply(block.pos); - BlockState state = transform.apply(block.state); - - if (customPlacement.test(targetPos, state)) - continue; - - if (nonBrittles) - for (Direction face : Direction.values()) - state = state.updatePostPlacement(face, world.getBlockState(targetPos.offset(face)), world, - targetPos, targetPos.offset(face)); - - if (AllBlocks.MECHANICAL_SAW.has(state)) - state = state.with(SawBlock.RUNNING, false); - - BlockState blockState = world.getBlockState(targetPos); - if (blockState.getBlockHardness(world, targetPos) == -1 || (state.getCollisionShape(world, targetPos) - .isEmpty() - && !blockState.getCollisionShape(world, targetPos) - .isEmpty())) { - if (targetPos.getY() == 0) - targetPos = targetPos.up(); - world.playEvent(2001, targetPos, Block.getStateId(state)); - Block.spawnDrops(state, world, targetPos, null); - continue; - } - - world.destroyBlock(targetPos, true); - world.setBlockState(targetPos, state, 3 | BlockFlags.IS_MOVING); - - boolean verticalRotation = transform.rotationAxis == null || transform.rotationAxis.isHorizontal(); - verticalRotation = verticalRotation && transform.rotation != Rotation.NONE; - if (verticalRotation) { - if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock) - world.destroyBlock(targetPos, true); - } - - TileEntity tileEntity = world.getTileEntity(targetPos); - CompoundNBT tag = block.nbt; - if (tileEntity != null && tag != null) { - tag.putInt("x", targetPos.getX()); - tag.putInt("y", targetPos.getY()); - tag.putInt("z", targetPos.getZ()); - - if (verticalRotation && tileEntity instanceof PulleyTileEntity) { - tag.remove("Offset"); - tag.remove("InitialOffset"); - } - - tileEntity.read(tag); - - if (storage.containsKey(block.pos)) { - MountedStorage mountedStorage = storage.get(block.pos); - if (mountedStorage.isWorking()) - mountedStorage.fill(tileEntity); - } - } - } - } - - for (Pair pair : superglue) { - BlockPos targetPos = transform.apply(pair.getKey()); - Direction targetFacing = transform.transformFacing(pair.getValue()); - - SuperGlueEntity entity = new SuperGlueEntity(world, targetPos, targetFacing); - if (entity.onValidSurface()) { - if (!world.isRemote) - world.addEntity(entity); - } - - } - - } - - public void initActors(World world) { - for (MutablePair pair : actors) { - MovementContext context = new MovementContext(world, pair.left); - context.contraption = this; - getMovement(pair.left.state).startMoving(context); - pair.setRight(context); - } - } - - public AxisAlignedBB getBoundingBox() { - return bounds; - } - - public List> getActors() { - return actors; - } - - public BlockPos getAnchor() { - return anchor; - } - - public void stop(World world) { - foreachActor(world, (behaviour, ctx) -> { - behaviour.stopMoving(ctx); - ctx.position = null; - ctx.motion = Vec3d.ZERO; - ctx.relativeMotion = Vec3d.ZERO; - ctx.rotation = Vec3d.ZERO; - }); - } - - public void foreachActor(World world, BiConsumer callBack) { - for (MutablePair pair : actors) - callBack.accept(getMovement(pair.getLeft().state), pair.getRight()); - } - - protected static MovementBehaviour getMovement(BlockState state) { - Block block = state.getBlock(); - if (!(block instanceof IPortableBlock)) - return null; - return ((IPortableBlock) block).getMovementBehaviour(); - } - - public void expandBoundsAroundAxis(Axis axis) { - AxisAlignedBB bb = bounds; - double maxXDiff = Math.max(bb.maxX - 1, -bb.minX); - double maxYDiff = Math.max(bb.maxY - 1, -bb.minY); - double maxZDiff = Math.max(bb.maxZ - 1, -bb.minZ); - double maxDiff = 0; - - if (axis == Axis.X) - maxDiff = Math.max(maxZDiff, maxYDiff); - if (axis == Axis.Y) - maxDiff = Math.max(maxZDiff, maxXDiff); - if (axis == Axis.Z) - maxDiff = Math.max(maxXDiff, maxYDiff); - - Vec3d vec = new Vec3d(Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis) - .getDirectionVec()); - Vec3d planeByNormal = VecHelper.planeByNormal(vec); - Vec3d min = vec.mul(bb.minX, bb.minY, bb.minZ) - .add(planeByNormal.scale(-maxDiff)); - Vec3d max = vec.mul(bb.maxX, bb.maxY, bb.maxZ) - .add(planeByNormal.scale(maxDiff + 1)); - bounds = new AxisAlignedBB(min, max); - } - - protected abstract AllContraptionTypes getType(); + protected boolean isAnchoringBlockAt(BlockPos pos) { + return pos.equals(anchor); + } + + private boolean moveChassis(World world, BlockPos pos, Direction movementDirection, List frontier, + Set visited) { + TileEntity te = world.getTileEntity(pos); + if (!(te instanceof ChassisTileEntity)) + return false; + ChassisTileEntity chassis = (ChassisTileEntity) te; + chassis.addAttachedChasses(frontier, visited); + List includedBlockPositions = chassis.getIncludedBlockPositions(movementDirection, false); + if (includedBlockPositions == null) + return false; + for (BlockPos blockPos : includedBlockPositions) + if (!visited.contains(blockPos)) + frontier.add(blockPos); + return true; + } + + protected Pair capture(World world, BlockPos pos) { + BlockState blockstate = world.getBlockState(pos); + if (AllBlocks.MECHANICAL_SAW.has(blockstate)) + blockstate = blockstate.with(SawBlock.RUNNING, true); + if (blockstate.getBlock() instanceof ChestBlock) + blockstate = blockstate.with(ChestBlock.TYPE, ChestType.SINGLE); + if (AllBlocks.ADJUSTABLE_CRATE.has(blockstate)) + blockstate = blockstate.with(AdjustableCrateBlock.DOUBLE, false); + if (AllBlocks.REDSTONE_CONTACT.has(blockstate)) + blockstate = blockstate.with(RedstoneContactBlock.POWERED, true); + if (blockstate.getBlock() instanceof AbstractButtonBlock) { + blockstate = blockstate.with(AbstractButtonBlock.POWERED, false); + world.getPendingBlockTicks() + .scheduleTick(pos, blockstate.getBlock(), -1); + } + if (blockstate.getBlock() instanceof PressurePlateBlock) { + blockstate = blockstate.with(PressurePlateBlock.POWERED, false); + world.getPendingBlockTicks() + .scheduleTick(pos, blockstate.getBlock(), -1); + } + CompoundNBT compoundnbt = getTileEntityNBT(world, pos); + TileEntity tileentity = world.getTileEntity(pos); + return Pair.of(new BlockInfo(pos, blockstate, compoundnbt), tileentity); + } + + public void addGlue(SuperGlueEntity entity) { + BlockPos pos = entity.getHangingPosition(); + Direction direction = entity.getFacingDirection(); + BlockPos localPos = pos.subtract(anchor); + this.superglue.add(Pair.of(localPos, direction)); + glueToRemove.add(entity); + } + + public void add(BlockPos pos, Pair pair) { + BlockInfo captured = pair.getKey(); + BlockPos localPos = pos.subtract(anchor); + BlockInfo blockInfo = new BlockInfo(localPos, captured.state, captured.nbt); + + if (blocks.put(localPos, blockInfo) != null) + return; + bounds = bounds.union(new AxisAlignedBB(localPos)); + + TileEntity te = pair.getValue(); + if (te != null && MountedStorage.canUseAsStorage(te)) + storage.put(localPos, new MountedStorage(te)); + if (captured.state.getBlock() instanceof IPortableBlock) + getActors().add(MutablePair.of(blockInfo, null)); + } + + public void readNBT(World world, CompoundNBT nbt) { + blocks.clear(); + renderOrder.clear(); + customRenderTEs.clear(); + + nbt.getList("Blocks", 10) + .forEach(c -> { + CompoundNBT comp = (CompoundNBT) c; + BlockInfo info = new BlockInfo(NBTUtil.readBlockPos(comp.getCompound("Pos")), + NBTUtil.readBlockState(comp.getCompound("Block")), + comp.contains("Data") ? comp.getCompound("Data") : null); + blocks.put(info.pos, info); + + if (world.isRemote) { + Block block = info.state.getBlock(); + if (RenderTypeLookup.canRenderInLayer(info.state, RenderType.getTranslucent())) + renderOrder.add(info.pos); + else + renderOrder.add(0, info.pos); + CompoundNBT tag = info.nbt; + if (tag == null || block instanceof IPortableBlock) + return; + + tag.putInt("x", info.pos.getX()); + tag.putInt("y", info.pos.getY()); + tag.putInt("z", info.pos.getZ()); + + TileEntity te = TileEntity.create(tag); + te.setLocation(new WrappedWorld(world) { + + @Override + public BlockState getBlockState(BlockPos pos) { + if (!pos.equals(te.getPos())) + return Blocks.AIR.getDefaultState(); + return info.state; + } + + }, te.getPos()); + if (te instanceof KineticTileEntity) + ((KineticTileEntity) te).setSpeed(0); + te.getBlockState(); + customRenderTEs.add(te); + } + }); + + actors.clear(); + nbt.getList("Actors", 10) + .forEach(c -> { + CompoundNBT comp = (CompoundNBT) c; + BlockInfo info = blocks.get(NBTUtil.readBlockPos(comp.getCompound("Pos"))); + MovementContext context = MovementContext.readNBT(world, info, comp); + context.contraption = this; + getActors().add(MutablePair.of(info, context)); + }); + + superglue.clear(); + nbt.getList("Superglue", 10) + .forEach(c -> { + CompoundNBT comp = (CompoundNBT) c; + superglue.add(Pair.of(NBTUtil.readBlockPos(comp.getCompound("Pos")), + Direction.byIndex(comp.getByte("Direction")))); + }); + + storage.clear(); + nbt.getList("Storage", 10) + .forEach(c -> { + CompoundNBT comp = (CompoundNBT) c; + storage.put(NBTUtil.readBlockPos(comp.getCompound("Pos")), + new MountedStorage(comp.getCompound("Data"))); + }); + List list = storage.values() + .stream() + .map(MountedStorage::getItemHandler) + .collect(Collectors.toList()); + inventory = new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); + + if (nbt.contains("BoundsFront")) + bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", 5)); + + stalled = nbt.getBoolean("Stalled"); + anchor = NBTUtil.readBlockPos(nbt.getCompound("Anchor")); + } + + public CompoundNBT writeNBT() { + CompoundNBT nbt = new CompoundNBT(); + nbt.putString("Type", getType().id); + ListNBT blocksNBT = new ListNBT(); + for (BlockInfo block : this.blocks.values()) { + CompoundNBT c = new CompoundNBT(); + c.put("Block", NBTUtil.writeBlockState(block.state)); + c.put("Pos", NBTUtil.writeBlockPos(block.pos)); + if (block.nbt != null) + c.put("Data", block.nbt); + blocksNBT.add(c); + } + + ListNBT actorsNBT = new ListNBT(); + for (MutablePair actor : getActors()) { + CompoundNBT compound = new CompoundNBT(); + compound.put("Pos", NBTUtil.writeBlockPos(actor.left.pos)); + getMovement(actor.left.state).writeExtraData(actor.right); + actor.right.writeToNBT(compound); + actorsNBT.add(compound); + } + + ListNBT superglueNBT = new ListNBT(); + for (Pair glueEntry : superglue) { + CompoundNBT c = new CompoundNBT(); + c.put("Pos", NBTUtil.writeBlockPos(glueEntry.getKey())); + c.putByte("Direction", (byte) glueEntry.getValue() + .getIndex()); + superglueNBT.add(c); + } + + ListNBT storageNBT = new ListNBT(); + for (BlockPos pos : storage.keySet()) { + CompoundNBT c = new CompoundNBT(); + MountedStorage mountedStorage = storage.get(pos); + if (!mountedStorage.isWorking()) + continue; + c.put("Pos", NBTUtil.writeBlockPos(pos)); + c.put("Data", mountedStorage.serialize()); + storageNBT.add(c); + } + + nbt.put("Blocks", blocksNBT); + nbt.put("Actors", actorsNBT); + nbt.put("Superglue", superglueNBT); + nbt.put("Storage", storageNBT); + nbt.put("Anchor", NBTUtil.writeBlockPos(anchor)); + nbt.putBoolean("Stalled", stalled); + + if (bounds != null) { + ListNBT bb = NBTHelper.writeAABB(bounds); + nbt.put("BoundsFront", bb); + } + + return nbt; + } + + public void removeBlocksFromWorld(IWorld world, BlockPos offset) { + removeBlocksFromWorld(world, offset, (pos, state) -> false); + } + + public void removeBlocksFromWorld(IWorld world, BlockPos offset, BiPredicate customRemoval) { + storage.values() + .forEach(MountedStorage::empty); + glueToRemove.forEach(SuperGlueEntity::remove); + + for (boolean brittles : Iterate.trueAndFalse) { + for (Iterator iterator = blocks.values() + .iterator(); iterator.hasNext(); ) { + BlockInfo block = iterator.next(); + if (brittles != BlockMovementTraits.isBrittle(block.state)) + continue; + + BlockPos add = block.pos.add(anchor) + .add(offset); + if (customRemoval.test(add, block.state)) + continue; + BlockState oldState = world.getBlockState(add); + Block blockIn = oldState.getBlock(); + if (block.state.getBlock() != blockIn) + iterator.remove(); + world.getWorld() + .removeTileEntity(add); + int flags = 67; + if (blockIn instanceof DoorBlock) + flags = flags | 32 | 16; + if (blockIn instanceof IWaterLoggable && oldState.has(BlockStateProperties.WATERLOGGED) && oldState.get(BlockStateProperties.WATERLOGGED).booleanValue()) { + world.setBlockState(add, Blocks.WATER.getDefaultState(), flags); + continue; + } + world.setBlockState(add, Blocks.AIR.getDefaultState(), flags); + } + } + } + + public void addBlocksToWorld(World world, BlockPos offset, Vec3d rotation) { + addBlocksToWorld(world, offset, rotation, (pos, state) -> false); + } + + public void addBlocksToWorld(World world, BlockPos offset, Vec3d rotation, + BiPredicate customPlacement) { + stop(world); + StructureTransform transform = new StructureTransform(offset, rotation); + + for (boolean nonBrittles : Iterate.trueAndFalse) { + for (BlockInfo block : blocks.values()) { + if (nonBrittles == BlockMovementTraits.isBrittle(block.state)) + continue; + + BlockPos targetPos = transform.apply(block.pos); + + BlockState state = transform.apply(block.state); + + if (customPlacement.test(targetPos, state)) + continue; + + if (nonBrittles) + for (Direction face : Direction.values()) + state = state.updatePostPlacement(face, world.getBlockState(targetPos.offset(face)), world, + targetPos, targetPos.offset(face)); + + if (AllBlocks.MECHANICAL_SAW.has(state)) + state = state.with(SawBlock.RUNNING, false); + + BlockState blockState = world.getBlockState(targetPos); + if (blockState.getBlockHardness(world, targetPos) == -1 || (state.getCollisionShape(world, targetPos) + .isEmpty() + && !blockState.getCollisionShape(world, targetPos) + .isEmpty())) { + if (targetPos.getY() == 0) + targetPos = targetPos.up(); + world.playEvent(2001, targetPos, Block.getStateId(state)); + Block.spawnDrops(state, world, targetPos, null); + continue; + } + if (state.getBlock() instanceof IWaterLoggable && state.has(BlockStateProperties.WATERLOGGED)) { + IFluidState ifluidstate = world.getFluidState(targetPos); + state = state.with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } + + world.destroyBlock(targetPos, true); + world.setBlockState(targetPos, state, 3 | BlockFlags.IS_MOVING); + + boolean verticalRotation = transform.rotationAxis == null || transform.rotationAxis.isHorizontal(); + verticalRotation = verticalRotation && transform.rotation != Rotation.NONE; + if (verticalRotation) { + if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock) + world.destroyBlock(targetPos, true); + } + + TileEntity tileEntity = world.getTileEntity(targetPos); + CompoundNBT tag = block.nbt; + if (tileEntity != null && tag != null) { + tag.putInt("x", targetPos.getX()); + tag.putInt("y", targetPos.getY()); + tag.putInt("z", targetPos.getZ()); + + if (verticalRotation && tileEntity instanceof PulleyTileEntity) { + tag.remove("Offset"); + tag.remove("InitialOffset"); + } + + tileEntity.read(tag); + + if (storage.containsKey(block.pos)) { + MountedStorage mountedStorage = storage.get(block.pos); + if (mountedStorage.isWorking()) + mountedStorage.fill(tileEntity); + } + } + } + } + + for (Pair pair : superglue) { + BlockPos targetPos = transform.apply(pair.getKey()); + Direction targetFacing = transform.transformFacing(pair.getValue()); + + SuperGlueEntity entity = new SuperGlueEntity(world, targetPos, targetFacing); + if (entity.onValidSurface()) { + if (!world.isRemote) + world.addEntity(entity); + } + + } + + } + + public void initActors(World world) { + for (MutablePair pair : actors) { + MovementContext context = new MovementContext(world, pair.left); + context.contraption = this; + getMovement(pair.left.state).startMoving(context); + pair.setRight(context); + } + } + + public AxisAlignedBB getBoundingBox() { + return bounds; + } + + public List> getActors() { + return actors; + } + + public BlockPos getAnchor() { + return anchor; + } + + public void stop(World world) { + foreachActor(world, (behaviour, ctx) -> { + behaviour.stopMoving(ctx); + ctx.position = null; + ctx.motion = Vec3d.ZERO; + ctx.relativeMotion = Vec3d.ZERO; + ctx.rotation = Vec3d.ZERO; + }); + } + + public void foreachActor(World world, BiConsumer callBack) { + for (MutablePair pair : actors) + callBack.accept(getMovement(pair.getLeft().state), pair.getRight()); + } + + public void expandBoundsAroundAxis(Axis axis) { + AxisAlignedBB bb = bounds; + double maxXDiff = Math.max(bb.maxX - 1, -bb.minX); + double maxYDiff = Math.max(bb.maxY - 1, -bb.minY); + double maxZDiff = Math.max(bb.maxZ - 1, -bb.minZ); + double maxDiff = 0; + + if (axis == Axis.X) + maxDiff = Math.max(maxZDiff, maxYDiff); + if (axis == Axis.Y) + maxDiff = Math.max(maxZDiff, maxXDiff); + if (axis == Axis.Z) + maxDiff = Math.max(maxXDiff, maxYDiff); + + Vec3d vec = new Vec3d(Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis) + .getDirectionVec()); + Vec3d planeByNormal = VecHelper.planeByNormal(vec); + Vec3d min = vec.mul(bb.minX, bb.minY, bb.minZ) + .add(planeByNormal.scale(-maxDiff)); + Vec3d max = vec.mul(bb.maxX, bb.maxY, bb.maxZ) + .add(planeByNormal.scale(maxDiff + 1)); + bounds = new AxisAlignedBB(min, max); + } + + protected abstract AllContraptionTypes getType(); } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java index fa3c241f7..5c21f6c80 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java @@ -1,16 +1,17 @@ package com.simibubi.create.content.contraptions.components.structureMovement.piston; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; - import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; import com.simibubi.create.foundation.block.ProperDirectionalBlock; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; import net.minecraft.block.material.PushReaction; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemStack; import net.minecraft.state.EnumProperty; import net.minecraft.state.StateContainer.Builder; @@ -22,67 +23,91 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.World; -public class MechanicalPistonHeadBlock extends ProperDirectionalBlock { +import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; - public static final EnumProperty TYPE = BlockStateProperties.PISTON_TYPE; +public class MechanicalPistonHeadBlock extends ProperDirectionalBlock implements IWaterLoggable { - public MechanicalPistonHeadBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - } + public static final EnumProperty TYPE = BlockStateProperties.PISTON_TYPE; - @Override - protected void fillStateContainer(Builder builder) { - builder.add(TYPE); - super.fillStateContainer(builder); - } + public MechanicalPistonHeadBlock(Properties p_i48415_1_) { + super(p_i48415_1_); + setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); + } - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } + @Override + protected void fillStateContainer(Builder builder) { + builder.add(TYPE, BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.PISTON_EXTENSION_POLE.asStack(); - } + @Override + public PushReaction getPushReaction(BlockState state) { + return PushReaction.NORMAL; + } - @Override - public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { - Direction direction = state.get(FACING); - BlockPos pistonHead = pos; - BlockPos pistonBase = null; + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllBlocks.PISTON_EXTENSION_POLE.asStack(); + } - for (int offset = 1; offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset++) { - BlockPos currentPos = pos.offset(direction.getOpposite(), offset); - BlockState block = worldIn.getBlockState(currentPos); + @Override + public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { + Direction direction = state.get(FACING); + BlockPos pistonHead = pos; + BlockPos pistonBase = null; - if (isExtensionPole(block) && direction.getAxis() == block.get(BlockStateProperties.FACING) - .getAxis()) - continue; + for (int offset = 1; offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset++) { + BlockPos currentPos = pos.offset(direction.getOpposite(), offset); + BlockState block = worldIn.getBlockState(currentPos); - if (MechanicalPistonBlock.isPiston(block) && block.get(BlockStateProperties.FACING) == direction) - pistonBase = currentPos; + if (isExtensionPole(block) && direction.getAxis() == block.get(BlockStateProperties.FACING) + .getAxis()) + continue; - break; - } + if (MechanicalPistonBlock.isPiston(block) && block.get(BlockStateProperties.FACING) == direction) + pistonBase = currentPos; - if (pistonHead != null && pistonBase != null) { - final BlockPos basePos = pistonBase; - BlockPos.getAllInBox(pistonBase, pistonHead) - .filter(p -> !p.equals(pos) && !p.equals(basePos)) - .forEach(p -> worldIn.destroyBlock(p, !player.isCreative())); - worldIn.setBlockState(basePos, worldIn.getBlockState(basePos) - .with(MechanicalPistonBlock.STATE, PistonState.RETRACTED)); - } + break; + } - super.onBlockHarvested(worldIn, pos, state, player); - } + if (pistonHead != null && pistonBase != null) { + final BlockPos basePos = pistonBase; + BlockPos.getAllInBox(pistonBase, pistonHead) + .filter(p -> !p.equals(pos) && !p.equals(basePos)) + .forEach(p -> worldIn.destroyBlock(p, !player.isCreative())); + worldIn.setBlockState(basePos, worldIn.getBlockState(basePos) + .with(MechanicalPistonBlock.STATE, PistonState.RETRACTED)); + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.MECHANICAL_PISTON_HEAD.get(state.get(FACING)); - } + super.onBlockHarvested(worldIn, pos, state, player); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.MECHANICAL_PISTON_HEAD.get(state.get(FACING)); + } + + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); + return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java index 8c05ac120..379d3c202 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java @@ -1,18 +1,18 @@ package com.simibubi.create.content.contraptions.components.structureMovement.piston; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPiston; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; - import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; +import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.*; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.block.ProperDirectionalBlock; - +import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; import net.minecraft.block.material.PushReaction; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; @@ -21,75 +21,98 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.World; -public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements IWrenchable { +import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.*; - public PistonExtensionPoleBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(FACING, Direction.UP)); - } +public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements IWrenchable, IWaterLoggable { - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } + public PistonExtensionPoleBlock(Properties properties) { + super(properties); + setDefaultState(getDefaultState().with(FACING, Direction.UP).with(BlockStateProperties.WATERLOGGED, false)); + } - @Override - public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { - Axis axis = state.get(FACING) - .getAxis(); - Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - BlockPos pistonHead = null; - BlockPos pistonBase = null; + @Override + public PushReaction getPushReaction(BlockState state) { + return PushReaction.NORMAL; + } - for (int modifier : new int[] { 1, -1 }) { - for (int offset = modifier; modifier * offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset += - modifier) { - BlockPos currentPos = pos.offset(direction, offset); - BlockState block = worldIn.getBlockState(currentPos); + @Override + public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { + Axis axis = state.get(FACING) + .getAxis(); + Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); + BlockPos pistonHead = null; + BlockPos pistonBase = null; - if (isExtensionPole(block) && axis == block.get(FACING) - .getAxis()) - continue; + for (int modifier : new int[]{1, -1}) { + for (int offset = modifier; modifier * offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset += + modifier) { + BlockPos currentPos = pos.offset(direction, offset); + BlockState block = worldIn.getBlockState(currentPos); - if (isPiston(block) && block.get(BlockStateProperties.FACING) - .getAxis() == axis) - pistonBase = currentPos; + if (isExtensionPole(block) && axis == block.get(FACING) + .getAxis()) + continue; - if (isPistonHead(block) && block.get(BlockStateProperties.FACING) - .getAxis() == axis) - pistonHead = currentPos; + if (isPiston(block) && block.get(BlockStateProperties.FACING) + .getAxis() == axis) + pistonBase = currentPos; - break; - } - } + if (isPistonHead(block) && block.get(BlockStateProperties.FACING) + .getAxis() == axis) + pistonHead = currentPos; - if (pistonHead != null && pistonBase != null && worldIn.getBlockState(pistonHead) - .get(BlockStateProperties.FACING) == worldIn.getBlockState(pistonBase) - .get(BlockStateProperties.FACING)) { + break; + } + } - final BlockPos basePos = pistonBase; - BlockPos.getAllInBox(pistonBase, pistonHead) - .filter(p -> !p.equals(pos) && !p.equals(basePos)) - .forEach(p -> worldIn.destroyBlock(p, !player.isCreative())); - worldIn.setBlockState(basePos, worldIn.getBlockState(basePos) - .with(MechanicalPistonBlock.STATE, PistonState.RETRACTED)); - } + if (pistonHead != null && pistonBase != null && worldIn.getBlockState(pistonHead) + .get(BlockStateProperties.FACING) == worldIn.getBlockState(pistonBase) + .get(BlockStateProperties.FACING)) { - super.onBlockHarvested(worldIn, pos, state, player); - } + final BlockPos basePos = pistonBase; + BlockPos.getAllInBox(pistonBase, pistonHead) + .filter(p -> !p.equals(pos) && !p.equals(basePos)) + .forEach(p -> worldIn.destroyBlock(p, !player.isCreative())); + worldIn.setBlockState(basePos, worldIn.getBlockState(basePos) + .with(MechanicalPistonBlock.STATE, PistonState.RETRACTED)); + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.FOUR_VOXEL_POLE.get(state.get(FACING) - .getAxis()); - } + super.onBlockHarvested(worldIn, pos, state, player); + } - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(FACING, context.getFace() - .getOpposite()); - } + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.FOUR_VOXEL_POLE.get(state.get(FACING) + .getAxis()); + } + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); + return getDefaultState().with(FACING, context.getFace().getOpposite()) + .with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } + + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java index d1c889fc8..2f650d4e9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java @@ -5,13 +5,17 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock; import com.simibubi.create.foundation.block.ITE; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; import net.minecraft.block.material.PushReaction; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemStack; import net.minecraft.state.EnumProperty; +import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; @@ -24,128 +28,156 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.World; public class PulleyBlock extends HorizontalAxisKineticBlock implements ITE { - public static EnumProperty HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS; + public static EnumProperty HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS; - public PulleyBlock(Properties properties) { - super(properties); - } + public PulleyBlock(Properties properties) { + super(properties); + } - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ROPE_PULLEY.create(); - } + private static void onRopeBroken(World world, BlockPos pulleyPos) { + TileEntity te = world.getTileEntity(pulleyPos); + if (!(te instanceof PulleyTileEntity)) + return; + PulleyTileEntity pulley = (PulleyTileEntity) te; + pulley.offset = 0; + pulley.sendData(); + } - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock()) { - if (!worldIn.isRemote) { - BlockState below = worldIn.getBlockState(pos.down()); - if (below.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.down(), true); - } - if (state.hasTileEntity()) - worldIn.removeTileEntity(pos); - } - } + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.ROPE_PULLEY.create(); + } - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.PASS; - if (player.isSneaking()) - return ActionResultType.PASS; - if (player.getHeldItem(handIn) - .isEmpty()) { - withTileEntityDo(worldIn, pos, te -> te.assembleNextTick = true); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } + @Override + public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { + if (state.getBlock() != newState.getBlock()) { + if (!worldIn.isRemote) { + BlockState below = worldIn.getBlockState(pos.down()); + if (below.getBlock() instanceof RopeBlockBase) + worldIn.destroyBlock(pos.down(), true); + } + if (state.hasTileEntity()) + worldIn.removeTileEntity(pos); + } + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.PULLEY.get(state.get(HORIZONTAL_AXIS)); - } + public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, + BlockRayTraceResult hit) { + if (!player.isAllowEdit()) + return ActionResultType.PASS; + if (player.isSneaking()) + return ActionResultType.PASS; + if (player.getHeldItem(handIn) + .isEmpty()) { + withTileEntityDo(worldIn, pos, te -> te.assembleNextTick = true); + return ActionResultType.SUCCESS; + } + return ActionResultType.PASS; + } - private static void onRopeBroken(World world, BlockPos pulleyPos) { - TileEntity te = world.getTileEntity(pulleyPos); - if (!(te instanceof PulleyTileEntity)) - return; - PulleyTileEntity pulley = (PulleyTileEntity) te; - pulley.offset = 0; - pulley.sendData(); - } + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.PULLEY.get(state.get(HORIZONTAL_AXIS)); + } - private static class RopeBlockBase extends Block { + @Override + public Class getTileEntityClass() { + return PulleyTileEntity.class; + } - public RopeBlockBase(Properties properties) { - super(properties); - } + private static class RopeBlockBase extends Block implements IWaterLoggable { - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.BLOCK; - } + public RopeBlockBase(Properties properties) { + super(properties); + setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); + } - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.ROPE_PULLEY.asStack(); - } + @Override + public PushReaction getPushReaction(BlockState state) { + return PushReaction.BLOCK; + } - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!isMoving) { - onRopeBroken(worldIn, pos.up()); - if (!worldIn.isRemote) { - BlockState above = worldIn.getBlockState(pos.up()); - BlockState below = worldIn.getBlockState(pos.down()); - if (above.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.up(), true); - if (below.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.down(), true); - } - } - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - worldIn.removeTileEntity(pos); - } - } + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllBlocks.ROPE_PULLEY.asStack(); + } - } + @Override + public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { + if (!isMoving && (!state.has(BlockStateProperties.WATERLOGGED) || !newState.has(BlockStateProperties.WATERLOGGED) || state.get(BlockStateProperties.WATERLOGGED) == newState.get(BlockStateProperties.WATERLOGGED))) { + onRopeBroken(worldIn, pos.up()); + if (!worldIn.isRemote) { + BlockState above = worldIn.getBlockState(pos.up()); + BlockState below = worldIn.getBlockState(pos.down()); + if (above.getBlock() instanceof RopeBlockBase) + worldIn.destroyBlock(pos.up(), true); + if (below.getBlock() instanceof RopeBlockBase) + worldIn.destroyBlock(pos.down(), true); + } + } + if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { + worldIn.removeTileEntity(pos); + } + } - public static class MagnetBlock extends RopeBlockBase { - public MagnetBlock(Properties properties) { - super(properties); - } + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.PULLEY_MAGNET; - } + @Override + protected void fillStateContainer(Builder builder) { + builder.add(BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } - } + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } - public static class RopeBlock extends RopeBlockBase { + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); + return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } - public RopeBlock(Properties properties) { - super(properties); - } + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.FOUR_VOXEL_POLE.get(Direction.UP); - } + public static class MagnetBlock extends RopeBlockBase { - } + public MagnetBlock(Properties properties) { + super(properties); + } - @Override - public Class getTileEntityClass() { - return PulleyTileEntity.class; - } + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.PULLEY_MAGNET; + } + + } + + public static class RopeBlock extends RopeBlockBase { + + public RopeBlock(Properties properties) { + super(properties); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.FOUR_VOXEL_POLE.get(Direction.UP); + } + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index 3642285e8..122d7be6c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -8,9 +8,13 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.block.IWaterLoggable; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; @@ -19,170 +23,180 @@ import net.minecraft.util.math.Vec3d; public class PulleyTileEntity extends LinearActuatorTileEntity { - protected int initialOffset; + protected int initialOffset; - public PulleyTileEntity(TileEntityType type) { - super(type); - } + public PulleyTileEntity(TileEntityType type) { + super(type); + } - @Override - public AxisAlignedBB getRenderBoundingBox() { - return super.getRenderBoundingBox().expand(0, -offset, 0); - } + @Override + public AxisAlignedBB getRenderBoundingBox() { + return super.getRenderBoundingBox().expand(0, -offset, 0); + } - @Override - public double getMaxRenderDistanceSquared() { - return super.getMaxRenderDistanceSquared() + offset * offset; - } + @Override + public double getMaxRenderDistanceSquared() { + return super.getMaxRenderDistanceSquared() + offset * offset; + } - @Override - protected void assemble() { - if (!(world.getBlockState(pos) - .getBlock() instanceof PulleyBlock)) - return; - if (speed == 0) - return; - if (offset >= getExtensionRange() && getSpeed() > 0) - return; - if (offset <= 0 && getSpeed() < 0) - return; + @Override + protected void assemble() { + if (!(world.getBlockState(pos) + .getBlock() instanceof PulleyBlock)) + return; + if (speed == 0) + return; + if (offset >= getExtensionRange() && getSpeed() > 0) + return; + if (offset <= 0 && getSpeed() < 0) + return; - // Collect Construct - if (!world.isRemote) { - BlockPos anchor = pos.down((int) (offset + 1)); - initialOffset = (int) (offset); - PulleyContraption contraption = PulleyContraption.assemblePulleyAt(world, anchor, (int) offset); + // Collect Construct + if (!world.isRemote) { + BlockPos anchor = pos.down((int) (offset + 1)); + initialOffset = (int) (offset); + PulleyContraption contraption = PulleyContraption.assemblePulleyAt(world, anchor, (int) offset); - if (contraption != null) { - Direction movementDirection = getSpeed() > 0 ? Direction.DOWN : Direction.UP; - if (ContraptionCollider.isCollidingWithWorld(world, contraption, anchor.offset(movementDirection), - movementDirection)) - contraption = null; - } + if (contraption != null) { + Direction movementDirection = getSpeed() > 0 ? Direction.DOWN : Direction.UP; + if (ContraptionCollider.isCollidingWithWorld(world, contraption, anchor.offset(movementDirection), + movementDirection)) + contraption = null; + } - if (contraption == null && getSpeed() > 0) - return; + if (contraption == null && getSpeed() > 0) + return; - for (int i = ((int) offset); i > 0; i--) { - BlockPos offset = pos.down(i); - world.setBlockState(offset, Blocks.AIR.getDefaultState(), 66); - } + for (int i = ((int) offset); i > 0; i--) { + BlockPos offset = pos.down(i); + BlockState oldState = world.getBlockState(offset); + if (oldState.getBlock() instanceof IWaterLoggable && oldState.has(BlockStateProperties.WATERLOGGED) && oldState.get(BlockStateProperties.WATERLOGGED)) { + world.setBlockState(offset, Blocks.WATER.getDefaultState(), 66); + continue; + } + world.setBlockState(offset, Blocks.AIR.getDefaultState(), 66); + } - if (contraption != null && !contraption.blocks.isEmpty()) { - contraption.removeBlocksFromWorld(world, BlockPos.ZERO); - movedContraption = ContraptionEntity.createStationary(world, contraption) - .controlledBy(this); - movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - world.addEntity(movedContraption); - forceMove = true; - } - } + if (contraption != null && !contraption.blocks.isEmpty()) { + contraption.removeBlocksFromWorld(world, BlockPos.ZERO); + movedContraption = ContraptionEntity.createStationary(world, contraption) + .controlledBy(this); + movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); + world.addEntity(movedContraption); + forceMove = true; + } + } - clientOffsetDiff = 0; - running = true; - sendData(); - } + clientOffsetDiff = 0; + running = true; + sendData(); + } - @Override - public void disassemble() { - if (!running && movedContraption == null) - return; - offset = getGridOffset(offset); - if (movedContraption != null) - applyContraptionPosition(); + @Override + public void disassemble() { + if (!running && movedContraption == null) + return; + offset = getGridOffset(offset); + if (movedContraption != null) + applyContraptionPosition(); - if (!world.isRemote) { - if (!removed) { - if (offset > 0) { - BlockPos magnetPos = pos.down((int) offset); - world.destroyBlock(magnetPos, world.getBlockState(magnetPos) - .getCollisionShape(world, magnetPos) - .isEmpty()); - world.setBlockState(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState(), 66); - } - - for (int i = 1; i <= ((int) offset) - 1; i++) { - BlockPos ropePos = pos.down(i); - world.destroyBlock(ropePos, world.getBlockState(ropePos) - .getCollisionShape(world, ropePos) - .isEmpty()); - } - for (int i = 1; i <= ((int) offset) - 1; i++) - world.setBlockState(pos.down(i), AllBlocks.ROPE.getDefaultState(), 66); - } + if (!world.isRemote) { + if (!removed) { + if (offset > 0) { + BlockPos magnetPos = pos.down((int) offset); + IFluidState ifluidstate = world.getFluidState(magnetPos); + world.destroyBlock(magnetPos, world.getBlockState(magnetPos) + .getCollisionShape(world, magnetPos) + .isEmpty()); + world.setBlockState(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState().with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)), 66); + } - if (movedContraption != null) - movedContraption.disassemble(); - } + boolean[] waterlog = new boolean[(int) offset]; - if (movedContraption != null) - movedContraption.remove(); - movedContraption = null; - initialOffset = 0; - running = false; - sendData(); - } + for (int i = 1; i <= ((int) offset) - 1; i++) { + BlockPos ropePos = pos.down(i); + IFluidState ifluidstate = world.getFluidState(ropePos); + waterlog[i] = ifluidstate.getFluid() == Fluids.WATER; + world.destroyBlock(ropePos, world.getBlockState(ropePos) + .getCollisionShape(world, ropePos) + .isEmpty()); + } + for (int i = 1; i <= ((int) offset) - 1; i++) + world.setBlockState(pos.down(i), AllBlocks.ROPE.getDefaultState().with(BlockStateProperties.WATERLOGGED, waterlog[i]), 66); + } - @Override - protected Vec3d toPosition(float offset) { - if (movedContraption.getContraption() instanceof PulleyContraption) { - PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption(); - return new Vec3d(contraption.getAnchor()).add(0, contraption.initialOffset - offset, 0); + if (movedContraption != null) + movedContraption.disassemble(); + } - } - return Vec3d.ZERO; - } + if (movedContraption != null) + movedContraption.remove(); + movedContraption = null; + initialOffset = 0; + running = false; + sendData(); + } - @Override - protected void visitNewPosition() { - super.visitNewPosition(); - if (world.isRemote) - return; - if (movedContraption != null) - return; - if (getSpeed() <= 0) - return; + @Override + protected Vec3d toPosition(float offset) { + if (movedContraption.getContraption() instanceof PulleyContraption) { + PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption(); + return new Vec3d(contraption.getAnchor()).add(0, contraption.initialOffset - offset, 0); - BlockPos posBelow = pos.down((int) (offset + getMovementSpeed()) + 1); - if (!BlockMovementTraits.movementNecessary(world, posBelow)) - return; - if (BlockMovementTraits.isBrittle(world.getBlockState(posBelow))) - return; + } + return Vec3d.ZERO; + } - disassemble(); - assembleNextTick = true; - } + @Override + protected void visitNewPosition() { + super.visitNewPosition(); + if (world.isRemote) + return; + if (movedContraption != null) + return; + if (getSpeed() <= 0) + return; - @Override - public void read(CompoundNBT tag) { - initialOffset = tag.getInt("InitialOffset"); - super.read(tag); - } + BlockPos posBelow = pos.down((int) (offset + getMovementSpeed()) + 1); + if (!BlockMovementTraits.movementNecessary(world, posBelow)) + return; + if (BlockMovementTraits.isBrittle(world.getBlockState(posBelow))) + return; - @Override - public CompoundNBT write(CompoundNBT tag) { - tag.putInt("InitialOffset", initialOffset); - return super.write(tag); - } + disassemble(); + assembleNextTick = true; + } - @Override - protected int getExtensionRange() { - return Math.max(0, Math.min(AllConfigs.SERVER.kinetics.maxRopeLength.get(), pos.getY() - 1)); - } + @Override + public void read(CompoundNBT tag) { + initialOffset = tag.getInt("InitialOffset"); + super.read(tag); + } - @Override - protected int getInitialOffset() { - return initialOffset; - } + @Override + public CompoundNBT write(CompoundNBT tag) { + tag.putInt("InitialOffset", initialOffset); + return super.write(tag); + } - @Override - protected Vec3d toMotionVector(float speed) { - return new Vec3d(0, -speed, 0); - } + @Override + protected int getExtensionRange() { + return Math.max(0, Math.min(AllConfigs.SERVER.kinetics.maxRopeLength.get(), pos.getY() - 1)); + } - @Override - protected ValueBoxTransform getMovementModeSlot() { - return new CenteredSideValueBoxTransform((state, d) -> d == Direction.UP); - } + @Override + protected int getInitialOffset() { + return initialOffset; + } + + @Override + protected Vec3d toMotionVector(float speed) { + return new Vec3d(0, -speed, 0); + } + + @Override + protected ValueBoxTransform getMovementModeSlot() { + return new CenteredSideValueBoxTransform((state, d) -> d == Direction.UP); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java index f9a05f43f..5df66aead 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java @@ -104,6 +104,7 @@ public class FluidPipeBlock extends SixWayBlock implements IWaterLoggable { @Override protected void fillStateContainer(Builder builder) { builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN, BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java index bcef27b33..788dcee2f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java @@ -3,8 +3,14 @@ package com.simibubi.create.content.contraptions.fluids; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; - +import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; @@ -12,45 +18,73 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; -public class PumpBlock extends DirectionalKineticBlock { +public class PumpBlock extends DirectionalKineticBlock implements IWaterLoggable { - public PumpBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - } + public PumpBlock(Properties p_i48415_1_) { + super(p_i48415_1_); + setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); + } - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_PUMP.create(); - } + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.MECHANICAL_PUMP.create(); + } - @Override - public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) { - return originalState.with(FACING, originalState.get(FACING) - .getOpposite()); - } + @Override + public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) { + return originalState.with(FACING, originalState.get(FACING) + .getOpposite()); + } - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING) - .getAxis(); - } + @Override + public Axis getRotationAxis(BlockState state) { + return state.get(FACING) + .getAxis(); + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.PUMP.get(state.get(FACING)); - } + @Override + public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.PUMP.get(state.get(FACING)); + } - @Override - public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { - return true; - } + @Override + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { + return true; + } + + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); + return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java index 55d2299e5..e8d7e1310 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java @@ -4,12 +4,14 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.NonNullList; @@ -22,95 +24,96 @@ import net.minecraft.world.World; public class CogWheelBlock extends ShaftBlock { - boolean isLarge; + boolean isLarge; - public static CogWheelBlock small(Properties properties) { - return new CogWheelBlock(false, properties); - } + private CogWheelBlock(boolean large, Properties properties) { + super(properties); + isLarge = large; + } - public static CogWheelBlock large(Properties properties) { - return new CogWheelBlock(true, properties); - } + public static CogWheelBlock small(Properties properties) { + return new CogWheelBlock(false, properties); + } - private CogWheelBlock(boolean large, Properties properties) { - super(properties); - isLarge = large; - } + public static CogWheelBlock large(Properties properties) { + return new CogWheelBlock(true, properties); + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return (isLarge ? AllShapes.LARGE_GEAR : AllShapes.SMALL_GEAR).get(state.get(AXIS)); - } + public static boolean isSmallCog(BlockState state) { + return AllBlocks.COGWHEEL.has(state); + } - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - for (Direction facing : Direction.values()) { - if (facing.getAxis() == state.get(AXIS)) - continue; + public static boolean isLargeCog(BlockState state) { + return AllBlocks.LARGE_COGWHEEL.has(state); + } - BlockState blockState = worldIn.getBlockState(pos.offset(facing)); - if (isLargeCog(blockState) || isLarge && isSmallCog(blockState)) - return false; - } - return true; - } + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return (isLarge ? AllShapes.LARGE_GEAR : AllShapes.SMALL_GEAR).get(state.get(AXIS)); + } - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockPos placedOnPos = context.getPos() - .offset(context.getFace() - .getOpposite()); - World world = context.getWorld(); - BlockState placedAgainst = world.getBlockState(placedOnPos); - Block block = placedAgainst.getBlock(); + @Override + public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { + for (Direction facing : Direction.values()) { + if (facing.getAxis() == state.get(AXIS)) + continue; - BlockState stateBelow = world.getBlockState(context.getPos() - .down()); - if (AllBlocks.ROTATION_SPEED_CONTROLLER.has(stateBelow) && isLarge) { - return this.getDefaultState() - .with(AXIS, stateBelow.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X); - } + BlockState blockState = worldIn.getBlockState(pos.offset(facing)); + if (isLargeCog(blockState) || isLarge && isSmallCog(blockState)) + return false; + } + return true; + } - if (!(block instanceof IRotate) - || !(((IRotate) block).hasIntegratedCogwheel(world, placedOnPos, placedAgainst))) { - Axis preferredAxis = getPreferredAxis(context); - if (preferredAxis != null) - return this.getDefaultState() - .with(AXIS, preferredAxis); - return this.getDefaultState() - .with(AXIS, context.getFace() - .getAxis()); - } + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + BlockPos placedOnPos = context.getPos() + .offset(context.getFace() + .getOpposite()); + World world = context.getWorld(); + BlockState placedAgainst = world.getBlockState(placedOnPos); + Block block = placedAgainst.getBlock(); - return getDefaultState().with(AXIS, ((IRotate) block).getRotationAxis(placedAgainst)); - } + BlockState stateBelow = world.getBlockState(context.getPos() + .down()); + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); + if (AllBlocks.ROTATION_SPEED_CONTROLLER.has(stateBelow) && isLarge) { + return this.getDefaultState().with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)) + .with(AXIS, stateBelow.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X); + } - @Override - public float getParticleTargetRadius() { - return isLarge ? 1.125f : .65f; - } + if (!(block instanceof IRotate) + || !(((IRotate) block).hasIntegratedCogwheel(world, placedOnPos, placedAgainst))) { + Axis preferredAxis = getPreferredAxis(context); + if (preferredAxis != null) + return this.getDefaultState() + .with(AXIS, preferredAxis).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + return this.getDefaultState() + .with(AXIS, context.getFace() + .getAxis()).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } - @Override - public float getParticleInitialRadius() { - return isLarge ? 1f : .75f; - } + return getDefaultState().with(AXIS, ((IRotate) block).getRotationAxis(placedAgainst)); + } - public static boolean isSmallCog(BlockState state) { - return AllBlocks.COGWHEEL.has(state); - } + @Override + public float getParticleTargetRadius() { + return isLarge ? 1.125f : .65f; + } - public static boolean isLargeCog(BlockState state) { - return AllBlocks.LARGE_COGWHEEL.has(state); - } + @Override + public float getParticleInitialRadius() { + return isLarge ? 1f : .75f; + } - public void fillItemGroup(ItemGroup group, NonNullList items) { - items.add(new ItemStack(this)); - } + public void fillItemGroup(ItemGroup group, NonNullList items) { + items.add(new ItemStack(this)); + } - // IRotate + // IRotate - @Override - public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { - return !isLarge; - } + @Override + public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { + return !isLarge; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java index 56a291984..e13efbdd8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java @@ -4,12 +4,18 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; - +import net.minecraft.block.Block; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; +import net.minecraft.block.IWaterLoggable; import net.minecraft.block.material.PushReaction; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; @@ -18,63 +24,90 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; -public class ShaftBlock extends RotatedPillarKineticBlock { +public class ShaftBlock extends RotatedPillarKineticBlock implements IWaterLoggable { - public ShaftBlock(Properties properties) { - super(properties); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } + public ShaftBlock(Properties properties) { + super(properties); + setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); + } - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SIMPLE_KINETIC.create(); - } + public static boolean isShaft(BlockState state) { + return AllBlocks.SHAFT.has(state); + } - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.SIX_VOXEL_POLE.get(state.get(AXIS)); - } + @Override + public PushReaction getPushReaction(BlockState state) { + return PushReaction.NORMAL; + } - @Override - public float getParticleTargetRadius() { - return .25f; - } + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.ENTITYBLOCK_ANIMATED; + } - @Override - public float getParticleInitialRadius() { - return 0f; - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList items) { - super.fillItemGroup(group, items); - } - - public static boolean isShaft(BlockState state) { - return AllBlocks.SHAFT.has(state); - } + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.SIMPLE_KINETIC.create(); + } - // IRotate: + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return AllShapes.SIX_VOXEL_POLE.get(state.get(AXIS)); + } - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(AXIS); - } + @Override + public float getParticleTargetRadius() { + return .25f; + } - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } + @Override + public float getParticleInitialRadius() { + return 0f; + } + @Override + public void fillItemGroup(ItemGroup group, NonNullList items) { + super.fillItemGroup(group, items); + } + + // IRotate: + + @Override + public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { + return face.getAxis() == state.get(AXIS); + } + + @Override + public Axis getRotationAxis(BlockState state) { + return state.get(AXIS); + } + + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld().getFluidState(context.getPos()); + return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } } From 197834c36cdd6adb7c4edc1c7c032d46a14e6f62 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Thu, 18 Jun 2020 07:57:20 +0200 Subject: [PATCH 04/47] fix pipe connections and tank hitbox (again) --- .../create/content/contraptions/fluids/FluidPipeBlock.java | 2 +- .../create/content/contraptions/fluids/FluidTankBlock.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java index 5df66aead..f3cc7c6de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeBlock.java @@ -33,7 +33,7 @@ public class FluidPipeBlock extends SixWayBlock implements IWaterLoggable { } public static boolean isTank(BlockState state, IBlockReader world, BlockPos pos, Direction blockFace) { - return state.hasTileEntity() && world.getTileEntity(pos).getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, blockFace.getOpposite()) != null; + return state.hasTileEntity() && world.getTileEntity(pos).getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, blockFace.getOpposite()).isPresent(); } // TODO: more generic pipe connection handling. Ideally without marker interface diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java index 9e665f575..822f86505 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTankBlock.java @@ -101,10 +101,10 @@ public class FluidTankBlock extends Block { public AxisAlignedBB getBodyShape(IBlockReader world, BlockPos pos) { return new AxisAlignedBB((isTankToDirection(world, pos, Direction.WEST) ? 0 : 1) / 16f, - 0.25f, + 0, (isTankToDirection(world, pos, Direction.NORTH) ? 0 : 1) / 16f, (isTankToDirection(world, pos, Direction.EAST) ? 16 : 15) / 16f, - 0.75f, + 1, (isTankToDirection(world, pos, Direction.SOUTH) ? 16 : 15) / 16f); } From 444dc4c903d321e0f5286feb4131369f17fa44d9 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Thu, 18 Jun 2020 09:06:31 +0200 Subject: [PATCH 05/47] Cart Assembler sounds (placing and rail replace) --- .../structureMovement/mounted/CartAssemblerBlock.java | 4 +++- .../structureMovement/mounted/CartAssemblerBlockItem.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java index cf50bdf67..f44b9dc8f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java @@ -41,6 +41,8 @@ import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.Vec3d; @@ -177,7 +179,7 @@ public class CartAssemblerBlock extends AbstractRailBlock newType = type; if (newType == null) return ActionResultType.PASS; - + world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 1, 1); world.setBlockState(pos, state.with(RAIL_TYPE, newType)); if (!player.isCreative()) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java index f323002e4..1ee299c5b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java @@ -13,6 +13,8 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.ItemUseContext; import net.minecraft.state.properties.RailShape; import net.minecraft.util.ActionResultType; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -25,8 +27,10 @@ public class CartAssemblerBlockItem extends BlockItem { @Override @Nonnull public ActionResultType onItemUse(ItemUseContext context) { - if (tryPlaceAssembler(context)) + if (tryPlaceAssembler(context)) { + context.getWorld().playSound(null, context.getPos(), SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1, 1); return ActionResultType.SUCCESS; + } return super.onItemUse(context); } From 38dbed251824897c49fefe139b9b3e1c257a85a2 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Fri, 19 Jun 2020 18:37:11 +0200 Subject: [PATCH 06/47] Tagging Changes - Copper, Brass and Zinc blocks can now be used as beacon base block - Copper, Brass and Zinc can now be used to activate a beacon - Create ingots are now listed under the forge:ingots tag (not only forge:ingots/type) - Create nuggets are now listed under the forge:nuggets tag (not only forge:nuggets/type) - Create plates are now listed under the forge:plates tag (not only forge:plates/type) - Updated registrate to support multiple tags --- gradle.properties | 2 +- src/generated/resources/.cache/cache | 18 +++-- .../assets/create/blockstates/cogwheel.json | 19 ++++- .../create/blockstates/large_cogwheel.json | 19 ++++- .../blockstates/mechanical_piston_head.json | 76 ++++++++++++++++--- .../create/blockstates/mechanical_pump.json | 38 ++++++++-- .../blockstates/piston_extension_pole.json | 38 ++++++++-- .../create/blockstates/radial_chassis.json | 48 ++++++------ .../assets/create/blockstates/shaft.json | 19 ++++- .../data/forge/tags/items/beacon_payment.json | 8 ++ .../data/forge/tags/items/ingots.json | 8 ++ .../data/forge/tags/items/nuggets.json | 8 ++ .../data/forge/tags/items/plates.json | 9 +++ .../java/com/simibubi/create/AllBlocks.java | 18 +++-- .../java/com/simibubi/create/AllItems.java | 28 ++++--- .../java/com/simibubi/create/AllTags.java | 16 ++-- .../create/content/palettes/MetalBlock.java | 25 ++++++ .../foundation/worldgen/OxidizingBlock.java | 9 ++- 18 files changed, 314 insertions(+), 92 deletions(-) create mode 100644 src/generated/resources/data/forge/tags/items/beacon_payment.json create mode 100644 src/generated/resources/data/forge/tags/items/ingots.json create mode 100644 src/generated/resources/data/forge/tags/items/nuggets.json create mode 100644 src/generated/resources/data/forge/tags/items/plates.json create mode 100644 src/main/java/com/simibubi/create/content/palettes/MetalBlock.java diff --git a/gradle.properties b/gradle.properties index 5d6ed258b..7555aef4c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ minecraft_version=1.15.2 forge_version=31.2.3 # dependency versions -registrate_version=0.0.3.17 +registrate_version=0.0.4.18 jei_version=6.0.0.2 # curseforge information diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index fda4d9596..394833615 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -32,7 +32,7 @@ cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scor 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json -e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json +7854040f0570146b9823270fea7ea88c0048c316 assets\create\blockstates\cogwheel.json f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets\create\blockstates\copper_block.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets\create\blockstates\copper_casing.json 3355a852cdc717e257ca19b3db836068964733e3 assets\create\blockstates\copper_ore.json @@ -147,7 +147,7 @@ be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets\create\blockstates\horizontal_fr 18d9fdaa1352a7e2ec91135e46dae5c02ccd8f8f assets\create\blockstates\horizontal_framed_glass_pane.json 5d851c90d23de5087ce546d4bbe509e112b84c49 assets\create\blockstates\jungle_window.json b15bea757ef981e0ca60f740ca234ee2014eb7b7 assets\create\blockstates\jungle_window_pane.json -f651091db216b009b3379b2f48d56d03481c8675 assets\create\blockstates\large_cogwheel.json +fff1af0ff50d756efb027b6f3a6610c182138520 assets\create\blockstates\large_cogwheel.json a38184e035c2ebca7471e1714494fea213af259e assets\create\blockstates\layered_andesite.json 0fef29f4bfe8e1258427252ef0ff1a414c194969 assets\create\blockstates\layered_dark_scoria.json 924a0291410406c86ded448f95c97ac3b9d2bd2e assets\create\blockstates\layered_diorite.json @@ -178,10 +178,10 @@ ddcf4bb281e046fbb1026b8f46a2cf12448598df assets\create\blockstates\mechanical_be 0fb175e5260ec60e130e589d682a4d3301d7364e assets\create\blockstates\mechanical_harvester.json d9afcfa27c42df5fd54a7b783acb0eb45ddf5aa5 assets\create\blockstates\mechanical_mixer.json da612a05f94dc19e07e250efc35a7b2839d2ee76 assets\create\blockstates\mechanical_piston.json -94ec340a50b2406f833735f7501a1840c692e32a assets\create\blockstates\mechanical_piston_head.json +f656c6bf544015299e129367c9528c7c4322d9d0 assets\create\blockstates\mechanical_piston_head.json debef0f5dde74103aaf4422de4bc90e4099b0c47 assets\create\blockstates\mechanical_plough.json 92269fe66d7b83095a2e04e121af0be792f55dd6 assets\create\blockstates\mechanical_press.json -b7c4a0ff0c6f16e14d71fc0fb7fc66d032b65cf3 assets\create\blockstates\mechanical_pump.json +3868d093b03a50adb239cff78597f94f004cd425 assets\create\blockstates\mechanical_pump.json 1478fc76afb9b186fd3fddc20c29525d60d692bc assets\create\blockstates\mechanical_saw.json 4e48ad0936647065c2322390e7c0fe115c853a98 assets\create\blockstates\millstone.json 468202df0802e17c75fcad0993daf1bc5300ca91 assets\create\blockstates\minecart_anchor.json @@ -247,7 +247,7 @@ c17d334e938dcb742550ba8307ca8266a1fc9b49 assets\create\blockstates\paved_weather cb23aef25f3106b06c8fa8f152c638bb0d2185d8 assets\create\blockstates\paved_weathered_limestone_slab.json d62b0992cec1de45dad1f2c273132225f4ef33a0 assets\create\blockstates\paved_weathered_limestone_stairs.json dba4cf86e82ed4502fffed363fbce226a445e774 assets\create\blockstates\paved_weathered_limestone_wall.json -975c97018e9e2419943eaab43aed0970e96feaf7 assets\create\blockstates\piston_extension_pole.json +6266a03c4468e15119e70ce004c572a118000057 assets\create\blockstates\piston_extension_pole.json 2f764f460aa1d75ba995da180bc6f8d2bd9db385 assets\create\blockstates\polished_dark_scoria.json 262b22dcf3e151e63f58710f6b6fe4fc4fc2a70c assets\create\blockstates\polished_dark_scoria_slab.json a0dbcb7651b02a4f5c747ad2c6d35da60f768d9b assets\create\blockstates\polished_dark_scoria_stairs.json @@ -277,7 +277,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -5d1b30c2bab556f57c78e7780fd445b08f541a50 assets\create\blockstates\radial_chassis.json +89b63c6e5875da07226854651079bcea85439f5b assets\create\blockstates\radial_chassis.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json 1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json @@ -298,7 +298,7 @@ b6e50f46a02f833f2f2bafa8585a909b6da5e229 assets\create\blockstates\scoria_cobble 46641fdbc6bdc05829153bc28efb90cae26a51f8 assets\create\blockstates\scoria_pillar.json 89e10f35b93b5c72dd235eb79e5fc6f3655027a1 assets\create\blockstates\secondary_linear_chassis.json 81931eb1027dfb42ba4b2186185a4c0a36e0dbe4 assets\create\blockstates\sequenced_gearshift.json -79ae6d86a829b9ce82fce68a6377d3810fcfcb10 assets\create\blockstates\shaft.json +c47db604f854d2ff7132da88c25780a5501e2161 assets\create\blockstates\shaft.json e815bfd854c2653f10828bb11950f7fb991d7efc assets\create\blockstates\speedometer.json d62b7908119fa4f51715a186d0882b388bb25cab assets\create\blockstates\spruce_window.json 8d7dfa60630a8b4bae4e8eca5c66e1cfa34dda1f assets\create\blockstates\spruce_window_pane.json @@ -2418,16 +2418,20 @@ d5ea262a0f5fb210612d22521818e26cf08e591a data\forge\tags\blocks\ores\zinc.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data\forge\tags\blocks\storage_blocks\brass.json f6c8f34ceb475546dba5cc6ff288863ea795d20b data\forge\tags\blocks\storage_blocks\copper.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data\forge\tags\blocks\storage_blocks\zinc.json +081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\forge\tags\items\beacon_payment.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\items\glass\colorless.json 81ced867d24ec814942909965dd4576eff1db685 data\forge\tags\items\glass_panes.json +081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\forge\tags\items\ingots.json 2dfd21017cb51d4bdc18d977a7d16f103cc3a985 data\forge\tags\items\ingots\brass.json 8e0ca32df10a50544f54fbe3dbfe485971b23315 data\forge\tags\items\ingots\copper.json 2f9ac80569a5cc168061742f9e3c36277d4d056e data\forge\tags\items\ingots\zinc.json +bcf15289cbadd429a48bd9accb4d2d5f75353a61 data\forge\tags\items\nuggets.json cc82188fe8d986f4457301ed4f75ae833d263601 data\forge\tags\items\nuggets\brass.json 7affb30e30a252566a77467994b0c99331f1076c data\forge\tags\items\nuggets\copper.json 0d8cb5092ee6ec01ea09324c80d649ba05549799 data\forge\tags\items\nuggets\zinc.json 4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data\forge\tags\items\ores\copper.json d5ea262a0f5fb210612d22521818e26cf08e591a data\forge\tags\items\ores\zinc.json +5d5ec04a61ff2b1ad19210e2859a9c96cc246ef8 data\forge\tags\items\plates.json 39f0d70ec10597e85df7c4783bbc5e0e4a5ffb80 data\forge\tags\items\plates\brass.json c3dab5fe379bc1b7b10d4a0ba7009eee1b75a27c data\forge\tags\items\plates\copper.json fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data\forge\tags\items\plates\gold.json diff --git a/src/generated/resources/assets/create/blockstates/cogwheel.json b/src/generated/resources/assets/create/blockstates/cogwheel.json index 213f20515..ecc0a2f17 100644 --- a/src/generated/resources/assets/create/blockstates/cogwheel.json +++ b/src/generated/resources/assets/create/blockstates/cogwheel.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/cogwheel", "x": 90, "y": 90 }, - "axis=y": { + "axis=y,waterlogged=false": { "model": "create:block/cogwheel" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/cogwheel", + "x": 90, + "y": 180 + }, + "axis=x,waterlogged=true": { + "model": "create:block/cogwheel", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=true": { + "model": "create:block/cogwheel" + }, + "axis=z,waterlogged=true": { "model": "create:block/cogwheel", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/large_cogwheel.json b/src/generated/resources/assets/create/blockstates/large_cogwheel.json index 620157584..b9d2ff3d2 100644 --- a/src/generated/resources/assets/create/blockstates/large_cogwheel.json +++ b/src/generated/resources/assets/create/blockstates/large_cogwheel.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/large_cogwheel", "x": 90, "y": 90 }, - "axis=y": { + "axis=y,waterlogged=false": { "model": "create:block/large_cogwheel" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/large_cogwheel", + "x": 90, + "y": 180 + }, + "axis=x,waterlogged=true": { + "model": "create:block/large_cogwheel", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=true": { + "model": "create:block/large_cogwheel" + }, + "axis=z,waterlogged=true": { "model": "create:block/large_cogwheel", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json index a97257b0a..6a76d8d7b 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json @@ -1,53 +1,105 @@ { "variants": { - "facing=down,type=normal": { + "facing=down,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 180 }, - "facing=up,type=normal": { + "facing=up,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head" }, - "facing=north,type=normal": { + "facing=north,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 90 }, - "facing=south,type=normal": { + "facing=south,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 180 }, - "facing=west,type=normal": { + "facing=west,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 270 }, - "facing=east,type=normal": { + "facing=east,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 90 }, - "facing=down,type=sticky": { + "facing=down,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head", "x": 180 }, - "facing=up,type=sticky": { + "facing=up,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head" }, - "facing=north,type=sticky": { + "facing=north,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head", "x": 90 }, - "facing=south,type=sticky": { + "facing=south,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 180 }, - "facing=west,type=sticky": { + "facing=west,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 270 }, - "facing=east,type=sticky": { + "facing=east,type=sticky,waterlogged=false": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90, + "y": 90 + }, + "facing=down,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 180 + }, + "facing=up,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head" + }, + "facing=north,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90 + }, + "facing=south,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90, + "y": 180 + }, + "facing=west,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90, + "y": 270 + }, + "facing=east,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90, + "y": 90 + }, + "facing=down,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 180 + }, + "facing=up,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head" + }, + "facing=north,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90 + }, + "facing=south,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90, + "y": 180 + }, + "facing=west,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90, + "y": 270 + }, + "facing=east,type=sticky,waterlogged=true": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/mechanical_pump.json b/src/generated/resources/assets/create/blockstates/mechanical_pump.json index 3b8c68f80..932c1e83d 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_pump.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_pump.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/mechanical_pump/block", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/mechanical_pump/block" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/mechanical_pump/block", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/mechanical_pump/block", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/mechanical_pump/block", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/mechanical_pump/block" + }, + "facing=north,waterlogged=true": { + "model": "create:block/mechanical_pump/block", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/mechanical_pump/block", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/mechanical_pump/block", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json index 987043b22..6aad86e8b 100644 --- a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json +++ b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/piston_extension_pole", "x": 180 }, - "facing=up": { + "facing=up,waterlogged=false": { "model": "create:block/piston_extension_pole" }, - "facing=north": { + "facing=north,waterlogged=false": { "model": "create:block/piston_extension_pole", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/piston_extension_pole", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,waterlogged=false": { "model": "create:block/piston_extension_pole", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,waterlogged=false": { + "model": "create:block/piston_extension_pole", + "x": 90, + "y": 90 + }, + "facing=down,waterlogged=true": { + "model": "create:block/piston_extension_pole", + "x": 180 + }, + "facing=up,waterlogged=true": { + "model": "create:block/piston_extension_pole" + }, + "facing=north,waterlogged=true": { + "model": "create:block/piston_extension_pole", + "x": 90 + }, + "facing=south,waterlogged=true": { + "model": "create:block/piston_extension_pole", + "x": 90, + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/piston_extension_pole", + "x": 90, + "y": 270 + }, + "facing=east,waterlogged=true": { "model": "create:block/piston_extension_pole", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 04e5c08ae..d60327a8a 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -29,8 +29,8 @@ }, { "when": { - "axis": "x", - "sticky_south": "true" + "sticky_south": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -39,8 +39,8 @@ }, { "when": { - "axis": "y", - "sticky_south": "true" + "sticky_south": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky" @@ -48,8 +48,8 @@ }, { "when": { - "axis": "z", - "sticky_south": "true" + "sticky_south": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -59,8 +59,8 @@ }, { "when": { - "axis": "x", - "sticky_south": "false" + "sticky_south": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -69,8 +69,8 @@ }, { "when": { - "axis": "y", - "sticky_south": "false" + "sticky_south": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y" @@ -78,8 +78,8 @@ }, { "when": { - "axis": "z", - "sticky_south": "false" + "sticky_south": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -89,8 +89,8 @@ }, { "when": { - "axis": "x", - "sticky_west": "true" + "sticky_west": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -99,8 +99,8 @@ }, { "when": { - "axis": "y", - "sticky_west": "true" + "sticky_west": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -109,8 +109,8 @@ }, { "when": { - "axis": "z", - "sticky_west": "true" + "sticky_west": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky", @@ -119,8 +119,8 @@ }, { "when": { - "axis": "x", - "sticky_west": "false" + "sticky_west": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -129,8 +129,8 @@ }, { "when": { - "axis": "y", - "sticky_west": "false" + "sticky_west": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -139,8 +139,8 @@ }, { "when": { - "axis": "z", - "sticky_west": "false" + "sticky_west": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z", diff --git a/src/generated/resources/assets/create/blockstates/shaft.json b/src/generated/resources/assets/create/blockstates/shaft.json index c4cc5b98b..925d83d62 100644 --- a/src/generated/resources/assets/create/blockstates/shaft.json +++ b/src/generated/resources/assets/create/blockstates/shaft.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/shaft", "x": 90, "y": 90 }, - "axis=y": { + "axis=y,waterlogged=false": { "model": "create:block/shaft" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/shaft", + "x": 90, + "y": 180 + }, + "axis=x,waterlogged=true": { + "model": "create:block/shaft", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=true": { + "model": "create:block/shaft" + }, + "axis=z,waterlogged=true": { "model": "create:block/shaft", "x": 90, "y": 180 diff --git a/src/generated/resources/data/forge/tags/items/beacon_payment.json b/src/generated/resources/data/forge/tags/items/beacon_payment.json new file mode 100644 index 000000000..c407a2e9a --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/beacon_payment.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "create:copper_ingot", + "create:zinc_ingot", + "create:brass_ingot" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ingots.json b/src/generated/resources/data/forge/tags/items/ingots.json new file mode 100644 index 000000000..c407a2e9a --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/ingots.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "create:copper_ingot", + "create:zinc_ingot", + "create:brass_ingot" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/nuggets.json b/src/generated/resources/data/forge/tags/items/nuggets.json new file mode 100644 index 000000000..6eb0a5036 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/nuggets.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "create:copper_nugget", + "create:zinc_nugget", + "create:brass_nugget" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates.json b/src/generated/resources/data/forge/tags/items/plates.json new file mode 100644 index 000000000..c294488df --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/plates.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "create:copper_sheet", + "create:brass_sheet", + "create:iron_sheet", + "create:golden_sheet" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 885c35b6d..5843ea93b 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -102,6 +102,7 @@ import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchBlock import com.simibubi.create.content.logistics.block.transposer.LinkedTransposerBlock; import com.simibubi.create.content.logistics.block.transposer.TransposerBlock; import com.simibubi.create.content.logistics.block.transposer.VerticalTransposerGenerator; +import com.simibubi.create.content.palettes.MetalBlock; import com.simibubi.create.content.schematics.block.SchematicTableBlock; import com.simibubi.create.content.schematics.block.SchematicannonBlock; import com.simibubi.create.foundation.config.StressConfigDefaults; @@ -885,7 +886,7 @@ public class AllBlocks { .register(); public static final BlockEntry COPPER_BLOCK = - REGISTRATE.block("copper_block", p -> new OxidizingBlock(p, 1 / 32f)) + REGISTRATE.block("copper_block", p -> new OxidizingBlock(p, 1 / 32f, true)) .initialProperties(() -> Blocks.IRON_BLOCK) .transform(tagBlockAndItem("storage_blocks/copper")) .transform(oxidizedItemModel()) @@ -901,19 +902,20 @@ public class AllBlocks { .transform(oxidizedBlockstate()) .register(); - public static final BlockEntry ZINC_BLOCK = REGISTRATE.block("zinc_block", Block::new) + public static final BlockEntry ZINC_BLOCK = REGISTRATE.block("zinc_block", p -> new MetalBlock(p, true)) .initialProperties(() -> Blocks.IRON_BLOCK) .transform(tagBlockAndItem("storage_blocks/zinc")) .build() .recipe((ctx, prov) -> prov.square(DataIngredient.tag(forgeItemTag("ingots/zinc")), ctx, false)) .register(); - public static final BlockEntry BRASS_BLOCK = REGISTRATE.block("brass_block", Block::new) - .initialProperties(() -> Blocks.IRON_BLOCK) - .transform(tagBlockAndItem("storage_blocks/brass")) - .build() - .recipe((ctx, prov) -> prov.square(DataIngredient.tag(forgeItemTag("ingots/brass")), ctx, false)) - .register(); + public static final BlockEntry BRASS_BLOCK = + REGISTRATE.block("brass_block", p -> new MetalBlock(p, true)) + .initialProperties(() -> Blocks.IRON_BLOCK) + .transform(tagBlockAndItem("storage_blocks/brass")) + .build() + .recipe((ctx, prov) -> prov.square(DataIngredient.tag(forgeItemTag("ingots/brass")), ctx, false)) + .register(); // Load this class diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 4e8a5507a..f5f3dea79 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -55,14 +55,14 @@ public class AllItems { } public static final ItemEntry COPPER_NUGGET = - taggedIngredient("copper_nugget", forgeItemTag("nuggets/copper")), - ZINC_NUGGET = taggedIngredient("zinc_nugget", forgeItemTag("nuggets/zinc")), - BRASS_NUGGET = taggedIngredient("brass_nugget", forgeItemTag("nuggets/brass")), + taggedIngredient("copper_nugget", forgeItemTag("nuggets/copper"), AllItemTags.nuggets.tag), + ZINC_NUGGET = taggedIngredient("zinc_nugget", forgeItemTag("nuggets/zinc"), AllItemTags.nuggets.tag), + BRASS_NUGGET = taggedIngredient("brass_nugget", forgeItemTag("nuggets/brass"), AllItemTags.nuggets.tag), - COPPER_SHEET = taggedIngredient("copper_sheet", forgeItemTag("plates/copper")), - BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass")), - IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron")), - GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold")), + COPPER_SHEET = taggedIngredient("copper_sheet", forgeItemTag("plates/copper"), AllItemTags.plates.tag), + BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), AllItemTags.plates.tag), + IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), AllItemTags.plates.tag), + GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), AllItemTags.plates.tag), LAPIS_SHEET = ingredient("lapis_sheet"), CRUSHED_IRON = taggedIngredient("crushed_iron_ore", AllItemTags.CRUSHED_ORES.tag), @@ -72,9 +72,12 @@ public class AllItems { CRUSHED_BRASS = taggedIngredient("crushed_brass", AllItemTags.CRUSHED_ORES.tag), ANDESITE_ALLOY = ingredient("andesite_alloy"), - COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper")), - ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc")), - BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass")), + COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), AllItemTags.beacon_payment.tag, + AllItemTags.ingots.tag), + ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), AllItemTags.beacon_payment.tag, + AllItemTags.ingots.tag), + BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), AllItemTags.beacon_payment.tag, + AllItemTags.ingots.tag), WHEAT_FLOUR = ingredient("wheat_flour"), DOUGH = ingredient("dough"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), ROSE_QUARTZ = ingredient("rose_quartz"), @@ -226,9 +229,10 @@ public class AllItems { .register(); } - private static ItemEntry taggedIngredient(String name, Tag tag) { + @SafeVarargs + private static ItemEntry taggedIngredient(String name, Tag... tags) { return REGISTRATE.item(name, Item::new) - .tag(tag) + .tag(tags) .register(); } diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index e85354df0..f52320c81 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -17,14 +17,13 @@ import net.minecraft.tags.TagCollection; import net.minecraft.util.ResourceLocation; public class AllTags { - public static NonNullFunction, ItemBuilder>> tagBlockAndItem( String tagName) { return b -> b.tag(forgeBlockTag(tagName)) .item() .tag(forgeItemTag(tagName)); } - + public static Tag forgeBlockTag(String name) { return forgeTag(BlockTags.getCollection(), name); } @@ -32,7 +31,7 @@ public class AllTags { public static Tag forgeItemTag(String name) { return forgeTag(ItemTags.getCollection(), name); } - + public static Tag forgeTag(TagCollection collection, String name) { return tag(collection, "forge", name); } @@ -42,7 +41,8 @@ public class AllTags { } public static enum AllItemTags { - CRUSHED_ORES; + CRUSHED_ORES, beacon_payment("", "forge"), ingots("", "forge"), nuggets("", "forge"), plates("", "forge"); + public Tag tag; private AllItemTags() { @@ -50,8 +50,12 @@ public class AllTags { } private AllItemTags(String path) { + this(path, Create.ID); + } + + private AllItemTags(String path, String modid) { tag = new ItemTags.Wrapper( - new ResourceLocation(Create.ID, (path.isEmpty() ? "" : path + "/") + Lang.asId(name()))); + new ResourceLocation(modid, (path.isEmpty() ? "" : path + "/") + Lang.asId(name()))); } public boolean matches(ItemStack stack) { @@ -61,6 +65,7 @@ public class AllTags { public static enum AllBlockTags { WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE,; + public Tag tag; private AllBlockTags() { @@ -76,5 +81,4 @@ public class AllTags { return tag.contains(block.getBlock()); } } - } diff --git a/src/main/java/com/simibubi/create/content/palettes/MetalBlock.java b/src/main/java/com/simibubi/create/content/palettes/MetalBlock.java new file mode 100644 index 000000000..cb2fc6e10 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/palettes/MetalBlock.java @@ -0,0 +1,25 @@ +package com.simibubi.create.content.palettes; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorldReader; + +public class MetalBlock extends Block { + private final boolean isBeaconBaseBlock; + + public MetalBlock(Properties properties) { + super(properties); + isBeaconBaseBlock = false; + } + + public MetalBlock(Properties properties, boolean isBeaconBaseBlock) { + super(properties); + this.isBeaconBaseBlock = isBeaconBaseBlock; + } + + @Override + public boolean isBeaconBase(BlockState state, IWorldReader world, BlockPos pos, BlockPos beacon) { + return isBeaconBaseBlock ? true : super.isBeaconBase(state, world, pos, beacon); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java b/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java index 892d93ef7..101edd2c2 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java @@ -5,6 +5,7 @@ import java.util.OptionalDouble; import java.util.Random; import com.simibubi.create.content.curiosities.tools.SandPaperItem; +import com.simibubi.create.content.palettes.MetalBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -20,7 +21,7 @@ import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; -public class OxidizingBlock extends Block { +public class OxidizingBlock extends MetalBlock { public static final IntegerProperty OXIDIZATION = IntegerProperty.create("oxidization", 0, 7); private float chance; @@ -30,6 +31,12 @@ public class OxidizingBlock extends Block { this.chance = chance; setDefaultState(getDefaultState().with(OXIDIZATION, 0)); } + + public OxidizingBlock(Properties properties, float chance, boolean isBeaconBaseBlock) { + super(properties, isBeaconBaseBlock); + this.chance = chance; + setDefaultState(getDefaultState().with(OXIDIZATION, 0)); + } @Override protected void fillStateContainer(Builder builder) { From a6fab2872207d2e42a37f2cb00b9c8ce6e408a07 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Fri, 19 Jun 2020 21:49:49 +0200 Subject: [PATCH 07/47] fix waterlogged blockstate to not be part of blockstate json files --- src/generated/resources/.cache/cache | 14 ++-- .../assets/create/blockstates/cogwheel.json | 19 +---- .../create/blockstates/large_cogwheel.json | 19 +---- .../blockstates/mechanical_piston_head.json | 76 +++---------------- .../create/blockstates/mechanical_pump.json | 38 ++-------- .../blockstates/piston_extension_pole.json | 38 ++-------- .../create/blockstates/radial_chassis.json | 24 +++--- .../assets/create/blockstates/shaft.json | 19 +---- .../java/com/simibubi/create/AllBlocks.java | 6 +- .../create/foundation/data/BlockStateGen.java | 25 +++++- 10 files changed, 78 insertions(+), 200 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 394833615..b43cf1fa1 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -32,7 +32,7 @@ cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scor 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json -7854040f0570146b9823270fea7ea88c0048c316 assets\create\blockstates\cogwheel.json +e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets\create\blockstates\copper_block.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets\create\blockstates\copper_casing.json 3355a852cdc717e257ca19b3db836068964733e3 assets\create\blockstates\copper_ore.json @@ -147,7 +147,7 @@ be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets\create\blockstates\horizontal_fr 18d9fdaa1352a7e2ec91135e46dae5c02ccd8f8f assets\create\blockstates\horizontal_framed_glass_pane.json 5d851c90d23de5087ce546d4bbe509e112b84c49 assets\create\blockstates\jungle_window.json b15bea757ef981e0ca60f740ca234ee2014eb7b7 assets\create\blockstates\jungle_window_pane.json -fff1af0ff50d756efb027b6f3a6610c182138520 assets\create\blockstates\large_cogwheel.json +f651091db216b009b3379b2f48d56d03481c8675 assets\create\blockstates\large_cogwheel.json a38184e035c2ebca7471e1714494fea213af259e assets\create\blockstates\layered_andesite.json 0fef29f4bfe8e1258427252ef0ff1a414c194969 assets\create\blockstates\layered_dark_scoria.json 924a0291410406c86ded448f95c97ac3b9d2bd2e assets\create\blockstates\layered_diorite.json @@ -178,10 +178,10 @@ ddcf4bb281e046fbb1026b8f46a2cf12448598df assets\create\blockstates\mechanical_be 0fb175e5260ec60e130e589d682a4d3301d7364e assets\create\blockstates\mechanical_harvester.json d9afcfa27c42df5fd54a7b783acb0eb45ddf5aa5 assets\create\blockstates\mechanical_mixer.json da612a05f94dc19e07e250efc35a7b2839d2ee76 assets\create\blockstates\mechanical_piston.json -f656c6bf544015299e129367c9528c7c4322d9d0 assets\create\blockstates\mechanical_piston_head.json +94ec340a50b2406f833735f7501a1840c692e32a assets\create\blockstates\mechanical_piston_head.json debef0f5dde74103aaf4422de4bc90e4099b0c47 assets\create\blockstates\mechanical_plough.json 92269fe66d7b83095a2e04e121af0be792f55dd6 assets\create\blockstates\mechanical_press.json -3868d093b03a50adb239cff78597f94f004cd425 assets\create\blockstates\mechanical_pump.json +b7c4a0ff0c6f16e14d71fc0fb7fc66d032b65cf3 assets\create\blockstates\mechanical_pump.json 1478fc76afb9b186fd3fddc20c29525d60d692bc assets\create\blockstates\mechanical_saw.json 4e48ad0936647065c2322390e7c0fe115c853a98 assets\create\blockstates\millstone.json 468202df0802e17c75fcad0993daf1bc5300ca91 assets\create\blockstates\minecart_anchor.json @@ -247,7 +247,7 @@ c17d334e938dcb742550ba8307ca8266a1fc9b49 assets\create\blockstates\paved_weather cb23aef25f3106b06c8fa8f152c638bb0d2185d8 assets\create\blockstates\paved_weathered_limestone_slab.json d62b0992cec1de45dad1f2c273132225f4ef33a0 assets\create\blockstates\paved_weathered_limestone_stairs.json dba4cf86e82ed4502fffed363fbce226a445e774 assets\create\blockstates\paved_weathered_limestone_wall.json -6266a03c4468e15119e70ce004c572a118000057 assets\create\blockstates\piston_extension_pole.json +975c97018e9e2419943eaab43aed0970e96feaf7 assets\create\blockstates\piston_extension_pole.json 2f764f460aa1d75ba995da180bc6f8d2bd9db385 assets\create\blockstates\polished_dark_scoria.json 262b22dcf3e151e63f58710f6b6fe4fc4fc2a70c assets\create\blockstates\polished_dark_scoria_slab.json a0dbcb7651b02a4f5c747ad2c6d35da60f768d9b assets\create\blockstates\polished_dark_scoria_stairs.json @@ -277,7 +277,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -89b63c6e5875da07226854651079bcea85439f5b assets\create\blockstates\radial_chassis.json +8d7e653bfd9846e684a0d3725595714a19201017 assets\create\blockstates\radial_chassis.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json 1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json @@ -298,7 +298,7 @@ b6e50f46a02f833f2f2bafa8585a909b6da5e229 assets\create\blockstates\scoria_cobble 46641fdbc6bdc05829153bc28efb90cae26a51f8 assets\create\blockstates\scoria_pillar.json 89e10f35b93b5c72dd235eb79e5fc6f3655027a1 assets\create\blockstates\secondary_linear_chassis.json 81931eb1027dfb42ba4b2186185a4c0a36e0dbe4 assets\create\blockstates\sequenced_gearshift.json -c47db604f854d2ff7132da88c25780a5501e2161 assets\create\blockstates\shaft.json +79ae6d86a829b9ce82fce68a6377d3810fcfcb10 assets\create\blockstates\shaft.json e815bfd854c2653f10828bb11950f7fb991d7efc assets\create\blockstates\speedometer.json d62b7908119fa4f51715a186d0882b388bb25cab assets\create\blockstates\spruce_window.json 8d7dfa60630a8b4bae4e8eca5c66e1cfa34dda1f assets\create\blockstates\spruce_window_pane.json diff --git a/src/generated/resources/assets/create/blockstates/cogwheel.json b/src/generated/resources/assets/create/blockstates/cogwheel.json index ecc0a2f17..213f20515 100644 --- a/src/generated/resources/assets/create/blockstates/cogwheel.json +++ b/src/generated/resources/assets/create/blockstates/cogwheel.json @@ -1,27 +1,14 @@ { "variants": { - "axis=x,waterlogged=false": { + "axis=x": { "model": "create:block/cogwheel", "x": 90, "y": 90 }, - "axis=y,waterlogged=false": { + "axis=y": { "model": "create:block/cogwheel" }, - "axis=z,waterlogged=false": { - "model": "create:block/cogwheel", - "x": 90, - "y": 180 - }, - "axis=x,waterlogged=true": { - "model": "create:block/cogwheel", - "x": 90, - "y": 90 - }, - "axis=y,waterlogged=true": { - "model": "create:block/cogwheel" - }, - "axis=z,waterlogged=true": { + "axis=z": { "model": "create:block/cogwheel", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/large_cogwheel.json b/src/generated/resources/assets/create/blockstates/large_cogwheel.json index b9d2ff3d2..620157584 100644 --- a/src/generated/resources/assets/create/blockstates/large_cogwheel.json +++ b/src/generated/resources/assets/create/blockstates/large_cogwheel.json @@ -1,27 +1,14 @@ { "variants": { - "axis=x,waterlogged=false": { + "axis=x": { "model": "create:block/large_cogwheel", "x": 90, "y": 90 }, - "axis=y,waterlogged=false": { + "axis=y": { "model": "create:block/large_cogwheel" }, - "axis=z,waterlogged=false": { - "model": "create:block/large_cogwheel", - "x": 90, - "y": 180 - }, - "axis=x,waterlogged=true": { - "model": "create:block/large_cogwheel", - "x": 90, - "y": 90 - }, - "axis=y,waterlogged=true": { - "model": "create:block/large_cogwheel" - }, - "axis=z,waterlogged=true": { + "axis=z": { "model": "create:block/large_cogwheel", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json index 6a76d8d7b..a97257b0a 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json @@ -1,105 +1,53 @@ { "variants": { - "facing=down,type=normal,waterlogged=false": { + "facing=down,type=normal": { "model": "create:block/mechanical_piston/normal/head", "x": 180 }, - "facing=up,type=normal,waterlogged=false": { + "facing=up,type=normal": { "model": "create:block/mechanical_piston/normal/head" }, - "facing=north,type=normal,waterlogged=false": { + "facing=north,type=normal": { "model": "create:block/mechanical_piston/normal/head", "x": 90 }, - "facing=south,type=normal,waterlogged=false": { + "facing=south,type=normal": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 180 }, - "facing=west,type=normal,waterlogged=false": { + "facing=west,type=normal": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 270 }, - "facing=east,type=normal,waterlogged=false": { + "facing=east,type=normal": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 90 }, - "facing=down,type=sticky,waterlogged=false": { + "facing=down,type=sticky": { "model": "create:block/mechanical_piston/sticky/head", "x": 180 }, - "facing=up,type=sticky,waterlogged=false": { + "facing=up,type=sticky": { "model": "create:block/mechanical_piston/sticky/head" }, - "facing=north,type=sticky,waterlogged=false": { + "facing=north,type=sticky": { "model": "create:block/mechanical_piston/sticky/head", "x": 90 }, - "facing=south,type=sticky,waterlogged=false": { + "facing=south,type=sticky": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 180 }, - "facing=west,type=sticky,waterlogged=false": { + "facing=west,type=sticky": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 270 }, - "facing=east,type=sticky,waterlogged=false": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90, - "y": 90 - }, - "facing=down,type=normal,waterlogged=true": { - "model": "create:block/mechanical_piston/normal/head", - "x": 180 - }, - "facing=up,type=normal,waterlogged=true": { - "model": "create:block/mechanical_piston/normal/head" - }, - "facing=north,type=normal,waterlogged=true": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90 - }, - "facing=south,type=normal,waterlogged=true": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90, - "y": 180 - }, - "facing=west,type=normal,waterlogged=true": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90, - "y": 270 - }, - "facing=east,type=normal,waterlogged=true": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90, - "y": 90 - }, - "facing=down,type=sticky,waterlogged=true": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 180 - }, - "facing=up,type=sticky,waterlogged=true": { - "model": "create:block/mechanical_piston/sticky/head" - }, - "facing=north,type=sticky,waterlogged=true": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90 - }, - "facing=south,type=sticky,waterlogged=true": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90, - "y": 180 - }, - "facing=west,type=sticky,waterlogged=true": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90, - "y": 270 - }, - "facing=east,type=sticky,waterlogged=true": { + "facing=east,type=sticky": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/mechanical_pump.json b/src/generated/resources/assets/create/blockstates/mechanical_pump.json index 932c1e83d..3b8c68f80 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_pump.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_pump.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/mechanical_pump/block", "x": 180 }, - "facing=up,waterlogged=false": { + "facing=up": { "model": "create:block/mechanical_pump/block" }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/mechanical_pump/block", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 180 }, - "facing=west,waterlogged=false": { + "facing=west": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 270 }, - "facing=east,waterlogged=false": { - "model": "create:block/mechanical_pump/block", - "x": 90, - "y": 90 - }, - "facing=down,waterlogged=true": { - "model": "create:block/mechanical_pump/block", - "x": 180 - }, - "facing=up,waterlogged=true": { - "model": "create:block/mechanical_pump/block" - }, - "facing=north,waterlogged=true": { - "model": "create:block/mechanical_pump/block", - "x": 90 - }, - "facing=south,waterlogged=true": { - "model": "create:block/mechanical_pump/block", - "x": 90, - "y": 180 - }, - "facing=west,waterlogged=true": { - "model": "create:block/mechanical_pump/block", - "x": 90, - "y": 270 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json index 6aad86e8b..987043b22 100644 --- a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json +++ b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/piston_extension_pole", "x": 180 }, - "facing=up,waterlogged=false": { + "facing=up": { "model": "create:block/piston_extension_pole" }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/piston_extension_pole", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/piston_extension_pole", "x": 90, "y": 180 }, - "facing=west,waterlogged=false": { + "facing=west": { "model": "create:block/piston_extension_pole", "x": 90, "y": 270 }, - "facing=east,waterlogged=false": { - "model": "create:block/piston_extension_pole", - "x": 90, - "y": 90 - }, - "facing=down,waterlogged=true": { - "model": "create:block/piston_extension_pole", - "x": 180 - }, - "facing=up,waterlogged=true": { - "model": "create:block/piston_extension_pole" - }, - "facing=north,waterlogged=true": { - "model": "create:block/piston_extension_pole", - "x": 90 - }, - "facing=south,waterlogged=true": { - "model": "create:block/piston_extension_pole", - "x": 90, - "y": 180 - }, - "facing=west,waterlogged=true": { - "model": "create:block/piston_extension_pole", - "x": 90, - "y": 270 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/piston_extension_pole", "x": 90, "y": 90 diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index d60327a8a..9d00ea8b1 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -149,8 +149,8 @@ }, { "when": { - "axis": "x", - "sticky_north": "true" + "sticky_north": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky" @@ -158,8 +158,8 @@ }, { "when": { - "axis": "y", - "sticky_north": "true" + "sticky_north": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -168,8 +168,8 @@ }, { "when": { - "axis": "z", - "sticky_north": "true" + "sticky_north": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -178,8 +178,8 @@ }, { "when": { - "axis": "x", - "sticky_north": "false" + "sticky_north": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x" @@ -187,8 +187,8 @@ }, { "when": { - "axis": "y", - "sticky_north": "false" + "sticky_north": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -197,8 +197,8 @@ }, { "when": { - "axis": "z", - "sticky_north": "false" + "sticky_north": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x", diff --git a/src/generated/resources/assets/create/blockstates/shaft.json b/src/generated/resources/assets/create/blockstates/shaft.json index 925d83d62..c4cc5b98b 100644 --- a/src/generated/resources/assets/create/blockstates/shaft.json +++ b/src/generated/resources/assets/create/blockstates/shaft.json @@ -1,27 +1,14 @@ { "variants": { - "axis=x,waterlogged=false": { + "axis=x": { "model": "create:block/shaft", "x": 90, "y": 90 }, - "axis=y,waterlogged=false": { + "axis=y": { "model": "create:block/shaft" }, - "axis=z,waterlogged=false": { - "model": "create:block/shaft", - "x": 90, - "y": 180 - }, - "axis=x,waterlogged=true": { - "model": "create:block/shaft", - "x": 90, - "y": 90 - }, - "axis=y,waterlogged=true": { - "model": "create:block/shaft" - }, - "axis=z,waterlogged=true": { + "axis=z": { "model": "create:block/shaft", "x": 90, "y": 180 diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 5843ea93b..7ec9d31b0 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -404,7 +404,7 @@ public class AllBlocks { public static final BlockEntry MECHANICAL_PUMP = REGISTRATE.block("mechanical_pump", PumpBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate(BlockStateGen.directionalBlockProvider(true)) + .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) .transform(StressConfigDefaults.setImpact(4.0)) .item() .transform(customItemModel()) @@ -434,7 +434,7 @@ public class AllBlocks { public static final BlockEntry MECHANICAL_PISTON_HEAD = REGISTRATE.block("mechanical_piston_head", MechanicalPistonHeadBlock::new) .initialProperties(() -> Blocks.PISTON_HEAD) - .blockstate((c, p) -> p.directionalBlock(c.get(), state -> p.models() + .blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() .getExistingFile(p.modLoc("block/mechanical_piston/" + state.get(MechanicalPistonHeadBlock.TYPE) .getName() + "/head")))) .register(); @@ -442,7 +442,7 @@ public class AllBlocks { public static final BlockEntry PISTON_EXTENSION_POLE = REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new) .initialProperties(() -> Blocks.PISTON_HEAD) - .blockstate(BlockStateGen.directionalBlockProvider(false)) + .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) .simpleItem() .register(); diff --git a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java index 4d8236df2..4b0c993a8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -58,6 +58,11 @@ public class BlockStateGen { boolean customItem) { return (c, p) -> p.directionalBlock(c.get(), getBlockModel(customItem, c, p)); } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalBlockProviderIgnoresWaterlogged( + boolean customItem) { + return (c, p) -> directionalBlockIgnoresWaterlogged(c, p, getBlockModel(customItem, c, p)); + } public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalBlockProvider( boolean customItem) { @@ -99,17 +104,33 @@ public class BlockStateGen { // Generators + public static void directionalBlockIgnoresWaterlogged(DataGenContext ctx, + RegistrateBlockstateProvider prov, Function modelFunc) { + prov.getVariantBuilder(ctx.getEntry()) + .forAllStatesExcept(state -> { + Direction dir = state.get(BlockStateProperties.FACING); + return ConfiguredModel.builder() + .modelFile(modelFunc.apply(state)) + .rotationX(dir == Direction.DOWN ? 180 + : dir.getAxis() + .isHorizontal() ? 90 : 0) + .rotationY(dir.getAxis() + .isVertical() ? 0 : (((int) dir.getHorizontalAngle()) + 180) % 360) + .build(); + }, BlockStateProperties.WATERLOGGED); + } + public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, Function modelFunc) { prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> { + .forAllStatesExcept(state -> { Axis axis = state.get(BlockStateProperties.AXIS); return ConfiguredModel.builder() .modelFile(modelFunc.apply(state)) .rotationX(axis == Axis.Y ? 0 : 90) .rotationY(axis == Axis.X ? 90 : axis == Axis.Z ? 180 : 0) .build(); - }); + }, BlockStateProperties.WATERLOGGED); } public static void horizontalAxisBlock(DataGenContext ctx, From b5afa41152e500bbbceec3ecc1bc25eae9a94246 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Fri, 19 Jun 2020 22:59:38 +0200 Subject: [PATCH 08/47] simplify duplicate tagging --- src/generated/resources/.cache/cache | 5 +++-- .../data/create/tags/items/create_ingots.json | 8 ++++++++ .../data/forge/tags/items/beacon_payment.json | 4 +--- .../data/forge/tags/items/ingots.json | 4 +--- .../java/com/simibubi/create/AllItems.java | 9 +++------ .../java/com/simibubi/create/AllTags.java | 19 ++++++++++++++++++- src/main/java/com/simibubi/create/Create.java | 1 + 7 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 src/generated/resources/data/create/tags/items/create_ingots.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index b43cf1fa1..f4f3cea87 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -2410,6 +2410,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data\create\recipes\weathered_limestone 6eceb25fabbb6b389ca35de3b829ad061c9c456a data\create\recipes\weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data\create\recipes\weathered_limestone_pillar_from_weathered_limestone_stonecutting.json 266f08e604d229a9d2b46f7272c0b06ec270bf3d data\create\recipes\zinc_block.json +081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\create\tags\items\create_ingots.json d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data\create\tags\items\crushed_ores.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\blocks\glass\colorless.json 81ced867d24ec814942909965dd4576eff1db685 data\forge\tags\blocks\glass_panes.json @@ -2418,10 +2419,10 @@ d5ea262a0f5fb210612d22521818e26cf08e591a data\forge\tags\blocks\ores\zinc.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data\forge\tags\blocks\storage_blocks\brass.json f6c8f34ceb475546dba5cc6ff288863ea795d20b data\forge\tags\blocks\storage_blocks\copper.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data\forge\tags\blocks\storage_blocks\zinc.json -081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\forge\tags\items\beacon_payment.json +d9ffc62a496946fc4848934e7c0a6e917337f8be data\forge\tags\items\beacon_payment.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\items\glass\colorless.json 81ced867d24ec814942909965dd4576eff1db685 data\forge\tags\items\glass_panes.json -081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\forge\tags\items\ingots.json +d9ffc62a496946fc4848934e7c0a6e917337f8be data\forge\tags\items\ingots.json 2dfd21017cb51d4bdc18d977a7d16f103cc3a985 data\forge\tags\items\ingots\brass.json 8e0ca32df10a50544f54fbe3dbfe485971b23315 data\forge\tags\items\ingots\copper.json 2f9ac80569a5cc168061742f9e3c36277d4d056e data\forge\tags\items\ingots\zinc.json diff --git a/src/generated/resources/data/create/tags/items/create_ingots.json b/src/generated/resources/data/create/tags/items/create_ingots.json new file mode 100644 index 000000000..c407a2e9a --- /dev/null +++ b/src/generated/resources/data/create/tags/items/create_ingots.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "create:copper_ingot", + "create:zinc_ingot", + "create:brass_ingot" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/beacon_payment.json b/src/generated/resources/data/forge/tags/items/beacon_payment.json index c407a2e9a..ad8bdef78 100644 --- a/src/generated/resources/data/forge/tags/items/beacon_payment.json +++ b/src/generated/resources/data/forge/tags/items/beacon_payment.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "create:copper_ingot", - "create:zinc_ingot", - "create:brass_ingot" + "#create:create_ingots" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ingots.json b/src/generated/resources/data/forge/tags/items/ingots.json index c407a2e9a..ad8bdef78 100644 --- a/src/generated/resources/data/forge/tags/items/ingots.json +++ b/src/generated/resources/data/forge/tags/items/ingots.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "create:copper_ingot", - "create:zinc_ingot", - "create:brass_ingot" + "#create:create_ingots" ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index f5f3dea79..e2efd67a0 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -72,12 +72,9 @@ public class AllItems { CRUSHED_BRASS = taggedIngredient("crushed_brass", AllItemTags.CRUSHED_ORES.tag), ANDESITE_ALLOY = ingredient("andesite_alloy"), - COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), AllItemTags.beacon_payment.tag, - AllItemTags.ingots.tag), - ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), AllItemTags.beacon_payment.tag, - AllItemTags.ingots.tag), - BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), AllItemTags.beacon_payment.tag, - AllItemTags.ingots.tag), + COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), AllItemTags.CREATE_INGOTS.tag), + ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), AllItemTags.CREATE_INGOTS.tag), + BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), AllItemTags.CREATE_INGOTS.tag), WHEAT_FLOUR = ingredient("wheat_flour"), DOUGH = ingredient("dough"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), ROSE_QUARTZ = ingredient("rose_quartz"), diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index f52320c81..cfa4fb101 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -1,8 +1,10 @@ package com.simibubi.create; +import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.utility.Lang; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; +import com.tterrag.registrate.providers.ProviderType; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.block.Block; @@ -17,6 +19,9 @@ import net.minecraft.tags.TagCollection; import net.minecraft.util.ResourceLocation; public class AllTags { + private static final CreateRegistrate REGISTRATE = Create.registrate() + .itemGroup(() -> Create.baseCreativeTab); + public static NonNullFunction, ItemBuilder>> tagBlockAndItem( String tagName) { return b -> b.tag(forgeBlockTag(tagName)) @@ -41,7 +46,12 @@ public class AllTags { } public static enum AllItemTags { - CRUSHED_ORES, beacon_payment("", "forge"), ingots("", "forge"), nuggets("", "forge"), plates("", "forge"); + CRUSHED_ORES, + CREATE_INGOTS, + beacon_payment("", "forge"), + ingots("", "forge"), + nuggets("", "forge"), + plates("", "forge"); public Tag tag; @@ -81,4 +91,11 @@ public class AllTags { return tag.contains(block.getBlock()); } } + + public static void register() { + REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getBuilder(AllItemTags.beacon_payment.tag) + .add(AllItemTags.CREATE_INGOTS.tag)); + REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getBuilder(AllItemTags.ingots.tag) + .add(AllItemTags.CREATE_INGOTS.tag)); + } } diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index d049b61c4..0033adc32 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -57,6 +57,7 @@ public class Create { AllBlocks.register(); AllItems.register(); + AllTags.register(); AllPaletteBlocks.register(); AllEntityTypes.register(); AllTileEntities.register(); From 8ab1a6d59c3da0c89c05ea382de6367ad0594d28 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Sat, 20 Jun 2020 13:18:21 +0200 Subject: [PATCH 09/47] fix piston head not dropping --- src/generated/resources/.cache/cache | 2 +- .../blocks/mechanical_piston_head.json | 2 +- .../java/com/simibubi/create/AllBlocks.java | 17 +++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index f4f3cea87..26efba9c7 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -1883,7 +1883,7 @@ dee1e06d953c0ca4e37799aee9073fdd43a3dc76 data\create\loot_tables\blocks\mechanic 95fa2d3e9cf4aacc42617b1f5ddbf25eeb025770 data\create\loot_tables\blocks\mechanical_harvester.json b12efeeef5682966016ce6ea2d171eecd33d9667 data\create\loot_tables\blocks\mechanical_mixer.json 2599be757a55464af338ef0a01e3772690d7eaf8 data\create\loot_tables\blocks\mechanical_piston.json -205f5899101262f31f5c1a88bb7d954918d08d04 data\create\loot_tables\blocks\mechanical_piston_head.json +1087b6c6d88dc7c71ed81e1d3e180fe065e6d098 data\create\loot_tables\blocks\mechanical_piston_head.json d9e217fcc668a04ee495968f8ccf9966271b6cea data\create\loot_tables\blocks\mechanical_plough.json 0e0742d066bda87ba5cc835a4028efb99e70b2f2 data\create\loot_tables\blocks\mechanical_press.json e94a78187bcf7f235244b2c656732ba9a5821dd0 data\create\loot_tables\blocks\mechanical_pump.json diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json index 78793172c..7f5453a57 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json +++ b/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "minecraft:air" + "name": "create:piston_extension_pole" } ], "conditions": [ diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 7ec9d31b0..bd4727493 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -431,14 +431,6 @@ public class AllBlocks { .transform(BuilderTransformers.mechanicalPiston(PistonType.STICKY)) .register(); - public static final BlockEntry MECHANICAL_PISTON_HEAD = - REGISTRATE.block("mechanical_piston_head", MechanicalPistonHeadBlock::new) - .initialProperties(() -> Blocks.PISTON_HEAD) - .blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() - .getExistingFile(p.modLoc("block/mechanical_piston/" + state.get(MechanicalPistonHeadBlock.TYPE) - .getName() + "/head")))) - .register(); - public static final BlockEntry PISTON_EXTENSION_POLE = REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new) .initialProperties(() -> Blocks.PISTON_HEAD) @@ -446,6 +438,15 @@ public class AllBlocks { .simpleItem() .register(); + public static final BlockEntry MECHANICAL_PISTON_HEAD = + REGISTRATE.block("mechanical_piston_head", MechanicalPistonHeadBlock::new) + .initialProperties(() -> Blocks.PISTON_HEAD) + .loot((p, b) -> p.registerDropping(b, PISTON_EXTENSION_POLE.get())) + .blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() + .getExistingFile(p.modLoc("block/mechanical_piston/" + state.get(MechanicalPistonHeadBlock.TYPE) + .getName() + "/head")))) + .register(); + public static final BlockEntry MECHANICAL_BEARING = REGISTRATE.block("mechanical_bearing", MechanicalBearingBlock::new) .transform(BuilderTransformers.bearing("mechanical", "gearbox")) From 769e585e53d562ad8db72f8d08b24aad0ffa82bd Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 20 Jun 2020 16:10:07 +0200 Subject: [PATCH 10/47] Logistical Mockups Part II - Added mockups for: - Packager - Chutes & Chute interfaces - Least's Reality Funnel (tm) --- src/generated/resources/.cache/cache | 22 +- .../create/blockstates/belt_funnel.json | 49 +++ .../assets/create/blockstates/chute.json | 10 + .../assets/create/blockstates/chute_port.json | 19 + .../assets/create/blockstates/fluid_pipe.json | 240 ++++++------ .../assets/create/blockstates/packager.json | 11 + .../create/blockstates/radial_chassis.json | 24 +- .../create/blockstates/reality_funnel.json | 30 ++ .../resources/assets/create/lang/en_ud.json | 5 + .../resources/assets/create/lang/en_us.json | 5 + .../assets/create/models/item/chute.json | 3 + .../assets/create/models/item/chute_port.json | 3 + .../assets/create/models/item/packager.json | 3 + .../create/models/item/reality_funnel.json | 3 + .../loot_tables/blocks/belt_funnel.json | 19 + .../data/create/loot_tables/blocks/chute.json | 19 + .../create/loot_tables/blocks/chute_port.json | 19 + .../create/loot_tables/blocks/packager.json | 19 + .../loot_tables/blocks/reality_funnel.json | 19 + .../com/simibubi/create/AllBlockPartials.java | 1 + .../java/com/simibubi/create/AllBlocks.java | 55 ++- .../java/com/simibubi/create/AllItems.java | 35 +- .../java/com/simibubi/create/AllShapes.java | 9 + .../java/com/simibubi/create/AllTags.java | 55 +-- .../com/simibubi/create/AllTileEntities.java | 8 + .../logistics/block/chute/ChuteBlock.java | 46 +++ .../logistics/block/chute/ChutePortBlock.java | 25 ++ .../block/packager/PackagerBlock.java | 21 ++ .../block/packager/PackagerRenderer.java | 33 ++ .../block/packager/PackagerTileEntity.java | 13 + .../block/realityFunnel/BeltFunnelBlock.java | 153 ++++++++ .../block/realityFunnel/FunnelItem.java | 36 ++ .../realityFunnel/RealityFunnelBlock.java | 56 +++ .../block/belt_funnel/block_default.json | 314 ++++++++++++++++ .../block/belt_funnel/block_extended.json | 345 ++++++++++++++++++ .../block/belt_funnel/block_retracted.json | 289 +++++++++++++++ .../create/models/block/chute/block.json | 118 ++++++ .../models/block/chute/block_windowed.json | 118 ++++++ .../create/models/block/chute_port.json | 23 ++ .../create/models/block/packager/block.json | 82 +++++ .../create/models/block/packager/item.json | 169 +++++++++ .../create/models/block/packager/sealer.json | 53 +++ .../models/block/reality_funnel/block.json | 117 ++++++ .../models/block/reality_funnel/item.json | 301 +++++++++++++++ .../assets/create/textures/block/chute.png | Bin 0 -> 804 bytes .../create/textures/block/chute_port.png | Bin 0 -> 1672 bytes .../create/textures/block/packager_top.png | Bin 0 -> 363 bytes .../create/textures/block/reality_funnel.png | Bin 0 -> 2280 bytes .../assets/create/textures/block/sealer.png | Bin 0 -> 599 bytes 49 files changed, 2823 insertions(+), 174 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/belt_funnel.json create mode 100644 src/generated/resources/assets/create/blockstates/chute.json create mode 100644 src/generated/resources/assets/create/blockstates/chute_port.json create mode 100644 src/generated/resources/assets/create/blockstates/packager.json create mode 100644 src/generated/resources/assets/create/blockstates/reality_funnel.json create mode 100644 src/generated/resources/assets/create/models/item/chute.json create mode 100644 src/generated/resources/assets/create/models/item/chute_port.json create mode 100644 src/generated/resources/assets/create/models/item/packager.json create mode 100644 src/generated/resources/assets/create/models/item/reality_funnel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/chute.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/chute_port.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/packager.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerRenderer.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerTileEntity.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java create mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_default.json create mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_extended.json create mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json create mode 100644 src/main/resources/assets/create/models/block/chute/block.json create mode 100644 src/main/resources/assets/create/models/block/chute/block_windowed.json create mode 100644 src/main/resources/assets/create/models/block/chute_port.json create mode 100644 src/main/resources/assets/create/models/block/packager/block.json create mode 100644 src/main/resources/assets/create/models/block/packager/item.json create mode 100644 src/main/resources/assets/create/models/block/packager/sealer.json create mode 100644 src/main/resources/assets/create/models/block/reality_funnel/block.json create mode 100644 src/main/resources/assets/create/models/block/reality_funnel/item.json create mode 100644 src/main/resources/assets/create/textures/block/chute.png create mode 100644 src/main/resources/assets/create/textures/block/chute_port.png create mode 100644 src/main/resources/assets/create/textures/block/packager_top.png create mode 100644 src/main/resources/assets/create/textures/block/reality_funnel.png create mode 100644 src/main/resources/assets/create/textures/block/sealer.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index f4f3cea87..dce23b6fb 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -17,6 +17,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json 96a4fae5883eda130f8ec1a57d34534f6d0793c4 assets\create\blockstates\belt.json +86487988273d365436dbadad597c112aacf5aa92 assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json cf9045eb16e5299a1d917c4cb536289f49411276 assets\create\blockstates\birch_window.json @@ -30,6 +31,8 @@ b8dd6e505943e06706d0718ece620ab3cf943650 assets\create\blockstates\brass_casing. 2ca82a3c4bf7ba1a9cf3bb674e786d9b23b020a4 assets\create\blockstates\chiseled_limestone.json cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scoria.json 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json +e1391d1ae451b50af13a08cfe572b79ac9e3514d assets\create\blockstates\chute.json +9ca4713c8efed79da6ab11354a25e5f8fbd6341c assets\create\blockstates\chute_port.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json @@ -114,7 +117,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets\create\blockstates\fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets\create\blockstates\fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weathered_limestone_bricks_stairs.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets\create\blockstates\fancy_weathered_limestone_bricks_wall.json -3aa8213ea6cd12a6964e3a70900b12d76d794d20 assets\create\blockstates\fluid_pipe.json +1f290b70c7cdd53e336081ee5707fd25d08c0e2c assets\create\blockstates\fluid_pipe.json 9d0e78a4d6d0ccac37c06d0f5810a800a04844b2 assets\create\blockstates\fluid_tank.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json @@ -211,6 +214,7 @@ c46f0b62967cf483ec0720a9297c8ccc97f5547d assets\create\blockstates\overgrown_and 2398939c8be07cac0dcb7ea710eb98e74b408e0c assets\create\blockstates\overgrown_limestone.json fbb651b8e4a72bf0a17a6bfdbf4eef680e9d4a5c assets\create\blockstates\overgrown_scoria.json 9c8e210bdb29b2ab1535a25762498d7c03156444 assets\create\blockstates\overgrown_weathered_limestone.json +5ab323fefdbfff04aa5c224bf5f0237f0598b3b2 assets\create\blockstates\packager.json ab93ff18b747607dbc1d8d7311a2737e302b92d1 assets\create\blockstates\paved_andesite.json 89e88a0d2e7df66bac7ab11ac2c7b14812d8675f assets\create\blockstates\paved_andesite_slab.json f43d947077b3f4a11a9729c58709c56f09859da0 assets\create\blockstates\paved_andesite_stairs.json @@ -277,7 +281,8 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -8d7e653bfd9846e684a0d3725595714a19201017 assets\create\blockstates\radial_chassis.json +5c1df061eb5efe49beee7219e113206fc31a4733 assets\create\blockstates\radial_chassis.json +35cc2bb35c9e2809f69d1fb70e854f69e0f9bbe6 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json 1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json @@ -329,8 +334,8 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json -81f8eb319377b9fbe2188304886316120bb29c64 assets\create\lang\en_ud.json -4158ea22d8b9a3e21a47180fbd1ff5040c0b6a06 assets\create\lang\en_us.json +0ef66cfa2ad2656989bd228b5281dd81ae215f4e assets\create\lang\en_ud.json +0a4d0882aa343ae0e943cf1bc542c2a96baedaa0 assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -957,6 +962,8 @@ afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets\create\models\item\chiseled_gabb 0cb1692f6cdd007ac690fd1f0222dde3429d136f assets\create\models\item\chiseled_limestone.json a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets\create\models\item\chiseled_scoria.json 70232ce9b88119fb383717e2c1ad113f7aad6a99 assets\create\models\item\chiseled_weathered_limestone.json +fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets\create\models\item\chute.json +3b91cda68b823bf8d49a2e0cccd1b7f7c090e103 assets\create\models\item\chute_port.json b1531a7bd3f7f27b9587d13e818a93dc2d088bc8 assets\create\models\item\clockwork_bearing.json 0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets\create\models\item\clutch.json dcb09deae110077bcddf090996b51cc66e9a7de3 assets\create\models\item\cogwheel.json @@ -1157,6 +1164,7 @@ e34c7bbdd4fcaa3a73c61584418bb159db49758b assets\create\models\item\overgrown_gra e73e4be7e7eafdf9635a3d72eb7fa05c2bc1e54b assets\create\models\item\overgrown_limestone.json a64a649428a2e130059f3f1f8de81b907621589f assets\create\models\item\overgrown_scoria.json 3354b93677c87bfc82807503c8d658fc6ab114e2 assets\create\models\item\overgrown_weathered_limestone.json +15baa926f7208040c437c920ae0c159a06057073 assets\create\models\item\packager.json 014530344c8b7e53531e3c09095b6ed4839d5ab8 assets\create\models\item\paved_andesite.json bd81aa53b83c2f9683c024989d0305807cf28f5a assets\create\models\item\paved_andesite_slab.json c61f409eb1a24cf76017b677579cb0423a1951c6 assets\create\models\item\paved_andesite_stairs.json @@ -1226,6 +1234,7 @@ d3cfc1a1137c4bc98848947d425d2972df144c95 assets\create\models\item\powdered_obsi 16f363038d5afeae34e0724a6a9f0b8f6e65424a assets\create\models\item\propeller.json 4b8a27ff05ed5331889dfc4b0b4562f3e94b0dfe assets\create\models\item\pulse_repeater.json 469652eb5baa92008dbfc4deec232c3381684af6 assets\create\models\item\radial_chassis.json +c485de0c102ef2d2d709bfb8a26688f1dee78948 assets\create\models\item\reality_funnel.json b9a4ac219a27e60a82f55129f2df5ae6183981e2 assets\create\models\item\redstone_contact.json 52e561abeb954d0349e640566de92ef80ccbf919 assets\create\models\item\redstone_link.json ba99e2fdb64892f4f479a8ac51c226cb5f71f659 assets\create\models\item\red_sand_paper.json @@ -1722,6 +1731,7 @@ cb36b039a511aca643fe674a63de8d6ad8478256 data\create\loot_tables\blocks\andesite 6908f62c809ea2105bc92765d84d5655197346ab data\create\loot_tables\blocks\andesite_pillar.json 14bf1764b9313893b6a6f57094f9506ac9fa71a8 data\create\loot_tables\blocks\basin.json c7f81e30c31837a287d6d6040cdb02c7dec11441 data\create\loot_tables\blocks\belt.json +617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\belt_funnel.json 1104e323abb2a8c25769c47dc5d1154965113cc9 data\create\loot_tables\blocks\belt_observer.json f2acadb49cac3aa6347cae606536cbbde89f0a5f data\create\loot_tables\blocks\belt_tunnel.json 67a8e2513c3cb09e6fe80279fda94f79d5018c37 data\create\loot_tables\blocks\birch_window.json @@ -1735,6 +1745,8 @@ ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data\create\loot_tables\blocks\chiseled 4b09725707bac4c5813e2bb489ff848d0d964ae9 data\create\loot_tables\blocks\chiseled_limestone.json 43f446abd3c1c184a08645979edf620e59955a30 data\create\loot_tables\blocks\chiseled_scoria.json adde89e46b12de1eee6fd0c5cb98c5f45feefc15 data\create\loot_tables\blocks\chiseled_weathered_limestone.json +07ccc1576a71338cb73c4e06f8c28a2c86843877 data\create\loot_tables\blocks\chute.json +dcd45562a3459e5fd620727090d9c3c01c8ce0a4 data\create\loot_tables\blocks\chute_port.json 778b53c36d73b6e9c78fd6c091c9c3535c3c18f7 data\create\loot_tables\blocks\clockwork_bearing.json d76113310fc56eca6382d44df174096f2210d416 data\create\loot_tables\blocks\clutch.json 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data\create\loot_tables\blocks\cogwheel.json @@ -1916,6 +1928,7 @@ bab9f6fb35f2ba4aa45fd726a8e94f90ef155bfb data\create\loot_tables\blocks\overgrow 4b4acf9026d68de21b5804903556a505f913a778 data\create\loot_tables\blocks\overgrown_limestone.json e0fc59a8645dae8f87e62b34c08014077e14de66 data\create\loot_tables\blocks\overgrown_scoria.json 8af10a6b2d07ed1b84ce617502ad68044262e701 data\create\loot_tables\blocks\overgrown_weathered_limestone.json +131cb27de9d0b44d2ec335055558b8039d6d5fb9 data\create\loot_tables\blocks\packager.json fc529ec8d55abf361ba1b8c38875839530b082c6 data\create\loot_tables\blocks\paved_andesite.json 3658337cb8a5a6cdd7dd19dd8ac399b1397350d5 data\create\loot_tables\blocks\paved_andesite_slab.json 4dbc7c7537e680e4e7c8a5ba4e4ed394d788b10d data\create\loot_tables\blocks\paved_andesite_stairs.json @@ -1983,6 +1996,7 @@ a3fb7d3e3bf9dc73ce754002f10c469d57db1f71 data\create\loot_tables\blocks\powered_ 205f5899101262f31f5c1a88bb7d954918d08d04 data\create\loot_tables\blocks\pulley_magnet.json e8fb62c91226ac107dee45c5ebc54c8dd0aee224 data\create\loot_tables\blocks\pulse_repeater.json 768420dab8785909891e52c4d77a182d99ba11d3 data\create\loot_tables\blocks\radial_chassis.json +617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\reality_funnel.json f5907a694206facc01f61f3428f72488486761c7 data\create\loot_tables\blocks\redstone_contact.json 886a0c1386fb12104b736a15689030aaff771270 data\create\loot_tables\blocks\redstone_link.json 97c945de837a6360c0ab7e1371f16ebc1645f6ea data\create\loot_tables\blocks\reinforced_rail.json diff --git a/src/generated/resources/assets/create/blockstates/belt_funnel.json b/src/generated/resources/assets/create/blockstates/belt_funnel.json new file mode 100644 index 000000000..5ff1ee0c3 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/belt_funnel.json @@ -0,0 +1,49 @@ +{ + "variants": { + "facing=north,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted" + }, + "facing=south,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted", + "y": 180 + }, + "facing=west,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted", + "y": 270 + }, + "facing=east,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted", + "y": 90 + }, + "facing=north,shape=default": { + "model": "create:block/belt_funnel/block_default" + }, + "facing=south,shape=default": { + "model": "create:block/belt_funnel/block_default", + "y": 180 + }, + "facing=west,shape=default": { + "model": "create:block/belt_funnel/block_default", + "y": 270 + }, + "facing=east,shape=default": { + "model": "create:block/belt_funnel/block_default", + "y": 90 + }, + "facing=north,shape=extended": { + "model": "create:block/belt_funnel/block_extended" + }, + "facing=south,shape=extended": { + "model": "create:block/belt_funnel/block_extended", + "y": 180 + }, + "facing=west,shape=extended": { + "model": "create:block/belt_funnel/block_extended", + "y": 270 + }, + "facing=east,shape=extended": { + "model": "create:block/belt_funnel/block_extended", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chute.json b/src/generated/resources/assets/create/blockstates/chute.json new file mode 100644 index 000000000..55bf812e4 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/chute.json @@ -0,0 +1,10 @@ +{ + "variants": { + "window=false": { + "model": "create:block/chute/block" + }, + "window=true": { + "model": "create:block/chute/block_windowed" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chute_port.json b/src/generated/resources/assets/create/blockstates/chute_port.json new file mode 100644 index 000000000..dc926c2ca --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/chute_port.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "create:block/chute_port" + }, + "facing=south": { + "model": "create:block/chute_port", + "y": 180 + }, + "facing=west": { + "model": "create:block/chute_port", + "y": 270 + }, + "facing=east": { + "model": "create:block/chute_port", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index 44255c27a..ef9384bb4 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -60,10 +60,10 @@ }, { "when": { - "up": "true", - "north": "true", "south": "false", - "down": "false" + "north": "true", + "down": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_x" @@ -71,10 +71,10 @@ }, { "when": { - "up": "true", - "north": "false", "south": "true", - "down": "false" + "north": "false", + "down": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_x" @@ -82,10 +82,10 @@ }, { "when": { - "up": "false", - "north": "true", "south": "false", - "down": "true" + "north": "true", + "down": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_x" @@ -93,10 +93,10 @@ }, { "when": { - "up": "false", - "north": "false", "south": "true", - "down": "true" + "north": "false", + "down": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_x" @@ -104,10 +104,10 @@ }, { "when": { - "up": "true", - "north": "false", "south": "false", - "down": "true" + "north": "false", + "down": "true", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -115,10 +115,10 @@ }, { "when": { - "up": "true", - "north": "false", "south": "false", - "down": "false" + "north": "false", + "down": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -126,10 +126,10 @@ }, { "when": { - "up": "false", - "north": "false", "south": "false", - "down": "true" + "north": "false", + "down": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -137,21 +137,21 @@ }, { "when": { - "up": "false", - "north": "true", "south": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_x" - } - }, - { - "when": { - "up": "false", "north": "true", - "south": "false", - "down": "false" + "down": "false", + "up": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/lr_x" + } + }, + { + "when": { + "south": "false", + "north": "true", + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -159,10 +159,10 @@ }, { "when": { - "up": "false", - "north": "false", "south": "true", - "down": "false" + "north": "false", + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -170,10 +170,10 @@ }, { "when": { - "up": "false", - "north": "false", "south": "false", - "down": "false" + "north": "false", + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/none_x" @@ -181,10 +181,10 @@ }, { "when": { - "west": "true", - "east": "false", + "south": "true", "north": "false", - "south": "true" + "east": "false", + "west": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_y" @@ -192,10 +192,10 @@ }, { "when": { - "west": "false", - "east": "true", + "south": "true", "north": "false", - "south": "true" + "east": "true", + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/ru_y" @@ -203,10 +203,10 @@ }, { "when": { - "west": "true", - "east": "false", + "south": "false", "north": "true", - "south": "false" + "east": "false", + "west": "true" }, "apply": { "model": "create:block/fluid_pipe/ld_y" @@ -214,10 +214,10 @@ }, { "when": { - "west": "false", - "east": "true", + "south": "false", "north": "true", - "south": "false" + "east": "true", + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_y" @@ -225,10 +225,10 @@ }, { "when": { - "west": "false", - "east": "false", + "south": "true", "north": "true", - "south": "true" + "east": "false", + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -236,10 +236,10 @@ }, { "when": { - "west": "false", - "east": "false", + "south": "true", "north": "false", - "south": "true" + "east": "false", + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -247,10 +247,10 @@ }, { "when": { - "west": "false", - "east": "false", + "south": "false", "north": "true", - "south": "false" + "east": "false", + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -258,10 +258,10 @@ }, { "when": { - "west": "true", + "south": "false", + "north": "false", "east": "true", - "north": "false", - "south": "false" + "west": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -269,10 +269,10 @@ }, { "when": { - "west": "true", + "south": "false", + "north": "false", "east": "false", - "north": "false", - "south": "false" + "west": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -280,10 +280,10 @@ }, { "when": { - "west": "false", + "south": "false", + "north": "false", "east": "true", - "north": "false", - "south": "false" + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -291,10 +291,10 @@ }, { "when": { - "west": "false", - "east": "false", + "south": "false", "north": "false", - "south": "false" + "east": "false", + "west": "false" }, "apply": { "model": "create:block/fluid_pipe/none_y" @@ -302,10 +302,10 @@ }, { "when": { - "west": "false", + "down": "false", "east": "true", - "up": "true", - "down": "false" + "west": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_z" @@ -313,10 +313,10 @@ }, { "when": { - "west": "true", + "down": "false", "east": "false", - "up": "true", - "down": "false" + "west": "true", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_z" @@ -324,10 +324,10 @@ }, { "when": { - "west": "false", + "down": "true", "east": "true", - "up": "false", - "down": "true" + "west": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_z" @@ -335,10 +335,10 @@ }, { "when": { - "west": "true", + "down": "true", "east": "false", - "up": "false", - "down": "true" + "west": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_z" @@ -346,10 +346,10 @@ }, { "when": { - "west": "false", + "down": "true", "east": "false", - "up": "true", - "down": "true" + "west": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -357,10 +357,10 @@ }, { "when": { - "west": "false", + "down": "false", "east": "false", - "up": "true", - "down": "false" + "west": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -368,10 +368,10 @@ }, { "when": { - "west": "false", + "down": "true", "east": "false", - "up": "false", - "down": "true" + "west": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -379,32 +379,10 @@ }, { "when": { - "west": "true", + "down": "false", "east": "true", - "up": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_z" - } - }, - { - "when": { - "west": "false", - "east": "true", - "up": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_z" - } - }, - { - "when": { "west": "true", - "east": "false", - "up": "false", - "down": "false" + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -412,10 +390,32 @@ }, { "when": { + "down": "false", + "east": "true", "west": "false", + "up": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/lr_z" + } + }, + { + "when": { + "down": "false", "east": "false", - "up": "false", - "down": "false" + "west": "true", + "up": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/lr_z" + } + }, + { + "when": { + "down": "false", + "east": "false", + "west": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/none_z" diff --git a/src/generated/resources/assets/create/blockstates/packager.json b/src/generated/resources/assets/create/blockstates/packager.json new file mode 100644 index 000000000..6236aa5cd --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/packager.json @@ -0,0 +1,11 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/packager/block", + "y": 90 + }, + "axis=z": { + "model": "create:block/packager/block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 9d00ea8b1..7a1df3438 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -207,8 +207,8 @@ }, { "when": { - "sticky_east": "true", - "axis": "x" + "axis": "x", + "sticky_east": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -217,8 +217,8 @@ }, { "when": { - "sticky_east": "true", - "axis": "y" + "axis": "y", + "sticky_east": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -227,8 +227,8 @@ }, { "when": { - "sticky_east": "true", - "axis": "z" + "axis": "z", + "sticky_east": "true" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky" @@ -236,8 +236,8 @@ }, { "when": { - "sticky_east": "false", - "axis": "x" + "axis": "x", + "sticky_east": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -246,8 +246,8 @@ }, { "when": { - "sticky_east": "false", - "axis": "y" + "axis": "y", + "sticky_east": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -256,8 +256,8 @@ }, { "when": { - "sticky_east": "false", - "axis": "z" + "axis": "z", + "sticky_east": "false" }, "apply": { "model": "create:block/radial_chassis_side_z" diff --git a/src/generated/resources/assets/create/blockstates/reality_funnel.json b/src/generated/resources/assets/create/blockstates/reality_funnel.json new file mode 100644 index 000000000..63d9403e1 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/reality_funnel.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "create:block/reality_funnel/block", + "x": 180 + }, + "facing=up": { + "model": "create:block/reality_funnel/block" + }, + "facing=north": { + "model": "create:block/reality_funnel/block", + "x": 90 + }, + "facing=south": { + "model": "create:block/reality_funnel/block", + "x": 90, + "y": 180 + }, + "facing=west": { + "model": "create:block/reality_funnel/block", + "x": 90, + "y": 270 + }, + "facing=east": { + "model": "create:block/reality_funnel/block", + "x": 90, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 6fd3cfafb..548827595 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -18,6 +18,7 @@ "block.create.andesite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.basin": "u\u0131s\u0250\u15FA", "block.create.belt": "\u0287\u05DF\u01DD\u15FA", + "block.create.belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA", "block.create.belt_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287\u05DF\u01DD\u15FA", "block.create.belt_tunnel": "\u05DF\u01DDuun\u27D8 \u0287\u05DF\u01DD\u15FA", "block.create.birch_window": "\u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA", @@ -31,6 +32,8 @@ "block.create.chiseled_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", + "block.create.chute": "\u01DD\u0287n\u0265\u0186", + "block.create.chute_port": "\u0287\u0279o\u0500 \u01DD\u0287n\u0265\u0186", "block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186", "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", @@ -212,6 +215,7 @@ "block.create.overgrown_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 u\u028Do\u0279b\u0279\u01DD\u028CO", "block.create.overgrown_scoria": "\u0250\u0131\u0279o\u0254S u\u028Do\u0279b\u0279\u01DD\u028CO", "block.create.overgrown_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM u\u028Do\u0279b\u0279\u01DD\u028CO", + "block.create.packager": "\u0279\u01DDb\u0250\u029E\u0254\u0250\u0500", "block.create.paved_andesite": "\u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", "block.create.paved_andesite_slab": "q\u0250\u05DFS \u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", "block.create.paved_andesite_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", @@ -279,6 +283,7 @@ "block.create.pulley_magnet": "\u0287\u01DDub\u0250W \u028E\u01DD\u05DF\u05DFn\u0500", "block.create.pulse_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DDs\u05DFn\u0500", "block.create.radial_chassis": "s\u0131ss\u0250\u0265\u0186 \u05DF\u0250\u0131p\u0250\u1D1A", + "block.create.reality_funnel": "\u05DF\u01DDuun\u2132 \u028E\u0287\u0131\u05DF\u0250\u01DD\u1D1A", "block.create.redstone_contact": "\u0287\u0254\u0250\u0287uo\u0186 \u01DDuo\u0287sp\u01DD\u1D1A", "block.create.redstone_link": "\u029Eu\u0131\uA780 \u01DDuo\u0287sp\u01DD\u1D1A", "block.create.reinforced_rail": "\u05DF\u0131\u0250\u1D1A p\u01DD\u0254\u0279o\u025Fu\u0131\u01DD\u1D1A", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 06a677af8..6d479372f 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -21,6 +21,7 @@ "block.create.andesite_pillar": "Andesite Pillar", "block.create.basin": "Basin", "block.create.belt": "Belt", + "block.create.belt_funnel": "Belt Funnel", "block.create.belt_observer": "Belt Observer", "block.create.belt_tunnel": "Belt Tunnel", "block.create.birch_window": "Birch Window", @@ -34,6 +35,8 @@ "block.create.chiseled_limestone": "Chiseled Limestone", "block.create.chiseled_scoria": "Chiseled Scoria", "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", + "block.create.chute": "Chute", + "block.create.chute_port": "Chute Port", "block.create.clockwork_bearing": "Clockwork Bearing", "block.create.clutch": "Clutch", "block.create.cogwheel": "Cogwheel", @@ -215,6 +218,7 @@ "block.create.overgrown_limestone": "Overgrown Limestone", "block.create.overgrown_scoria": "Overgrown Scoria", "block.create.overgrown_weathered_limestone": "Overgrown Weathered Limestone", + "block.create.packager": "Packager", "block.create.paved_andesite": "Paved Andesite", "block.create.paved_andesite_slab": "Paved Andesite Slab", "block.create.paved_andesite_stairs": "Paved Andesite Stairs", @@ -282,6 +286,7 @@ "block.create.pulley_magnet": "Pulley Magnet", "block.create.pulse_repeater": "Pulse Repeater", "block.create.radial_chassis": "Radial Chassis", + "block.create.reality_funnel": "Reality Funnel", "block.create.redstone_contact": "Redstone Contact", "block.create.redstone_link": "Redstone Link", "block.create.reinforced_rail": "Reinforced Rail", diff --git a/src/generated/resources/assets/create/models/item/chute.json b/src/generated/resources/assets/create/models/item/chute.json new file mode 100644 index 000000000..b894cc392 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/chute.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/chute/block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chute_port.json b/src/generated/resources/assets/create/models/item/chute_port.json new file mode 100644 index 000000000..173b26be8 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/chute_port.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/chute_port" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/packager.json b/src/generated/resources/assets/create/models/item/packager.json new file mode 100644 index 000000000..18467506e --- /dev/null +++ b/src/generated/resources/assets/create/models/item/packager.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/packager/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/reality_funnel.json b/src/generated/resources/assets/create/models/item/reality_funnel.json new file mode 100644 index 000000000..38f4140ef --- /dev/null +++ b/src/generated/resources/assets/create/models/item/reality_funnel.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/reality_funnel/item" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json new file mode 100644 index 000000000..4f7095793 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:reality_funnel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chute.json b/src/generated/resources/data/create/loot_tables/blocks/chute.json new file mode 100644 index 000000000..aa1414e12 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/chute.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:chute" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chute_port.json b/src/generated/resources/data/create/loot_tables/blocks/chute_port.json new file mode 100644 index 000000000..bd3837343 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/chute_port.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:chute_port" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/packager.json b/src/generated/resources/data/create/loot_tables/blocks/packager.json new file mode 100644 index 000000000..f3daac615 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/packager.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:packager" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json new file mode 100644 index 000000000..4f7095793 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:reality_funnel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 5d5ee020a..ccd9cd3bc 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -77,6 +77,7 @@ public class AllBlockPartials { ROPE_HALF = get("rope_pulley/rope_half"), ROPE_HALF_MAGNET = get("rope_pulley/rope_half_magnet"), MILLSTONE_COG = get("millstone/inner"), + PACKAGER_SEALER = get("packager/sealer"), SYMMETRY_PLANE = get("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"), diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 7ec9d31b0..be4a709a2 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -75,6 +75,8 @@ import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock; +import com.simibubi.create.content.logistics.block.chute.ChutePortBlock; import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterGenerator; @@ -92,6 +94,10 @@ import com.simibubi.create.content.logistics.block.funnel.VerticalFunnelGenerato import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; +import com.simibubi.create.content.logistics.block.packager.PackagerBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.FunnelItem; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; @@ -117,6 +123,7 @@ import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.block.Block; +import net.minecraft.block.Block.Properties; import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; import net.minecraft.block.material.MaterialColor; @@ -352,7 +359,7 @@ public class AllBlocks { public static final BlockEntry MECHANICAL_PRESS = REGISTRATE.block("mechanical_press", MechanicalPressBlock::new) .initialProperties(SharedProperties::stone) - .properties(p -> p.nonOpaque()) + .properties(Properties::nonOpaque) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .transform(StressConfigDefaults.setImpact(8.0)) .item(BasinOperatorBlockItem::new) @@ -702,6 +709,52 @@ public class AllBlocks { .transform(BuilderTransformers.crate("creative")) .register(); + public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .forAllStates(s -> ConfiguredModel.builder() + .modelFile(s.get(ChuteBlock.WINDOW) ? AssetLookup.partialBaseModel(c, p, "windowed") + : AssetLookup.partialBaseModel(c, p)) + .build())) + .item() + .transform(customItemModel("_", "block")) + .register(); + + public static final BlockEntry CHUTE_PORT = REGISTRATE.block("chute_port", ChutePortBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.standardModel(c, p))) + .simpleItem() + .register(); + + public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) + .initialProperties(SharedProperties::softMetal) + .transform(StressConfigDefaults.setImpact(4.0)) + .properties(Properties::nonOpaque) + .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .forAllStates(s -> ConfiguredModel.builder() + .modelFile(AssetLookup.partialBaseModel(c, p)) + .rotationY(s.get(PackagerBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) + .build())) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry REALITY_FUNNEL = + REGISTRATE.block("reality_funnel", RealityFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.directionalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p))) + .item(FunnelItem::new) + .transform(customItemModel()) + .register(); + + public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.horizontalBlock(c.get(), + s -> AssetLookup.partialBaseModel(c, p, s.get(BeltFunnelBlock.SHAPE) + .getName()))) + .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .register(); + public static final BlockEntry BELT_OBSERVER = REGISTRATE.block("belt_observer", BeltObserverBlock::new) .initialProperties(SharedProperties::stone) diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index e2efd67a0..33482516b 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -1,13 +1,16 @@ package com.simibubi.create; import static com.simibubi.create.AllTags.forgeItemTag; +import static com.simibubi.create.AllTags.AllItemTags.CREATE_INGOTS; +import static com.simibubi.create.AllTags.AllItemTags.CRUSHED_ORES; +import static com.simibubi.create.AllTags.AllItemTags.NUGGETS; +import static com.simibubi.create.AllTags.AllItemTags.PLATES; import static com.simibubi.create.content.AllSections.CURIOSITIES; import static com.simibubi.create.content.AllSections.KINETICS; import static com.simibubi.create.content.AllSections.LOGISTICS; import static com.simibubi.create.content.AllSections.MATERIALS; import static com.simibubi.create.content.AllSections.SCHEMATICS; -import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MinecartContraptionItem; import com.simibubi.create.content.contraptions.goggles.GogglesItem; @@ -55,26 +58,26 @@ public class AllItems { } public static final ItemEntry COPPER_NUGGET = - taggedIngredient("copper_nugget", forgeItemTag("nuggets/copper"), AllItemTags.nuggets.tag), - ZINC_NUGGET = taggedIngredient("zinc_nugget", forgeItemTag("nuggets/zinc"), AllItemTags.nuggets.tag), - BRASS_NUGGET = taggedIngredient("brass_nugget", forgeItemTag("nuggets/brass"), AllItemTags.nuggets.tag), + taggedIngredient("copper_nugget", forgeItemTag("nuggets/copper"), NUGGETS.tag), + ZINC_NUGGET = taggedIngredient("zinc_nugget", forgeItemTag("nuggets/zinc"), NUGGETS.tag), + BRASS_NUGGET = taggedIngredient("brass_nugget", forgeItemTag("nuggets/brass"), NUGGETS.tag), - COPPER_SHEET = taggedIngredient("copper_sheet", forgeItemTag("plates/copper"), AllItemTags.plates.tag), - BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), AllItemTags.plates.tag), - IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), AllItemTags.plates.tag), - GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), AllItemTags.plates.tag), + COPPER_SHEET = taggedIngredient("copper_sheet", forgeItemTag("plates/copper"), PLATES.tag), + BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), PLATES.tag), + IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), PLATES.tag), + GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), PLATES.tag), LAPIS_SHEET = ingredient("lapis_sheet"), - CRUSHED_IRON = taggedIngredient("crushed_iron_ore", AllItemTags.CRUSHED_ORES.tag), - CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", AllItemTags.CRUSHED_ORES.tag), - CRUSHED_COPPER = taggedIngredient("crushed_copper_ore", AllItemTags.CRUSHED_ORES.tag), - CRUSHED_ZINC = taggedIngredient("crushed_zinc_ore", AllItemTags.CRUSHED_ORES.tag), - CRUSHED_BRASS = taggedIngredient("crushed_brass", AllItemTags.CRUSHED_ORES.tag), + CRUSHED_IRON = taggedIngredient("crushed_iron_ore", CRUSHED_ORES.tag), + CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", CRUSHED_ORES.tag), + CRUSHED_COPPER = taggedIngredient("crushed_copper_ore", CRUSHED_ORES.tag), + CRUSHED_ZINC = taggedIngredient("crushed_zinc_ore", CRUSHED_ORES.tag), + CRUSHED_BRASS = taggedIngredient("crushed_brass", CRUSHED_ORES.tag), ANDESITE_ALLOY = ingredient("andesite_alloy"), - COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), AllItemTags.CREATE_INGOTS.tag), - ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), AllItemTags.CREATE_INGOTS.tag), - BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), AllItemTags.CREATE_INGOTS.tag), + COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), CREATE_INGOTS.tag), + ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), CREATE_INGOTS.tag), + BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), CREATE_INGOTS.tag), WHEAT_FLOUR = ingredient("wheat_flour"), DOUGH = ingredient("dough"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), ROSE_QUARTZ = ingredient("rose_quartz"), diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 285d7c400..cbdd000f4 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -65,6 +65,13 @@ public class AllShapes { NIXIE_TUBE_CEILING = shape(0, 12, 0, 16, 16, 16).add(9, 1, 5, 15, 16, 11) .add(1, 1, 5, 7, 16, 11) .forHorizontalAxis(), + REALITY_FUNNEL = shape(2, 2, 14, 14, 14, 18).forDirectional(NORTH), + BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) + .forHorizontal(NORTH), + BELT_FUNNEL_DEFAULT = shape(3, -5, 12, 13, 13, 17).add(0, -5, 6, 16, 16, 12) + .forHorizontal(NORTH), + BELT_FUNNEL_EXTENDED = shape(3, -5, 6, 13, 13, 17).add(0, -5, 0, 16, 16, 6) + .forHorizontal(NORTH), PUMP = shape(2, 0, 2, 14, 5, 14).add(4, 0, 4, 12, 16, 12) .add(3, 12, 3, 13, 16, 13) .forDirectional(Direction.UP) @@ -119,6 +126,8 @@ public class AllShapes { .build(), MECHANICAL_ARM = shape(2, 0, 2, 14, 10, 14).add(3, 0, 3, 13, 14, 13) .build(), + CHUTE = shape(1, 8, 1, 15, 16, 15).add(2, 0, 2, 14, 8, 14) + .build(), TANK = shape(1, 0, 1, 15, 16, 15).build(), TANK_TOP = shape(TANK_TOP_LID).add(TANK) .build(), TANK_BOTTOM = shape(TANK_BOTTOM_LID).add(TANK) diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index cfa4fb101..e5876b3dc 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -1,5 +1,8 @@ package com.simibubi.create; +import static com.simibubi.create.AllTags.NameSpace.FORGE; +import static com.simibubi.create.AllTags.NameSpace.MOD; + import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.utility.Lang; import com.tterrag.registrate.builders.BlockBuilder; @@ -21,7 +24,7 @@ import net.minecraft.util.ResourceLocation; public class AllTags { private static final CreateRegistrate REGISTRATE = Create.registrate() .itemGroup(() -> Create.baseCreativeTab); - + public static NonNullFunction, ItemBuilder>> tagBlockAndItem( String tagName) { return b -> b.tag(forgeBlockTag(tagName)) @@ -45,36 +48,48 @@ public class AllTags { return collection.getOrCreate(new ResourceLocation(domain, name)); } + public static enum NameSpace { + + MOD(Create.ID), FORGE("forge"), MC("minecraft") + + ; + String id; + + private NameSpace(String id) { + this.id = id; + } + } + public static enum AllItemTags { - CRUSHED_ORES, - CREATE_INGOTS, - beacon_payment("", "forge"), - ingots("", "forge"), - nuggets("", "forge"), - plates("", "forge"); + CRUSHED_ORES(MOD), CREATE_INGOTS(MOD), BEACON_PAYMENT(FORGE), INGOTS(FORGE), NUGGETS(FORGE), PLATES(FORGE), + + ; public Tag tag; - private AllItemTags() { - this(""); + private AllItemTags(NameSpace namespace) { + this(namespace, ""); } - private AllItemTags(String path) { - this(path, Create.ID); - } - - private AllItemTags(String path, String modid) { + private AllItemTags(NameSpace namespace, String path) { tag = new ItemTags.Wrapper( - new ResourceLocation(modid, (path.isEmpty() ? "" : path + "/") + Lang.asId(name()))); + new ResourceLocation(namespace.id, (path.isEmpty() ? "" : path + "/") + Lang.asId(name()))); } public boolean matches(ItemStack stack) { return tag.contains(stack.getItem()); } + + public void includeIn(AllItemTags parent) { + REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getBuilder(parent.tag) + .add(tag)); + } } public static enum AllBlockTags { - WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE,; + WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE, + + ; public Tag tag; @@ -91,11 +106,9 @@ public class AllTags { return tag.contains(block.getBlock()); } } - + public static void register() { - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getBuilder(AllItemTags.beacon_payment.tag) - .add(AllItemTags.CREATE_INGOTS.tag)); - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getBuilder(AllItemTags.ingots.tag) - .add(AllItemTags.CREATE_INGOTS.tag)); + AllItemTags.CREATE_INGOTS.includeIn(AllItemTags.BEACON_PAYMENT); + AllItemTags.CREATE_INGOTS.includeIn(AllItemTags.INGOTS); } } diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 1557f2432..b418708d8 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -82,6 +82,8 @@ import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateTi import com.simibubi.create.content.logistics.block.inventories.CreativeCrateTileEntity; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmRenderer; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; +import com.simibubi.create.content.logistics.block.packager.PackagerRenderer; +import com.simibubi.create.content.logistics.block.packager.PackagerTileEntity; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverRenderer; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; @@ -215,6 +217,11 @@ public class AllTileEntities { register("adjustable_crate", AdjustableCrateTileEntity::new, AllBlocks.ADJUSTABLE_CRATE); public static final TileEntityEntry CREATIVE_CRATE = register("creative_crate", CreativeCrateTileEntity::new, AllBlocks.CREATIVE_CRATE); + + public static final TileEntityEntry PACKAGER = + register("packager", PackagerTileEntity::new, AllBlocks.PACKAGER); + + public static final TileEntityEntry EXTRACTOR = register("extractor", ExtractorTileEntity::new, AllBlocks.EXTRACTOR, AllBlocks.VERTICAL_EXTRACTOR); public static final TileEntityEntry LINKED_EXTRACTOR = register("linked_extractor", @@ -285,6 +292,7 @@ public class AllTileEntities { bind(FLYWHEEL, FlywheelRenderer::new); bind(FURNACE_ENGINE, EngineRenderer::new); bind(ROTATION_SPEED_CONTROLLER, SpeedControllerRenderer::new); + bind(PACKAGER, PackagerRenderer::new); bind(CREATIVE_CRATE, SmartTileEntityRenderer::new); bind(REDSTONE_LINK, SmartTileEntityRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java new file mode 100644 index 000000000..60f9e0e18 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java @@ -0,0 +1,46 @@ +package com.simibubi.create.content.logistics.block.chute; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemUseContext; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; + +public class ChuteBlock extends Block implements IWrenchable { + + public static final BooleanProperty WINDOW = BooleanProperty.create("window"); + + public ChuteBlock(Properties p_i48440_1_) { + super(p_i48440_1_); + setDefaultState(getDefaultState().with(WINDOW, false)); + } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + if (!context.getWorld().isRemote) + context.getWorld().setBlockState(context.getPos(), state.cycle(WINDOW)); + return ActionResultType.SUCCESS; + } + + @Override + public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.CHUTE; + } + + @Override + protected void fillStateContainer(Builder p_206840_1_) { + super.fillStateContainer(p_206840_1_.add(WINDOW)); + } + + + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java new file mode 100644 index 000000000..021d743ba --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java @@ -0,0 +1,25 @@ +package com.simibubi.create.content.logistics.block.chute; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.StateContainer.Builder; + +public class ChutePortBlock extends HorizontalBlock { + + public ChutePortBlock(Properties p_i48377_1_) { + super(p_i48377_1_); + } + + @Override + protected void fillStateContainer(Builder p_206840_1_) { + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING)); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + return getDefaultState().with(HORIZONTAL_FACING, p_196258_1_.getPlacementHorizontalFacing()); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerBlock.java new file mode 100644 index 000000000..8fff2fd09 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerBlock.java @@ -0,0 +1,21 @@ +package com.simibubi.create.content.logistics.block.packager; + +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock; + +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockReader; + +public class PackagerBlock extends HorizontalAxisKineticBlock { + + public PackagerBlock(Properties properties) { + super(properties); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.PACKAGER.create(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerRenderer.java new file mode 100644 index 000000000..eb43f54fd --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerRenderer.java @@ -0,0 +1,33 @@ +package com.simibubi.create.content.logistics.block.packager; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; + +import net.minecraft.block.BlockState; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; + +public class PackagerRenderer extends KineticTileEntityRenderer { + + public PackagerRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + @Override + protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, + int light, int overlay) { + super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + AllBlockPartials.PACKAGER_SEALER.renderOn(te.getBlockState()) + .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); + } + + @Override + protected BlockState getRenderedBlockState(KineticTileEntity te) { + return shaft(te.getBlockState() + .get(PackagerBlock.HORIZONTAL_AXIS)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerTileEntity.java new file mode 100644 index 000000000..89738885a --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/packager/PackagerTileEntity.java @@ -0,0 +1,13 @@ +package com.simibubi.create.content.logistics.block.packager; + +import com.simibubi.create.content.contraptions.base.KineticTileEntity; + +import net.minecraft.tileentity.TileEntityType; + +public class PackagerTileEntity extends KineticTileEntity { + + public PackagerTileEntity(TileEntityType typeIn) { + super(typeIn); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java new file mode 100644 index 000000000..d70964e0b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -0,0 +1,153 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; +import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.VoxelShaper; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.state.EnumProperty; +import net.minecraft.state.IProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.ILightReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { + + public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); + + public enum Shape implements IStringSerializable { + RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), + DEFAULT(AllShapes.BELT_FUNNEL_DEFAULT), + EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED); + + VoxelShaper shaper; + + private Shape(VoxelShaper shaper) { + this.shaper = shaper; + } + + @Override + public String getName() { + return Lang.asId(name()); + } + } + + public BeltFunnelBlock(Properties p_i48377_1_) { + super(p_i48377_1_); + setDefaultState(getDefaultState().with(SHAPE, Shape.DEFAULT)); + } + + @Override + protected void fillStateContainer(Builder p_206840_1_) { + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, SHAPE)); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return state.get(SHAPE).shaper.get(state.get(HORIZONTAL_FACING)); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + return updateShape(super.getStateForPlacement(p_196258_1_), p_196258_1_.getWorld(), p_196258_1_.getPos()); + } + + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllBlocks.REALITY_FUNNEL.asStack(); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, + BlockPos pos, BlockPos p_196271_6_) { + if (direction == Direction.DOWN && !isOnValidBelt(state, world, pos)) + return AllBlocks.REALITY_FUNNEL.getDefaultState() + .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + if (direction == state.get(HORIZONTAL_FACING)) + return updateShape(state, world, pos); + return state; + } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + return !world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING) + .getOpposite())) + .getShape(world, pos) + .isEmpty(); + } + + public static boolean isOnValidBelt(BlockState state, IWorldReader world, BlockPos pos) { + BlockState stateBelow = world.getBlockState(pos.down()); + if (!(stateBelow.getBlock() instanceof BeltBlock)) + return false; + if (stateBelow.get(BeltBlock.SLOPE) == Slope.VERTICAL) + return false; + if (stateBelow.get(BeltBlock.HORIZONTAL_FACING) + .getAxis() != state.get(HORIZONTAL_FACING) + .getAxis()) + return false; + return true; + } + + @Override + public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + boolean isMoving) { + if (worldIn.isRemote) + return; + + Direction blockFacing = state.get(HORIZONTAL_FACING) + .getOpposite(); + if (fromPos.equals(pos.offset(blockFacing))) + if (!isValidPosition(state, worldIn, pos)) + worldIn.destroyBlock(pos, true); + } + + private BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { + state = state.with(SHAPE, Shape.DEFAULT); + BlockState neighbour = world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING))); + if (canConnectTo(state, neighbour)) + return state.with(SHAPE, Shape.EXTENDED); + return state; + } + + private boolean canConnectTo(BlockState state, BlockState neighbour) { + if (neighbour.getBlock() instanceof BeltTunnelBlock) + return true; + if (neighbour.getBlock() == this && neighbour.get(HORIZONTAL_FACING) == state.get(HORIZONTAL_FACING) + .getOpposite()) + return true; + return false; + } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + if (!context.getWorld().isRemote) + context.getWorld() + .setBlockState(context.getPos(), state.cycle(SHAPE)); + return ActionResultType.SUCCESS; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java new file mode 100644 index 000000000..a546eb1a9 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java @@ -0,0 +1,36 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItem; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.util.Direction; + +public class FunnelItem extends BlockItem { + + public FunnelItem(Block p_i48527_1_, Properties p_i48527_2_) { + super(p_i48527_1_, p_i48527_2_); + } + + @Override + protected BlockState getStateForPlacement(BlockItemUseContext ctx) { + BlockState state = super.getStateForPlacement(ctx); + if (state == null) + return state; + if (!(state.getBlock() instanceof RealityFunnelBlock)) + return state; + Direction direction = state.get(RealityFunnelBlock.FACING); + if (!direction.getAxis() + .isHorizontal()) + return state; + BlockState equivalentBeltFunnel = AllBlocks.BELT_FUNNEL.get() + .getStateForPlacement(ctx) + .with(BeltFunnelBlock.HORIZONTAL_FACING, direction); + if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, ctx.getWorld(), ctx.getPos())) + return equivalentBeltFunnel; + return state; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java new file mode 100644 index 000000000..68b669091 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -0,0 +1,56 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.foundation.block.ProperDirectionalBlock; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public class RealityFunnelBlock extends ProperDirectionalBlock { + + public RealityFunnelBlock(Properties p_i48415_1_) { + super(p_i48415_1_); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + return getDefaultState().with(FACING, context.getFace()); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.REALITY_FUNNEL.get(state.get(FACING)); + } + + @Override + public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + boolean isMoving) { + if (worldIn.isRemote) + return; + + Direction blockFacing = state.get(FACING) + .getOpposite(); + if (fromPos.equals(pos.offset(blockFacing))) + if (!isValidPosition(state, worldIn, pos)) + worldIn.destroyBlock(pos, true); + } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + return !world.getBlockState(pos.offset(state.get(FACING) + .getOpposite())) + .getShape(world, pos) + .isEmpty(); + } + + +} diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_default.json b/src/main/resources/assets/create/models/block/belt_funnel/block_default.json new file mode 100644 index 000000000..6f50b49a7 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_default.json @@ -0,0 +1,314 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "10": "create:block/reality_funnel", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "RightWall", + "from": [0, -3, 6], + "to": [2, 16, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "east": {"uv": [2.75, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 3.5, 7.5, 4], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftWall", + "from": [14, -3, 6], + "to": [16, 16, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "east": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 7.5, 7.5, 8], "rotation": 270, "texture": "#10"}, + "down": {"uv": [4, 8, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Top", + "from": [2, 10, 6], + "to": [14, 16, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, + "faces": { + "north": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "south": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "up": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"}, + "down": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "RightBottom", + "from": [0, -5, 6], + "to": [1, -3, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 15, 12.5, 15.5], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 6], + "to": [16, -3, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 14.5, 12.5, 15], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "F1", + "from": [2, -2.5, 7.5], + "to": [5, 10.5, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F3", + "from": [8, -2.5, 7.5], + "to": [11, 10.5, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F2", + "from": [5, -2.5, 7.5], + "to": [8, 10.5, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F4", + "from": [11, -2.5, 7.5], + "to": [14, 10.5, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "BackExtension", + "from": [2, -2, 10], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [0.25, 3.25, 1.25, 7.25], "texture": "#10"}, + "south": {"uv": [5.5, 12, 8.5, 16], "texture": "#10"}, + "west": {"uv": [0.25, 3.25, 1.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [7, 0, 8, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "MidExtension", + "from": [1, -3, 9], + "to": [15, 15, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 4.5], "texture": "#10"}, + "east": {"uv": [1.25, 2.75, 2.25, 7.25], "texture": "#10"}, + "south": {"uv": [8.5, 11.5, 12, 16], "texture": "#10"}, + "west": {"uv": [1.25, 2.75, 2.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [4.75, 4, 5.75, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "midBackPlateRight", + "from": [0, -5, 12], + "to": [1, -2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "west": {"uv": [3, 0, 3.5, 0.75], "texture": "#10"}, + "up": {"uv": [3, 0, 3.5, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "midBackPlateLeft", + "from": [15, -5, 12], + "to": [16, -2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [0.5, 7.25, 1, 8], "texture": "#10"}, + "up": {"uv": [3, 0, 3.5, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "BackBottom", + "from": [4, -5, 16], + "to": [12, 5, 31], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]}, + "faces": { + "east": {"uv": [12.25, 8.75, 16, 11.25], "texture": "#10"}, + "west": {"uv": [12.25, 8.75, 16, 11.25], "rotation": 180, "texture": "#10"}, + "down": {"uv": [12.25, 6.75, 16, 8.75], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Back", + "from": [3, -4, 14], + "to": [13, 13, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "south": {"uv": [3, 11.75, 5.5, 16], "texture": "#10"}, + "west": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "up": {"uv": [8, 1, 8.75, 3.5], "rotation": 90, "texture": "#10"}, + "down": {"uv": [8, 1, 8.5, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "BackPlateMid", + "from": [1, -3, 10], + "to": [15, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "south": {"uv": [0.25, 7.25, 3.75, 7.5], "texture": "#10"}, + "up": {"uv": [14.5, 0.25, 16, 3.75], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "RearBackPlate", + "from": [1, -5, 15], + "to": [15, -3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, + "faces": { + "south": {"uv": [0.25, 7.5, 3.75, 8], "texture": "#10"} + } + }, + { + "name": "BackPlateRight", + "from": [0, -5, 14], + "to": [1, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "south": {"uv": [0, 7.25, 0.25, 8], "texture": "#10"}, + "west": {"uv": [3.5, 0, 4, 0.75], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "BackPlateLeft", + "from": [15, -5, 14], + "to": [16, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [0, 7.25, 0.5, 8], "texture": "#10"}, + "south": {"uv": [3.75, 7.25, 4, 8], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [5, 6, 7, 8] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [9, 10] + }, + { + "name": "DELETABLEEXTESNIONMID", + "origin": [35, 12, 4], + "children": [11, 12] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [13, 14, 15, 16, 17, 18] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json new file mode 100644 index 000000000..80900143a --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -0,0 +1,345 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "10": "create:block/reality_funnel", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "RightWall", + "from": [0, -3, 0], + "to": [2, 16, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "east": {"uv": [2.75, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 3.5, 7.5, 4], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftWall", + "from": [14, -3, 0], + "to": [16, 16, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "east": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 7.5, 7.5, 8], "rotation": 270, "texture": "#10"}, + "down": {"uv": [4, 8, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Top", + "from": [2, 10, 0], + "to": [14, 16, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, + "faces": { + "north": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "south": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "up": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"}, + "down": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "RightBottom", + "from": [0, -5, 0], + "to": [1, -3, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 15, 12.5, 15.5], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 0], + "to": [16, -3, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 14.5, 12.5, 15], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "F1", + "from": [2, -2.5, 1.5], + "to": [5, 10.5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F3", + "from": [8, -2.5, 1.5], + "to": [11, 10.5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F2", + "from": [5, -2.5, 1.5], + "to": [8, 10.5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F4", + "from": [11, -2.5, 1.5], + "to": [14, 10.5, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "BackExtension", + "from": [2, -2, 10], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [0.25, 3.25, 1.25, 7.25], "texture": "#10"}, + "south": {"uv": [5.5, 12, 8.5, 16], "texture": "#10"}, + "west": {"uv": [0.25, 3.25, 1.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [7, 0, 8, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "MidExtension", + "from": [1, -3, 6], + "to": [15, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 4.5], "texture": "#10"}, + "east": {"uv": [1.25, 2.75, 2.25, 7.25], "texture": "#10"}, + "south": {"uv": [8.5, 11.5, 12, 16], "texture": "#10"}, + "west": {"uv": [1.25, 2.75, 2.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [4.75, 4, 5.75, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "MidRight", + "from": [0, -5, 6], + "to": [1, -2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [1, 7.25, 2.5, 8], "texture": "#10"}, + "west": {"uv": [1.5, 0, 3, 0.75], "texture": "#10"}, + "up": {"uv": [1.5, 0, 3, 0.25], "rotation": 90, "texture": "#10"}, + "down": {"uv": [1, 7.75, 2.5, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "MidLeft", + "from": [15, -5, 6], + "to": [16, -2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [1, 7.25, 2.5, 8], "texture": "#10"}, + "west": {"uv": [1.5, 0, 3, 0.75], "texture": "#10"}, + "up": {"uv": [1.5, 0, 3, 0.25], "rotation": 90, "texture": "#10"}, + "down": {"uv": [1, 7.75, 2.5, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "midBackPlateRight", + "from": [0, -5, 12], + "to": [1, -2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "west": {"uv": [3, 0, 3.5, 0.75], "texture": "#10"}, + "up": {"uv": [3, 0, 3.5, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "midBackPlateLeft", + "from": [15, -5, 12], + "to": [16, -2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [0.5, 7.25, 1, 8], "texture": "#10"}, + "up": {"uv": [3, 0, 3.5, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "BackBottom", + "from": [4, -5, 16], + "to": [12, 5, 31], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]}, + "faces": { + "east": {"uv": [12.25, 8.75, 16, 11.25], "texture": "#10"}, + "west": {"uv": [12.25, 8.75, 16, 11.25], "rotation": 180, "texture": "#10"}, + "down": {"uv": [12.25, 6.75, 16, 8.75], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Back", + "from": [3, -4, 14], + "to": [13, 13, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "south": {"uv": [3, 11.75, 5.5, 16], "texture": "#10"}, + "west": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "up": {"uv": [8, 1, 8.75, 3.5], "rotation": 90, "texture": "#10"}, + "down": {"uv": [8, 1, 8.5, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "BackPlateMid", + "from": [1, -3, 10], + "to": [15, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "south": {"uv": [0.25, 7.25, 3.75, 7.5], "texture": "#10"}, + "up": {"uv": [14.5, 0.25, 16, 3.75], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "RearBackPlate", + "from": [1, -5, 15], + "to": [15, -3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, + "faces": { + "south": {"uv": [0.25, 7.5, 3.75, 8], "texture": "#10"} + } + }, + { + "name": "BackPlateRight", + "from": [0, -5, 14], + "to": [1, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "south": {"uv": [0, 7.25, 0.25, 8], "texture": "#10"}, + "west": {"uv": [3.5, 0, 4, 0.75], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "BackPlateLeft", + "from": [15, -5, 14], + "to": [16, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [0, 7.25, 0.5, 8], "texture": "#10"}, + "south": {"uv": [3.75, 7.25, 4, 8], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [5, 6, 7, 8] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [9, 10] + }, + { + "name": "DELETABLEEXTENSION", + "origin": [9, -4, 8], + "children": [11, 12] + }, + { + "name": "DELETABLEEXTESNIONMID", + "origin": [35, 12, 4], + "children": [13, 14] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [15, 16, 17, 18, 19, 20] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json new file mode 100644 index 000000000..0fd0f5463 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -0,0 +1,289 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "10": "create:block/reality_funnel", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "RightWall", + "from": [0, -3, 8], + "to": [2, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "east": {"uv": [2.75, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 3.5, 7.5, 4], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftWall", + "from": [14, -3, 8], + "to": [16, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "east": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 7.5, 7.5, 8], "rotation": 270, "texture": "#10"}, + "down": {"uv": [4, 8, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Top", + "from": [2, 10, 8], + "to": [14, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, + "faces": { + "north": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "south": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "up": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"}, + "down": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "RightBottom", + "from": [0, -5, 8], + "to": [1, -3, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 15, 12.5, 15.5], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 8], + "to": [16, -3, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 14.5, 12.5, 15], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "F1", + "from": [2, -2.5, 9.5], + "to": [5, 10.5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F3", + "from": [8, -2.5, 9.5], + "to": [11, 10.5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F2", + "from": [5, -2.5, 9.5], + "to": [8, 10.5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F4", + "from": [11, -2.5, 9.5], + "to": [14, 10.5, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 8]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "BackExtension", + "from": [2, -2, 12], + "to": [14, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [0.25, 3.25, 1.25, 7.25], "texture": "#10"}, + "south": {"uv": [5.5, 12, 8.5, 16], "texture": "#10"}, + "west": {"uv": [0.25, 3.25, 1.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [7, 0, 8, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "MidExtension", + "from": [1, -3, 11], + "to": [15, 15, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 4.5], "texture": "#10"}, + "east": {"uv": [1.25, 2.75, 2.25, 7.25], "texture": "#10"}, + "south": {"uv": [8.5, 11.5, 12, 16], "texture": "#10"}, + "west": {"uv": [1.25, 2.75, 2.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [4.75, 4, 5.75, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "BackBottom", + "from": [4, -5, 16], + "to": [12, 5, 31], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]}, + "faces": { + "east": {"uv": [12.25, 8.75, 16, 11.25], "texture": "#10"}, + "west": {"uv": [12.25, 8.75, 16, 11.25], "rotation": 180, "texture": "#10"}, + "down": {"uv": [12.25, 6.75, 16, 8.75], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Back", + "from": [3, -4, 16], + "to": [13, 13, 19], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "east": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "south": {"uv": [3, 11.75, 5.5, 16], "texture": "#10"}, + "west": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "up": {"uv": [8, 1, 8.75, 3.5], "rotation": 90, "texture": "#10"}, + "down": {"uv": [8, 1, 8.5, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "BackPlateMid", + "from": [1, -3, 10], + "to": [15, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "south": {"uv": [0.25, 7.25, 3.75, 7.5], "texture": "#10"}, + "up": {"uv": [14.5, 0.25, 16, 3.75], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "RearBackPlate", + "from": [1, -5, 15], + "to": [15, -3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, + "faces": { + "south": {"uv": [0.25, 7.5, 3.75, 8], "texture": "#10"} + } + }, + { + "name": "BackPlateRight", + "from": [0, -5, 14], + "to": [1, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "south": {"uv": [0, 7.25, 0.25, 8], "texture": "#10"}, + "west": {"uv": [3.5, 0, 4, 0.75], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "BackPlateLeft", + "from": [15, -5, 14], + "to": [16, -2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [0, 7.25, 0.5, 8], "texture": "#10"}, + "south": {"uv": [3.75, 7.25, 4, 8], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [5, 6, 7, 8] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [9, 10] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [11, 12, 13, 14, 15, 16] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block.json b/src/main/resources/assets/create/models/block/chute/block.json new file mode 100644 index 000000000..4fa5dae2b --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/block.json @@ -0,0 +1,118 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "13": "create:block/chute", + "particle": "create:block/zinc_block" + }, + "elements": [ + { + "from": [3, 8, 1], + "to": [13, 16, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, + "faces": { + "north": {"uv": [10, 0, 15, 4], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [10, 0, 15, 4], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "texture": "#13"} + } + }, + { + "from": [13, 8, 1], + "to": [15, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "faces": { + "north": {"uv": [9, 0, 10, 4], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [15, 0, 16, 4], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "up": {"uv": [6, 0, 7, 7], "texture": "#13"}, + "down": {"uv": [6, 0, 7, 7], "texture": "#13"} + } + }, + { + "from": [3, 8, 13], + "to": [13, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 4], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [10, 0, 15, 4], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, + "down": {"uv": [1, 0, 6, 1], "texture": "#13"} + } + }, + { + "from": [1, 8, 1], + "to": [3, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "faces": { + "north": {"uv": [15, 0, 16, 4], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [9, 0, 10, 4], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "texture": "#13"} + } + }, + { + "from": [13, 0, 2], + "to": [14, 8, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, + "faces": { + "north": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, + "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "south": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, + "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [2, 0, 2], + "to": [3, 8, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, + "faces": { + "north": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, + "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "south": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, + "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [3, 0, 13], + "to": [13, 8, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, + "faces": { + "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + } + }, + { + "from": [3, 0, 2], + "to": [13, 8, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, + "faces": { + "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + } + } + ], + "groups": [ + { + "name": "ChuteTop", + "origin": [9, 16, -7], + "children": [0, 1, 2, 3] + }, + { + "name": "ChuteBase", + "origin": [8, 8, -7], + "children": [4, 5, 6, 7] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_windowed.json b/src/main/resources/assets/create/models/block/chute/block_windowed.json new file mode 100644 index 000000000..2897f4c6f --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/block_windowed.json @@ -0,0 +1,118 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "13": "create:block/chute", + "particle": "create:block/zinc_block" + }, + "elements": [ + { + "from": [3, 8, 1], + "to": [13, 16, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, + "faces": { + "north": {"uv": [1, 12, 6, 16], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [1, 12, 6, 16], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "texture": "#13"} + } + }, + { + "from": [13, 8, 1], + "to": [15, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "faces": { + "north": {"uv": [9, 0, 10, 4], "texture": "#13"}, + "east": {"uv": [0, 12, 7, 16], "texture": "#13"}, + "south": {"uv": [15, 0, 16, 4], "texture": "#13"}, + "west": {"uv": [0, 12, 7, 16], "texture": "#13"}, + "up": {"uv": [6, 0, 7, 7], "texture": "#13"}, + "down": {"uv": [6, 0, 7, 7], "texture": "#13"} + } + }, + { + "from": [3, 8, 13], + "to": [13, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, + "faces": { + "north": {"uv": [1, 12, 6, 16], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [1, 12, 6, 16], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, + "down": {"uv": [1, 0, 6, 1], "texture": "#13"} + } + }, + { + "from": [1, 8, 1], + "to": [3, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "faces": { + "north": {"uv": [15, 0, 16, 4], "texture": "#13"}, + "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [9, 0, 10, 4], "texture": "#13"}, + "west": {"uv": [0, 12, 7, 16], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "texture": "#13"} + } + }, + { + "from": [13, 0, 2], + "to": [14, 8, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, + "faces": { + "north": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, + "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "south": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, + "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [2, 0, 2], + "to": [3, 8, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, + "faces": { + "north": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, + "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "south": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, + "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, + "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [3, 0, 13], + "to": [13, 8, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, + "faces": { + "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + } + }, + { + "from": [3, 0, 2], + "to": [13, 8, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, + "faces": { + "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, + "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + } + } + ], + "groups": [ + { + "name": "ChuteTop", + "origin": [9, 16, -7], + "children": [0, 1, 2, 3] + }, + { + "name": "ChuteBase", + "origin": [8, 8, -7], + "children": [4, 5, 6, 7] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute_port.json b/src/main/resources/assets/create/models/block/chute_port.json new file mode 100644 index 000000000..631e2d653 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute_port.json @@ -0,0 +1,23 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "14": "create:block/chute_port", + "particle": "create:block/zinc_block" + }, + "elements": [ + { + "name": "Port", + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [12, 0, 16, 4], "texture": "#14"}, + "east": {"uv": [0, 0, 4, 4], "texture": "#14"}, + "south": {"uv": [0, 0, 4, 4], "texture": "#14"}, + "west": {"uv": [0, 0, 4, 4], "texture": "#14"}, + "up": {"uv": [4, 4, 8, 8], "texture": "#14"}, + "down": {"uv": [0, 4, 4, 8], "texture": "#14"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/packager/block.json b/src/main/resources/assets/create/models/block/packager/block.json new file mode 100644 index 000000000..ccf249c2c --- /dev/null +++ b/src/main/resources/assets/create/models/block/packager/block.json @@ -0,0 +1,82 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/brass_gearbox", + "2": "create:block/packager_top", + "3": "create:block/crafter_top", + "5": "create:block/brass_casing", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "name": "HudTop", + "from": [0, 14, 0], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 16, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 16, 2], "texture": "#3"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 2], "texture": "#3"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + }, + { + "name": "HudBottom", + "from": [0, 0, 0], + "to": [16, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, -6, 8]}, + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#1"}, + "east": {"uv": [0, 14, 16, 16], "texture": "#3"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#3"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#5"} + } + }, + { + "name": "HudLeft", + "from": [14, 2, 0], + "to": [16, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, -4, 8]}, + "faces": { + "north": {"uv": [0, 2, 2, 14], "texture": "#1"}, + "east": {"uv": [0, 2, 16, 14], "texture": "#3"}, + "south": {"uv": [14, 2, 16, 14], "texture": "#1"}, + "west": {"uv": [0, 2, 16, 14], "texture": "#1"} + } + }, + { + "name": "HudCenter", + "from": [2, 2, 1], + "to": [14, 14, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, -4, 8]}, + "faces": { + "north": {"uv": [2, 2, 14, 14], "texture": "#1"}, + "south": {"uv": [2, 2, 14, 14], "texture": "#1"} + } + }, + { + "name": "HudRight", + "from": [0, 2, 0], + "to": [2, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-22, -4, 8]}, + "faces": { + "north": {"uv": [14, 2, 16, 14], "texture": "#1"}, + "east": {"uv": [0, 2, 16, 14], "texture": "#1"}, + "south": {"uv": [0, 2, 2, 14], "texture": "#1"}, + "west": {"uv": [0, 2, 16, 14], "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "hud", + "origin": [-22, -4, 8], + "children": [0, 1, 2, 3, 4] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/packager/item.json b/src/main/resources/assets/create/models/block/packager/item.json new file mode 100644 index 000000000..7d29349c2 --- /dev/null +++ b/src/main/resources/assets/create/models/block/packager/item.json @@ -0,0 +1,169 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/axis", + "1": "create:block/brass_gearbox", + "2": "create:block/packager_top", + "3": "create:block/crafter_top", + "5": "create:block/brass_casing", + "6": "create:block/sealer", + "particle": "create:block/axis", + "1_1": "create:block/axis_top" + }, + "elements": [ + { + "name": "Axis", + "from": [6, 6, 0], + "to": [10, 10, 16], + "shade": false, + "faces": { + "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, + "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, + "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, + "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [6, 0, 10, 16], "texture": "#0"}, + "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "HudTop", + "from": [0, 14, 0], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 16, 2], "texture": "#1"}, + "east": {"uv": [0, 0, 16, 2], "texture": "#3"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 2], "texture": "#3"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + }, + { + "name": "HudBottom", + "from": [0, 0, 0], + "to": [16, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, -6, 8]}, + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#1"}, + "east": {"uv": [0, 14, 16, 16], "texture": "#3"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#3"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#5"} + } + }, + { + "name": "HudLeft", + "from": [14, 2, 0], + "to": [16, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, -4, 8]}, + "faces": { + "north": {"uv": [0, 2, 2, 14], "texture": "#1"}, + "east": {"uv": [0, 2, 16, 14], "texture": "#3"}, + "south": {"uv": [14, 2, 16, 14], "texture": "#1"}, + "west": {"uv": [0, 2, 16, 14], "texture": "#1"} + } + }, + { + "name": "HudCenter", + "from": [2, 2, 1], + "to": [14, 14, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, -4, 8]}, + "faces": { + "north": {"uv": [2, 2, 14, 14], "texture": "#1"}, + "south": {"uv": [2, 2, 14, 14], "texture": "#1"} + } + }, + { + "name": "HudRight", + "from": [0, 2, 0], + "to": [2, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-22, -4, 8]}, + "faces": { + "north": {"uv": [14, 2, 16, 14], "texture": "#1"}, + "east": {"uv": [0, 2, 16, 14], "texture": "#1"}, + "south": {"uv": [0, 2, 2, 14], "texture": "#1"}, + "west": {"uv": [0, 2, 16, 14], "texture": "#3"} + } + }, + { + "name": "SealerKnob", + "from": [5, 25.15, 5], + "to": [11, 27.15, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 33.15, 8]}, + "faces": { + "north": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "east": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "south": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "west": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "up": {"uv": [13, 1, 16, 4], "texture": "#6"}, + "down": {"uv": [13, 4, 16, 5], "texture": "#6"} + } + }, + { + "name": "Sealer", + "from": [2, 15.15, 2], + "to": [14, 25.15, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 25.15, 8]}, + "faces": { + "north": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "east": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "south": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "west": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "up": {"uv": [10, 5, 16, 11], "texture": "#6"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, -1.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "translation": [0, -1.75, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "shaft", + "origin": [8, 8, 8], + "children": [0] + }, + { + "name": "hud", + "origin": [-22, -4, 8], + "children": [1, 2, 3, 4, 5] + }, + { + "name": "group", + "origin": [-8, 25.15, 8], + "children": [6, 7] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/packager/sealer.json b/src/main/resources/assets/create/models/block/packager/sealer.json new file mode 100644 index 000000000..e0527d1d2 --- /dev/null +++ b/src/main/resources/assets/create/models/block/packager/sealer.json @@ -0,0 +1,53 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "6": "create:block/sealer", + "particle": "create:block/sealer" + }, + "elements": [ + { + "name": "SealerKnob", + "from": [5, 25.15, 5], + "to": [11, 27.15, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 33.15, 8]}, + "faces": { + "north": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "east": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "south": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "west": {"uv": [13, 4, 16, 5], "texture": "#6"}, + "up": {"uv": [13, 1, 16, 4], "texture": "#6"} + } + }, + { + "name": "Sealer", + "from": [2, 15.15, 2], + "to": [14, 25.15, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 25.15, 8]}, + "faces": { + "north": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "east": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "south": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "west": {"uv": [10, 11, 16, 16], "texture": "#6"}, + "up": {"uv": [10, 5, 16, 11], "texture": "#6"} + } + } + ], + "groups": [ + { + "name": "shaft", + "origin": [8, 8, 8], + "children": [] + }, + { + "name": "hud", + "origin": [-22, -4, 8], + "children": [] + }, + { + "name": "Sealer", + "origin": [-8, 25.15, 8], + "children": [0, 1] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reality_funnel/block.json b/src/main/resources/assets/create/models/block/reality_funnel/block.json new file mode 100644 index 000000000..ebfd1e4a6 --- /dev/null +++ b/src/main/resources/assets/create/models/block/reality_funnel/block.json @@ -0,0 +1,117 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "10": "create:block/reality_funnel", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "from": [2, -2, 2], + "to": [14, 0, 14], + "rotation": {"angle": 0, "axis": "z", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0, 13, 0.5, 16], "rotation": 270, "texture": "#10"}, + "east": {"uv": [0, 13, 0.5, 16], "rotation": 270, "texture": "#10"}, + "south": {"uv": [0, 13, 0.5, 16], "rotation": 270, "texture": "#10"}, + "west": {"uv": [0, 13, 0.5, 16], "rotation": 270, "texture": "#10"} + } + }, + { + "from": [3, -1, 3], + "to": [13, 1, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [9, 9, 8]}, + "faces": { + "up": {"uv": [9.5, 1.75, 12, 4.25], "rotation": 90, "texture": "#10"} + } + }, + { + "from": [13, 0, 2], + "to": [14, 2, 14], + "rotation": {"angle": 0, "axis": "z", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0.5, 13, 1, 13.25], "rotation": 270, "texture": "#10"}, + "east": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, + "south": {"uv": [0.5, 13, 1, 13.25], "rotation": 270, "texture": "#10"}, + "west": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, + "up": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"} + } + }, + { + "from": [2, 0, 2], + "to": [3, 2, 14], + "rotation": {"angle": 0, "axis": "z", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0.5, 15.75, 1, 16], "rotation": 270, "texture": "#10"}, + "east": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, + "south": {"uv": [0.5, 15.75, 1, 16], "rotation": 270, "texture": "#10"}, + "west": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, + "up": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"} + } + }, + { + "from": [3, 0, 2], + "to": [13, 2, 3], + "rotation": {"angle": 0, "axis": "z", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, + "south": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, + "up": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 90, "texture": "#10"} + } + }, + { + "from": [3, 0, 13], + "to": [13, 2, 14], + "rotation": {"angle": 0, "axis": "z", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, + "south": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, + "up": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "BasicFunnel", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reality_funnel/item.json b/src/main/resources/assets/create/models/block/reality_funnel/item.json new file mode 100644 index 000000000..b2ddbd530 --- /dev/null +++ b/src/main/resources/assets/create/models/block/reality_funnel/item.json @@ -0,0 +1,301 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "10": "create:block/reality_funnel", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "name": "RightWall", + "from": [0, -3, 3], + "to": [2, 16, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "east": {"uv": [2.75, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 3.5, 7.5, 4], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftWall", + "from": [14, -3, 3], + "to": [16, 16, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [12, 11.25, 12.5, 16], "texture": "#10"}, + "east": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "south": {"uv": [15.5, 11.25, 16, 16], "texture": "#10"}, + "west": {"uv": [2.5, 2.75, 4, 7.5], "texture": "#10"}, + "up": {"uv": [6, 7.5, 7.5, 8], "rotation": 270, "texture": "#10"}, + "down": {"uv": [4, 8, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "Top", + "from": [2, 10, 3], + "to": [14, 16, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 5]}, + "faces": { + "north": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "south": {"uv": [12.5, 11.25, 15.5, 12.75], "texture": "#10"}, + "up": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"}, + "down": {"uv": [6, 4, 7.5, 7.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "RightBottom", + "from": [0, -5, 3], + "to": [1, -3, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 5]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 15, 12.5, 15.5], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "LeftBottom", + "from": [15, -5, 3], + "to": [16, -3, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "south": {"uv": [12.25, 14.5, 12.5, 15], "texture": "#10"}, + "west": {"uv": [2.5, 7.5, 4, 8], "texture": "#10"}, + "down": {"uv": [2.5, 7.75, 4, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "F1", + "from": [2, -2.5, 4.5], + "to": [5, 10.5, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F3", + "from": [8, -2.5, 4.5], + "to": [11, 10.5, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 5]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F2", + "from": [5, -2.5, 4.5], + "to": [8, 10.5, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "F4", + "from": [11, -2.5, 4.5], + "to": [14, 10.5, 5.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, -8, 5]}, + "faces": { + "north": {"uv": [4, 0, 4.75, 3.25], "texture": "#10"}, + "east": {"uv": [4, 0, 4.25, 3.25], "texture": "#10"}, + "south": {"uv": [4, 0, 4.75, 3.25], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4.5, 0, 4.75, 3.25], "texture": "#10"}, + "up": {"uv": [4, 0.25, 4.75, 0.5], "rotation": 180, "texture": "#10"}, + "down": {"uv": [4, 2.25, 4.75, 2.5], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "BackExtension", + "from": [2, -2, 7], + "to": [14, 14, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "east": {"uv": [0.25, 3.25, 1.25, 7.25], "texture": "#10"}, + "south": {"uv": [5.5, 12, 8.5, 16], "texture": "#10"}, + "west": {"uv": [0.25, 3.25, 1.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [7, 0, 8, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "MidExtension", + "from": [1, -3, 6], + "to": [15, 15, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [9, 0, 12.5, 4.5], "texture": "#10"}, + "east": {"uv": [1.25, 2.75, 2.25, 7.25], "texture": "#10"}, + "south": {"uv": [8.5, 11.5, 12, 16], "texture": "#10"}, + "west": {"uv": [1.25, 2.75, 2.25, 7.25], "rotation": 180, "texture": "#10"}, + "up": {"uv": [4.75, 4, 5.75, 8], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "midBackPlateRight", + "from": [0, -5, 9], + "to": [1, -2, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 5]}, + "faces": { + "west": {"uv": [3, 0, 3.5, 0.75], "texture": "#10"}, + "up": {"uv": [3, 0, 3.5, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "midBackPlateLeft", + "from": [15, -5, 9], + "to": [16, -2, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "east": {"uv": [0.5, 7.25, 1, 8], "texture": "#10"}, + "up": {"uv": [3, 0, 3.5, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "Back", + "from": [3, -4, 11], + "to": [13, 13, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "east": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "south": {"uv": [3, 11.75, 5.5, 16], "texture": "#10"}, + "west": {"uv": [12.5, 0, 13.25, 4.5], "texture": "#10"}, + "up": {"uv": [8, 1, 8.75, 3.5], "rotation": 90, "texture": "#10"}, + "down": {"uv": [8, 1, 8.5, 3.5], "rotation": 270, "texture": "#10"} + } + }, + { + "name": "BackPlateMid", + "from": [1, -3, 7], + "to": [15, -2, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "south": {"uv": [0.25, 7.25, 3.75, 7.5], "texture": "#10"}, + "up": {"uv": [14.5, 0.25, 16, 3.75], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "RearBackPlate", + "from": [1, -5, 12], + "to": [15, -3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 5]}, + "faces": { + "south": {"uv": [0.25, 7.5, 3.75, 8], "texture": "#10"} + } + }, + { + "name": "BackPlateRight", + "from": [0, -5, 11], + "to": [1, -2, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, -8, 5]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "south": {"uv": [0, 7.25, 0.25, 8], "texture": "#10"}, + "west": {"uv": [3.5, 0, 4, 0.75], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "BackPlateLeft", + "from": [15, -5, 11], + "to": [16, -2, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, + "faces": { + "north": {"uv": [12, 13.75, 12.25, 14.25], "texture": "#10"}, + "east": {"uv": [0, 7.25, 0.5, 8], "texture": "#10"}, + "south": {"uv": [3.75, 7.25, 4, 8], "texture": "#10"}, + "up": {"uv": [3.5, 0, 4, 0.25], "rotation": 90, "texture": "#10"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1.75, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, 4, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [5, 6, 7, 8] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [9, 10] + }, + { + "name": "DELETABLEEXTESNIONMID", + "origin": [35, 12, 4], + "children": [11, 12] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [13, 14, 15, 16, 17] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png new file mode 100644 index 0000000000000000000000000000000000000000..d99d77012a47e238b662dee5543cfacc88a9948b GIT binary patch literal 804 zcmV+<1Ka$GP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;2FkAZe8V00NXrL_t(oN4=J@ZsI@?hW&OlmY_fgL?q}y zqC=wL3JNHYLJ^6c_EKGY^*z8TDU&z2+(X=kZ~PPX*3>)Dxqe$S2#A6#d#!390U}`U@b?0Q zJkNtL7z`qa0lK$7mF@*31ysN$2NLWP3*wUha=9!Zn}A=XdzH)zv3C4ZTOeF6mvBCx zBTlDN*zI;Rz8% zfE4mN0a}k0fK17OlIvbT0HZ4A6ALQ6FTYK$Er=CJk$eTJl!cm5+c=xeimE0_z5@G- z+1GG99>+Nqw?0XdE|D~LiKMYhB#m7nY3vIBwFw`eUjul0`xD3Kzi%aYfAIKlS2ec9 zHR-?1T!{FXX14_NdcCT#E$)B)E(zcwu}1F?q5uvC9kDvOII--vfb8;P^kgXkTy>nZ~52&X~%oT=E;q3`>c&O_Gr!kr|B3FfpMTY-T7^ zCy6t&U6eKEV3%@>Rym94oM~tZu@=WIqR7Zjb)NIb`@YZTeV_O8c|L!THOV@m_A*=gfn~?04T+)v>{j>HsG=X;s7vy_{pG}yvRviaxHJq zA)Y@cjF%V^djfDnBBFV;=o38Ho<^r_-7*756aaw3db%?XBprQq&4okSLp;yPDsfN8 zF+4A1jw0npYTWF7d#KHRlp{59$H_S?kAqwS-q^s3im)UwL-voGgZq5_XYIbakyWg! zZAqGbRUbAzRXum=-F2t%u)f63_Rgu~*!ksq-<$nX9;NEa9o}r@vde%w+xGK+Tf3R6 znaA7Ba&yJ^TGm}?OB0M!3I;M-##P-Nmk#J@Jfx(R@mKFnqtg}+#wTbKsv8<^R4A2s zB^{iB?y(1@yJo6^IE{Z~=%LuetYP`%1I+0+s$R8f*=p)G#6v3n?#uVNoz9@2JQk`gZgeS)bauEo)8jM4Uuj;*`4E2aJ4zv9r1TU< zsue!*#;^jEM1UbaC_}v*FIK#@ew1h~>`6AM2z8Xl;IIoF`MIS-;AN(i z^mK19xfgTn8TDj%aewWlrulVtu7UNl&Hq*vDqLLSJ2*V!H3Ynob*eSwEAg<@C%uTM z3j>OV1@F6|K^AM=1Zo=zreuo)(J?#w_H6C#TTwVRNspena1MhoEactKKp%hkCa*}t z^PV6K*4`{&IlOlLmEjaZFoFw4NUczS_}ft+B{g<2MD{S&(@u}Q;nsC@g)zI!UN@zj z`T8)h2qmE6p^y4$YHEW1jB^hn3c!|en)aGhojD|%`cI3*3pF{K^Ko?3V)fhmHoSIwv8WtGH``yQI!rT3iJwRg5N{O*mvT_Dd8u2pH* zQ#U*_uLe#|PTwXZCi>Ub*Sid>^89J0hL8rF2G4xgLup2jyYd zExj*amU&K1PTIhkPq0FJWh-+wZ*HGBwH%6hI@@aE28_*j^0{2D@9yGx8F=(`_tBN! zdd_(pka6~MCBA!kd3obNPA_7ZVzGYLtyGFJg~n%V*;ueR!Gs3)AAqhsx%4i7~%#i!A(JO4CooU>^f=#^0Zj2anJfNU5V z3PP2*r&gfo8Ah#f!nN?=#A74j4rS|=CnFMPda7?Cgtaw*%Fu^eYQYUOjckRbr;ag0 zp3!M%MS|z+KW#T>e-#r_C;n&qDPup9d*S^nALtkehcmitV|W)_7XJPxBe zDP6e@qvD4AU?)Z3>{$VFMm`#q!K%q*9dwfNQ$8Uy>uO(6pWYvn^A}~6cw&==U1y&B zLlfyPmAh()IfSc(1dp>}^a$7VUV?`XfRqXw8xK&BTq|3Sbe!LrPnzavEj zJs2C!{8H+dy3h#0oO`1w>VGQ(0*yR3{s$_$rwg_ScPw2tdkjUW#c+>%;pxJyK$xH_F&qrP7d$E{FL^}sZDw6Jk3`)*f%7Dr7%Y^M_ zcPdQ_OO8Ki5ZmgC5=c}+*cG{;U5&M^|C~Y20#LT=By}Z;C1rt33 zJtM=93Yk-Zif((lIEGmGZ=H0ItI0vcm39B2Yi?hS9TS)A5O7@LE3kI)go4CIX>ShB zmW-FX?!V^yp6F<{SxDd0>@ ze)xTMFhkX})DqEO42@Qw1;P&5e!n^OgnMBqOHOx_PMs#pr?U~Y%=4^@m#$s=pJQ3( zsW(uuejOl?nQx_EO;BxenVp{LE{IDI9MZDmtl&Gb} zIfB9`-g3NZX18cxpeHZ4fvcTm_Y;najkm)Ec7GH8v~p7C<}m$7KyNa5y85}Sb4q9e E06a~IOaK4? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/reality_funnel.png b/src/main/resources/assets/create/textures/block/reality_funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f93e3e389257a742423fa31893911696434de5 GIT binary patch literal 2280 zcmVP)<{98FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMGBNQWX_Wu~2xUn`K~#8N?V4F{6h{<=`3w93o)VHsHbR&O)+ZzcHny>`!6*rP z5LqCQhXgDyU_dszu~`fT2PrR60*VwRB>%3{-yP2QPPy9C-7~U10ZV79ySA=#>elUB z)n0dY=%eJ~$xo{|fBchb3Vt~AnSpvE-?b$Zmo{0-J?QA@NOtYomF(NMFG>H_)x)pT zUnFlH9ZyI>SbptddlF*!o3rduy9!Xx^8nSDMk-tyE&-lS9Lf#GHFlvb zdHv{wr3e7=+3~(5m>%slAP78a9$p3ruyg0m+)H53o;}M7zzmiV0O1gT6akoFk$y7K zpFF+ZUnPHcxI6jd$q8#$^YAjj2W;QIy^sLi-Q9^&2FySJi2EQ@3Y4( zWsM`i^jNQv2O^Ik_pbDq08Oy~d_YkP7#J8Z0Z19J)-L4`!cT18yg3)BOB+o8x0z$r zC4c}Sd1l@ONK?w2VgZc`;MXqYkP*3!8#fv@Y}il(<*OcTn03U^n@R$NJq>S?%lgLy^YuLfH=;Nw*aZ1Im%@Ln0kz~2X*QR zaQpIs>dcFLQw3lE+qP}X9S0zQe+~M9Q(jhp(RcljA^`7s$ZHuOfXH*t5+JsT4w8<- za22%#1w)|GK&V+3Fn*yu?dMBNC4gq$69SdR8FvfHr2K&X?qc z{e*;L0%(m%fQ6|eO9X(tgyfpMtfixT;0H|^&yfJE^B5!mb!j6%B43gh_R}l@LQ5hq zYw0N8M}eyW`^h7KoXpF~BSz%sTSK`7$XYte_c6d~z<%-wpg?2p`atT;`b>yW0P6cN zm%J>?Q9j^WeXKO>CnO93pHfFohI7KlSNrS?F-rh1T$TW9$^t^dF#+=UfKW*CvMgs! zSwM_*c*3NiGt27(LIJWYM}h*b)yGQ1enP@A0rL8QP=GAUk)VKU z^|8{hpO7#E*1ZB60t~M8u_Pt{^~0r;WjPYGO!U@F*iT3pkf)S7GG#nAAuT4IM}U>^ z0Zfi!d-_)DvFu(z0||+H0rFaawkDUbF89tCa zo#;0qssdTvS>=75QS0A>NP4qFWp04wm0 z&m(k#)c;>ufQOb`43r5h#b}4E28hWwc^~Ex^J5^|VXL8`I3U(xs{wO{WT`kH)?urG zCBW>KiUVRDwi;Lh{3n=w3?1vS*B-CK*=v1O%#0mO?xq$(41fR#hChgQ*lKw11*j~6 z50T)9Nbo}>_zv$?Bp4FJA&Q{#xF+9UgEeIVY@q=Msv$UE0RCRvZb)Iy9JpZOZyujC zP!2f5&_7kr-yAfkZYcqzsvtGF_DYBC>OtoRML-*#1tB>*JU!3}6yW+kuRjiD-qj07L z0K|Fa@ZKf(0CY?&ju3PVsjzJp5TUF9!{;gjh&(Xz>1=cSCddkOoJX6|0x-+GZ+X`e zc>()(^mHSlwN-==bsG_Y=LwJk+WHDj+YV!L2tcqw#HBUG283OhEMTPs7(d@`&kM`y zfi_I0nIGoLz{v>v|&7D1sM6Zt-JsnE)aEb%mg@a z`SIa9WhJ^&JB1mG-S_-iLXULSw}oT!Mr zkHI-_r;L7DMgStgq83ou2`(Np0h}MRuP-h|Oq#j`WQ-*&%Yq_UNI)hmuLs)LYful) zYXLOG#ABNc+6x+B*ggdHRF^a?&w|=CBEZC@P04?_nQw=g@zu-#0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;2FkAZe8V00GBIL_t(oN5z%BN&`U@g?+JYQY0>kRvK9X z62V3k#KI^NODnZeQbZApsEA@=V<1{YMf45Sry27N++|pAR9Nm>eB7P8!#QVulAUnQ z{VQs-NYthUH=P9s$2+s0-frSiCtHAdsZ{dRs#RYJqE5B|vp9~uITZ>GAUh!DJkwJr zTOd0iAqqbNxpbHch3-KAWYGtZ)yr6&Y(aPg5Ji#A5nv*SnHXjRfGUy)Oy---6vj!T z@tq{G4UpY|abr~^53Gs+h-)jKsn`8Gsj5gGv;dfe_;;ftFbRNY7$9pd#%4zlic0`Y zLwFA+mk?u2rH00Qh~!IXwgU)bOwAh0m#~lki2nrh%>D;t2Y$mO0HWE|(i?{=k_TCx zW}fZwtcv6TbN&Z_pP^L$ix}0p(WL~&giuBDP^nZ>Lot)phUQ?h1Bh12Wj9reeZ`z- z;GOhktcv6T!)|*z<*vKzZaYiv;dIRnPFB Date: Sat, 20 Jun 2020 20:02:27 +0200 Subject: [PATCH 11/47] Logistical Mockups Part III - Added the depot block --- src/generated/resources/.cache/cache | 7 +++- .../assets/create/blockstates/depot.json | 7 ++++ .../resources/assets/create/lang/en_ud.json | 1 + .../resources/assets/create/lang/en_us.json | 1 + .../assets/create/models/item/depot.json | 3 ++ .../data/create/loot_tables/blocks/depot.json | 19 +++++++++ .../java/com/simibubi/create/AllBlocks.java | 8 ++++ .../java/com/simibubi/create/AllShapes.java | 2 + .../logistics/block/depot/DepotBlock.java | 24 ++++++++++++ .../block/realityFunnel/BeltFunnelBlock.java | 3 ++ .../create/models/block/depot/block.json | 37 ++++++++++++++++++ .../create/textures/block/depot_side.png | Bin 0 -> 588 bytes .../create/textures/block/depot_top.png | Bin 0 -> 587 bytes 13 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/depot.json create mode 100644 src/generated/resources/assets/create/models/item/depot.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/depot.json create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java create mode 100644 src/main/resources/assets/create/models/block/depot/block.json create mode 100644 src/main/resources/assets/create/textures/block/depot_side.png create mode 100644 src/main/resources/assets/create/textures/block/depot_top.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 9f4b1687b..43b66d7d8 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -58,6 +58,7 @@ f86eea3f7df0988fffbe90e29b74141a7203cd15 assets\create\blockstates\dark_scoria_c f1020a33fcb1a362b6c55b5aa8ce093e47ebde09 assets\create\blockstates\dark_scoria_cobblestone_wall.json 902778a0f16b7ad009ee7b123bb583eaea32467a assets\create\blockstates\dark_scoria_pillar.json ac85f55d82d96fc15750e6b954297cfd1e00d04d assets\create\blockstates\deployer.json +3660f44309279a0347347f23ce7444c6ed98cafd assets\create\blockstates\depot.json c890ec9b3778aebb16c6b2eb2ca79bfbe7bf7435 assets\create\blockstates\diorite_bricks.json 894d5ca00c3765553deaac44b83257983acf502d assets\create\blockstates\diorite_bricks_slab.json e42f2ebe5a2fdaeed62b9bc289252664a1e8705b assets\create\blockstates\diorite_bricks_stairs.json @@ -334,8 +335,8 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json -0ef66cfa2ad2656989bd228b5281dd81ae215f4e assets\create\lang\en_ud.json -0a4d0882aa343ae0e943cf1bc542c2a96baedaa0 assets\create\lang\en_us.json +5753bc985f4c202fe16387c32fb8ad80c631c933 assets\create\lang\en_ud.json +0640b1b64ac1a1e337178f932f22b0b2aea61d46 assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -998,6 +999,7 @@ e67fe11e9036c81f0f54d368b41a971822a84a32 assets\create\models\item\dark_scoria_c f5b2995929ac9dca9857d4618660ffa7778d5618 assets\create\models\item\dark_scoria_pillar.json f06f56ffb1cd7c9a2b81c65f7796726692e5cc59 assets\create\models\item\deforester.json 2104c1276259ab67b94f3d4fe97e14b6bc6941ac assets\create\models\item\deployer.json +84d87f715efab45dc7bcb2e3c0870ed56fa20ee9 assets\create\models\item\depot.json a97ca9b6fc3e10a9c9409b27458a852222045e4e assets\create\models\item\diorite_bricks.json 7a28bb619d37a37ed82509d2ff395d76b4435961 assets\create\models\item\diorite_bricks_slab.json 920804b7380cca2c477d9f901e045597234246d7 assets\create\models\item\diorite_bricks_stairs.json @@ -1772,6 +1774,7 @@ ef1beeb856cb30d381fd4f1cb4d2bf62fc444e52 data\create\loot_tables\blocks\dark_sco 76457f3ec7c2d3874866ce8eb894f7bd9cfd59ee data\create\loot_tables\blocks\dark_scoria_cobblestone_wall.json be851f6643d151ed464e4164bc2b7ca145e5ff82 data\create\loot_tables\blocks\dark_scoria_pillar.json cf9be747e10a98f3f3aabb95c9753f39d806f73b data\create\loot_tables\blocks\deployer.json +5b46f6003bfe393b43ea0447fffcf7ae3bf969b1 data\create\loot_tables\blocks\depot.json 5c8ca846c3fb348fea628035e1670208e386516b data\create\loot_tables\blocks\diorite_bricks.json 427fea1465652db87a2c192934511b972ecfcedf data\create\loot_tables\blocks\diorite_bricks_slab.json bdaba62199f7a65e1149b742aaaf0c23a1e149b0 data\create\loot_tables\blocks\diorite_bricks_stairs.json diff --git a/src/generated/resources/assets/create/blockstates/depot.json b/src/generated/resources/assets/create/blockstates/depot.json new file mode 100644 index 000000000..f1af801d0 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/depot.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/depot/block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 548827595..a35239349 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -59,6 +59,7 @@ "block.create.dark_scoria_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", "block.create.dark_scoria_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", "block.create.deployer": "\u0279\u01DD\u028Eo\u05DFd\u01DD\u15E1", + "block.create.depot": "\u0287od\u01DD\u15E1", "block.create.diorite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", "block.create.diorite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", "block.create.diorite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 6d479372f..fcc292fd4 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -62,6 +62,7 @@ "block.create.dark_scoria_cobblestone_wall": "Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "Dark Scoria Pillar", "block.create.deployer": "Deployer", + "block.create.depot": "Depot", "block.create.diorite_bricks": "Diorite Bricks", "block.create.diorite_bricks_slab": "Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "Diorite Bricks Stairs", diff --git a/src/generated/resources/assets/create/models/item/depot.json b/src/generated/resources/assets/create/models/item/depot.json new file mode 100644 index 000000000..6efbe20e3 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/depot.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/depot/block" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/depot.json b/src/generated/resources/data/create/loot_tables/blocks/depot.json new file mode 100644 index 000000000..0f2400aed --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/depot.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:depot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 595ac1a79..888e3beed 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -77,6 +77,7 @@ import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBl import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChutePortBlock; +import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterGenerator; @@ -786,6 +787,13 @@ public class AllBlocks { .transform(customItemModel()) .register(); + public static final BlockEntry DEPOT = REGISTRATE.block("depot", DepotBlock::new) + .initialProperties(SharedProperties::stone) + .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .item() + .transform(customItemModel("_", "block")) + .register(); + public static final BlockEntry EXTRACTOR = REGISTRATE.block("extractor", ExtractorBlock::new) .initialProperties(SharedProperties::softMetal) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p, c.getName() + "/horizontal"))) diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index cbdd000f4..003e524c4 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -134,6 +134,8 @@ public class AllShapes { .build(), TANK_TOP_BOTTOM = shape(TANK_BOTTOM_LID).add(TANK_TOP_LID) .add(TANK) + .build(), + DEPOT = shape(CASING_11PX.get(Direction.UP)).add(1, 11, 1, 15, 13, 15) .build() ; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java new file mode 100644 index 000000000..280e2eb3c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java @@ -0,0 +1,24 @@ +package com.simibubi.create.content.logistics.block.depot; + +import com.simibubi.create.AllShapes; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; + +public class DepotBlock extends Block { + + public DepotBlock(Properties p_i48440_1_) { + super(p_i48440_1_); + } + + @Override + public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.DEPOT; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index d70964e0b..48fa9c93f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; +import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VoxelShaper; @@ -101,6 +102,8 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { public static boolean isOnValidBelt(BlockState state, IWorldReader world, BlockPos pos) { BlockState stateBelow = world.getBlockState(pos.down()); + if (stateBelow.getBlock() instanceof DepotBlock) + return true; if (!(stateBelow.getBlock() instanceof BeltBlock)) return false; if (stateBelow.get(BeltBlock.SLOPE) == Slope.VERTICAL) diff --git a/src/main/resources/assets/create/models/block/depot/block.json b/src/main/resources/assets/create/models/block/depot/block.json new file mode 100644 index 000000000..85bde5e9f --- /dev/null +++ b/src/main/resources/assets/create/models/block/depot/block.json @@ -0,0 +1,37 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/depot_side", + "2": "create:block/depot_top", + "3": "create:block/andesite_casing", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 11, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 10.5, 0.5]}, + "faces": { + "north": {"uv": [0, 5, 16, 16], "texture": "#1"}, + "east": {"uv": [0, 5, 16, 16], "texture": "#1"}, + "south": {"uv": [0, 5, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 5, 16, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#3"} + } + }, + { + "from": [1, 11, 1], + "to": [15, 13, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, -2, 9]}, + "faces": { + "north": {"uv": [1, 14, 15, 16], "texture": "#2"}, + "east": {"uv": [1, 14, 15, 16], "texture": "#2"}, + "south": {"uv": [1, 14, 15, 16], "texture": "#2"}, + "west": {"uv": [1, 14, 15, 16], "texture": "#2"}, + "up": {"uv": [1, 0, 15, 14], "texture": "#2"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/depot_side.png b/src/main/resources/assets/create/textures/block/depot_side.png new file mode 100644 index 0000000000000000000000000000000000000000..eea606e2a001818c51e3907092d4ee0cb77e3d93 GIT binary patch literal 588 zcmV-S0<-;zP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T>5pa=<^;Pg;9tcUM=AQx4&Zr17ATccoFJuS-*(yvgAmnvg=(Kr?HT(o_RHO! zCrH&4%TgbwL9xmv=sG=EwnUNLCjSVo;I2Jf@DC^NVUcPvpX1$|SE$!aOlR|j|IBG% zZkZ;>o?+;3iQVTfnR5|olaku^BsL#(u zjGAR>ks24Q(`v#NHYcd*jE#zF=+o`Gg{FQgJ&kV90zyc5;~3uq1ux3+X*j~*%*VHj zh;0<7+>z5!sPht>`vHp+%)O_3$BxrM;eW(hM`FWm!gU(Bzq+z8;$q1_yJ16$n!bez zxw?%+-+VDhQIg|2D{wNn#Na$&Um5XelCcqV%^B267Rd907s6PfC~gpFA0-+5Fk^n5 z&M+EJF!V#5T?BWE$b;11++sq7@%403|0_;Cr~XTO<<6W?Jox(MR)AOkfNCl$Pxw8# a5Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tcwr?$ZByrqpz+|91Y>eqOz+*Uq$H(ttR7!~)C5OS!#lOJ1uCcgI zg~0D^g0eK&Y}Rsq{eHsJA3AxC?ehk0+elzh6gYV?-B%|BT(-*`h7q)i5Ck5=D1h(# zXc~*Es!29N#Bi+$!LU~j%&zB{&og8h%hx2YaCdi0CHsiur1$I~1kA=gb7rl(N|wtN z?(aX-`GVEz8?{%F)gtJd=A>h-k1Fsz>~^hG!9-ygh|Yo5TFS2Akn~pvW*U&^nhSTncWN) ziwu{SS4h(oH#dv@42&t{-a!@#(|7jM!;%++O08)Q{G0)`(2`Cc6v*w2$5X7=IVO`S zE-qfNf44~P75I{8P*v^G3@ReBa(|3{3*6WF*%@A*&ZtjK`Z-Q#Gm)Ip9j#*_cG&+5 zyp8;vT+L8A4DAIS_BUnO{Y(!(Zf#6U@xP!zkvd8`f{$NQYlxK*53)L2)6`P_u}>H( Z?=OI?_XUO=s}BGG002ovPDHLkV1kdH2XX)a literal 0 HcmV?d00001 From 6d79cf16f6d5128c3a6bfaa1d78793daa6c5f023 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sun, 21 Jun 2020 11:54:27 +0200 Subject: [PATCH 12/47] Mockup Fixes --- .../java/com/simibubi/create/AllBlocks.java | 6 ++--- .../java/com/simibubi/create/AllShapes.java | 2 +- .../realityFunnel/RealityFunnelBlock.java | 25 +++++++++++++++---- .../models/block/chute/block_windowed.json | 2 +- .../models/block/reality_funnel/block.json | 16 +++++++----- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 888e3beed..f1afcd90e 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -124,7 +124,6 @@ import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.block.Block; -import net.minecraft.block.Block.Properties; import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; import net.minecraft.block.material.MaterialColor; @@ -360,7 +359,7 @@ public class AllBlocks { public static final BlockEntry MECHANICAL_PRESS = REGISTRATE.block("mechanical_press", MechanicalPressBlock::new) .initialProperties(SharedProperties::stone) - .properties(Properties::nonOpaque) + .properties(p -> p.nonOpaque()) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .transform(StressConfigDefaults.setImpact(8.0)) .item(BasinOperatorBlockItem::new) @@ -713,6 +712,7 @@ public class AllBlocks { public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) .initialProperties(SharedProperties::softMetal) + .addLayer(() -> RenderType::getCutoutMipped) .blockstate((c, p) -> p.getVariantBuilder(c.get()) .forAllStates(s -> ConfiguredModel.builder() .modelFile(s.get(ChuteBlock.WINDOW) ? AssetLookup.partialBaseModel(c, p, "windowed") @@ -731,7 +731,7 @@ public class AllBlocks { public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) .initialProperties(SharedProperties::softMetal) .transform(StressConfigDefaults.setImpact(4.0)) - .properties(Properties::nonOpaque) + .properties(p -> p.nonOpaque()) .blockstate((c, p) -> p.getVariantBuilder(c.get()) .forAllStates(s -> ConfiguredModel.builder() .modelFile(AssetLookup.partialBaseModel(c, p)) diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 003e524c4..e690a9169 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -65,7 +65,7 @@ public class AllShapes { NIXIE_TUBE_CEILING = shape(0, 12, 0, 16, 16, 16).add(9, 1, 5, 15, 16, 11) .add(1, 1, 5, 7, 16, 11) .forHorizontalAxis(), - REALITY_FUNNEL = shape(2, 2, 14, 14, 14, 18).forDirectional(NORTH), + REALITY_FUNNEL = shape(2, -2, 2, 14, 2, 14).forDirectional(UP), BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), BELT_FUNNEL_DEFAULT = shape(3, -5, 12, 13, 13, 17).add(0, -5, 6, 16, 16, 12) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index 68b669091..6d367e59f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.logistics.block.realityFunnel; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.foundation.block.ProperDirectionalBlock; @@ -11,6 +12,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; @@ -19,18 +21,32 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { public RealityFunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); } - + @Override public BlockState getStateForPlacement(BlockItemUseContext context) { return getDefaultState().with(FACING, context.getFace()); } - + @Override public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { return AllShapes.REALITY_FUNNEL.get(state.get(FACING)); } - + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world, + BlockPos pos, BlockPos p_196271_6_) { + if (state.get(FACING) + .getAxis() + .isHorizontal() && direction == Direction.DOWN) { + BlockState equivalentFunnel = AllBlocks.BELT_FUNNEL.getDefaultState() + .with(BeltFunnelBlock.HORIZONTAL_FACING, state.get(FACING)); + if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) + return equivalentFunnel; + } + return state; + } + @Override public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) { @@ -43,7 +59,7 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { if (!isValidPosition(state, worldIn, pos)) worldIn.destroyBlock(pos, true); } - + @Override public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { return !world.getBlockState(pos.offset(state.get(FACING) @@ -51,6 +67,5 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { .getShape(world, pos) .isEmpty(); } - } diff --git a/src/main/resources/assets/create/models/block/chute/block_windowed.json b/src/main/resources/assets/create/models/block/chute/block_windowed.json index 2897f4c6f..801008eb3 100644 --- a/src/main/resources/assets/create/models/block/chute/block_windowed.json +++ b/src/main/resources/assets/create/models/block/chute/block_windowed.json @@ -51,7 +51,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, "faces": { "north": {"uv": [15, 0, 16, 4], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "east": {"uv": [0, 12, 7, 16], "texture": "#13"}, "south": {"uv": [9, 0, 10, 4], "texture": "#13"}, "west": {"uv": [0, 12, 7, 16], "texture": "#13"}, "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, diff --git a/src/main/resources/assets/create/models/block/reality_funnel/block.json b/src/main/resources/assets/create/models/block/reality_funnel/block.json index ebfd1e4a6..9800e0c56 100644 --- a/src/main/resources/assets/create/models/block/reality_funnel/block.json +++ b/src/main/resources/assets/create/models/block/reality_funnel/block.json @@ -7,8 +7,8 @@ }, "elements": [ { - "from": [2, -2, 2], - "to": [14, 0, 14], + "from": [2.1, -2, 2.1], + "to": [13.9, 0, 13.9], "rotation": {"angle": 0, "axis": "z", "origin": [9, 8, 8]}, "faces": { "north": {"uv": [0, 13, 0.5, 16], "rotation": 270, "texture": "#10"}, @@ -34,7 +34,8 @@ "east": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, "south": {"uv": [0.5, 13, 1, 13.25], "rotation": 270, "texture": "#10"}, "west": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, - "up": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"} + "up": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"}, + "down": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"} } }, { @@ -46,7 +47,8 @@ "east": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, "south": {"uv": [0.5, 15.75, 1, 16], "rotation": 270, "texture": "#10"}, "west": {"uv": [0.5, 13, 1, 16], "rotation": 270, "texture": "#10"}, - "up": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"} + "up": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"}, + "down": {"uv": [0.75, 13, 1, 16], "rotation": 180, "texture": "#10"} } }, { @@ -56,7 +58,8 @@ "faces": { "north": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, "south": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, - "up": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 90, "texture": "#10"} + "up": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 90, "texture": "#10"}, + "down": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 90, "texture": "#10"} } }, { @@ -66,7 +69,8 @@ "faces": { "north": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, "south": {"uv": [0.5, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, - "up": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"} + "up": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"}, + "down": {"uv": [0.75, 13.25, 1, 15.75], "rotation": 270, "texture": "#10"} } } ], From bffdaeb344168cffb7edeab69a99428257877626 Mon Sep 17 00:00:00 2001 From: Kryppers <65094918+Kryppers@users.noreply.github.com> Date: Mon, 22 Jun 2020 18:03:34 +0100 Subject: [PATCH 13/47] Update chute.png Updated the texture for the basic chute block --- .../assets/create/textures/block/chute.png | Bin 804 -> 3744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png index d99d77012a47e238b662dee5543cfacc88a9948b..ebb320b809db60ad73e8d32c1990012ac06e12cd 100644 GIT binary patch delta 3729 zcmV;C4sP+J2A~~~BYz0ZdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O3yqax1$H zh5vIESpp|;SPsXk>>$g}2eKv0zRpX%RIIYZ=7iw@2WYeY_0Mho!JijNCQ2@;reyhx zHCEpk6np>fue0%dpFjUB@%(MxycaxEf!}Z+(|Yzd=H=@^j(^X5|2}W>c+Ow}b7X^Rk-ScefbFRe?bDsaPt|jid^yhQTIAaQv!5hB<^L%@i67GNFKk@B@ zXOjz=v4nW$^Y6Yh@8J*Uy+=QMXWKI$zPrNM^lV5!eDusa`Q3NNL!TPCFUj8)mb`=D z58v%Q%iil+*MDNdQ^`C=y-YbHHg;SY&auQN^RE}@^Qn9aCJqprpxOBhV82$2@U+;$xXRd_os~*9{wdgKjPkUSkb zz2h>cX#V_|-zNW;&-Bb{Chs;BW~;mumJ?+ zxVd0pv;AJt#eKzAI5-FPiH*kI)Npw|7vLgf3(B|v0yeoIE;*aM&(7h;0zM7ReTcq; zfD`f4nGH4}B)}tIi zcIm0-UV80q5I!Rg8ENEEMjdVX87ApJ)68a;S!Y{r5lSmAS!v}}R$XlqYdh??Wv88Y z*>$%!Y7eU4QFA|#`)kzPgPI~1&%XSH8q+zyu77Y!C!&~vn2!#`vm!u1d&SHa7o%6? z6f;{rNg*E8oG3WcDPkZPm-DjS8@n&${t`DM@o(Yg{}XaXq5FRzXB4^zxj%9H1-02u zMF|HW%|i954I5%xp`ilzC5Xz6JkbFm!UK+$q^iQaGx#<|w@9ixu0{d#o;7JT6$)gX zp?`HuTEYr>SlGeA-NWiDphUO6uc&i%m9~cOW%JMj-c5}k>(XkbsnAv2T8@RNa(ZD- za1-fEW@8)nTMZX!8>rBqOH*M7I+ElY^^L;}trcN9!N=4!)~9c+MkSoHa7R(@fKz8Q zCf>zJeXv5w&gxAoc~o6?Q~EWohohG2et)iE-ll4=+D(hUDwL9HPB(&RHI0K~GmqaT zs~d6QYV~N7)o<4xMrGkp^%u&F<8iC2=GcI~YD2ubqX>m$EOj}N^LYPy9AOs&OFd9H zk;h$Qn#ZjNgzNSemGkttO#~b^5t}nYi5$CkqMqt+pK+RTo1;#@?o$)rnjc}PuYYkv z$ZN7OUtS8fOem2=Rq>q38NEUjw(V)&X2SDs>tgOQWRhuI&$*-Var<>?PFB5gARv{! zSqB$-9N)=Y4p)Um{rc!Hs{i+xxq;%N;?X2(pae5D<^W5D3f20mXRn@0Mt78_G6G?>aD1L!G8fm2+oC-LPlxeF$x-3#I~xr;F8w$K*7z1m_Jd} z>&5@5|JG=WS4)qW2oOaX2|DGckwh|LOIPjW-5+A!AYNM2;&aX(Uy+)XN|_J33n9L9}a zG0u>V+6gDAc|nOKuMT~xAN5pQuRwp%P1z^p6n<5TI9y6*ZE60Gll4>-I4>zJ&$t#v z2kAh8T}zQx>5YojHMq>9`Rx9OsK5DZzI3d_WRGo!jNrfIZd2F=PB!3=;QJ)Y)rd1=8 zPFzcIv$&(b8WMS*StHUEjB#g`!M&v5>e#iYWySnA%T6}fGmgwbEO)3}q0Dc!1R&ff zF>1EF8RA*>g3A%A z;u@BGzhfz{8hye}tAE+CC}{;DF{|01Pw$6YTQo9x36TnF2_0pPTmwxQ!O0f2Fr}FS z)5B1{Am&{$lxwoq{g^xb45>czndStAPRJiGqqtCakDFe-pW>ta9);R`r?U@Q%gO+9 zNDZ4(IYqb5GpB{cw^u=dMBt@e>YJyO&uw~vJ-|Mn>J{B zr>IRWjl{&z`kkIujhv^=_jDQc8_(0(^Dd$Qk^dS#()x)%8a?V*eG``g9Ujn6Esr;J zPiJ*{gR#wPD}TvTXQ5cVs;bwB+KDEOxZT=L&^k(}ofeALB-5R^rNxA@5Xv+bVjvLc zWM`XgtF>$MD@ z64gK*z+PFzV1dCYe$63&5Fbq=IZ@|u{b!?^b!&ao{A zjGM`Op5)Uq@6#zM^XSFf5#)&Td_RIHtGw#fqObaND3AC%TlDDH=zU4%jj38|{tbe` z`~ZVPjUoU500v@9M??TW06qXhY!!SC00009aFIh3e+P6)O+^Rf1{M%D2e56aaR2}X zR7pfZR9M5UmraNqMHI(>-Cfl+Q}eMK$@;PA!5k7VX4SBu9#oL1kV7tk2syau#hadt z9?Zc@ax^DT!Cb_ITyhaq5EWrzS(Y7;K$1gpNK_0YJ6U$Bx4&jQ%vMp|Gg*V?K~q)T zZ{Bj0a#yO58inF&C%?h4gk8@ z1fbh&vY8}wcg~wh0)R;pvNXk*j3=Jl8-!9y4jw#6yWJ)XL$uaNDN#zfeHeyFDbZT9 zfB$~cG{q;aV_sTVa0;wKYs6-fV0IpW#Y2bCe>x^jQ$m1VuLppX5`cEQ?SxAy-2-s* z=1sc~*4Nhq0An(KTV8eu)Q#|w0a#vH!I%swB_hvrwAQ3)ic$)t6y0u@vMd=42JT1p z)_I;==qm`sN;w4TZg6}%#5Q00{!M)Z ze|#5Y-etl(&)M4A0zfH6Q4~%o1 zAw&gs3%y;pwzejW&^l)E&><&Wdy(%W01zwXf)F6A2bq6ct@Xrhl~NN~U`)pH$_lYk z761FGsCS-;Ahfr$2KfHAx$i5s^}?rLe}4Tbn4f=kB&7g`2q7to+^vm9gQ6JAN|Ka3 z&w2Uf7lZBX?P?ZuyWI%{?75x=b!xRVVF*Q0(r75Qw{ff1+68u}qY)ye(-{{oVY9%e z!C-(=3S$gH2#TU`2uLZNFrQ{-I%HW!t0fRoL`!R;oweC)B84E!bCM*X(TF*GfB5j& zfIQF1^PG0OUGZ&wZ;iBu)hP&q@eSK;%Ce*^OIO;1ARvz8itB8R5qX}oxVT8K*CPx= zq9`H^LodJ#Q4~2N=H}+u*w~nKf!2s9a)vY-G0mnT2m+*xD2jq8is*Ja1VKQn)fyXM zOR-gISBs1d#wdy~#`vXpYKCYXf0Jb)G8V2nTA4zGF8>_@moHxqcm!l?!Rp!?P2C`h zB8ogGR*JGHXtgz2n)1eLud=$f<`4)*qtT<#&*I`Mqc99e!Q z|M^Jd9$OC7xnktNW&Aobi;~_hOpRrMKRGXd`R` zva9U}btC*H<+tVVL4udwdi$ZWBUZ{iR%pN9Cri_b$0P~;e!pU{_`lI#@9(?1Ylp|@ z70=AHIdS&f=$nr|n7HxPe?R*y%ssxV(A$69nNpDA$~jFl_dZQC_dQKB#I5^VJl$;t zC(fQ5_3z$sMm)c7-$Y7IuYR#B#Q+0i+}@EcxI-}nWf_Z!I4v^N8f$%Spe|e zI3@Y&^HZ)d8Drf4f{Pa~0x-9CwgPcWYd7uGE2WJY>pHFDaSWXNfBM4c_U3^8-8&pP zb$VnGumg(ih+1pr=jXX{6)forw(T_xl)=F))VU*s){ozrZ^m zf5vWA@ykz6lBVN{=F+80t_0U%orXX?_y#*Iy)qF2y!*ld$8@20&7FI9{(j&@G^ou7 zgDLaEgJ|kRWa-@(e-3b=cddd%eIl|E{$Hsw5dnO=eia)J0Keb30qm>veBXe__RLPb zecdfSDmGA!$*L34_g|hyDOH(_2ZI4Wdn4MkiO5%Kv%&^hJrym#O-li=y1H7qnT>oq vwfJdRpNQ^l^egVTw=o^+X|77sjDG+Gk|hD+AAU^$0000<2SrXqu0mjfpq(}< delta 762 zcmVPx#1ZP1_K>z@;j|==^1(OU37=IabMObuG zZ)S9NVRB^vaA9d~bS`dXbRaY?FfKAN@gQlH0007%Nkl#QYT%y|V0rZPf&_?LJh61#00p9$ zAO$E0D3KRndGIHpcv2M*Po~5Ij=%=mVEj{CV0k3qGd!izv8Z4I1%KIRz8%fE4mN0a}k0fK17OlIvbT0HZ4A6ALQ6FTYK$Er=CJk$eTJl!cm5+c=xe zimE0_z5@G-+1GG99>+Nqw?0XdE|D~LiKMYhB#m7nY3vIBwSNg8pI-xbdixW{=f7_y zcz^Kta91_9#Wm@_%v^~0m}a*G^m@Iju`TX@{VoaMBC$sA5264L1|6|Fxj3=xw}9;O zWAtPx0bF%kK<@Z&*yelQlid=))hIwu-_%I>aIE6*$!aQ4FMuEYF*G$20wmaz`B+_z z0!Xa#rbs?2QBw%OKeYw;eSdlh*GhzMKYkX#4!l2zP3X6vjzmIJ0@|Q>3)+0od$Kl& s2N7g|R|}9t0(^44hN&KCgFMf}J6rPfL>pM{x&QzG07*qoM6N<$g1^2}(EtDd From a25f90f4abbeb9d29bbf63bd30e783c188a55793 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 24 Jun 2020 17:25:19 +0200 Subject: [PATCH 14/47] Diagonal ChuteState - Chutes can now connect diagonally --- src/generated/resources/.cache/cache | 6 +- .../assets/create/blockstates/chute.json | 54 +++- .../assets/create/blockstates/fluid_pipe.json | 240 ++++++++--------- .../create/blockstates/radial_chassis.json | 48 ++-- .../java/com/simibubi/create/AllBlocks.java | 10 +- .../logistics/block/chute/ChuteBlock.java | 156 +++++++++++- .../logistics/block/chute/ChuteGenerator.java | 41 +++ .../logistics/block/chute/ChuteItem.java | 54 ++++ .../create/models/block/chute/block.json | 86 +++---- .../models/block/chute/block_diagonal.json | 152 +++++++++++ .../block/chute/block_diagonal_start.json | 156 ++++++++++++ .../block/chute/block_diagonal_straight.json | 82 ++++++ .../models/block/chute/block_windowed.json | 241 ++++++++++++++---- .../block/chute/old/block_diagonal_start.json | 138 ++++++++++ .../chute/old/block_diagonal_straight.json | 77 ++++++ .../block/chute/old/block_diagonal_t.json | 90 +++++++ .../models/block/chute/old/scene.bbmodel | 1 + .../create/models/block/chute/scene.bbmodel | 1 + .../assets/create/textures/block/chute.png | Bin 3744 -> 1621 bytes .../create/textures/block/chute_diagonal.png | Bin 0 -> 1399 bytes 20 files changed, 1370 insertions(+), 263 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteGenerator.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItem.java create mode 100644 src/main/resources/assets/create/models/block/chute/block_diagonal.json create mode 100644 src/main/resources/assets/create/models/block/chute/block_diagonal_start.json create mode 100644 src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json create mode 100644 src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json create mode 100644 src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json create mode 100644 src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json create mode 100644 src/main/resources/assets/create/models/block/chute/old/scene.bbmodel create mode 100644 src/main/resources/assets/create/models/block/chute/scene.bbmodel create mode 100644 src/main/resources/assets/create/textures/block/chute_diagonal.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 43b66d7d8..e07ce1129 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -31,7 +31,7 @@ b8dd6e505943e06706d0718ece620ab3cf943650 assets\create\blockstates\brass_casing. 2ca82a3c4bf7ba1a9cf3bb674e786d9b23b020a4 assets\create\blockstates\chiseled_limestone.json cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scoria.json 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json -e1391d1ae451b50af13a08cfe572b79ac9e3514d assets\create\blockstates\chute.json +99def0a786714a337e2b1b17db844e4d1aee6234 assets\create\blockstates\chute.json 9ca4713c8efed79da6ab11354a25e5f8fbd6341c assets\create\blockstates\chute_port.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json @@ -118,7 +118,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets\create\blockstates\fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets\create\blockstates\fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weathered_limestone_bricks_stairs.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets\create\blockstates\fancy_weathered_limestone_bricks_wall.json -1f290b70c7cdd53e336081ee5707fd25d08c0e2c assets\create\blockstates\fluid_pipe.json +4cbd66ed3da77d1caad6ef4e657a86b1b4017a39 assets\create\blockstates\fluid_pipe.json 9d0e78a4d6d0ccac37c06d0f5810a800a04844b2 assets\create\blockstates\fluid_tank.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json @@ -282,7 +282,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -5c1df061eb5efe49beee7219e113206fc31a4733 assets\create\blockstates\radial_chassis.json +6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets\create\blockstates\radial_chassis.json 35cc2bb35c9e2809f69d1fb70e854f69e0f9bbe6 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json diff --git a/src/generated/resources/assets/create/blockstates/chute.json b/src/generated/resources/assets/create/blockstates/chute.json index 55bf812e4..b976d52b6 100644 --- a/src/generated/resources/assets/create/blockstates/chute.json +++ b/src/generated/resources/assets/create/blockstates/chute.json @@ -1,10 +1,58 @@ { "variants": { - "window=false": { + "facing=down,shape=start": { + "model": "create:block/chute/block_windowed" + }, + "facing=north,shape=start": { + "model": "create:block/chute/block_diagonal_start", + "y": 180 + }, + "facing=south,shape=start": { + "model": "create:block/chute/block_diagonal_start" + }, + "facing=west,shape=start": { + "model": "create:block/chute/block_diagonal_start", + "y": 90 + }, + "facing=east,shape=start": { + "model": "create:block/chute/block_diagonal_start", + "y": 270 + }, + "facing=down,shape=window_straight": { + "model": "create:block/chute/block_windowed" + }, + "facing=north,shape=window_straight": { + "model": "create:block/chute/block_diagonal_straight", + "y": 180 + }, + "facing=south,shape=window_straight": { + "model": "create:block/chute/block_diagonal_straight" + }, + "facing=west,shape=window_straight": { + "model": "create:block/chute/block_diagonal_straight", + "y": 90 + }, + "facing=east,shape=window_straight": { + "model": "create:block/chute/block_diagonal_straight", + "y": 270 + }, + "facing=down,shape=normal": { "model": "create:block/chute/block" }, - "window=true": { - "model": "create:block/chute/block_windowed" + "facing=north,shape=normal": { + "model": "create:block/chute/block_diagonal", + "y": 180 + }, + "facing=south,shape=normal": { + "model": "create:block/chute/block_diagonal" + }, + "facing=west,shape=normal": { + "model": "create:block/chute/block_diagonal", + "y": 90 + }, + "facing=east,shape=normal": { + "model": "create:block/chute/block_diagonal", + "y": 270 } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index ef9384bb4..96f2f6808 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -60,10 +60,10 @@ }, { "when": { - "south": "false", + "up": "true", "north": "true", - "down": "false", - "up": "true" + "south": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/lu_x" @@ -71,10 +71,10 @@ }, { "when": { - "south": "true", + "up": "true", "north": "false", - "down": "false", - "up": "true" + "south": "true", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/ru_x" @@ -82,10 +82,10 @@ }, { "when": { - "south": "false", + "up": "false", "north": "true", - "down": "true", - "up": "false" + "south": "false", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/ld_x" @@ -93,10 +93,10 @@ }, { "when": { - "south": "true", + "up": "false", "north": "false", - "down": "true", - "up": "false" + "south": "true", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/rd_x" @@ -104,10 +104,10 @@ }, { "when": { - "south": "false", + "up": "true", "north": "false", - "down": "true", - "up": "true" + "south": "false", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -115,10 +115,10 @@ }, { "when": { - "south": "false", + "up": "true", "north": "false", - "down": "false", - "up": "true" + "south": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -126,10 +126,10 @@ }, { "when": { - "south": "false", + "up": "false", "north": "false", - "down": "true", - "up": "false" + "south": "false", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -137,32 +137,10 @@ }, { "when": { - "south": "true", + "up": "false", "north": "true", - "down": "false", - "up": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_x" - } - }, - { - "when": { - "south": "false", - "north": "true", - "down": "false", - "up": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_x" - } - }, - { - "when": { "south": "true", - "north": "false", - "down": "false", - "up": "false" + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -170,10 +148,32 @@ }, { "when": { + "up": "false", + "north": "true", "south": "false", + "down": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/lr_x" + } + }, + { + "when": { + "up": "false", "north": "false", - "down": "false", - "up": "false" + "south": "true", + "down": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/lr_x" + } + }, + { + "when": { + "up": "false", + "north": "false", + "south": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/none_x" @@ -181,10 +181,10 @@ }, { "when": { - "south": "true", "north": "false", - "east": "false", - "west": "true" + "south": "true", + "west": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lu_y" @@ -192,10 +192,10 @@ }, { "when": { - "south": "true", "north": "false", - "east": "true", - "west": "false" + "south": "true", + "west": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_y" @@ -203,10 +203,10 @@ }, { "when": { - "south": "false", "north": "true", - "east": "false", - "west": "true" + "south": "false", + "west": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_y" @@ -214,10 +214,10 @@ }, { "when": { - "south": "false", "north": "true", - "east": "true", - "west": "false" + "south": "false", + "west": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/rd_y" @@ -225,21 +225,21 @@ }, { "when": { - "south": "true", "north": "true", - "east": "false", - "west": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_y" - } - }, - { - "when": { "south": "true", - "north": "false", - "east": "false", - "west": "false" + "west": "false", + "east": "false" + }, + "apply": { + "model": "create:block/fluid_pipe/ud_y" + } + }, + { + "when": { + "north": "false", + "south": "true", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -247,10 +247,10 @@ }, { "when": { - "south": "false", "north": "true", - "east": "false", - "west": "false" + "south": "false", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -258,10 +258,10 @@ }, { "when": { - "south": "false", "north": "false", - "east": "true", - "west": "true" + "south": "false", + "west": "true", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -269,10 +269,10 @@ }, { "when": { - "south": "false", "north": "false", - "east": "false", - "west": "true" + "south": "false", + "west": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -280,10 +280,10 @@ }, { "when": { - "south": "false", "north": "false", - "east": "true", - "west": "false" + "south": "false", + "west": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -291,10 +291,10 @@ }, { "when": { - "south": "false", "north": "false", - "east": "false", - "west": "false" + "south": "false", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/none_y" @@ -302,10 +302,10 @@ }, { "when": { - "down": "false", - "east": "true", + "up": "true", "west": "false", - "up": "true" + "down": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_z" @@ -313,10 +313,10 @@ }, { "when": { - "down": "false", - "east": "false", + "up": "true", "west": "true", - "up": "true" + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ru_z" @@ -324,10 +324,10 @@ }, { "when": { - "down": "true", - "east": "true", + "up": "false", "west": "false", - "up": "false" + "down": "true", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/ld_z" @@ -335,10 +335,10 @@ }, { "when": { - "down": "true", - "east": "false", + "up": "false", "west": "true", - "up": "false" + "down": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_z" @@ -346,10 +346,10 @@ }, { "when": { + "up": "true", + "west": "false", "down": "true", - "east": "false", - "west": "false", - "up": "true" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -357,10 +357,10 @@ }, { "when": { + "up": "true", + "west": "false", "down": "false", - "east": "false", - "west": "false", - "up": "true" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -368,10 +368,10 @@ }, { "when": { + "up": "false", + "west": "false", "down": "true", - "east": "false", - "west": "false", - "up": "false" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -379,10 +379,10 @@ }, { "when": { - "down": "false", - "east": "true", + "up": "false", "west": "true", - "up": "false" + "down": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -390,10 +390,10 @@ }, { "when": { - "down": "false", - "east": "true", + "up": "false", "west": "false", - "up": "false" + "down": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -401,10 +401,10 @@ }, { "when": { - "down": "false", - "east": "false", + "up": "false", "west": "true", - "up": "false" + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -412,10 +412,10 @@ }, { "when": { - "down": "false", - "east": "false", + "up": "false", "west": "false", - "up": "false" + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/none_z" diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 7a1df3438..f97d8c8bc 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -29,8 +29,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "x" + "axis": "x", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -39,8 +39,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "y" + "axis": "y", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky" @@ -48,8 +48,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "z" + "axis": "z", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -59,8 +59,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "x" + "axis": "x", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -69,8 +69,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "y" + "axis": "y", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_y" @@ -78,8 +78,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "z" + "axis": "z", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -207,8 +207,8 @@ }, { "when": { - "axis": "x", - "sticky_east": "true" + "sticky_east": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -217,8 +217,8 @@ }, { "when": { - "axis": "y", - "sticky_east": "true" + "sticky_east": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -227,8 +227,8 @@ }, { "when": { - "axis": "z", - "sticky_east": "true" + "sticky_east": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky" @@ -236,8 +236,8 @@ }, { "when": { - "axis": "x", - "sticky_east": "false" + "sticky_east": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -246,8 +246,8 @@ }, { "when": { - "axis": "y", - "sticky_east": "false" + "sticky_east": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -256,8 +256,8 @@ }, { "when": { - "axis": "z", - "sticky_east": "false" + "sticky_east": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z" diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index f1afcd90e..784f1cf69 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -76,6 +76,8 @@ import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; +import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; +import com.simibubi.create.content.logistics.block.chute.ChuteItem; import com.simibubi.create.content.logistics.block.chute.ChutePortBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; @@ -713,12 +715,8 @@ public class AllBlocks { public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) .initialProperties(SharedProperties::softMetal) .addLayer(() -> RenderType::getCutoutMipped) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(s -> ConfiguredModel.builder() - .modelFile(s.get(ChuteBlock.WINDOW) ? AssetLookup.partialBaseModel(c, p, "windowed") - : AssetLookup.partialBaseModel(c, p)) - .build())) - .item() + .blockstate(new ChuteGenerator()::generate) + .item(ChuteItem::new) .transform(customItemModel("_", "block")) .register(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java index 60f9e0e18..06c931ceb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java @@ -1,46 +1,178 @@ package com.simibubi.create.content.logistics.block.chute; +import java.util.HashMap; +import java.util.Map; + import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.EnumProperty; +import net.minecraft.state.IProperty; import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; public class ChuteBlock extends Block implements IWrenchable { + public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); + public static final DirectionProperty FACING = BlockStateProperties.FACING_EXCEPT_UP; + + public enum Shape implements IStringSerializable { + START(), WINDOW_STRAIGHT(), NORMAL(); + + @Override + public String getName() { + return Lang.asId(name()); + } + } - public static final BooleanProperty WINDOW = BooleanProperty.create("window"); - public ChuteBlock(Properties p_i48440_1_) { super(p_i48440_1_); - setDefaultState(getDefaultState().with(WINDOW, false)); + setDefaultState(getDefaultState().with(SHAPE, Shape.NORMAL) + .with(FACING, Direction.DOWN)); } - + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) { + if (p_220082_5_) + return; + + updateDiagonalNeighbour(state, world, pos); + } + + protected void updateDiagonalNeighbour(BlockState state, World world, BlockPos pos) { + Direction facing = state.get(FACING); + BlockPos toUpdate = pos.down(); + if (facing.getAxis() + .isHorizontal()) + toUpdate = toUpdate.offset(facing.getOpposite()); + + BlockState stateToUpdate = world.getBlockState(toUpdate); + BlockState updated = updateDiagonalState(stateToUpdate, world.getBlockState(toUpdate.up()), world, toUpdate); + if (stateToUpdate != updated && !world.isRemote) + world.setBlockState(toUpdate, updated); + } + + @Override + public void onReplaced(BlockState state, World world, BlockPos pos, BlockState p_196243_4_, boolean p_196243_5_) { + boolean differentBlock = state.getBlock() != p_196243_4_.getBlock(); + if (state.hasTileEntity() && (differentBlock || !p_196243_4_.hasTileEntity())) { + world.removeTileEntity(pos); + } + if (p_196243_5_ || !differentBlock) + return; + + updateDiagonalNeighbour(state, world, pos); + + for (Direction direction : Iterate.horizontalDirections) { + BlockPos toUpdate = pos.up() + .offset(direction); + BlockState stateToUpdate = world.getBlockState(toUpdate); + BlockState updated = + updateDiagonalState(stateToUpdate, world.getBlockState(toUpdate.up()), world, toUpdate); + if (stateToUpdate != updated && !world.isRemote) + world.setBlockState(toUpdate, updated); + } + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState above, IWorld world, + BlockPos pos, BlockPos p_196271_6_) { + if (direction != Direction.UP) + return state; + return updateDiagonalState(state, above, world, pos); + } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + BlockState above = world.getBlockState(pos.up()); + return !(above.getBlock() instanceof ChuteBlock) || above.get(FACING) == Direction.DOWN; + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + BlockState state = super.getStateForPlacement(ctx); + Direction face = ctx.getFace(); + if (face.getAxis() + .isHorizontal() && !ctx.shouldCancelInteraction()) { + World world = ctx.getWorld(); + BlockPos pos = ctx.getPos(); + return updateDiagonalState(state.with(FACING, face), world.getBlockState(pos.up()), world, pos); + } + return state; + } + + public static BlockState updateDiagonalState(BlockState state, BlockState above, IBlockReader world, BlockPos pos) { + if (!(state.getBlock() instanceof ChuteBlock)) + return state; + + Map connections = new HashMap<>(); + int amtConnections = 0; + Direction facing = state.get(FACING); + + if (facing == Direction.DOWN) + return state; + BlockState target = world.getBlockState(pos.down() + .offset(facing.getOpposite())); + if (!(target.getBlock() instanceof ChuteBlock)) + return state.with(FACING, Direction.DOWN) + .with(SHAPE, Shape.NORMAL); + + for (Direction direction : Iterate.horizontalDirections) { + BlockState diagonalInputChute = world.getBlockState(pos.up() + .offset(direction)); + boolean value = + diagonalInputChute.getBlock() instanceof ChuteBlock && diagonalInputChute.get(FACING) == direction; + connections.put(direction, value); + if (value) + amtConnections++; + } + + if (amtConnections == 0) + return state.with(SHAPE, Shape.START); + if (connections.get(Direction.NORTH) && connections.get(Direction.SOUTH)) + return state.with(SHAPE, Shape.START); + if (connections.get(Direction.EAST) && connections.get(Direction.WEST)) + return state.with(SHAPE, Shape.START); + if (amtConnections == 1 && connections.get(facing) + && !(above.getBlock() instanceof ChuteBlock && above.get(FACING) == Direction.DOWN)) + return state.with(SHAPE, Shape.WINDOW_STRAIGHT); + return state.with(SHAPE, Shape.NORMAL); + } + @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (!context.getWorld().isRemote) - context.getWorld().setBlockState(context.getPos(), state.cycle(WINDOW)); + if (!context.getWorld().isRemote && state.get(FACING) == Direction.DOWN) + context.getWorld() + .setBlockState(context.getPos(), state.with(SHAPE, + state.get(SHAPE) == Shape.WINDOW_STRAIGHT ? Shape.NORMAL : Shape.WINDOW_STRAIGHT)); return ActionResultType.SUCCESS; } - + @Override public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { return AllShapes.CHUTE; } - + @Override protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(WINDOW)); + super.fillStateContainer(p_206840_1_.add(SHAPE, FACING)); } - - } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteGenerator.java new file mode 100644 index 000000000..d79d9c8b0 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteGenerator.java @@ -0,0 +1,41 @@ +package com.simibubi.create.content.logistics.block.chute; + +import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraftforge.client.model.generators.ModelFile; + +public class ChuteGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return horizontalAngle(state.get(ChuteBlock.FACING)); + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + boolean horizontal = state.get(ChuteBlock.FACING) != Direction.DOWN; + ChuteBlock.Shape shape = state.get(ChuteBlock.SHAPE); + + if (!horizontal) + return shape == Shape.NORMAL ? AssetLookup.partialBaseModel(ctx, prov) + : AssetLookup.partialBaseModel(ctx, prov, "windowed"); + + return shape == Shape.NORMAL ? AssetLookup.partialBaseModel(ctx, prov, "diagonal") + : shape == Shape.START ? AssetLookup.partialBaseModel(ctx, prov, "diagonal", "start") + : AssetLookup.partialBaseModel(ctx, prov, "diagonal", "straight"); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItem.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItem.java new file mode 100644 index 000000000..265929820 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItem.java @@ -0,0 +1,54 @@ +package com.simibubi.create.content.logistics.block.chute; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItem; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class ChuteItem extends BlockItem { + + public ChuteItem(Block p_i48527_1_, Properties p_i48527_2_) { + super(p_i48527_1_, p_i48527_2_); + } + + @Override + public ActionResultType tryPlace(BlockItemUseContext context) { + Direction face = context.getFace(); + BlockPos placedOnPos = context.getPos() + .offset(face.getOpposite()); + World world = context.getWorld(); + BlockState placedOnState = world.getBlockState(placedOnPos); + + if (!(placedOnState.getBlock() instanceof ChuteBlock) || context.shouldCancelInteraction()) + return super.tryPlace(context); + if (face.getAxis() + .isVertical()) + return super.tryPlace(context); + + BlockPos correctPos = context.getPos() + .up(); + + BlockState blockState = world.getBlockState(correctPos); + if (blockState.getMaterial() + .isReplaceable()) + context = BlockItemUseContext.func_221536_a(context, correctPos, face); + else { + if (blockState.getBlock() instanceof ChuteBlock && blockState.get(ChuteBlock.FACING) == Direction.DOWN) { + if (!world.isRemote) { + world.setBlockState(correctPos, + ChuteBlock.updateDiagonalState(blockState.with(ChuteBlock.FACING, face), + world.getBlockState(correctPos.up()), world, correctPos)); + return ActionResultType.SUCCESS; + } + } + return ActionResultType.FAIL; + } + + return super.tryPlace(context); + } + +} diff --git a/src/main/resources/assets/create/models/block/chute/block.json b/src/main/resources/assets/create/models/block/chute/block.json index 4fa5dae2b..69281e6fe 100644 --- a/src/main/resources/assets/create/models/block/chute/block.json +++ b/src/main/resources/assets/create/models/block/chute/block.json @@ -3,7 +3,7 @@ "parent": "block/block", "textures": { "13": "create:block/chute", - "particle": "create:block/zinc_block" + "particle": "block/hopper_outside" }, "elements": [ { @@ -11,38 +11,21 @@ "to": [13, 16, 3], "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, "faces": { - "north": {"uv": [10, 0, 15, 4], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [10, 0, 15, 4], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, "down": {"uv": [1, 6, 6, 7], "texture": "#13"} } }, - { - "from": [13, 8, 1], - "to": [15, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [9, 0, 10, 4], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [15, 0, 16, 4], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "up": {"uv": [6, 0, 7, 7], "texture": "#13"}, - "down": {"uv": [6, 0, 7, 7], "texture": "#13"} - } - }, { "from": [3, 8, 13], "to": [13, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, + "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 19]}, "faces": { - "north": {"uv": [10, 0, 15, 4], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [10, 0, 15, 4], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, - "down": {"uv": [1, 0, 6, 1], "texture": "#13"} + "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "rotation": 180, "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} } }, { @@ -50,24 +33,37 @@ "to": [3, 16, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, "faces": { - "north": {"uv": [15, 0, 16, 4], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [9, 0, 10, 4], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "north": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "south": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, "down": {"uv": [0, 0, 1, 7], "texture": "#13"} } }, + { + "from": [13, 8, 1], + "to": [15, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, + "faces": { + "north": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "south": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"} + } + }, { "from": [13, 0, 2], "to": [14, 8, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, "faces": { - "north": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, - "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "south": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, - "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + "north": {"uv": [9, 4, 9.5, 8], "texture": "#13"}, + "east": {"uv": [9, 4, 15, 8], "texture": "#13"}, + "south": {"uv": [14.5, 4, 15, 8], "texture": "#13"}, + "west": {"uv": [9, 4, 15, 8], "texture": "#13"}, + "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} } }, { @@ -75,11 +71,11 @@ "to": [3, 8, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, "faces": { - "north": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, - "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "south": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, - "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + "north": {"uv": [14.5, 4, 15, 8], "texture": "#13"}, + "east": {"uv": [9, 4, 15, 8], "texture": "#13"}, + "south": {"uv": [9, 4, 9.5, 8], "texture": "#13"}, + "west": {"uv": [9, 4, 15, 8], "texture": "#13"}, + "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} } }, { @@ -87,9 +83,9 @@ "to": [13, 8, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, "faces": { - "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + "north": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, + "south": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, + "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} } }, { @@ -97,9 +93,9 @@ "to": [13, 8, 3], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, "faces": { - "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + "north": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, + "south": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, + "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} } } ], diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal.json b/src/main/resources/assets/create/models/block/chute/block_diagonal.json new file mode 100644 index 000000000..1e5ca301b --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/block_diagonal.json @@ -0,0 +1,152 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "2": "create:block/chute_diagonal", + "13": "create:block/chute", + "particle": "block/hopper_outside" + }, + "elements": [ + { + "from": [2, 8, 2], + "to": [14, 16, 14], + "faces": { + "north": {"uv": [9, 4, 15, 8], "rotation": 180, "texture": "#13"}, + "east": {"uv": [9, 4, 15, 8], "rotation": 180, "texture": "#13"}, + "south": {"uv": [9, 4, 15, 8], "rotation": 180, "texture": "#13"}, + "west": {"uv": [9, 4, 15, 8], "rotation": 180, "texture": "#13"}, + "up": {"uv": [5, 10, 11, 16], "texture": "#2"}, + "down": {"uv": [9, 11, 15, 15], "texture": "#13"} + } + }, + { + "from": [2, 5.5, 2], + "to": [14, 8, 14], + "faces": { + "north": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, + "east": {"uv": [14.25, 5, 15.5, 11], "rotation": 270, "texture": "#2"}, + "south": {"uv": [14.25, 5, 15.5, 11], "rotation": 270, "texture": "#2"}, + "west": {"uv": [14.25, 5, 15.5, 11], "rotation": 270, "texture": "#2"}, + "up": {"uv": [9, 9.5, 15, 15.5], "texture": "#13"}, + "down": {"uv": [9, 11, 15, 15], "texture": "#13"} + } + }, + { + "from": [1.9, -12, 7.9], + "to": [14.1, 10.666, 14.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, + "east": {"uv": [13, 0, 16, 11], "texture": "#2"}, + "south": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, + "west": {"uv": [13, 0, 16, 11], "rotation": 180, "texture": "#2"}, + "up": {"uv": [5, 10, 11, 13], "rotation": 180, "texture": "#2"} + } + }, + { + "from": [3, 13, 3], + "to": [13, 14, 13], + "faces": { + "up": {"uv": [11, 11, 16, 16], "rotation": 180, "texture": "#2"} + } + }, + { + "from": [1.1, -12, 1.9], + "to": [14.9, 10.666, 8.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 3, 11, 10], "rotation": 90, "texture": "#2"}, + "east": {"uv": [0, 0, 11, 3], "rotation": 270, "texture": "#2"}, + "south": {"uv": [0, 3, 11, 10], "rotation": 90, "texture": "#2"}, + "west": {"uv": [0, 0, 11, 3], "rotation": 90, "texture": "#2"}, + "up": {"uv": [8.5, 0, 15.5, 3], "rotation": 180, "texture": "#13"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 24, -24], + "children": [0] + }, + { + "name": "alt_block_diagonal_start", + "origin": [8, 8, 8], + "children": [ + { + "name": "group", + "origin": [8, 56, -56], + "children": [1] + }, + { + "name": "alt_block_diagonal_straight", + "origin": [8, 8, 8], + "children": [ + { + "name": "group", + "origin": [8, 8, -8], + "children": [2] + }, + { + "name": "group", + "origin": [8, 8, -8], + "children": [] + } + ] + }, 3] + }, + { + "name": "alt_block_diagonal_straight", + "origin": [8, 8, 8], + "children": [ + { + "name": "group", + "origin": [8, 8, -8], + "children": [4] + }, + { + "name": "group", + "origin": [8, 8, -8], + "children": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json b/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json new file mode 100644 index 000000000..bfd61b68e --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json @@ -0,0 +1,156 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "2": "create:block/chute_diagonal", + "13": "create:block/chute", + "particle": "block/hopper_outside" + }, + "elements": [ + { + "from": [3, 8, 13], + "to": [13, 16, 15], + "faces": { + "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "rotation": 180, "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [3, 8, 1], + "to": [13, 16, 3], + "faces": { + "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "texture": "#13"} + } + }, + { + "from": [13, 8, 1], + "to": [15, 16, 15], + "faces": { + "north": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "south": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [1, 8, 1], + "to": [3, 16, 15], + "faces": { + "north": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "south": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "texture": "#13"} + } + }, + { + "from": [2, 5.5, 2], + "to": [14, 8, 14], + "faces": { + "north": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, + "east": {"uv": [14.25, 5, 15.5, 11], "rotation": 270, "texture": "#2"}, + "south": {"uv": [14.25, 5, 15.5, 11], "rotation": 270, "texture": "#2"}, + "west": {"uv": [14.25, 5, 15.5, 11], "rotation": 270, "texture": "#2"}, + "up": {"uv": [9, 9.5, 15, 15.5], "texture": "#13"}, + "down": {"uv": [9, 11, 15, 15], "texture": "#13"} + } + }, + { + "from": [1.9, -12, 7.9], + "to": [14.1, 10.666, 14.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "east": {"uv": [13, 0, 16, 11], "texture": "#2"}, + "south": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, + "west": {"uv": [13, 0, 16, 11], "rotation": 180, "texture": "#2"}, + "up": {"uv": [5, 10, 11, 13], "rotation": 180, "texture": "#2"} + } + }, + { + "from": [1.1, -12, 1.9], + "to": [14.9, 8.666, 8.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 11, 10], "rotation": 90, "texture": "#2"}, + "east": {"uv": [1, 0, 11, 3], "rotation": 270, "texture": "#2"}, + "south": {"uv": [1, 3, 11, 10], "rotation": 90, "texture": "#2"}, + "west": {"uv": [1, 0, 11, 3], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 13, 3], + "to": [13, 14, 13], + "faces": { + "up": {"uv": [11, 11, 16, 16], "rotation": 180, "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 56, -56], + "children": [0, 1, 2, 3, 4] + }, + { + "name": "alt_block_diagonal_straight", + "origin": [8, 8, 8], + "children": [ + { + "name": "group", + "origin": [8, 8, -8], + "children": [5, 6] + }, + { + "name": "group", + "origin": [8, 8, -8], + "children": [] + } + ] + }, 7] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json b/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json new file mode 100644 index 000000000..98410e8a5 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json @@ -0,0 +1,82 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "2": "create:block/chute_diagonal", + "13": "create:block/chute", + "particle": "block/hopper_outside" + }, + "elements": [ + { + "from": [1.9, -12, 7.9], + "to": [14.1, 10.666, 14.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "east": {"uv": [13, 0, 16, 11], "texture": "#2"}, + "south": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, + "west": {"uv": [13, 0, 16, 11], "rotation": 180, "texture": "#2"} + } + }, + { + "from": [1.1, -12, 1.9], + "to": [14.9, 10.666, 8.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 3, 11, 10], "rotation": 90, "texture": "#2"}, + "east": {"uv": [0, 0, 11, 3], "rotation": 270, "texture": "#2"}, + "south": {"uv": [0, 3, 11, 10], "rotation": 90, "texture": "#2"}, + "west": {"uv": [0, 0, 11, 3], "rotation": 90, "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 8, -8], + "children": [0, 1] + }, + { + "name": "group", + "origin": [8, 8, -8], + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_windowed.json b/src/main/resources/assets/create/models/block/chute/block_windowed.json index 801008eb3..e30a8fa32 100644 --- a/src/main/resources/assets/create/models/block/chute/block_windowed.json +++ b/src/main/resources/assets/create/models/block/chute/block_windowed.json @@ -3,59 +3,155 @@ "parent": "block/block", "textures": { "13": "create:block/chute", - "particle": "create:block/zinc_block" + "particle": "block/hopper_outside" }, "elements": [ { - "from": [3, 8, 1], - "to": [13, 16, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, - "faces": { - "north": {"uv": [1, 12, 6, 16], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [1, 12, 6, 16], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "texture": "#13"} - } - }, - { - "from": [13, 8, 1], + "from": [13, 13, 1], "to": [15, 16, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, "faces": { - "north": {"uv": [9, 0, 10, 4], "texture": "#13"}, - "east": {"uv": [0, 12, 7, 16], "texture": "#13"}, - "south": {"uv": [15, 0, 16, 4], "texture": "#13"}, - "west": {"uv": [0, 12, 7, 16], "texture": "#13"}, + "north": {"uv": [8.5, 0, 9.5, 1.5], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, + "south": {"uv": [14.5, 0, 15.5, 1.5], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, "up": {"uv": [6, 0, 7, 7], "texture": "#13"}, "down": {"uv": [6, 0, 7, 7], "texture": "#13"} } }, { - "from": [3, 8, 13], + "from": [3, 13, 13], "to": [13, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "faces": { + "north": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, + "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "texture": "#13"} + } + }, + { + "from": [12, 8, 13], + "to": [13, 13, 15], "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, "faces": { - "north": {"uv": [1, 12, 6, 16], "texture": "#13"}, + "north": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [1, 12, 6, 16], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "south": {"uv": [14, 1.5, 14.5, 4], "texture": "#13"}, + "west": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, + "down": {"uv": [5.5, 0, 6, 1], "texture": "#13"} + } + }, + { + "from": [12, 8, 1], + "to": [13, 13, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 7]}, + "faces": { + "north": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, + "east": {"uv": [16, 0, 9, 4], "texture": "#13"}, + "south": {"uv": [10, 1.5, 9.5, 4], "texture": "#13"}, + "west": {"uv": [14, 1.5, 13, 4], "texture": "#13"}, + "down": {"uv": [5.5, 1, 6, 0], "texture": "#13"} + } + }, + { + "from": [13, 8, 12], + "to": [15, 13, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, + "faces": { + "north": {"uv": [10, 1.5, 11, 4], "texture": "#13"}, + "east": {"uv": [8.5, 1.5, 10, 4], "texture": "#13"}, + "south": {"uv": [14.5, 1.5, 15.5, 4], "texture": "#13"}, + "west": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, - "down": {"uv": [1, 0, 6, 1], "texture": "#13"} + "down": {"uv": [6, 0, 7, 1.5], "texture": "#13"} + } + }, + { + "from": [13, 8, 1], + "to": [15, 13, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 7]}, + "faces": { + "north": {"uv": [8.5, 1.5, 9.5, 4], "texture": "#13"}, + "east": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, + "south": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, + "west": {"uv": [15.5, 1.5, 14, 4], "texture": "#13"}, + "up": {"uv": [1, 7, 6, 6], "texture": "#13"}, + "down": {"uv": [6, 1.5, 7, 0], "texture": "#13"} + } + }, + { + "from": [1, 13, 1], + "to": [3, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, + "faces": { + "north": {"uv": [14.5, 0, 15.5, 1.5], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, + "south": {"uv": [8.5, 0, 9.5, 1.5], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, + "up": {"uv": [6, 0, 7, 7], "rotation": 180, "texture": "#13"}, + "down": {"uv": [6, 0, 7, 7], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [3, 13, 1], + "to": [13, 16, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, + "faces": { + "north": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, + "up": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [3, 8, 1], + "to": [4, 13, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 7]}, + "faces": { + "north": {"uv": [14, 1.5, 14.5, 4], "texture": "#13"}, + "east": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, + "south": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, + "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, + "down": {"uv": [5.5, 0, 6, 1], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [3, 8, 13], + "to": [4, 13, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 9]}, + "faces": { + "north": {"uv": [10, 1.5, 9.5, 4], "texture": "#13"}, + "east": {"uv": [14, 1.5, 13, 4], "texture": "#13"}, + "south": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, + "west": {"uv": [16, 0, 9, 4], "texture": "#13"}, + "down": {"uv": [5.5, 1, 6, 0], "rotation": 180, "texture": "#13"} } }, { "from": [1, 8, 1], - "to": [3, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "to": [3, 13, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 7]}, "faces": { - "north": {"uv": [15, 0, 16, 4], "texture": "#13"}, - "east": {"uv": [0, 12, 7, 16], "texture": "#13"}, - "south": {"uv": [9, 0, 10, 4], "texture": "#13"}, - "west": {"uv": [0, 12, 7, 16], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, - "down": {"uv": [0, 0, 1, 7], "texture": "#13"} + "north": {"uv": [14.5, 1.5, 15.5, 4], "texture": "#13"}, + "east": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, + "south": {"uv": [10, 1.5, 11, 4], "texture": "#13"}, + "west": {"uv": [8.5, 1.5, 10, 4], "texture": "#13"}, + "up": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"}, + "down": {"uv": [6, 0, 7, 1.5], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [1, 8, 12], + "to": [3, 13, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 9]}, + "faces": { + "north": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, + "east": {"uv": [15.5, 1.5, 14, 4], "texture": "#13"}, + "south": {"uv": [8.5, 1.5, 9.5, 4], "texture": "#13"}, + "west": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, + "up": {"uv": [1, 7, 6, 6], "rotation": 180, "texture": "#13"}, + "down": {"uv": [6, 1.5, 7, 0], "rotation": 180, "texture": "#13"} } }, { @@ -63,11 +159,11 @@ "to": [14, 8, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, "faces": { - "north": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, - "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "south": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, - "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + "north": {"uv": [0, 9.5, 0.5, 13.5], "texture": "#13"}, + "east": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, + "south": {"uv": [5.5, 9.5, 6, 13.5], "texture": "#13"}, + "west": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, + "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} } }, { @@ -75,11 +171,11 @@ "to": [3, 8, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, "faces": { - "north": {"uv": [15.5, 4, 16, 8], "texture": "#13"}, - "east": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "south": {"uv": [10, 4, 10.5, 8], "texture": "#13"}, - "west": {"uv": [10, 4, 16, 8], "texture": "#13"}, - "down": {"uv": [10, 7.5, 16, 8], "rotation": 90, "texture": "#13"} + "north": {"uv": [5.5, 9.5, 6, 13.5], "texture": "#13"}, + "east": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, + "south": {"uv": [0, 9.5, 0.5, 13.5], "texture": "#13"}, + "west": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, + "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} } }, { @@ -87,9 +183,9 @@ "to": [13, 8, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, "faces": { - "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + "north": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, + "south": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, + "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} } }, { @@ -97,9 +193,49 @@ "to": [13, 8, 3], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, "faces": { - "north": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "south": {"uv": [10.5, 4, 15.5, 8], "texture": "#13"}, - "down": {"uv": [10.5, 7.5, 15.5, 8], "texture": "#13"} + "north": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, + "south": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, + "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} + } + }, + { + "from": [2, 8, 2], + "to": [14, 13, 3], + "faces": { + "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} + } + }, + { + "from": [13, 8, 2], + "to": [14, 13, 14], + "faces": { + "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} + } + }, + { + "from": [2, 8, 13], + "to": [14, 13, 14], + "faces": { + "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} + } + }, + { + "from": [2, 8, 2], + "to": [3, 13, 14], + "faces": { + "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, + "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} } } ], @@ -107,12 +243,17 @@ { "name": "ChuteTop", "origin": [9, 16, -7], - "children": [0, 1, 2, 3] + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] }, { "name": "ChuteBase", "origin": [8, 8, -7], - "children": [4, 5, 6, 7] + "children": [12, 13, 14, 15] + }, + { + "name": "windows", + "origin": [8, 8, 8], + "children": [16, 17, 18, 19] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json new file mode 100644 index 000000000..b8a0c4652 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json @@ -0,0 +1,138 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "13": "create:block/chute", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "from": [3, 8, 1], + "to": [13, 16, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, + "faces": { + "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "texture": "#13"} + } + }, + { + "from": [3, 8, 13], + "to": [13, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 19]}, + "faces": { + "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, + "up": {"uv": [1, 0, 6, 1], "rotation": 180, "texture": "#13"}, + "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [1, 8, 1], + "to": [3, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, + "faces": { + "north": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "south": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "texture": "#13"} + } + }, + { + "from": [13, 8, 1], + "to": [15, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, + "faces": { + "north": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, + "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "south": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, + "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, + "up": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"}, + "down": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [2, 5.7, 2], + "to": [14, 8.7, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 56]}, + "faces": { + "north": {"uv": [7.5, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "east": {"uv": [7.5, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "south": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, + "west": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"}, + "up": {"uv": [9, 9.5, 15, 15.5], "rotation": 180, "texture": "#13"}, + "down": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [2.1, 4, 2.1], + "to": [13.9, 10.666, 13.9], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "east": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [1.9, -12, 1.9], + "to": [14.1, 4, 14.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "east": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "south": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "west": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "up": {"uv": [9, 9, 15, 15], "texture": "#13"}, + "down": {"uv": [9, 9, 15, 15], "texture": "#13"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 56, -56], + "children": [0, 1, 2, 3, 4, 5, 6] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json new file mode 100644 index 000000000..d721e031a --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json @@ -0,0 +1,77 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "13": "create:block/chute", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "from": [1.9, 4, 1.9], + "to": [14.1, 10.666, 14.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "east": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "south": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [1.9, -12, 1.9], + "to": [14.1, 4, 14.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "east": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "south": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "west": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "down": {"uv": [9, 8, 15, 16], "texture": "#13"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 8, -8], + "children": [0, 1] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json new file mode 100644 index 000000000..f62998689 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json @@ -0,0 +1,90 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "13": "create:block/chute", + "particle": "create:block/brass_block" + }, + "elements": [ + { + "from": [2, 8, 2], + "to": [14, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 40]}, + "faces": { + "north": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"}, + "east": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, + "south": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, + "west": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"}, + "up": {"uv": [9, 9, 15, 15], "rotation": 180, "texture": "#13"}, + "down": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"} + } + }, + { + "from": [1.9, 4, 1.9], + "to": [14.1, 10.666, 14.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "east": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "south": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, + "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"} + } + }, + { + "from": [1.9, -12, 1.9], + "to": [14.1, 4, 14.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "east": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "south": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "west": {"uv": [9, 8, 15, 16], "texture": "#13"}, + "down": {"uv": [9, 9, 15, 15], "texture": "#13"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 24, -24], + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/scene.bbmodel b/src/main/resources/assets/create/models/block/chute/old/scene.bbmodel new file mode 100644 index 000000000..363f03e35 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/old/scene.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"block","parent":"block/block","ambientocclusion":true,"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[13,48,2],"to":[14,56,14],"autouv":0,"color":3,"origin":[9,56,9],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"cb247a93-b132-0d89-060e-7d32ac911851"},{"name":"cube","from":[2,48,2],"to":[3,56,14],"autouv":0,"color":2,"origin":[9,56,9],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"9617a0c3-50b9-edba-695f-ed23d954b273"},{"name":"cube","from":[3,48,13],"to":[13,56,14],"autouv":0,"color":4,"origin":[8,56,20],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"30114a15-21e6-cbe3-478d-b1be5b551d3a"},{"name":"cube","from":[3,48,2],"to":[13,56,3],"autouv":0,"color":5,"origin":[8,56,9],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"ff2e3c87-362b-61de-c74f-ee3ae8ae823f"},{"name":"cube","from":[1,56,1],"to":[3,64,15],"autouv":0,"color":1,"origin":[9,64,9],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"f5020da6-1b01-2c10-9577-ef8feca78368"},{"name":"cube","from":[3,56,1],"to":[13,64,3],"autouv":0,"color":4,"origin":[11,64,-3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"d74886e8-f476-5f70-a0b9-a6c0b74b1ed6"},{"name":"cube","from":[13,56,1],"to":[15,64,15],"autouv":0,"color":1,"origin":[7,64,7],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"eed9e3e2-5891-968a-4d04-6d8dc132e64b"},{"name":"cube","from":[3,56,13],"to":[13,64,15],"autouv":0,"color":4,"origin":[5,64,19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"bfccb904-0eaf-2126-c2c3-83ed5786ceab"},{"name":"cube","from":[3,8,1],"to":[13,16,3],"autouv":0,"color":4,"origin":[11,16,-3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"9f6326ae-0536-f38c-5e34-8a803949fd3b"},{"name":"cube","from":[3,8,13],"to":[13,16,15],"autouv":0,"color":4,"origin":[5,16,19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"953c869b-d823-3e54-1bbc-9c09aeb49191"},{"name":"cube","from":[1,8,1],"to":[3,16,15],"autouv":0,"color":1,"origin":[9,16,9],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"c6dba88d-01f3-7796-4d93-aeade5f211ce"},{"name":"cube","from":[13,8,1],"to":[15,16,15],"autouv":0,"color":1,"origin":[7,16,7],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"a862a613-3a45-99e5-0466-f4cbf8c6d7f4"},{"name":"cube","from":[13,0,2],"to":[14,8,14],"autouv":0,"color":3,"origin":[9,8,9],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"7a237e57-bd5f-8cb1-e82f-c8c216d80824"},{"name":"cube","from":[2,0,2],"to":[3,8,14],"autouv":0,"color":2,"origin":[9,8,9],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"65d5d282-2577-9dc9-d9b5-b45404b9b0f7"},{"name":"cube","from":[3,0,13],"to":[13,8,14],"autouv":0,"color":4,"origin":[8,8,20],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"b7172991-3b3b-b942-7518-96dd64150617"},{"name":"cube","from":[3,0,2],"to":[13,8,3],"autouv":0,"color":5,"origin":[8,8,9],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"657fc7f7-d4d3-e6d4-5671-dd6809ba81d8"},{"name":"cube","from":[13,-16,2],"to":[14,-8,14],"autouv":0,"color":3,"origin":[9,-8,9],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"130bea9c-264a-027b-1640-2323773eea5f"},{"name":"cube","from":[2,-16,2],"to":[3,-8,14],"autouv":0,"color":2,"origin":[9,-8,9],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"804db574-84c3-a9b9-e9e8-8e593501abaf"},{"name":"cube","from":[3,-16,13],"to":[13,-8,14],"autouv":0,"color":4,"origin":[8,-8,20],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"26431adb-f9d9-8039-a6f8-43fa248e8441"},{"name":"cube","from":[3,-16,2],"to":[13,-8,3],"autouv":0,"color":5,"origin":[8,-8,9],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"978324b1-beb8-89f9-3442-5352d2e6c4ca"},{"name":"cube","from":[3,40,-31],"to":[13,48,-29],"autouv":0,"color":4,"origin":[11,48,-35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"9369884d-2997-8125-e18d-facc272b81e6"},{"name":"cube","from":[3,40,-19],"to":[13,48,-17],"autouv":0,"color":4,"origin":[5,48,-13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"b222ad5a-6161-01a1-9195-cbcb8be142dd"},{"name":"cube","from":[1,40,-31],"to":[3,48,-17],"autouv":0,"color":1,"origin":[9,48,-23],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"7f9cef98-1123-4d09-58ff-2a3efa7b13e8"},{"name":"cube","from":[13,40,-31],"to":[15,48,-17],"autouv":0,"color":1,"origin":[7,48,-25],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"3a1bc73e-f621-7501-f0d6-06eef44e704a"},{"name":"cube","from":[13,32,-30],"to":[14,40,-18],"autouv":0,"color":3,"origin":[9,40,-23],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"d61acea9-b417-0d4f-68bc-f254ff2583f9"},{"name":"cube","from":[2,32,-30],"to":[3,40,-18],"autouv":0,"color":2,"origin":[9,40,-23],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"4a67d982-08bc-6b87-e7e3-940859e88304"},{"name":"cube","from":[3,32,-19],"to":[13,40,-18],"autouv":0,"color":4,"origin":[8,40,-12],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"0d55777c-1c80-0c28-37f5-3dcd2291116c"},{"name":"cube","from":[3,32,-30],"to":[13,40,-29],"autouv":0,"color":5,"origin":[8,40,-23],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"9dfd2c4c-efdf-e794-6cbe-17f0393988d1"},{"name":"cube","from":[3,56,-31],"to":[13,64,-29],"autouv":0,"color":4,"origin":[11,64,-35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"5483a732-15ac-8972-1bc8-bd9390dea1d6"},{"name":"cube","from":[3,56,-19],"to":[13,64,-17],"autouv":0,"color":4,"origin":[5,64,-13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"89d38e87-6aaa-8630-99bc-4c06adc63653"},{"name":"cube","from":[1,56,-31],"to":[3,64,-17],"autouv":0,"color":1,"origin":[9,64,-23],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"af6c85f8-6ee9-f719-f369-2b3deeeebcd2"},{"name":"cube","from":[13,56,-31],"to":[15,64,-17],"autouv":0,"color":1,"origin":[7,64,-25],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"a0c011f9-fb73-a1c9-16db-3334215306de"},{"name":"cube","from":[13,48,-30],"to":[14,56,-18],"autouv":0,"color":3,"origin":[9,56,-23],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"d944e897-2343-159a-c29f-5138c8731201"},{"name":"cube","from":[2,48,-30],"to":[3,56,-18],"autouv":0,"color":2,"origin":[9,56,-23],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"b7ddc4cf-f13f-1bd7-6b96-34b9a35f491d"},{"name":"cube","from":[3,48,-19],"to":[13,56,-18],"autouv":0,"color":4,"origin":[8,56,-12],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"b6644343-f029-d9c9-a7fc-338c4d6ada03"},{"name":"cube","from":[3,48,-30],"to":[13,56,-29],"autouv":0,"color":5,"origin":[8,56,-23],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"a6cca398-4a1d-b023-80f4-5b749b0421ec"},{"name":"cube","from":[3,56,-47],"to":[13,64,-45],"autouv":0,"color":4,"origin":[11,64,-51],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"772eb9b6-7cc2-1b0b-c215-a0517f4a39d4"},{"name":"cube","from":[3,56,-35],"to":[13,64,-33],"autouv":0,"color":4,"origin":[5,64,-29],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"955e2790-ea98-e594-b848-2f9e6de29099"},{"name":"cube","from":[1,56,-47],"to":[3,64,-33],"autouv":0,"color":1,"origin":[9,64,-39],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"3d8956b4-9a16-2c9a-1cac-b67df352a5b6"},{"name":"cube","from":[13,56,-47],"to":[15,64,-33],"autouv":0,"color":1,"origin":[7,64,-41],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"d2529932-c015-11a1-ef0f-bb54a9f458de"},{"name":"cube","from":[13,48,-46],"to":[14,56,-34],"autouv":0,"color":3,"origin":[9,56,-39],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"53025b82-19bd-2198-048e-a70c1b3874ec"},{"name":"cube","from":[2,48,-46],"to":[3,56,-34],"autouv":0,"color":2,"origin":[9,56,-39],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"d157b7f2-3208-c66d-4021-e5f5c014de60"},{"name":"cube","from":[3,48,-35],"to":[13,56,-34],"autouv":0,"color":4,"origin":[8,56,-28],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"7b668473-229f-a142-74c2-e84c111224ef"},{"name":"cube","from":[3,48,-46],"to":[13,56,-45],"autouv":0,"color":5,"origin":[8,56,-39],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"7ae61b0d-779c-2cdf-0fff-ce95992aae14"},{"name":"cube","from":[-16,-48,0],"to":[0,-32,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"f9a9f7be-7591-dc3d-860a-319e4b865afa"},{"name":"cube","from":[-16,-32,0],"to":[0,-16,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"ce2f53be-2851-9207-06a8-535a6b56681b"},{"name":"cube","from":[-16,-16,0],"to":[0,0,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"8f68aabd-36a0-faa2-77e7-fa05b7dba552"},{"name":"cube","from":[-16,0,0],"to":[0,16,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"346913f0-9693-3da9-7385-7d98f9e4ec6b"},{"name":"cube","from":[-16,0,-16],"to":[0,16,0],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"2feba15c-c0e6-8470-9a2b-dca42f1ec8c9"},{"name":"cube","from":[-16,16,-32],"to":[0,32,-16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"d7d6a48e-2074-9cce-6673-c38b9fa546ea"},{"name":"cube","from":[-16,32,-48],"to":[0,48,-32],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"47009ce0-915d-70bc-88ff-94e738617c13"},{"name":"cube","from":[-16,16,0],"to":[0,32,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"7be3f1b8-ae0b-fca9-5de0-fa647792e918"},{"name":"cube","from":[-16,32,-32],"to":[0,48,-16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"201625dd-d6da-771e-a053-81c3748a953f"},{"name":"cube","from":[-16,48,-48],"to":[0,64,-32],"autouv":1,"color":4,"origin":[8,24,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"baf84af7-f139-bf9d-22aa-205bf33d1b3c"},{"name":"cube","from":[-16,48,-32],"to":[0,64,-16],"autouv":1,"color":4,"origin":[8,24,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"c4343a87-53b9-a6a6-6e6c-3c7868bcafdf"},{"name":"cube","from":[3,-8,1],"to":[13,0,3],"autouv":0,"color":4,"origin":[11,0,-3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"fae7c3dc-3a65-9192-6d98-c299a72e957b"},{"name":"cube","from":[3,-8,13],"to":[13,0,15],"autouv":0,"color":4,"origin":[5,0,19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"9216ac4e-0f6b-fa70-a48b-546dcc9e8211"},{"name":"cube","from":[1,-8,1],"to":[3,0,15],"autouv":0,"color":1,"origin":[9,0,9],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"2765ceca-6411-317b-d189-f6833a451ca2"},{"name":"cube","from":[13,-8,1],"to":[15,0,15],"autouv":0,"color":1,"origin":[7,0,7],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"9fe26dd5-7996-e435-a5f9-ea08786e2557"},{"name":"cube","from":[1,-24,1],"to":[15,-16,15],"autouv":0,"color":5,"visibility":false,"origin":[8,24,-24],"faces":{"north":{"uv":[8.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,7,7],"texture":0},"down":{"uv":[0,0,7,7],"texture":0}},"uuid":"23be82fc-49cd-253f-2642-fe4740f144a1"},{"name":"cube","from":[0,-48,16],"to":[16,-37,32],"autouv":0,"color":7,"origin":[0.5,-37.5,16.5],"faces":{"north":{"uv":[0,5,16,16],"texture":2},"east":{"uv":[0,5,16,16],"texture":2},"south":{"uv":[0,5,16,16],"texture":2},"west":{"uv":[0,5,16,16],"texture":2},"up":{"uv":[0,0,16,16],"texture":4},"down":{"uv":[0,0,16,16],"texture":4}},"uuid":"8521ed0a-023c-5025-cfa0-a3d5b12d3a9f"},{"name":"cube","from":[1,-37,17],"to":[15,-35,31],"autouv":0,"color":1,"origin":[9,-50,25],"faces":{"north":{"uv":[1,14,15,16],"texture":3},"east":{"uv":[1,14,15,16],"texture":3},"south":{"uv":[1,14,15,16],"texture":3},"west":{"uv":[1,14,15,16],"texture":3},"up":{"uv":[1,0,15,14],"texture":3},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"d89925d8-7c75-e833-6a34-3e865ac3417d"},{"name":"cube","from":[2,-22,-54],"to":[14,-16,-47],"autouv":1,"color":5,"origin":[8,-40,40],"faces":{"north":{"uv":[4,10,16,16],"rotation":180,"texture":0},"east":{"uv":[9,10,16,16],"rotation":180,"texture":0},"south":{"uv":[0,0,12,6]},"west":{"uv":[0,0,7,6]},"up":{"uv":[0,0,12,7]},"down":{"uv":[0,0,12,7]}},"uuid":"6240255c-fe04-0455-7c95-41f1ae08ae52"},{"name":"cube","from":[2.2,24,-30],"to":[13.8,32,-18],"autouv":0,"color":5,"origin":[8,8,8],"faces":{"north":{"uv":[9,11,15,15],"rotation":180,"texture":0},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"786b50e4-398f-69b9-c394-8280a828d119"},{"name":"cube","from":[1.9,-12,-14],"to":[14.099999999999998,4,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-8],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"066dcb14-3625-4555-9b70-262fac458b33"},{"name":"cube","from":[-16,32,0],"to":[0,48,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"53dd545a-edec-5cd9-f804-f101359cab1f"},{"name":"cube","from":[-16,48,0],"to":[0,64,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"b7792388-9a39-5016-9a15-f5a6a22eb4f2"},{"name":"cube","from":[13,45,1],"to":[15,48,15],"autouv":0,"color":3,"origin":[9,48,9],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"9b1319e8-574d-f388-da3a-554b916bc6dc"},{"name":"cube","from":[3,45,13],"to":[13,48,15],"autouv":0,"color":7,"origin":[9,48,9],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"dc789d04-3a62-c8ee-f0f9-fd3e0a29f727"},{"name":"cube","from":[12,40,13],"to":[13,45,15],"autouv":0,"color":0,"origin":[11,48,9],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"3eead843-d482-0f19-74b2-cb9b6bfc9251"},{"name":"cube","from":[12,40,1],"to":[13,45,3],"autouv":0,"color":6,"origin":[11,48,7],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"464cd6b7-3a4a-ea8f-e777-7695fa9a5f51"},{"name":"cube","from":[13,40,12],"to":[15,45,15],"autouv":0,"color":5,"origin":[11,48,9],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"0bca34fc-be42-1d77-aedb-cf6440e97643"},{"name":"cube","from":[13,40,1],"to":[15,45,4],"autouv":0,"color":4,"origin":[11,48,7],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"8dd9d58a-6f13-6394-d931-09cecd2d7200"},{"name":"cube","from":[1,45,1],"to":[3,48,15],"autouv":0,"color":4,"origin":[7,48,7],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"726d71f7-e0e7-b4c4-3f74-6c3e595149cf"},{"name":"cube","from":[3,45,1],"to":[13,48,3],"autouv":0,"color":4,"origin":[7,48,7],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"4aa396ba-ba9f-568c-bd30-be7c64b7ed33"},{"name":"cube","from":[3,40,1],"to":[4,45,3],"autouv":0,"color":2,"origin":[5,48,7],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"74d0d090-7d1c-6d91-297f-f2856a8954a6"},{"name":"cube","from":[3,40,13],"to":[4,45,15],"autouv":0,"color":4,"origin":[5,48,9],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"bde427c5-7426-c74a-782e-a3d5106dfdde"},{"name":"cube","from":[1,40,1],"to":[3,45,4],"autouv":0,"color":2,"origin":[5,48,7],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"8747bad8-194c-59d5-f21f-9493fece801c"},{"name":"cube","from":[1,40,12],"to":[3,45,15],"autouv":0,"color":3,"origin":[5,48,9],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"3c5f9e52-f0ea-bd32-be0b-4d42ec1878bb"},{"name":"cube","from":[13,32,2],"to":[14,40,14],"autouv":0,"color":1,"origin":[9,40,9],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"ba83925d-9d29-bf09-a0b0-1355cdf14edf"},{"name":"cube","from":[2,32,2],"to":[3,40,14],"autouv":0,"color":7,"origin":[9,40,9],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"241e8d1a-45a8-788b-2cbd-5af861aff264"},{"name":"cube","from":[3,32,13],"to":[13,40,14],"autouv":0,"color":3,"origin":[8,40,20],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"e13183ab-227a-e861-cd7c-b25bdd03f63f"},{"name":"cube","from":[3,32,2],"to":[13,40,3],"autouv":0,"color":4,"origin":[8,40,9],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"fdf0d295-aaad-1aae-d721-467fadaa72f3"},{"name":"cube","from":[2,40,2],"to":[14,45,3],"autouv":0,"color":5,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"fefd07f2-f430-8c85-ffdf-6bfa401446ee"},{"name":"cube","from":[13,40,2],"to":[14,45,14],"autouv":0,"color":5,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"9d48dec6-5838-b108-953b-ec1192aa0822"},{"name":"cube","from":[2,40,13],"to":[14,45,14],"autouv":0,"color":4,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"af34e4c0-723a-22a3-898a-8f6f0eaf495d"},{"name":"cube","from":[2,40,2],"to":[3,45,14],"autouv":0,"color":7,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"79df7a55-901c-d623-fdee-0b1ca6caa50c"},{"name":"cube","from":[13,29,1],"to":[15,32,15],"autouv":0,"color":3,"origin":[9,32,9],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"c6527792-8074-13c0-519d-2394887ceb3f"},{"name":"cube","from":[3,29,13],"to":[13,32,15],"autouv":0,"color":7,"origin":[9,32,9],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"133da996-a17d-71b9-e84b-6e2a8170e64d"},{"name":"cube","from":[12,24,13],"to":[13,29,15],"autouv":0,"color":0,"origin":[11,32,9],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"0ab753de-eb54-ad47-d851-980e1476d7ba"},{"name":"cube","from":[12,24,1],"to":[13,29,3],"autouv":0,"color":6,"origin":[11,32,7],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"bf477c92-617c-59f2-1dd4-4c489d4c1a5a"},{"name":"cube","from":[13,24,12],"to":[15,29,15],"autouv":0,"color":5,"origin":[11,32,9],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"63033484-63b9-c645-cac6-702ac05b8f4c"},{"name":"cube","from":[13,24,1],"to":[15,29,4],"autouv":0,"color":4,"origin":[11,32,7],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"a6f78292-b1c5-805d-483a-818a04d450f3"},{"name":"cube","from":[1,29,1],"to":[3,32,15],"autouv":0,"color":4,"origin":[7,32,7],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"dc212f01-008e-1a4a-5b95-24892e58b953"},{"name":"cube","from":[3,29,1],"to":[13,32,3],"autouv":0,"color":4,"origin":[7,32,7],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"9122ceab-d56d-3101-3b4b-151684a26497"},{"name":"cube","from":[3,24,1],"to":[4,29,3],"autouv":0,"color":2,"origin":[5,32,7],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"2e3ca9e4-8017-aeac-b826-3536159d1092"},{"name":"cube","from":[3,24,13],"to":[4,29,15],"autouv":0,"color":4,"origin":[5,32,9],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"b4d50b45-0492-6259-ba06-fc44042ad338"},{"name":"cube","from":[1,24,1],"to":[3,29,4],"autouv":0,"color":2,"origin":[5,32,7],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"204ec5fd-c394-36a6-ce03-88d17038c92b"},{"name":"cube","from":[1,24,12],"to":[3,29,15],"autouv":0,"color":3,"origin":[5,32,9],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"daa17cc2-e7ce-f405-eb92-7543f62a664f"},{"name":"cube","from":[13,16,2],"to":[14,24,14],"autouv":0,"color":1,"origin":[9,24,9],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"8b97443c-f66b-345f-e7ce-bc84ed8f6a17"},{"name":"cube","from":[2,16,2],"to":[3,24,14],"autouv":0,"color":7,"origin":[9,24,9],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"b81da298-f2e4-cf0b-a336-f9d0a304e879"},{"name":"cube","from":[3,16,13],"to":[13,24,14],"autouv":0,"color":3,"origin":[8,24,20],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"b940f28f-06e4-aaed-d592-cbe90d883fab"},{"name":"cube","from":[3,16,2],"to":[13,24,3],"autouv":0,"color":4,"origin":[8,24,9],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"55718430-e11f-afad-c3f7-3a4b1ff5ebbf"},{"name":"cube","from":[2,24,2],"to":[14,29,3],"autouv":0,"color":5,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"c8ae79a8-443d-18f9-cb93-1d2df199cd76"},{"name":"cube","from":[13,24,2],"to":[14,29,14],"autouv":0,"color":5,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"85096e5d-9aed-095e-5290-f769d57a1541"},{"name":"cube","from":[2,24,13],"to":[14,29,14],"autouv":0,"color":4,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"2388ccb1-8446-dedb-f958-57a67fad827a"},{"name":"cube","from":[2,24,2],"to":[3,29,14],"autouv":0,"color":7,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"742a36ae-ccdf-7e27-f952-65b3ab768577"},{"name":"cube","from":[3,56,-63],"to":[13,64,-61],"autouv":0,"color":4,"origin":[11,64,-67],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"ddc28bb3-c117-970e-1607-4b3113b42a6d"},{"name":"cube","from":[3,56,-51],"to":[13,64,-49],"autouv":0,"color":4,"origin":[5,64,-45],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"53bddac1-a509-a2e6-a603-41cf6796baa2"},{"name":"cube","from":[1,56,-63],"to":[3,64,-49],"autouv":0,"color":1,"origin":[9,64,-55],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"c640a4c4-a579-bb3f-087a-2d2b48570512"},{"name":"cube","from":[13,56,-63],"to":[15,64,-49],"autouv":0,"color":1,"origin":[7,64,-57],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"b55eb5fc-f68c-75c7-3f9d-70774d89b3a1"},{"name":"cube","from":[1.9,4,-30],"to":[14.099999999999998,20,-18],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,24,-24],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"742bbf82-d00b-e9d5-82f8-ac3ee2c9a32d"},{"name":"cube","from":[1.9,20,-30],"to":[14.099999999999998,26.666,-18],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,24,-24],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"263536fc-4ed5-ab1c-a666-50fb3ffac844"},{"name":"cube","from":[1.9,4,-14],"to":[14.099999999999998,10.666,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-8],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"c5df05b2-e3e2-0543-4c97-764f055b4fd6"},{"name":"cube","from":[1.9,20,-46],"to":[14.099999999999998,36,-34],"autouv":0,"color":5,"visibility":false,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"bca31192-4f5d-85a4-7f21-ba8c38f67a1a"},{"name":"cube","from":[1.9,36,-46],"to":[14.099999999999998,42.666,-34],"autouv":0,"color":5,"visibility":false,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"0d4a012a-2a61-b3db-d282-2386601969b5"},{"name":"cube","from":[1.9,36,-62.1],"to":[14.099999999999998,52,-49.9],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,56,-56],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[9,8.5,15,14.5],"texture":0},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"60b7284a-69a8-fc05-b4f7-a7a96f9afd92"},{"name":"cube","from":[2.1,52,-61.9],"to":[13.9,58.666,-50.1],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,56,-56],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[0,0,0,0],"rotation":90,"texture":null},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"20f4515f-0517-55bd-8351-7e0fd1ed20cd"},{"name":"cube","from":[2,53.7,-62],"to":[14.000000000000007,56.7,-50],"autouv":0,"color":5,"origin":[8,24,-8],"faces":{"north":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"east":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"0cfd465e-cace-5168-0cfa-5da17b123e98"},{"name":"cube","from":[2.1,36,-45.9],"to":[13.9,42.666,-34.1],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[0,0,0,0],"rotation":90,"texture":null},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"c67c24e1-3b8f-609d-d955-5108cb94353d"},{"name":"cube","from":[1.9,20,-46.1],"to":[14.099999999999998,36,-33.9],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[9,8.5,15,14.5],"texture":0},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"c39b4392-255e-9f9f-8491-06858a18c031"},{"name":"cube","from":[2.2,40,-46],"to":[13.8,48,-34],"autouv":0,"color":5,"origin":[8,8,8],"faces":{"north":{"uv":[9,11,15,15],"rotation":180,"texture":0},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"ab57a3bb-74ab-b898-c088-341bf8618762"},{"name":"cube","from":[2.2,-24,2],"to":[13.8,-16,14],"autouv":0,"color":5,"origin":[8,-40,40],"faces":{"north":{"uv":[9,11,15,15],"rotation":180,"texture":0},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"2a1ca887-4397-9a18-d33c-04a6743aab33"},{"name":"cube","from":[1.9,-28,2],"to":[14.099999999999998,-21.334,14],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-24,8],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"c7a3bbb2-a6d9-3965-0e76-4a79cc627caf"},{"name":"cube","from":[1.9,-44,2],"to":[14.099999999999998,-28,14],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-24,8],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"d9581d64-ee8d-0c1c-0c22-823e5e014612"},{"name":"cube","from":[1.9,-12,-14],"to":[14.099999999999998,-5.334,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-8,-8],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"69541915-3211-0409-4cdf-48afb8728433"},{"name":"cube","from":[1.9,-28,-14],"to":[14.099999999999998,-12,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-8,-8],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"3cc8619d-209c-1be8-432b-690beb5395de"},{"name":"cube","from":[13,8,-31],"to":[15,16,-17],"autouv":0,"color":1,"origin":[7,16,-25],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"b980d0bd-0945-ad67-353a-d0c541187eb9"},{"name":"cube","from":[2,5.700000000000003,-30],"to":[14.000000000000007,8.700000000000003,-18],"autouv":0,"color":5,"origin":[8,-24,24],"faces":{"north":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"east":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"2f2fef1b-a2a1-2a2c-bfb8-5abeab3d1ad0"},{"name":"cube","from":[2.1,4,-29.9],"to":[13.9,10.665999999999997,-18.1],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-24],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[0,0,0,0],"rotation":90,"texture":null},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"a12be982-5777-bb88-af3d-b9f76d066c7c"},{"name":"cube","from":[1.9,-12,-30.1],"to":[14.099999999999998,4,-17.9],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-24],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[9,8.5,15,14.5],"texture":0},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"65468081-a71e-1eed-19f6-4cb6329141cf"}],"outliner":[{"name":"group","uuid":"63ca3bbe-c089-f2fa-0b1e-68cec5b0f223","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"110eb8c1-6b21-6a16-6966-c95e4ad7bde5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["d74886e8-f476-5f70-a0b9-a6c0b74b1ed6","bfccb904-0eaf-2126-c2c3-83ed5786ceab","f5020da6-1b01-2c10-9577-ef8feca78368","eed9e3e2-5891-968a-4d04-6d8dc132e64b"]},{"name":"ChuteBase","uuid":"dfff869f-0384-17b8-950d-6b1d71a8d746","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["cb247a93-b132-0d89-060e-7d32ac911851","9617a0c3-50b9-edba-695f-ed23d954b273","30114a15-21e6-cbe3-478d-b1be5b551d3a","ff2e3c87-362b-61de-c74f-ee3ae8ae823f"]}]},{"name":"group","uuid":"1589ce86-8c5d-2dd5-1cba-b3816fdb2d51","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"18ee5452-96c4-e00e-dae2-48e848e6fef6","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["9f6326ae-0536-f38c-5e34-8a803949fd3b","953c869b-d823-3e54-1bbc-9c09aeb49191","c6dba88d-01f3-7796-4d93-aeade5f211ce","a862a613-3a45-99e5-0466-f4cbf8c6d7f4"]},{"name":"ChuteTop","uuid":"2c70ca25-4ab4-ec98-e46c-135a814ece49","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["fae7c3dc-3a65-9192-6d98-c299a72e957b","9216ac4e-0f6b-fa70-a48b-546dcc9e8211","2765ceca-6411-317b-d189-f6833a451ca2","9fe26dd5-7996-e435-a5f9-ea08786e2557"]},{"name":"ChuteBase","uuid":"10b2f4d2-5cd4-0841-c387-528a3c414f31","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["7a237e57-bd5f-8cb1-e82f-c8c216d80824","65d5d282-2577-9dc9-d9b5-b45404b9b0f7","b7172991-3b3b-b942-7518-96dd64150617","657fc7f7-d4d3-e6d4-5671-dd6809ba81d8"]}]},{"name":"group","uuid":"2eeeac05-20df-5441-318a-eb6a0646631e","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteBase","uuid":"170f2e47-a6c7-c989-7e62-1a4a7701cc19","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["130bea9c-264a-027b-1640-2323773eea5f","804db574-84c3-a9b9-e9e8-8e593501abaf","26431adb-f9d9-8039-a6f8-43fa248e8441","978324b1-beb8-89f9-3442-5352d2e6c4ca"]}]},{"name":"group","uuid":"1d4b3f1b-87f5-59fa-f6ee-ce0421e73192","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"f3f71d10-2780-4fa4-bf3b-b9ace40cedd6","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["9369884d-2997-8125-e18d-facc272b81e6","b222ad5a-6161-01a1-9195-cbcb8be142dd","7f9cef98-1123-4d09-58ff-2a3efa7b13e8","3a1bc73e-f621-7501-f0d6-06eef44e704a"]},{"name":"ChuteBase","uuid":"906bc7ef-a2a6-feca-590a-070fe4f46916","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["d61acea9-b417-0d4f-68bc-f254ff2583f9","4a67d982-08bc-6b87-e7e3-940859e88304","0d55777c-1c80-0c28-37f5-3dcd2291116c","9dfd2c4c-efdf-e794-6cbe-17f0393988d1"]}]},{"name":"group","uuid":"122e4478-d0a8-dfae-0945-83222c803ce5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["b55eb5fc-f68c-75c7-3f9d-70774d89b3a1","0cfd465e-cace-5168-0cfa-5da17b123e98","20f4515f-0517-55bd-8351-7e0fd1ed20cd","60b7284a-69a8-fc05-b4f7-a7a96f9afd92"]},{"name":"group","uuid":"74a046f6-d5d4-3520-15d4-e69619b0f106","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["c5df05b2-e3e2-0543-4c97-764f055b4fd6","066dcb14-3625-4555-9b70-262fac458b33"]},{"name":"group","uuid":"675e5715-19c6-cfbb-e413-0be419b63cef","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["23be82fc-49cd-253f-2642-fe4740f144a1","0d4a012a-2a61-b3db-d282-2386601969b5","bca31192-4f5d-85a4-7f21-ba8c38f67a1a"]},{"name":"group","uuid":"79b5f9fa-5285-1319-fa25-2f32942c442c","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},"f9a9f7be-7591-dc3d-860a-319e4b865afa","ce2f53be-2851-9207-06a8-535a6b56681b","8f68aabd-36a0-faa2-77e7-fa05b7dba552","346913f0-9693-3da9-7385-7d98f9e4ec6b","7be3f1b8-ae0b-fca9-5de0-fa647792e918","53dd545a-edec-5cd9-f804-f101359cab1f","b7792388-9a39-5016-9a15-f5a6a22eb4f2","2feba15c-c0e6-8470-9a2b-dca42f1ec8c9","d7d6a48e-2074-9cce-6673-c38b9fa546ea","201625dd-d6da-771e-a053-81c3748a953f","c4343a87-53b9-a6a6-6e6c-3c7868bcafdf","47009ce0-915d-70bc-88ff-94e738617c13","baf84af7-f139-bf9d-22aa-205bf33d1b3c",{"name":"group","uuid":"33ab7026-6f9a-7f35-9bf2-d92779cd9ffc","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},{"name":"group","uuid":"227edd9a-1e5b-4d0f-a0bd-643426cd294f","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},{"name":"group","uuid":"3df7787d-7a48-a481-bc21-0cfa5322ac04","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"3c965d96-e75b-6b40-c26e-c6fd6557b3c4","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["5483a732-15ac-8972-1bc8-bd9390dea1d6","89d38e87-6aaa-8630-99bc-4c06adc63653","af6c85f8-6ee9-f719-f369-2b3deeeebcd2","a0c011f9-fb73-a1c9-16db-3334215306de"]},{"name":"ChuteBase","uuid":"d97a0912-d4ec-fa1a-a6ff-719062b42cbe","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["d944e897-2343-159a-c29f-5138c8731201","b7ddc4cf-f13f-1bd7-6b96-34b9a35f491d","b6644343-f029-d9c9-a7fc-338c4d6ada03","a6cca398-4a1d-b023-80f4-5b749b0421ec"]}]},{"name":"group","uuid":"111af74f-17ca-154f-28ee-0e99781843a2","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"fd581c39-623c-64db-b3c2-006531d5d45d","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["772eb9b6-7cc2-1b0b-c215-a0517f4a39d4","955e2790-ea98-e594-b848-2f9e6de29099","3d8956b4-9a16-2c9a-1cac-b67df352a5b6","d2529932-c015-11a1-ef0f-bb54a9f458de"]},{"name":"ChuteTop","uuid":"68c9caa9-d6dd-a60b-a42b-0c45672941f1","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["ddc28bb3-c117-970e-1607-4b3113b42a6d","53bddac1-a509-a2e6-a603-41cf6796baa2","c640a4c4-a579-bb3f-087a-2d2b48570512"]},{"name":"ChuteBase","uuid":"301e76c5-0145-e97b-e6d8-d98c738d4e4c","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["53025b82-19bd-2198-048e-a70c1b3874ec","d157b7f2-3208-c66d-4021-e5f5c014de60","7b668473-229f-a142-74c2-e84c111224ef","7ae61b0d-779c-2cdf-0fff-ce95992aae14"]}]},{"name":"group","uuid":"e0321c7e-4d6b-516f-9b56-e8effc517a0d","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["6240255c-fe04-0455-7c95-41f1ae08ae52"]},{"name":"group","uuid":"6f3d0ea9-a379-290e-44d4-1421a9e876c9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},{"name":"block","uuid":"1d2acf6e-0f08-da2c-6bd9-bce72b414442","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["8521ed0a-023c-5025-cfa0-a3d5b12d3a9f","d89925d8-7c75-e833-6a34-3e865ac3417d"]},{"name":"block_windowed","uuid":"5bd9bc56-ba99-d277-b56a-ecc09e3305fd","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"497593b3-ae5a-ca1b-c22b-fa6e85cab5e5","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["9b1319e8-574d-f388-da3a-554b916bc6dc","dc789d04-3a62-c8ee-f0f9-fd3e0a29f727","3eead843-d482-0f19-74b2-cb9b6bfc9251","464cd6b7-3a4a-ea8f-e777-7695fa9a5f51","0bca34fc-be42-1d77-aedb-cf6440e97643","8dd9d58a-6f13-6394-d931-09cecd2d7200","726d71f7-e0e7-b4c4-3f74-6c3e595149cf","4aa396ba-ba9f-568c-bd30-be7c64b7ed33","74d0d090-7d1c-6d91-297f-f2856a8954a6","bde427c5-7426-c74a-782e-a3d5106dfdde","8747bad8-194c-59d5-f21f-9493fece801c","3c5f9e52-f0ea-bd32-be0b-4d42ec1878bb"]},{"name":"ChuteBase","uuid":"f54d3830-6fd3-076c-4863-f1db5b98a0f3","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["ba83925d-9d29-bf09-a0b0-1355cdf14edf","241e8d1a-45a8-788b-2cbd-5af861aff264","e13183ab-227a-e861-cd7c-b25bdd03f63f","fdf0d295-aaad-1aae-d721-467fadaa72f3"]},{"name":"windows","uuid":"0952a871-8212-4cc4-579b-baf142092682","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["fefd07f2-f430-8c85-ffdf-6bfa401446ee","9d48dec6-5838-b108-953b-ec1192aa0822","af34e4c0-723a-22a3-898a-8f6f0eaf495d","79df7a55-901c-d623-fdee-0b1ca6caa50c"]}]},{"name":"block_windowed","uuid":"461ecbf2-48ad-2c2c-f891-14d0a28448bd","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"4a3f4842-b566-2292-5ddb-7974830720d9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["c6527792-8074-13c0-519d-2394887ceb3f","133da996-a17d-71b9-e84b-6e2a8170e64d","0ab753de-eb54-ad47-d851-980e1476d7ba","bf477c92-617c-59f2-1dd4-4c489d4c1a5a","63033484-63b9-c645-cac6-702ac05b8f4c","a6f78292-b1c5-805d-483a-818a04d450f3","dc212f01-008e-1a4a-5b95-24892e58b953","9122ceab-d56d-3101-3b4b-151684a26497","2e3ca9e4-8017-aeac-b826-3536159d1092","b4d50b45-0492-6259-ba06-fc44042ad338","204ec5fd-c394-36a6-ce03-88d17038c92b","daa17cc2-e7ce-f405-eb92-7543f62a664f"]},{"name":"ChuteBase","uuid":"f215d450-01ae-41bc-b838-bf419558e7b4","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["8b97443c-f66b-345f-e7ce-bc84ed8f6a17","b81da298-f2e4-cf0b-a336-f9d0a304e879","b940f28f-06e4-aaed-d592-cbe90d883fab","55718430-e11f-afad-c3f7-3a4b1ff5ebbf"]},{"name":"windows","uuid":"1cb9b116-44d1-b5bf-fee4-0370a3596b03","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["c8ae79a8-443d-18f9-cb93-1d2df199cd76","85096e5d-9aed-095e-5290-f769d57a1541","2388ccb1-8446-dedb-f958-57a67fad827a","742a36ae-ccdf-7e27-f952-65b3ab768577"]}]},{"name":"group","uuid":"1660404e-70a7-b44c-e191-fe3e9580c6e8","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["c67c24e1-3b8f-609d-d955-5108cb94353d","ab57a3bb-74ab-b898-c088-341bf8618762","c39b4392-255e-9f9f-8491-06858a18c031"]},{"name":"group","uuid":"524e3d38-4634-cd78-d405-bd48459a8d8a","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,24,-24],"children":["786b50e4-398f-69b9-c394-8280a828d119","263536fc-4ed5-ab1c-a666-50fb3ffac844","742bbf82-d00b-e9d5-82f8-ac3ee2c9a32d"]},{"name":"group","uuid":"c06c3ebd-dbc5-135a-fc42-817ceafa0bf9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,24,-24],"children":["2a1ca887-4397-9a18-d33c-04a6743aab33","c7a3bbb2-a6d9-3965-0e76-4a79cc627caf","d9581d64-ee8d-0c1c-0c22-823e5e014612"]},{"name":"group","uuid":"90987386-644c-2da1-649b-836ee25f56c9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["69541915-3211-0409-4cdf-48afb8728433","3cc8619d-209c-1be8-432b-690beb5395de"]},{"name":"group","uuid":"3653a153-3039-4888-f561-12c449ee8041","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["b980d0bd-0945-ad67-353a-d0c541187eb9","2f2fef1b-a2a1-2a2c-bfb8-5abeab3d1ad0","a12be982-5777-bb88-af3d-b9f76d066c7c","65468081-a71e-1eed-19f6-4cb6329141cf"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\chute.png","name":"chute.png","folder":"block","namespace":"create","id":"13","particle":false,"mode":"bitmap","saved":true,"uuid":"28f5c1bd-347f-5679-af31-8f883b6ef597","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFoklEQVRYR51XT2gcZRR/829nd5NsNkIMSVGkFKrS0sA2baq1QU/NKSihNB706EXBi6eCB0E8eNWDIF56qSEoObUXWxpRUEncUlNIjEjqP6wpaTa7O7MzszPye9M3fjOZthsfLN/MfN9+7/d+7/feN6PNzMxEtm1TGIZkWRZ1u12CGYaRe411uq7T+vo6r6vX69rUmZei6tAA35dLJR4rpRI1HIdHGK5hbcchr9Ohdtuj60tXNW12djYaHx+njY0N8n2fQciIP+BaDHNjY2O0urpKm5ubCYDps2ejyRMnaOXGjVwQ4lj2OXbkCP2wvEyXr1yJAWCiv78/cQRGOp1Ocq9e4DlALSwsaPIcDFgFnfr6+pgBRJllQgXRarXI98KYAaSgXC7zXnCMX6VSYfqxUEwANZtNfqQCAAMF207W5jmXSYCDIQ3MwNzcHGtADFEIGOig3W7zfRAEzAp+eLa4uJgwoAIQ57KfaEEci3OMe1IgQEzTZCbEhAlhYXt7OwUAKSiXC5RlQZyr0SNyToeIUKoAAsNPZUAcSvT4I1KAKpifn08xMFGrsbAAQmUhj4E9IkS0cC7UCwOSAhUABAgQagqyIsQ+avmpTCAVKRFmqwAMqPSDBQCAiQayVYC50dGnIssyiSgk07QoCPxkLBaLFARxf3GcuIq2tv5gBlNVAPXDwAAM1dFoNBLnkgKMahXg/tChZyNdh1i7VCza5LqdZKxUBhIxx/sX6NategxArQKJHJHiWoBkGchWATaq1U5Gnufxf0zDYNDSTUulEjnogL7PI3rOysr3MYC8RiSqzQJ6UBVg/fHjkxHmh6pV7iH4QVeu6zKTCCKKImq12wwsAYAqmJiYQE9ndWMSIwwbIFo8E4EODw/zOaCKEHMQojAHZ5ZlUKlkU6vVoULB5NzLvpqm0dLX1/7TABypTrGhegaodOIwytMAAMS6KZDnBWQV4l6CusfenQ5EqXP9wxIAQvel+hpvcHh0kNb+2qGnx6oyxeP44yNJ3acm7t+gG0ovMEyTWQt8n0ycsEFAeAYwsgZdkDWgAjg/fjj3vn7n7+hRAESEBYXNrAj9IGCRQgvLy9+lAXx4fTl6Z6qWilIc9wLg1ORp1gAUHr9TRGTbBc49ytLzfELuIUJo5ObNHx8NAOzAeS8pAANowfkagIgjjhz62Gk0e2NA0tMLAwBQHRxg9QdByMpnMVom6brGb1y5AKSFvnXxc8qmQAUwfexkqoVmhfj8c2ci5Lwy2Mfiw6EU+AHphs6OYRCj73fJdT365tulOAXSQt+b/5J+22nmgkCFvHvuZW6hTz4xQo7jM9XYWK4bjbhfIHKUm24YnHM4hfCgC2EAJZkAEPW+9tGn7PxBYjx3+kUW2EB/P029cIqPXpjUNYRVLBYYAEqOoojFhjIE/QIGaUkBkBZ64eIlkjK88MXl6P1XplMl+cHrr3KEACBvwJKGe9u71Gy1CBoAAG5WmkY4BbkRGQbwUNgNWBcpANJC3/7kM6bo90aL7t29k6T46MGDfP3xm29wFEOPxSdmqVgkx3WTceufbaYaqUHUvucxYLCBfaGL3BTst4UeODCS1whp/edfEwawQDfARHwgQQearjMIaAZsJY1ovy20Wq2mPjrk4+OntV8SDWSd4yzAUQ0G9/QBaAALQOnDDHQjt7WjzyRfPOIc4+3bf/4/ET7Ua87k3PnzcVFnTAWAI8Yw4yM87IZkFSxyHYcbFPoAyvTqta/SrbhXIHh/kLXyFYT75m78ESNlGIUhhWFEvh+QbcffnBAkKgaW9IFeHcs6AEBpqd8AmMPGiAwAwEAUhWQXi+Q6LiqSozcMjZpNl9xOZ+9Z0CsQVI3aiHDE4jtP7QN5KWjs7PI5gSrAq/me43g/ALAW9Q6TTohjFmK27r9Rywst1shLLSIv2naKgX8B17EnXWhPQ1MAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\zinc_block.png","name":"zinc_block.png","folder":"block","namespace":"create","id":"particle","particle":false,"mode":"bitmap","saved":true,"uuid":"96e35d1c-6a94-bae9-e68d-c650d5726517","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdElEQVQ4T32TPU/bUBSGH8dgJ3FsJxCSsKRIHTJAQa0Ea7sx9a+0iI0KqVKl9v8gdUQsHaAURSwdUBW+CgKSkk/bcRzbt7KjtIBoj3SHe690z/vc9z3Sm7ebwjDSJKQEwwCEIK4wFAghkCSQExK+HzAhh/F+fG/3h0ibmx9FpfKMcrnM2dkZqVQaXddRlEnUpEKv62Lbv5DlNBcXPykUSgyHLq7b5+joO9LGxgexsLCM7w8Jw5DJSSXu4nkuxeIMtu3GjzabHQxDRVFkul0Xx7E5OPiKtLb2XlQqSySTqZG2OxU92mzeEAQBQkTr7+Vw6FGv30QIn8Ty8kuKxQJXV5fkctNkswbHx8cYxjStVhtd1zg5+UE2m0OSBJqW5PLyhsPDgxHC0tIKnheg62kcx0PTVGRZod3ukkzKWJaNpqVwnCHJ5AQzMya3t112drbvI0R/EFUkudV6XPoY4h7C/Pxz5uaeUqvVyOdLyHICWQ6o15u0Wg3y+Tzn5yOHTNPANHVkGba2Po8QVlZe0e8PMAwFRZnAsjympzP0egMsy8GyeoRh8MehqHsuZ7K9/QDhoQsR0r9w7iGsrr5G1w183+X6uhF3CgJBp9NFkqTYYlVVaDTqcciuri7QtAy7u19GCIuLyzFfJNtxBnQ6Fp1OJ5ZeLj+h0WgwNTUFCHo9J3ar3baoVvceD9L/pD/qwt0gRWEJwwSJxMgFw9A5Pa1RKs3GQSsUZvH9QRzl/f298Sy8wPN8MplRkFRVJp836fWizPdJpbQ4VKYZzcIE7baN4zhUq9+Q1tffCVVV48+6W9E4d7t2fJTJpLCsfjxs44pG3XVdfgM1m36TOejAKAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\depot_side.png","name":"depot_side.png","folder":"block","namespace":"create","id":"1","particle":false,"mode":"bitmap","saved":true,"uuid":"c5acdd77-eeae-7e26-5346-2f2858645589","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABqUlEQVQ4T91Tu0oDQRQ9Sza7O2vMw4RoIBJ8dEaxtBFsAzZaBkwTFUH8BX/CxkL8AK3EwspGW0HwBb4CEiEEH8nGZB/ZDSsz62wMiI2dt7lz78w9M3vOWQF/DOGP8/gPAMXVomsYBqOCEMJyNBZFvVYH73Oe+D6t+Z6QX8q72YlJ6IYFlcjsLF0b5gfisQREhcAxvQveaq8YTA379dX1JQT6gkxmBGcH25CDAVh2x8/8ZtoXAwFWCgLl3UU2twIfYGx0HOeH24iGCfqI1KMskYP+oOu6eK5q0JomZhbXuwDJZBJPp3sYiKgIh2QosgTdcGC2zR4wVZHwUmuipduYXtjA7c3XJ6TTGZzsbyEWjSASVmFZOmzd9oeDahCy7PUbHyYamo75tc0uAOXg/ngX8YiKoUT/j+ZstDzARtOC1mwhM1tApVLuJXEwHoJpOVBkkWUetJZE0efiXWthdK6AUunOA0ilhnFxtMPYp2zbnQ7adgemA8RDEmPedhymEI+p3HIXgKpAg2perZSZ/rymHqD6E6W/xyfUM4+lB+8Fv/2R3JU8f3chdeYnqTjFSIRpNikAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\depot_top.png","name":"depot_top.png","folder":"block","namespace":"create","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"8c30f417-4872-e1ba-d093-965f97783da8","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB90lEQVQ4T4VTzU7bQBicjdfZpHYqlZJApdDWsUpQJZ4Eqde8Q470xqXqhVs55h1yrcSTREUIYkFkpIrCgSQuseu1t/o2ceyQ/viyn9ffjmfnm2EA0O12Fa30VCuVrIRdqLPNIAyX37+cnDCWAfj+d/3BNE29PqvmQPT+OMsPxnGM3XcO1gCiKG/ivAyD4EsMnJeQpkCaKkgp8XLjBdw3TXw+Pp4z+Hh4qK6ubxAEU/zrIPUmiUSjXsfW1mbO4NPRkRqcDzWAEAKu64KgDcOAUimSJIEQZQwG5+DcwPOavQpADG5v7zF+GENUy2g2X8PzPE1ZKQJicF0HFxceRJnDsuzVKxADb3SD8WQC0yzBcVoYjUaI4wQpXR4KrZYD3/cXAlt/AXgYQ6Yp2u1dnJ19A+cmpIz1ob29NobDK0j5C416Y10DYvA4+6n/ShpcXnoQwkCSKNDY9vffLzXgnMN521wVkQCCIAA3Da3BfD7QGlBNYpIGxMi2a+sANAXGGJSK9cxJ7aIGxMKyaphOJxpge3sTvV4v9wFN4cfdHQyDg7ESpIwKGizoLEz8RwAyUmZfsm3Ryk9tTDg7O69yBhQmChGFh8JSXIshyvZnYahDt8xCp9NRFSGWKftfEUaRbun3+3MNDg4+qHAR00ohwtlepvzTntPTr+w3L98kIBHZenAAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\andesite_casing.png","name":"andesite_casing.png","folder":"block","namespace":"create","id":"3","particle":false,"mode":"bitmap","saved":true,"uuid":"86071dd2-b59c-91bb-a979-579f827a44af","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeUlEQVQ4T32Tz2vTYBjHvzFpmqRpfnSuXec2x+qcuE30puBF8DLBw7wIAw8yNwTxNMF/QvAkCAqCV0EFQS+7O5QNWd1g4rZWZmfbuSVb2zdp0kXedySdDnwuyZP34ZPn/T7fh5ucngzwnyCERKeyLIPmh58cBeQGTqFBXIiiwIpbrX00mwRJVYMfBBA4jn23bAtyQgfP7UPgeXxdyiMCzL1+wop0VcRGdQ/ZlAbP9xETePB8gI1qDV1mEnXHBcDh3NgdrK19OwAMnR3F51ePYWgyEpKAH1sOuk0ZruchHoshCAIUKxayKRWKxKNUqeHC9btYXft+ADBMA6WPbyAIxzCc68RKqY6sLqLhNGFqCThuE792PehxIAhaWP9p4+KNe20A1WDh3VOYmoxcj4nF9SrO9KaxbdciQLFqoz9toE4I62Do6m0QZ+9vDXRVYh3ML5WQ68vAaTpQJBFJRcDC8iZOdOlRB4NXbsLasdoazL58hIzRBtDiMDIphQFUU4dP6rBrLrsCm8LMw5mgwzyO/PtnkQa0AwqQ4zEQ10MIONzB5YkH+DL/qS3i5txbJJRYpEFaU44ABvs7Iw3oFKIOZCmJldkXSKeS0JMSNu0mU5zenwbVIF/YikSs/CYYvTZ11Ei9GYMBChWLFdP5h1egADqZ8tYutu0Gui+Nt0WkY6RO7Osy2R8L5R1mGsf1IcUFZp7Vko2TaQOu56NBPJwfv4+V5Ty4iVsTwcDAaSx+eA5VFsHzQLFkoSdjokaobam9YyhbHjpUEV6rBVHgMTI2dWAkChgZHmXLFIZmGuzVd9qbSPOwRpHj7DxaJpqEa0tXNYx/V/lwXVjzB52xTSnD2+HhAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\reality_funnel.png","name":"reality_funnel.png","folder":"block","namespace":"create","id":"10","particle":false,"mode":"bitmap","saved":true,"uuid":"e40f56ce-e46d-a3ee-0993-49b13588fc41","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAMLklEQVR4Xu1ba2wU1xU+szuzDz93jR/BJjG2FwzGwPoBmBYaVISq/mzzo5HaiFaVqqqlKf1XVW1erar+K03TqGqltlFbKZWI8gPxCBFRUgPhZbDx2178AIpZ2/jNvnen+u7sXY/Hu/bM7sZYCVeyZnc8O3Pvd7/z3XPuOSP84EWXnGMXibdoTCazSSAc0STJxI4LC2EqLbaRRTJRKByj8ckAO982WEh2u53y8vLo3LlzQuJGKT68e+I7siSaKRyJsitePP6vJb95/fhO5cGqFgwtO0U+fyRxBfqv/l7ksCz5fSAYI5tVGQca+h+LETsnHP/eNnnr5jqSRIkkUSBfIETtvbfJvX0XRaMymc1K/3LsVnb0+YOJG+G6mx4HWSwWKiwspLNnz+oC4J8fTtPc3Bwd/1Y1vXDsnWUAVFfUr4bjkv/3Dney7wca99HFm1fZwNzbmtk5ScTkAkCZBE3vTn/SSgIYoAxwdRbEonKCGcGgMoM3BgooJyeH8vPzdQFw8OBBuaCggAGA4+nTp5MCsOAP6Qahf7ibCvJF2rW1mW4P3CDRbKI99S3kuTux7B5RTD0R1W4uoTP/baVVZ2y1XjQ2NsowAQCgxwQOHz4s22y2lAD84kf18vaqnWQUAGehRDtcTdTtaSNBEGjvzr00OPqIdR8sxuwHQ8qkRaIxqtm0gT65fiVzAJqammRuAnoBAGN8Ph9jTnPNCE3PhlnHTvy9TwAAHHSrRd/84PeOAjEBAOTlQGML9Y1MkEU0x+1eGbzZZKJQKErVzxbRR1c/zRyA5uZm2Wq1GmKA0+mk6elpwrG+oo/27lRs97dvdwkQwdrNu+l3/+hajXzs/z//bj31j3Qw06x3NVKX5yYzATBg6P7UksFj5q2SSKFwhHa4yuhc68UnD0BdeV/Cdt94UwHg/Y+VWQNL0AIBZcXhDSaEBgahfeNQlMIRAOCmLk87W6k4AKHwIu0xeDSZZHq2zJEdE4AGoEMOh4POnDmzKmehAWoG7NzUn6Duqyc6EwDwwU9MLBcyDKKkpCQBAgBIxoC+YeW3oD0fOI55dhs5C2zZAQAawAHQKnoyDmsBgAlw8XrtD11MA85cFtnspxo8vy9AAAtSMYCLYDAcIYtkJiFOeJhI1SZn9kxAkiSmAefPn9fFAHR6ZmaGsaahajhhu2oTmJqaovn5+RV1AM8sKipaEQB/MEw2q0J9AIDBo2UNALfbzRgAWutxhLTLYEPVaMJ2f/PWogYYBSASkWmHy03dnnbmve6p30udgw/ZzKOZTAJJZuUzGFG50UmtN68mF8Fk7io8Rj4d3E3G90uduRk5Qk01AEBR70wYAP+GA4B1HwAM3p1kXVYPHN/Bim2bS1MD8N5bR+W/nZ1c4q7CNuFqog3dm6aYLNPgaA8DwIgjBHDVrvCtvjZy1zZS951bpBZBIww41BAg5gjVNLD7YEX4kruFPPcmlw0+EFJiiNrKkkUR1M74n94bZW6q2l195eV6edHVFKjYsYV6h7rpj+/0r2r3akPGs9isxAMivmzh3Cu/v51YBYwCkJcrJkwJ99q/ex/dHZtJUJ4PnPeluqKIWtuuKSagnZUT/xlaBgDWZ6j1gi9IcwsBEs0CDYz0MO9tJaVKZTqIONWN3wfXf3zLZngVUGsAEIYfEI0qfj9EMBBUZp5HoficAEAboGDmy8rKyOv1suPJkyeF135azwB47A8ZAiCV6eTnSix6Q+NeID6rAcB3vX4ANKAwz0KzCyEaG/ez4M5kFggBHBPBeFSrDuhwnk2DFgB4XmpnBQDABCBWvkCYAWCziNRzp3MJA5KJZyrTgc3CpNAQwUEA1QDg80q+APcBcJ1WA6AlK7FS/T92odY54X46PwKAXx4DAG4KhKIMgLwcC93u71gCQDLxTGU6PHrD8xHB8U6DAS27m1ksAAC0bjDvPJZe+BOIBa503CD1Jgi05IkAkCzWT2U6PHrjAMAL1NvpbF6nmwG/OgYNcNNjf5jpQH6ulTr62pcwIBkAqUwHGxgwKTTuA2RzYHrvpRuAV1/GKuCmqVk/RSJRstss1Dmw1ARgSmo399SpUylNhy9bCgDtBC9Qb6ezeV1SALj6q1cBZss1DTQ2MU8IriyShbo9yQGA7UJEV9KOdcUAUFe97CUDQI8IasUUAKRizrpiQDIAEKnxiA1U1qMByQBIxZx1B4B6wBi41hXWqwFa/yEVc/JzsYfnZuaMCO7XT1IDknmCWgD0aoAWgFTMKczHLu4iAK+/qd95yboIagF46YiTtMmLN362i4ngg/E5ts2MRIpWBHEfremkYg6P3hgD4pFgNgem915JgyH8GEEDj9iQvuJU7hlqZ4HQcxvrqb331jI/QAvAWmgAJmdiSslY8bSeNthaMRbQhqh84GoA9DJAazqpfpdNDUDA9ZXmFpJVKURtGoz/D0dZltnfB5cuKakxPWmxVMnRv7zrSTgwyTzBVMyBBiB6Q0MEl4kG4BlIhHQPeslsFikajRIJMjkLchOWMLvgI+wJiKKJ8mwWqiwvorOt8dwgEqHq5ChPiqqTo4j93dsbliVH1QBo9xWQ+EzFgGxqAJ6BLTDP3UckipgPgXmrkXgeUDENE9sdwhF7glsqN9D5y3EG4AI9LEiWHFUDgGhQqx3oHNLR2rT6po1KUoM3IxGcVuAUAJAKe8iSHqLJzCguxtNiHIBwOErBYIQEk0B1NaX0wcUsZIb0qu1neR0AQDp8+P4jtsMBKYjJMbJJUuKxFouSF8Au0dx8kHZsKaMPP72UeWrssxyY3ntzAFALIAjKNpi2aUUQO9sfXbn8+QFAPWBucsmAwP94Q5XLEwlB9c6s3usy9gP0Pmi9XpeRH7BeB2WkXxn5AUYetF6vzcgPWK+DMtIvmMDBpv3UOThGFouJLKLIYhlTPBOMe8lRmVAsgfohJExdz234/PgBX3gAnnqCTz1BxRV+6gnGlfML5QnC/tUrBgqj40VhLAJFUxdH8884jwLrdeMKI5RGp95+//6yFTAUUuqGUZHKBhQK0Y9fqGRbdthPBP1vdF+j/btbyBdQ6gLDYaX6FMnceGacbYig3fP2smvTCoeTIY6bokJbjbTR+B6bKdrS+dV8AfxmYPQ2q/19pngruxybOGgT04Ns7xItEpXJkVfNADOzDROih5MDNDefBgN46ImbLJaiM1cjUY6OMvQvN+xhD9TOKGYv2UziugsXLhhiJBIx+7d7qbqijgLhSGLw03MeNkhngYuwD+Cd7GcgACQFIIEceVa61nXTuAnwNXdgxEsxkikcDy/tVolCoQjVucpYGfqhPS3L3gVINaOYyb+eGksLgH1bvOSqrKPHAYXyaADAme8im3XxxYl73m7GAl4ziAKPW30d6QGA+pv+kQmKyjEyxbdfUYcbDMpUW6W4mJ13K3QPCDOJjqfDAADgi9f/MBNQvenCy2NwfsVt8dVsTf1/HnmhFB2D55WX8LF9vjDVuUoZA3rub9I9oEwAOFA3TlNzIcPVaj85WiuXFFlJ4HU9OXaJrnddY6VqKwECEwADeoa9ZBYW38MBGAg2eBm6UQZAG1pbWw1pALbhv+qeyQwAXtdz9GtF1DfcoRsA1OIrm4+K6mIbujA3h8pL81gRslEA0jEBAHCkeZaQFTJarwgGFBVYSODJjGwD0OYp0T2j6ANWhnQ04PldE2kDwExADQAKB1dDkptANhnwpABgDOBFDd//uoOJl14ARsdmWPIhHK/GjIRRNyTR5nKlDn8tTAB9z5gB6QJwzzvLlhxejor3cLC2VlUUGQYgXQZkIoI//PYWubzUrpgAUtovHXHoFkHk4f43MUuoz4Xzw5oANzRG26pKWcblen+xIQ3ALdJZBdIVQQBQ7IhrQDoAPJiYI58/TME4ALl2C80s+MldW77mADwY99Of/z1oaAldAgBy+npXAThCqMW/751hOTYkGtHyc6w06/PTjupn6PyltdOA/du8NDkTNAwAygKKnbbFVeDYNzfqEkEAgFr83jvjbPD8lRSAoFSOOOncxYtr5glmDADP6RthADxBSVz0ApkECMTeyI7FYqzyon2oVLdNQ4fwIjW2svWGxNyDbetuo8npAKnT9HpcezBgY4mdBJ7TL8y36WIAryhR1+LzYINHhvjOw2Ht2+HazmnLc9YSANQo/B+qWBWjUt6t0AAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"1_particle","particle":true,"mode":"bitmap","saved":true,"uuid":"50c5af51-eb03-5c79-c48b-de34340e7e64","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="}],"display":{"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,225,0],"scale":[0.4,0.4,0.4]},"ground":{"translation":[0,3.25,0],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,225,0],"translation":[0,1,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,90,0]},"fixed":{"rotation":[0,90,0],"translation":[0,1.5,0],"scale":[0.5,0.5,0.5]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/scene.bbmodel b/src/main/resources/assets/create/models/block/chute/scene.bbmodel new file mode 100644 index 000000000..7a686b94d --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute/scene.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"","parent":"block/block","ambientocclusion":true,"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[3,8,17],"to":[13,16,19],"autouv":0,"color":2,"origin":[11,16,13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"b311e08b-7eb1-f325-710a-b782685ce096"},{"name":"cube","from":[3,8,29],"to":[13,16,31],"autouv":0,"color":1,"origin":[5,16,35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"f9ec3a01-4c0e-1016-31c7-b90965f1e405"},{"name":"cube","from":[1,8,17],"to":[3,16,31],"autouv":0,"color":3,"origin":[9,16,25],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"fdf0d41d-6f8e-7b71-6b0e-cb61fe8991e6"},{"name":"cube","from":[13,8,17],"to":[15,16,31],"autouv":0,"color":0,"origin":[7,16,23],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"897440f1-e70b-52b0-27a8-42edb4c0eea5"},{"name":"cube","from":[13,0,18],"to":[14,8,30],"autouv":0,"color":7,"origin":[9,8,25],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"bcdb5da2-7af3-1584-365c-2bea85a4bc79"},{"name":"cube","from":[2,0,18],"to":[3,8,30],"autouv":0,"color":7,"origin":[9,8,25],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"4a532c7a-d9cd-6f89-c8da-0bdc1584cfd0"},{"name":"cube","from":[3,0,29],"to":[13,8,30],"autouv":0,"color":5,"origin":[8,8,36],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"c3e71d5a-5588-59f8-bfab-eab8004b886e"},{"name":"cube","from":[3,0,18],"to":[13,8,19],"autouv":0,"color":6,"origin":[8,8,25],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"7126992d-ed02-d8c5-0a8d-ef79e0ad1bde"},{"name":"cube","from":[13,29,17],"to":[15,32,31],"autouv":0,"color":2,"origin":[9,32,25],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"24c6ed60-fb2b-bfc8-9f26-a1a1069fb075"},{"name":"cube","from":[3,29,29],"to":[13,32,31],"autouv":0,"color":3,"origin":[9,32,25],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"e58fc898-7c20-514b-9964-c63559464c43"},{"name":"cube","from":[12,24,29],"to":[13,29,31],"autouv":0,"color":5,"origin":[11,32,25],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"1e80440a-b5f3-a4e9-9fbb-187e93f6063d"},{"name":"cube","from":[12,24,17],"to":[13,29,19],"autouv":0,"color":1,"origin":[11,32,23],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"80df8673-375e-0e2d-1105-e63a45339921"},{"name":"cube","from":[13,24,28],"to":[15,29,31],"autouv":0,"color":0,"origin":[11,32,25],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"01e5ed5e-f013-fd50-c4f8-a86903a22aaa"},{"name":"cube","from":[13,24,17],"to":[15,29,20],"autouv":0,"color":6,"origin":[11,32,23],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"eecfcc74-adbd-e4cd-cca2-2825f41022a5"},{"name":"cube","from":[1,29,17],"to":[3,32,31],"autouv":0,"color":3,"origin":[7,32,23],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"a56081d0-ee0d-4662-200b-bd48e1a827a5"},{"name":"cube","from":[3,29,17],"to":[13,32,19],"autouv":0,"color":5,"origin":[7,32,23],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"59f58a98-b74b-33ad-40e4-84699e3b7350"},{"name":"cube","from":[3,24,17],"to":[4,29,19],"autouv":0,"color":7,"origin":[5,32,23],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"c93d8afe-44e0-a6c0-eef6-eddd1179d252"},{"name":"cube","from":[3,24,29],"to":[4,29,31],"autouv":0,"color":3,"origin":[5,32,25],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"a7b45360-5cfe-95f3-a021-2987c8c9e5a2"},{"name":"cube","from":[1,24,17],"to":[3,29,20],"autouv":0,"color":7,"origin":[5,32,23],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"c424dc42-6a2a-5537-df58-048b5beed33c"},{"name":"cube","from":[1,24,28],"to":[3,29,31],"autouv":0,"color":6,"origin":[5,32,25],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"5b8ec8b1-c138-0552-68a4-ca66697bb9e9"},{"name":"cube","from":[13,16,18],"to":[14,24,30],"autouv":0,"color":7,"origin":[9,24,25],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"a788617a-e31b-3775-ec89-5ac482b2bf05"},{"name":"cube","from":[2,16,18],"to":[3,24,30],"autouv":0,"color":4,"origin":[9,24,25],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"91e8c105-c260-fdd5-6e06-13373d0c4321"},{"name":"cube","from":[3,16,29],"to":[13,24,30],"autouv":0,"color":5,"origin":[8,24,36],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"27c9f67d-6f35-f8b8-a68d-6b24247c1636"},{"name":"cube","from":[3,16,18],"to":[13,24,19],"autouv":0,"color":5,"origin":[8,24,25],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"ba0e5d2f-a244-0364-a842-f6ad7594d7fc"},{"name":"cube","from":[2,24,18],"to":[14,29,19],"autouv":0,"color":0,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"cfe1464b-179f-656a-447f-cc32f42b76cf"},{"name":"cube","from":[13,24,18],"to":[14,29,30],"autouv":0,"color":0,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"e2849527-341c-e300-0796-915bbeb49fad"},{"name":"cube","from":[2,24,29],"to":[14,29,30],"autouv":0,"color":4,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"694a8c4d-e2e6-9a4f-84e7-d44056c603e4"},{"name":"cube","from":[2,24,18],"to":[3,29,30],"autouv":0,"color":0,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"0df748e9-ea8e-0e4e-f327-bdfbdcd7c744"},{"name":"cube","from":[13,45,17],"to":[15,48,31],"autouv":0,"color":2,"origin":[9,48,25],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"36bbd02b-f243-4063-49c4-c4faf9795de6"},{"name":"cube","from":[3,45,29],"to":[13,48,31],"autouv":0,"color":3,"origin":[9,48,25],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"060dced1-0ce7-696a-c59a-fcc7477cccda"},{"name":"cube","from":[12,40,29],"to":[13,45,31],"autouv":0,"color":5,"origin":[11,48,25],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"a95f4f38-6586-ca70-6395-6bd91a40fed0"},{"name":"cube","from":[12,40,17],"to":[13,45,19],"autouv":0,"color":1,"origin":[11,48,23],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"7785ad17-f90e-63be-010e-e03f6c1eaf48"},{"name":"cube","from":[13,40,28],"to":[15,45,31],"autouv":0,"color":0,"origin":[11,48,25],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"b0ceec6e-60e2-8313-8bdb-0559728f486e"},{"name":"cube","from":[13,40,17],"to":[15,45,20],"autouv":0,"color":6,"origin":[11,48,23],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"9e6193d3-3d33-5cb0-e93a-1c7db0a249a6"},{"name":"cube","from":[1,45,17],"to":[3,48,31],"autouv":0,"color":3,"origin":[7,48,23],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"232f6a8b-bfec-ca00-c5fc-99cab97538e9"},{"name":"cube","from":[3,45,17],"to":[13,48,19],"autouv":0,"color":5,"origin":[7,48,23],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"ec1a321a-d7fb-33b5-5e6b-fdf7199255f2"},{"name":"cube","from":[3,40,17],"to":[4,45,19],"autouv":0,"color":7,"origin":[5,48,23],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"dbea5aea-e9d1-2ba9-eda4-092f73be8507"},{"name":"cube","from":[3,40,29],"to":[4,45,31],"autouv":0,"color":3,"origin":[5,48,25],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"6447fc7a-8a73-7776-7a63-2835011d269b"},{"name":"cube","from":[1,40,17],"to":[3,45,20],"autouv":0,"color":7,"origin":[5,48,23],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"ebc0a600-365d-0a80-ecbb-08bc9ac1c97e"},{"name":"cube","from":[1,40,28],"to":[3,45,31],"autouv":0,"color":6,"origin":[5,48,25],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"0f13b503-2239-49f5-60a9-df7ae15e38bb"},{"name":"cube","from":[13,32,18],"to":[14,40,30],"autouv":0,"color":7,"origin":[9,40,25],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"c54e39e8-9287-55ea-0308-2e7f4ab1dc31"},{"name":"cube","from":[2,32,18],"to":[3,40,30],"autouv":0,"color":4,"origin":[9,40,25],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"59189db1-85dc-b934-392b-2c00ccbf1a97"},{"name":"cube","from":[3,32,29],"to":[13,40,30],"autouv":0,"color":5,"origin":[8,40,36],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"13147572-41c0-b5ff-9bc6-0e7c62d23120"},{"name":"cube","from":[3,32,18],"to":[13,40,19],"autouv":0,"color":5,"origin":[8,40,25],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"15266cee-24f4-1675-b38c-5d19038d8b2e"},{"name":"cube","from":[2,40,18],"to":[14,45,19],"autouv":0,"color":0,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"4fef5453-0411-7c05-8f07-f88a4f4c0e87"},{"name":"cube","from":[13,40,18],"to":[14,45,30],"autouv":0,"color":0,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"e4a0f138-42df-176b-81e3-abf5b8c6193e"},{"name":"cube","from":[2,40,29],"to":[14,45,30],"autouv":0,"color":4,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"216c3aad-46bc-db1f-4c17-2341b06a103d"},{"name":"cube","from":[2,40,18],"to":[3,45,30],"autouv":0,"color":0,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"0ee86d43-966e-cedf-fb6d-1e1b805566f3"},{"name":"cube","from":[1.9,-12,1.9],"to":[14.1,10.666,8.1],"autouv":0,"color":3,"rotation":[-45,0,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,10,11,16],"rotation":270,"texture":3},"east":{"uv":[13,0,16,11],"rotation":180,"texture":3},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[13,0,16,11],"texture":3},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"40801c7b-1b87-e0d8-2eed-af4769550651"},{"name":"cube","from":[1.1,-12,7.9],"to":[14.9,10.666,14.1],"autouv":0,"color":0,"rotation":[-45,0,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,3,11,10],"rotation":90,"texture":3},"east":{"uv":[0,0,11,3],"rotation":90,"texture":3},"south":{"uv":[0,3,11,10],"rotation":90,"texture":3},"west":{"uv":[0,0,11,3],"rotation":270,"texture":3},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"b14fa0aa-11b8-6639-07a4-8993c6270dcc"},{"name":"cube","from":[3,-8,17],"to":[13,0,19],"autouv":0,"color":2,"origin":[11,0,13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"253c5a9a-9eb6-2cf5-bc5d-ac45c09f440b"},{"name":"cube","from":[3,-8,29],"to":[13,0,31],"autouv":0,"color":1,"origin":[5,0,35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"92e4d21d-714b-0131-35b9-fd03d89ebd71"},{"name":"cube","from":[1,-8,17],"to":[3,0,31],"autouv":0,"color":3,"origin":[9,0,25],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"026a32a4-e784-e591-675d-1cb144abb631"},{"name":"cube","from":[13,-8,17],"to":[15,0,31],"autouv":0,"color":0,"origin":[7,0,23],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"4d444f2d-cfd7-fdaf-8850-5c913bf1c6b9"},{"name":"cube","from":[13,-16,18],"to":[14,-8,30],"autouv":0,"color":7,"origin":[9,-8,25],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"bbea4be6-1f82-205b-a53f-8ad1efe01ae4"},{"name":"cube","from":[2,-16,18],"to":[3,-8,30],"autouv":0,"color":7,"origin":[9,-8,25],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"9d74769a-a0d9-cf08-5470-cb2c1acac4a7"},{"name":"cube","from":[3,-16,29],"to":[13,-8,30],"autouv":0,"color":5,"origin":[8,-8,36],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"bbfb3afd-9bef-7d8c-34a5-2e9099daa9ac"},{"name":"cube","from":[3,-16,18],"to":[13,-8,19],"autouv":0,"color":6,"origin":[8,-8,25],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"c72cabb0-7553-c7cd-3438-bca07fff1a4b"},{"name":"cube","from":[2,24,-14],"to":[14,32,-2],"autouv":0,"color":5,"origin":[8,40,-24],"faces":{"north":{"uv":[9,4,15,8],"rotation":180,"texture":0},"east":{"uv":[9,4,15,8],"rotation":180,"texture":0},"south":{"uv":[9,4,15,8],"rotation":180,"texture":0},"west":{"uv":[9,4,15,8],"rotation":180,"texture":0},"up":{"uv":[5,10,11,16],"rotation":180,"texture":3},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"9b36b49b-2b79-2ea7-96ab-85b749cb84c8"},{"name":"cube","from":[2,21.5,-14],"to":[14,24,-2],"autouv":0,"color":2,"origin":[8,40,-24],"faces":{"north":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"east":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"up":{"uv":[9,9.5,15,15.5],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"794b22a0-5dfb-6928-0997-500295f2cf22"},{"name":"cube","from":[1.9,-12.25,-20.85],"to":[14.1,10.416,-14.650000000000002],"autouv":0,"color":4,"rotation":[-45,0,0],"origin":[8,24,-31],"faces":{"north":{"uv":[0,10,11,16],"rotation":270,"texture":3},"east":{"uv":[13,0,16,11],"rotation":180,"texture":3},"south":{"uv":[0,10,11,16],"rotation":270,"texture":3},"west":{"uv":[13,0,16,11],"texture":3},"up":{"uv":[5,10,11,13],"texture":3},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"13340ea7-a01f-8c76-1964-a22a22b3dbd2"},{"name":"cube","from":[0.9,-12.25,-14.850000000000001],"to":[15.1,10.416,-8.650000000000002],"autouv":0,"color":6,"rotation":[-45,0,0],"origin":[8,24,-31],"faces":{"north":{"uv":[0,3,11,10],"rotation":90,"texture":3},"east":{"uv":[0,0,11,3],"rotation":90,"texture":3},"south":{"uv":[0,3,11,10],"rotation":90,"texture":3},"west":{"uv":[0,0,11,3],"rotation":270,"texture":3},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"3fe22056-138b-f2da-d542-df4b57f4f48f"},{"name":"cube","from":[-13,56,-15],"to":[-3,64,-13],"autouv":0,"color":2,"origin":[-5,64,-19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"e039d864-44f7-4cca-f96d-2c36682a6cae"},{"name":"cube","from":[-13,56,-3],"to":[-3,64,-1],"autouv":0,"color":1,"origin":[-11,64,3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"33e26015-b003-3c5e-fe9b-ffca555095d3"},{"name":"cube","from":[-15,56,-15],"to":[-13,64,-1],"autouv":0,"color":3,"origin":[-7,64,-7],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"698cbeaf-3c8d-a0dd-c349-6b88deed5ebd"},{"name":"cube","from":[-3,56,-15],"to":[-1,64,-1],"autouv":0,"color":0,"origin":[-9,64,-9],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"accfef3a-47b9-2b64-b224-b7e6345b8ec2"},{"name":"cube","from":[-3,48,-14],"to":[-2,56,-2],"autouv":0,"color":7,"origin":[-7,56,-7],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"cc369bf6-3229-04ee-06f0-2798461877db"},{"name":"cube","from":[-14,48,-14],"to":[-13,56,-2],"autouv":0,"color":7,"origin":[-7,56,-7],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"6b70fee3-50ad-d05c-cbed-a3384ac2b9b0"},{"name":"cube","from":[-13,48,-3],"to":[-3,56,-2],"autouv":0,"color":5,"origin":[-8,56,4],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"928f084e-5f01-bcc5-9b4e-fd5f07ad947c"},{"name":"cube","from":[-13,48,-14],"to":[-3,56,-13],"autouv":0,"color":6,"origin":[-8,56,-7],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"da7ebe8d-ef12-4e82-99a6-1c5a98dba9b2"},{"name":"cube","from":[-15,40,-13],"to":[-13,48,-3],"autouv":0,"color":2,"origin":[-19,48,-11],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[9.5,0,14.5,4],"texture":0},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[9.5,0,14.5,4],"texture":0},"up":{"uv":[1,0,6,1],"rotation":270,"texture":0},"down":{"uv":[1,6,6,7],"rotation":90,"texture":0}},"uuid":"277e446e-a979-c2d5-17ba-f388c07c5bae"},{"name":"cube","from":[-3,40,-13],"to":[-1,48,-3],"autouv":0,"color":6,"origin":[3,48,-5],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[9.5,0,14.5,4],"texture":0},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[9.5,0,14.5,4],"texture":0},"up":{"uv":[1,0,6,1],"rotation":90,"texture":0},"down":{"uv":[1,6,6,7],"rotation":270,"texture":0}},"uuid":"dc2bf280-beb6-8b99-318a-05aa0fda0e77"},{"name":"cube","from":[-15,40,-3],"to":[-1,48,-1],"autouv":0,"color":0,"origin":[-7,48,-9],"faces":{"north":{"uv":[8.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,9.5,4],"texture":0},"south":{"uv":[8.5,0,15.5,4],"texture":0},"west":{"uv":[14.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":270,"texture":0},"down":{"uv":[0,0,1,7],"rotation":90,"texture":0}},"uuid":"3c3bcc31-6477-07c2-a914-df85c20c0ef0"},{"name":"cube","from":[-15,40,-15],"to":[-1,48,-13],"autouv":0,"color":2,"origin":[-9,48,-7],"faces":{"north":{"uv":[8.5,0,15.5,4],"texture":0},"east":{"uv":[14.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,9.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":90,"texture":0},"down":{"uv":[0,0,1,7],"rotation":270,"texture":0}},"uuid":"298df166-633b-0ba3-eb24-56c9ccf4a676"},{"name":"cube","from":[-14,37.5,-14],"to":[-2,40,-2],"autouv":0,"color":7,"origin":[40,8,-8],"faces":{"north":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"west":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"up":{"uv":[9,9.5,15,15.5],"rotation":90,"texture":0},"down":{"uv":[9,11,15,15],"rotation":270,"texture":0}},"uuid":"7f3b8b84-d9b1-c50e-6686-ae6cc00c75a0"},{"name":"cube","from":[-14.100000000000001,19.999999999999996,-14.100000000000001],"to":[-7.900000000000002,42.666,-1.8999999999999986],"autouv":0,"color":3,"rotation":[0,0,45],"origin":[-8,40,-8],"faces":{"north":{"uv":[13,0,16,11],"rotation":180,"texture":3},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[13,0,16,11],"texture":3},"west":{"uv":[0,10,11,16],"rotation":270,"texture":3},"up":{"uv":[5,10,11,13],"rotation":270,"texture":3},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"6f1aadde-8b4a-cd1c-d46f-130c53e74918"},{"name":"cube","from":[-8.100000000000001,19.999999999999996,-14.899999999999999],"to":[-1.8999999999999986,40.666,-1.1000000000000014],"autouv":0,"color":6,"rotation":[0,0,45],"origin":[-8,40,-8],"faces":{"north":{"uv":[1,0,11,3],"rotation":90,"texture":3},"east":{"uv":[1,3,11,10],"rotation":90,"texture":3},"south":{"uv":[1,0,11,3],"rotation":270,"texture":3},"west":{"uv":[1,3,11,10],"rotation":90,"texture":3},"up":{"uv":[0,0,0,0],"rotation":270,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"434c4f12-bb25-855e-c94f-1904252cbf05"},{"name":"cube","from":[-13,45,-13],"to":[-3,46,-3],"autouv":0,"color":3,"origin":[-8,40,-8],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[11,11,16,16],"rotation":270,"texture":3},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"5710efe0-1f83-e83d-6f5a-2d46b42084c8"}],"outliner":[{"name":"block","uuid":"45951789-9635-6d12-0303-f2c5149bdeff","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"8af20f6a-924a-a997-c65b-d0a3390ebd43","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["b311e08b-7eb1-f325-710a-b782685ce096","f9ec3a01-4c0e-1016-31c7-b90965f1e405","fdf0d41d-6f8e-7b71-6b0e-cb61fe8991e6","897440f1-e70b-52b0-27a8-42edb4c0eea5"]},{"name":"ChuteBase","uuid":"c37b655b-63f3-5e92-5f68-d42eca57318b","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["bcdb5da2-7af3-1584-365c-2bea85a4bc79","4a532c7a-d9cd-6f89-c8da-0bdc1584cfd0","c3e71d5a-5588-59f8-bfab-eab8004b886e","7126992d-ed02-d8c5-0a8d-ef79e0ad1bde"]}]},{"name":"block_windowed","uuid":"47d71345-71f6-7e1f-d370-be8e0aab59e9","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"b6c5872e-3c80-979e-1e17-c2b5772f44e9","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["24c6ed60-fb2b-bfc8-9f26-a1a1069fb075","e58fc898-7c20-514b-9964-c63559464c43","1e80440a-b5f3-a4e9-9fbb-187e93f6063d","80df8673-375e-0e2d-1105-e63a45339921","01e5ed5e-f013-fd50-c4f8-a86903a22aaa","eecfcc74-adbd-e4cd-cca2-2825f41022a5","a56081d0-ee0d-4662-200b-bd48e1a827a5","59f58a98-b74b-33ad-40e4-84699e3b7350","c93d8afe-44e0-a6c0-eef6-eddd1179d252","a7b45360-5cfe-95f3-a021-2987c8c9e5a2","c424dc42-6a2a-5537-df58-048b5beed33c","5b8ec8b1-c138-0552-68a4-ca66697bb9e9"]},{"name":"ChuteBase","uuid":"48397e85-5f56-8f2d-6e04-98942194088f","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["a788617a-e31b-3775-ec89-5ac482b2bf05","91e8c105-c260-fdd5-6e06-13373d0c4321","27c9f67d-6f35-f8b8-a68d-6b24247c1636","ba0e5d2f-a244-0364-a842-f6ad7594d7fc"]},{"name":"windows","uuid":"b73e1858-e389-6f03-a095-36f3ae96f208","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["cfe1464b-179f-656a-447f-cc32f42b76cf","e2849527-341c-e300-0796-915bbeb49fad","694a8c4d-e2e6-9a4f-84e7-d44056c603e4","0df748e9-ea8e-0e4e-f327-bdfbdcd7c744"]}]},{"name":"block_windowed","uuid":"654529a0-a8d9-0b64-b7d4-9577efb836d1","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"2a345c4a-6dc5-a6b3-5b79-3e25134f427a","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["36bbd02b-f243-4063-49c4-c4faf9795de6","060dced1-0ce7-696a-c59a-fcc7477cccda","a95f4f38-6586-ca70-6395-6bd91a40fed0","7785ad17-f90e-63be-010e-e03f6c1eaf48","b0ceec6e-60e2-8313-8bdb-0559728f486e","9e6193d3-3d33-5cb0-e93a-1c7db0a249a6","232f6a8b-bfec-ca00-c5fc-99cab97538e9","ec1a321a-d7fb-33b5-5e6b-fdf7199255f2","dbea5aea-e9d1-2ba9-eda4-092f73be8507","6447fc7a-8a73-7776-7a63-2835011d269b","ebc0a600-365d-0a80-ecbb-08bc9ac1c97e","0f13b503-2239-49f5-60a9-df7ae15e38bb"]},{"name":"ChuteBase","uuid":"45c5489b-8e54-bcaf-12ee-3e1a398c8420","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["c54e39e8-9287-55ea-0308-2e7f4ab1dc31","59189db1-85dc-b934-392b-2c00ccbf1a97","13147572-41c0-b5ff-9bc6-0e7c62d23120","15266cee-24f4-1675-b38c-5d19038d8b2e"]},{"name":"windows","uuid":"e27dacfb-c052-5f06-815e-9ddac3452276","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["4fef5453-0411-7c05-8f07-f88a4f4c0e87","e4a0f138-42df-176b-81e3-abf5b8c6193e","216c3aad-46bc-db1f-4c17-2341b06a103d","0ee86d43-966e-cedf-fb6d-1e1b805566f3"]}]},{"name":"alt_block_diagonal_straight","uuid":"d2be5349-affa-19ba-6e7e-389b37e59f19","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"7062be0d-82e1-7200-e062-251e14653cc2","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["40801c7b-1b87-e0d8-2eed-af4769550651","b14fa0aa-11b8-6639-07a4-8993c6270dcc"]},{"name":"group","uuid":"57b24a7a-2597-b2d4-3959-ccd1ab696bc2","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]},{"name":"block","uuid":"973c3003-b9e2-f4a5-671f-6cc6852ee598","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"0864bc0a-7eab-3006-9693-4dfd6e3b01c5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["253c5a9a-9eb6-2cf5-bc5d-ac45c09f440b","92e4d21d-714b-0131-35b9-fd03d89ebd71","026a32a4-e784-e591-675d-1cb144abb631","4d444f2d-cfd7-fdaf-8850-5c913bf1c6b9"]},{"name":"ChuteBase","uuid":"b0783e35-18fe-eb7c-207f-c4aa7aea679f","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["bbea4be6-1f82-205b-a53f-8ad1efe01ae4","9d74769a-a0d9-cf08-5470-cb2c1acac4a7","bbfb3afd-9bef-7d8c-34a5-2e9099daa9ac","c72cabb0-7553-c7cd-3438-bca07fff1a4b"]}]},{"name":"alt_block_diagonal_t","uuid":"bdd30392-ed7a-b780-083c-4526c3256893","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"201e8b09-23cc-5057-3964-fb3f0ab1c181","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,24,-24],"children":["9b36b49b-2b79-2ea7-96ab-85b749cb84c8"]},{"name":"alt_block_diagonal_start","uuid":"eb35b5c8-7ffe-8905-0b53-22b99e47f683","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"fcedcfd9-ce29-d4bb-92ef-6e6554cef241","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["794b22a0-5dfb-6928-0997-500295f2cf22"]},{"name":"alt_block_diagonal_straight","uuid":"4213eca7-0863-97c4-5a9e-33de9dbe0ab1","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"0222bd50-564d-5bac-9417-58b00a126b7b","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["13340ea7-a01f-8c76-1964-a22a22b3dbd2"]},{"name":"group","uuid":"3a4b4f95-d28a-b31a-2562-4505d8b4567b","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]}]},{"name":"alt_block_diagonal_straight","uuid":"179d0014-4a6b-8e46-aa63-a8c7f6f8b2f1","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"5bd95880-36d9-141b-c715-cc9f5d246c5d","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["3fe22056-138b-f2da-d542-df4b57f4f48f"]},{"name":"group","uuid":"f73034f7-0837-4d0c-5473-7a55e40da304","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]}]},{"name":"block","uuid":"d791ab8f-5d78-64d9-8e53-d41160f7343e","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"6c03593a-c99c-9e12-0afe-65f33c45a864","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["e039d864-44f7-4cca-f96d-2c36682a6cae","33e26015-b003-3c5e-fe9b-ffca555095d3","698cbeaf-3c8d-a0dd-c349-6b88deed5ebd","accfef3a-47b9-2b64-b224-b7e6345b8ec2"]},{"name":"ChuteBase","uuid":"8491a876-56bf-9e5d-c932-5add8363e5b0","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["cc369bf6-3229-04ee-06f0-2798461877db","6b70fee3-50ad-d05c-cbed-a3384ac2b9b0","928f084e-5f01-bcc5-9b4e-fd5f07ad947c","da7ebe8d-ef12-4e82-99a6-1c5a98dba9b2"]}]},{"name":"alt_block_diagonal_start","uuid":"53cb600a-6ec6-7f57-8486-a277c1158c36","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"57236fe0-74cd-e71a-2765-a58625143892","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["277e446e-a979-c2d5-17ba-f388c07c5bae","dc2bf280-beb6-8b99-318a-05aa0fda0e77","3c3bcc31-6477-07c2-a914-df85c20c0ef0","298df166-633b-0ba3-eb24-56c9ccf4a676","7f3b8b84-d9b1-c50e-6686-ae6cc00c75a0"]},{"name":"alt_block_diagonal_straight","uuid":"251a2b9a-2deb-b3ac-4845-80c1996f33cd","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"51684bc8-e7ac-b902-58db-2a9a494f61c5","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["6f1aadde-8b4a-cd1c-d46f-130c53e74918","434c4f12-bb25-855e-c94f-1904252cbf05"]},{"name":"group","uuid":"fe1cb35c-17e3-e008-825d-4fd55e08bf91","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]},"5710efe0-1f83-e83d-6f5a-2d46b42084c8"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\chute.png","name":"chute.png","folder":"block","namespace":"create","id":"13","particle":false,"mode":"bitmap","saved":true,"uuid":"6fb1e05d-c758-ab0b-eb9f-4cb8b3a08cfa","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFoklEQVRYR51XT2gcZRR/829nd5NsNkIMSVGkFKrS0sA2baq1QU/NKSihNB706EXBi6eCB0E8eNWDIF56qSEoObUXWxpRUEncUlNIjEjqP6wpaTa7O7MzszPye9M3fjOZthsfLN/MfN9+7/d+7/feN6PNzMxEtm1TGIZkWRZ1u12CGYaRe411uq7T+vo6r6vX69rUmZei6tAA35dLJR4rpRI1HIdHGK5hbcchr9Ohdtuj60tXNW12djYaHx+njY0N8n2fQciIP+BaDHNjY2O0urpKm5ubCYDps2ejyRMnaOXGjVwQ4lj2OXbkCP2wvEyXr1yJAWCiv78/cQRGOp1Ocq9e4DlALSwsaPIcDFgFnfr6+pgBRJllQgXRarXI98KYAaSgXC7zXnCMX6VSYfqxUEwANZtNfqQCAAMF207W5jmXSYCDIQ3MwNzcHGtADFEIGOig3W7zfRAEzAp+eLa4uJgwoAIQ57KfaEEci3OMe1IgQEzTZCbEhAlhYXt7OwUAKSiXC5RlQZyr0SNyToeIUKoAAsNPZUAcSvT4I1KAKpifn08xMFGrsbAAQmUhj4E9IkS0cC7UCwOSAhUABAgQagqyIsQ+avmpTCAVKRFmqwAMqPSDBQCAiQayVYC50dGnIssyiSgk07QoCPxkLBaLFARxf3GcuIq2tv5gBlNVAPXDwAAM1dFoNBLnkgKMahXg/tChZyNdh1i7VCza5LqdZKxUBhIxx/sX6NategxArQKJHJHiWoBkGchWATaq1U5Gnufxf0zDYNDSTUulEjnogL7PI3rOysr3MYC8RiSqzQJ6UBVg/fHjkxHmh6pV7iH4QVeu6zKTCCKKImq12wwsAYAqmJiYQE9ndWMSIwwbIFo8E4EODw/zOaCKEHMQojAHZ5ZlUKlkU6vVoULB5NzLvpqm0dLX1/7TABypTrGhegaodOIwytMAAMS6KZDnBWQV4l6CusfenQ5EqXP9wxIAQvel+hpvcHh0kNb+2qGnx6oyxeP44yNJ3acm7t+gG0ovMEyTWQt8n0ycsEFAeAYwsgZdkDWgAjg/fjj3vn7n7+hRAESEBYXNrAj9IGCRQgvLy9+lAXx4fTl6Z6qWilIc9wLg1ORp1gAUHr9TRGTbBc49ytLzfELuIUJo5ObNHx8NAOzAeS8pAANowfkagIgjjhz62Gk0e2NA0tMLAwBQHRxg9QdByMpnMVom6brGb1y5AKSFvnXxc8qmQAUwfexkqoVmhfj8c2ci5Lwy2Mfiw6EU+AHphs6OYRCj73fJdT365tulOAXSQt+b/5J+22nmgkCFvHvuZW6hTz4xQo7jM9XYWK4bjbhfIHKUm24YnHM4hfCgC2EAJZkAEPW+9tGn7PxBYjx3+kUW2EB/P029cIqPXpjUNYRVLBYYAEqOoojFhjIE/QIGaUkBkBZ64eIlkjK88MXl6P1XplMl+cHrr3KEACBvwJKGe9u71Gy1CBoAAG5WmkY4BbkRGQbwUNgNWBcpANJC3/7kM6bo90aL7t29k6T46MGDfP3xm29wFEOPxSdmqVgkx3WTceufbaYaqUHUvucxYLCBfaGL3BTst4UeODCS1whp/edfEwawQDfARHwgQQearjMIaAZsJY1ovy20Wq2mPjrk4+OntV8SDWSd4yzAUQ0G9/QBaAALQOnDDHQjt7WjzyRfPOIc4+3bf/4/ET7Ua87k3PnzcVFnTAWAI8Yw4yM87IZkFSxyHYcbFPoAyvTqta/SrbhXIHh/kLXyFYT75m78ESNlGIUhhWFEvh+QbcffnBAkKgaW9IFeHcs6AEBpqd8AmMPGiAwAwEAUhWQXi+Q6LiqSozcMjZpNl9xOZ+9Z0CsQVI3aiHDE4jtP7QN5KWjs7PI5gSrAq/me43g/ALAW9Q6TTohjFmK27r9Rywst1shLLSIv2naKgX8B17EnXWhPQ1MAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\zinc_block.png","name":"zinc_block.png","folder":"block","namespace":"create","id":"particle","particle":false,"mode":"bitmap","saved":true,"uuid":"346033bc-9488-c94b-dd63-ea9ce9b903d9","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdElEQVQ4T32TPU/bUBSGH8dgJ3FsJxCSsKRIHTJAQa0Ea7sx9a+0iI0KqVKl9v8gdUQsHaAURSwdUBW+CgKSkk/bcRzbt7KjtIBoj3SHe690z/vc9z3Sm7ebwjDSJKQEwwCEIK4wFAghkCSQExK+HzAhh/F+fG/3h0ibmx9FpfKMcrnM2dkZqVQaXddRlEnUpEKv62Lbv5DlNBcXPykUSgyHLq7b5+joO9LGxgexsLCM7w8Jw5DJSSXu4nkuxeIMtu3GjzabHQxDRVFkul0Xx7E5OPiKtLb2XlQqSySTqZG2OxU92mzeEAQBQkTr7+Vw6FGv30QIn8Ty8kuKxQJXV5fkctNkswbHx8cYxjStVhtd1zg5+UE2m0OSBJqW5PLyhsPDgxHC0tIKnheg62kcx0PTVGRZod3ukkzKWJaNpqVwnCHJ5AQzMya3t112drbvI0R/EFUkudV6XPoY4h7C/Pxz5uaeUqvVyOdLyHICWQ6o15u0Wg3y+Tzn5yOHTNPANHVkGba2Po8QVlZe0e8PMAwFRZnAsjympzP0egMsy8GyeoRh8MehqHsuZ7K9/QDhoQsR0r9w7iGsrr5G1w183+X6uhF3CgJBp9NFkqTYYlVVaDTqcciuri7QtAy7u19GCIuLyzFfJNtxBnQ6Fp1OJ5ZeLj+h0WgwNTUFCHo9J3ar3baoVvceD9L/pD/qwt0gRWEJwwSJxMgFw9A5Pa1RKs3GQSsUZvH9QRzl/f298Sy8wPN8MplRkFRVJp836fWizPdJpbQ4VKYZzcIE7baN4zhUq9+Q1tffCVVV48+6W9E4d7t2fJTJpLCsfjxs44pG3XVdfgM1m36TOejAKAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"3_particle","particle":false,"mode":"bitmap","saved":true,"uuid":"6d143b15-4074-ed18-c8be-08ddcadad759","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\chute_diagonal.png","name":"chute_diagonal.png","folder":"block","namespace":"create","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"6e635327-47a2-2f70-6ae8-60d630c1340c","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFOElEQVRYR61XW28bVRCevdrrOK3d2E4Kfa3EQ1sUTGmgNC0lkIQHov7U5IVUipAKDwihUKqg9g+kiR3b8XW9dy/6xj6bzXoNW4l5OXu8s2e+uX1nLG1tbYVLS0sE6XWHVCjoNB67vIfE93iOS1JPz+XIdRz+/tUvP0tx3Xr9UVirlqOzR6ZJZ2dNkp5uPg+fP/ua/nzz5sqoYdDYsqI9DoXAAAR7YSy+4t2n9+7RH8fH9NPh4TUA9++vhy9+/IFe/fobOY5D5nhM/f6QJEQAH1YrFVrO52lo27w2u11aLZd5DzAFw6DiDMDIcfgZ6w3DoIFlRYBN0yTPncxH4LMvwlrtFjuACA2GQ+p0OlMAmqqyRzASByHAYIWEYUiSJEU6wrgIFYAuSsHDzzfC1bUKWWObbNsl13Wpc9mdpuDpky85bKVSKfJWpACger1e9I7rwjCi9CQjsCgFAPDRx6scfttyyDQtal5cXKVAFGK8cESu034DCGE8HolWu52ago1Hj8OVlZukahpHqdsd0kWrPQXwf3WB63nkeyFpukxHR0fXilBEAMZN0yHLmkUg3gWFQoHG4zFpmsZOe55H+E3XdUJxYUUdxPeTyYR83+dvWq0WPd7YoL9OTmh/f38OQKVS4lrrXg6uAIguqNVqkQEcqKoqF1xWATCARHFBDg4Orn28+eSb8NnmV3T8+jU5jkeu61OjOeMBw9CouLxMxWIxsgePEAHuf12PDs7lchwFYUi8E78BRL83mmtDkQJzNCbLcq53AQCsrq2xxzAgyzIhtGKNR0FRFAqCYC4wo9GID0WVI8+HL1/OMaH4SOj5fkDS7s5OqOk6oRBhPK0b4hFIRgSeA5Bt25wCRZap0Wh/GBXfLBU5/DAkgMATiGEYbACo8QyJ70Wk2u02Rw2ckZaChVSMLgAAGAcIAeBDio+5fVaAi2qgnkLF/f5gyoS3b1cpl89zDVSrVfYQuUZL/pcAOAD0+32OElLhue5cDaRRMTNhsgZQB2hBISLHovgWraIGRsMhWZa3sAviVBzdBUiB6IByuXzNaXzwb0UI5XhrNs7PUwGkUfHZ+TlJe3t7fB2j73GQWEURiltQsF1yL/ofIKFz2emkDiRpVNwfDKYA1h88oL/fvWPP42QkjKGwwAlIDQDG98i7IC3ofHL3bupAAgBJKuYUgIoxQJTKy8z7YD8ciMMQBRjFbyICyT0iIKgb66KBJI2KT9+fkQRk+Xyeqxci2A8Ho6893+ca4HeSRFl1j49/T70N41R8+r4xbUMcns+r5PsTUjWFDfqex3d34Pt8cXR7AyrOhtcsukkAGEqTVHx52Z+2YX19nW8pWVGmEQgCfgYIvDt5+5ZOTxuEqTarrut6lMuBI64mbNdFR00HWyHS7s5uqKgKBX5AWMOQaBL40eSCewJAWu0e1aq3WCeLLgBAhFGscRFApJ3t7RDkIskypk4K+BaEEY8QMwyskzCkZrND1UqJGTKLLgAkjSZZFSC4DV3HZc/gKSYWVD0KDjXg2DYpqso33J07a5RVNzOA7e+3wyCYkK5rJCsyhZMJG4SA0/EsUlBZKVFW3SwAYCNKAbyF57jP+YpVFF7RjojGeaMdpSCLLgaULCJtfftdqKoyG8LB8BaFh/aTZIUwFqIrLlpdKpduUFbdLBGIakD8mUD+o/4PAgbxsF5nagUA1EBW3XgXLIoEA0AXLFLwvIDyxhRUu9PnFGTVFRGAkXg3iH3UhmAoXCj6jP9hID54YgzDnwi04rSvs+niehcklCQgQVBY/wHt2fUUQWzx1gAAAABJRU5ErkJggg=="}],"display":{"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,225,0],"scale":[0.4,0.4,0.4]},"ground":{"translation":[0,3.25,0],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,225,0],"translation":[0,1,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,90,0]},"fixed":{"rotation":[0,90,0],"translation":[0,1.5,0],"scale":[0.5,0.5,0.5]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png index ebb320b809db60ad73e8d32c1990012ac06e12cd..d7c1b0a50a27ab8401ae4963bcc9be7628b5f0b4 100644 GIT binary patch delta 1605 zcmV-L2DPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi zzW@LZzX3P}QzQTY1?oveK~z{rjhD}FR8mI zH;oBa7cTe%x-_!T7~@tK{ulmeB1>JUNkvgouqCp9n$QFjjDMik4(-fzrZdm;Igc~E zc~h+4;Tuhxf z{&G0HYe=69`Mk=q$XcVJ5-5SFg9+?nfR@c_=+}=#VRwN_udiP*5U}vN`KW zp2x<<+@>55M}MJ^afippb&djH%8?A#?YF7PNqvWNJQkLgmh=ad0LU0vvjJ9CR&1Wa zdL~$N{=x;O>VYH)V4eXNE?(4kILB+Z+d46;u)JI@yOEI*o!c<5ABb|50BefHqRvsC z41>Ye*~>e?!>w^8>2zAy)pZULo*DK#WR1jjh+7)>Kz}?0+O?wfD$0dkc0ti4Lnq14!2Gw|Ek!PM5L4Sbvy5hw^-f8z_E|(J-^^ry+djIIr=k)!)DzJE)A{tO!Ibi>GC>9H%D5FYq zxon@rlj*dtV`!-0Mn|h6hja{70od5sP{mY(<%InX+3iSFDnq)bQYpKlocYkmE>{)> zCM!}=`FkON=*g2Ob@Ww%S#EPkm`4n8qH&~BQGY~+B$SycxzF4hRRVKmV3?qV-rBY5627#|@kir`!$un||(QCz&A}|R7 zYe@DX;yKoe2Y`1dFO=uDqkUPQ#4D#xh1B=L<;%{OywL;}Bho^)BVlBXK4E)ao0-w``Ut!}KGstbf4*|( zcDNIPBS(>yarrM4@@nKI4R;A^o5&L`Z6Mo;mZTo)_&D{I(V)q5Kz`wOjx6S}3@3^{O@*hTVpnv3A{- zET`nM@)d*xI__2b06c4<;M1k+p?`S*5)5ll)gpQAFpEYMNXF9_ z!fw<}lSmyu_L3?fj>IRB7!ne?7B3PnVrp*QyLY$BB$j_&al;Z$asYUKTKP|ilRLR?2JBTpQAL3=r{YgSywGdrmqLw^Vh@ck&{ zh7>K74d&7Zq0wyWe?^neKHa-!#pTVLw=_xd0DYgJ^C{OPl=mO`w_KZ}+<$=bP^|9AJ+RekYe?|`pJ@649x(LXh`=X{*W8Emm)$#G ze5vD?8#lBJ8HV`(00yf7fMOJ7vfPY3o%1_HK)hr%1XEK}dMV*%j3?+^<`FIpz^-L0 zH*SU`E#GuNy|-Ik&FuSCFc^Z`+Ffl@Q~|_$RluKxg$2!2yOJ4_%0BIeG=Kg_l>p@c z7vEj4YfG-xHr!p2jE#+^`}5AKCf{Fw*EAvT!?}L}#6WUR6M;4O00000NkvXXu0mjf DtM3FD literal 3744 zcmV;R4qx$!P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3yqax1$Hh5vIESpp|;SPsXk>>$g}2eKv0zRpX% zRIIYZ=7iw@2WYeY_0Mho!JijNCQ2@;reyhxHCEpk6np>fue0%dpFjUB@%(MxycaxE zf!}Z+(|Yzd=H=@^j?aAmK5z1P?kUej&%*1%ppsSEv#&fC1%Kz=^K9yKuEh^?p8v6~ zCGNTO=X11yo2Bm-|aoi-s@V|V!~6&JVw1tIU_c9Tp7-> z#3%Ew7w7Y-dkrl@|j=nhYx42gzT#yK_Q6x zaogum!!)6Q%>cE)w14a3j@)|W4Ofsn9Xq|_GN)+%{FvV+|Ci7EqP;bAowMcbEA;Xj zfT*F!={LIo#O=qYa{PNf<|A(G2e1JI<+!tIicIm0-UV80q5I!Rg8ENEEMjdVX87ApJ)68a; zS!Y{r5lSmAS!v}}R$XlqYdh??Wv88Y*>$%!Y7eU4QFA|#`)kzPgPI~1&%XSH8q+zy zu5d~xqL_i0j}FAMB0xZU#mp8LqgUhMNi`x4y5ab9I%rhVNzb z&;#C0jUVgMYNn~sRoq&Rg{X3RVNP%p=}Tr~8}?fb7ik-)(4R|FVFx;r>fpoU?F8QSN|KXEY|>#YlayLdnkRO)Gg+U3OFYHLi!Fmg;`4Vcw={ zui8zEzbcfHYECzTXf=(4V>6H6C94~8;cE40lhtq69!6#1Q1utejN@^utLE5%zG_3f zx}yk%WGr<#k@I-}dK_UF14}(nIFZL)W17dU2ZZbP7M1h#xJ?8cHW8aMLWvx^ccPx^ zZ=Z3Rahsz~zwT2L-q38NEUjw(V)&X2SDs>tgOQ zWRhuI&$*-Var<>?PFB5gARv{!SqB$-9N)=Y4p)Um{rc!Hs{i+xxq;%N;?X2(pae5D z<^W5D3f20mXRn@0Mt78_G6G?>aD1L!2v@E&V`jiMrq(N z3L03%wyL?{lGgP=!Oe!4KT*`{#s8@P)@X}YOOKcc5JedYI_0P3JH}OA8pMVgusOWu zUf#SAZpTVEx1%}Kq7DWf?K!IILkyh!Aiq$o^%%l12{)ec)`D?y(ti)uGZHJ8D zz#Bpnbuic$ebA6P4DvioV&V0GekR?gxn_1*YLBz|fx7benL?VB$z&6LY5PhKIVgU0 zhq(nhh9^SX6&fjR;DV8$MVA*2*Mo^P7?T)_fC%cnu60)+z%H92=d?SXCt7Bwy3wBArkgobwvPiwPe#iYWySnA%T6}f zGmgwbEO)3}q0Dc!1R&ffF>1EF8RA*>g3A%A;u@BGzhfz{8hye}tJ$$AX$2uMtJ$AV?}uAkG%|S!kqT-F z9c7JN15Fsg$riORrI`ZL!%)5;=3OzAYqHk;m^=LpsXp_W<^+XK$R97GxKMYGn_j)2 z;-mc@h1z_lvkzL!$^ddm4VzLqMYql~r-jA0S3!Y9;G_BHmP;P}1TdjnlCpF=6~Kp+ za|}A1*+vUvWJ_aI&8WCx*S7kk^NG|Z4h7ysxlZwI(qk9_$vbO}4wF`~cJi)|vax?R zQ8Y~*DZsK5h98?YXnUuqO)ZVY#L)Vko>q;Vr_J|t8TA{_)7kSbq5zTq8a~qci9Z@W z>R5dfmjWFg&`&LoH*`;Db$Wxb&1);kQ)i)Ay{f9$h}wxJjkw*~PS83^sGSyy)+E!N zxTVE}vJlEN7GfX}=wxQwC8w@q;H_h&6nw?`XgtF>$MD@64gK*z+PFzV1dCYe$63&5Fbq=IZ@|u{b!?_yC;SzqSPu`LITo5_2gyN1h#W-}$A8^j)iqP|u^Y+y zvFO1Z5-(=eu%I4Pkf@MDE`bO+xah^3o{S#M!Ao*9Cr`m##DrXO5mXQrVPRR89gskh zLvlz|3?w^QcB;3(W<1PRQQb3HgXTd~Ro!pid-Z>x6C6EybflDGI25Q00{!M)Zd>3TiWx_nq+1lCyKq*C06iz@{mJ{!+AwC(C zIibEH9|3Ea<1^V9fjrL%!;n1BNz)V|L^!jYfl_7|TkMlswOQ`Q;ab?d|Pq7IeGa2?Xr9o&|MkwKQP}MN!gd zD7Lq8tJc~DcBi8eBBs+B7cOD5z^B1rfKm!$3_=KsqHqXEDV;E%W@b8MSw^cR5K%-+ zYoeXC*=!<(Aj@--B%#rWIehr=*nm9G$@83cyIt{ZeQ%AlhSezug7FR8ZOXEwEK66~ zgCHP|_@moHxqcm!l?!Rp!?P2C`hB8ogGR*JGHXtgz2n)1eLud=$f<`4)*qtT<#&*I`M zqc99NX2Svnp(jAEB1o?>0A z`=(}`@s!*5Vw%vUx88neBWwe*tL+DMBm5@ix8?9bf|uTU`=PQUR?0nAXusblOVf$R zBnka~zhbcXztLas@4LEdhsWm?&&;$rarWHkn~y%2xbf9L`z*{ozN^sNf83c;kmAZY zO*8jCO*8jBO*6!;`&&HSZ3QRJo*VV=-f>1ezi;0}N=~nSu`9&@17qCYFVpsY{hN4Z zrp=k9;{d^tQ>RDYeeqcU@ZC5i`Remit}z*7-2Z}$7cT-Zw|BMzaZ77A?bIu!jT!4Y zt>bYFoc#L2==SD-{@ptqIdytu5wHV_?TA`y=I7_Ra^*@zsn#*Gv$Mo1nTUzmJ)MaR z>G%5>lQA%c;MlQa?!Ul0AAiPfRq@MDPLihMiRRL!ORfahVV#CRJ@^JYExj@k0lfRd z0mpQqcg>x9cm96hL^P<)2ZJf|!h>k)L}cmR7Y=Ztcddd%eIl|E{$Hsw5dnO=eia)J z0Keb30qm>veBXe__RLPbecdfSDmGA!$*L34_g|hyDOH(_2ZI4Wdn4MkiO5%Kv%&^h zJrym#O-li=y1H7qnT>oqwfJdRpNQ^l^egVTw=o^+X|77sjDG+Gk|hD+AAU^$0000< KMNUMnLSTZMgfBh- diff --git a/src/main/resources/assets/create/textures/block/chute_diagonal.png b/src/main/resources/assets/create/textures/block/chute_diagonal.png new file mode 100644 index 0000000000000000000000000000000000000000..054c399555b415eae923f0ce656c5ca6a0ce3216 GIT binary patch literal 1399 zcmV--1&I2IP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1q?|w5lQjAG&H$)u^Z-RK$zE=?kQQfKcK%e!R2q zI=?xObDV5y|E1OJ% z+JAlcvp0LBI6VA1-Q8)<-|6-H?$xU|&X1$S-MVo@ja$uzI@#af)w$_7w*U-acGlQ4 zaMW(AUPKf{`V5R^lj!Ag;QVsvyWdVuT)kFvt!7hYqgvI4rsI5TYs>AKE~QO>RaYPdV_=KOpvZBw02M{Pryn+*`0O#tj**%g42 z1TBYwP+wAgGKsS*fHr70CnhzaWS)O!Hed`OVSush3J5-lW2L`VtEjFF@GxHm1VA!y zl-G?VwFxVK|MNmJ`K?Oyw`XS#Mmbaw)9KU&k_Wuo?~hei2J%&~f4!xr-PzsNkyS#| zeevbzsy9hE(RW)dx3RhDu77sT?McOCYn#sVJon?>Z|4Upg5XvyhItk667-PKNc5&S zWsc)b2^fZ12IuvvB&5xG_vy1|E=|*!`zzGsddLs1A(T8o=UruhjHE6B&dWj-4h{J^ z8(8*?_rOJ`r!tSBFH~C-s!sT<)ypmcGd1%7c&NE5CqT5dcCfaLBPDuhU`74uL-TgVXU?yXvLdy z&~3TeMx&uj_*ODFHgF;XEEt#6UN z-)~-LGsYUWd@|>;s1<7?;^9{Z2f8R9&_IB`{CdGT*HqM*1G9bXYglZ>+K71ZmxsUW z%P`RE_2#FsIYE&GEb7edTCgqq8d9>wRt&r&`K<;OqgnlutyW&hSn|NytuOShy7uwo zKR&pN+ehD|eC+zYfi@sEfBN#Z^M1JdlYTj>)j%kb?}B6~PS`1THWjCo4lR@}w(8pA z2KZ4ro6ebh|NbH?!|%Vlqo=7#cH%IZB@B*l-MlHE-mEvQv-aSiogT@lk&GzHt`sT6 zOEpy8-d@Xj5AHumOVW|1k`PE?Q=Cep5T_(fd3M6HcOB{F+q!0zwOJreD~T8Kt+`5U zfDQO*Dt9RNheJFjiDYIe(1s#4r8Zw`7Ob-tSkPi{U^c%ZNtGno_0V{z1RT>SNH}a( z+v}`d75->Al9HPUl_XV`NI2HMEwq{qth06%zyg&e2_aoDV3kdH_wU`yvT6b1SUwn1@0{@6zZY)j)2si0MHJUkhFn9j1WmWidF}QcX%dnC zV&P Date: Thu, 25 Jun 2020 18:17:37 +0200 Subject: [PATCH 15/47] Powered Funneling - Tidied up R-Funnel texture sheet - R-Funnels can now be powered by redstone - Non-mounted R-Funnels are now full hopper-like blocks rather than fixtures --- src/generated/resources/.cache/cache | 4 +- .../create/blockstates/belt_funnel.json | 47 ++- .../create/blockstates/reality_funnel.json | 38 +- .../java/com/simibubi/create/AllBlocks.java | 11 +- .../java/com/simibubi/create/AllShapes.java | 5 +- .../block/realityFunnel/BeltFunnelBlock.java | 27 +- .../realityFunnel/RealityFunnelBlock.java | 21 +- .../block/redstone/RedstoneLinkBlock.java | 3 + .../block/belt_funnel/block_default.json | 314 -------------- .../block/belt_funnel/block_extended.json | 389 ++++++++---------- .../belt_funnel/block_extended_powered.json | 6 + .../block/belt_funnel/block_retracted.json | 307 +++++++------- .../belt_funnel/block_retracted_powered.json | 6 + .../models/block/reality_funnel/block.json | 184 ++++++--- .../block/reality_funnel/block_powered.json | 6 + .../models/block/reality_funnel/item.json | 289 +++++-------- .../create/textures/block/funnel_back.png | Bin 0 -> 948 bytes .../create/textures/block/funnel_off.png | Bin 0 -> 370 bytes .../create/textures/block/funnel_on.png | Bin 0 -> 378 bytes .../create/textures/block/funnel_plating.png | Bin 0 -> 1580 bytes .../create/textures/block/reality_funnel.png | Bin 2280 -> 0 bytes 21 files changed, 705 insertions(+), 952 deletions(-) delete mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_default.json create mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json create mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json create mode 100644 src/main/resources/assets/create/models/block/reality_funnel/block_powered.json create mode 100644 src/main/resources/assets/create/textures/block/funnel_back.png create mode 100644 src/main/resources/assets/create/textures/block/funnel_off.png create mode 100644 src/main/resources/assets/create/textures/block/funnel_on.png create mode 100644 src/main/resources/assets/create/textures/block/funnel_plating.png delete mode 100644 src/main/resources/assets/create/textures/block/reality_funnel.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index e07ce1129..57f7d584f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -17,7 +17,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json 96a4fae5883eda130f8ec1a57d34534f6d0793c4 assets\create\blockstates\belt.json -86487988273d365436dbadad597c112aacf5aa92 assets\create\blockstates\belt_funnel.json +fe0278550e4795cc9757e726b88db12b599ec9ef assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json cf9045eb16e5299a1d917c4cb536289f49411276 assets\create\blockstates\birch_window.json @@ -283,7 +283,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggl 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json 6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets\create\blockstates\radial_chassis.json -35cc2bb35c9e2809f69d1fb70e854f69e0f9bbe6 assets\create\blockstates\reality_funnel.json +5e03eb759050c365f9f452ef0659f19a80e1e2f8 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json 1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json diff --git a/src/generated/resources/assets/create/blockstates/belt_funnel.json b/src/generated/resources/assets/create/blockstates/belt_funnel.json index 5ff1ee0c3..a692d1738 100644 --- a/src/generated/resources/assets/create/blockstates/belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/belt_funnel.json @@ -1,49 +1,64 @@ { "variants": { - "facing=north,shape=retracted": { + "facing=north,powered=false,shape=retracted": { "model": "create:block/belt_funnel/block_retracted" }, - "facing=south,shape=retracted": { + "facing=south,powered=false,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 180 }, - "facing=west,shape=retracted": { + "facing=west,powered=false,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 270 }, - "facing=east,shape=retracted": { + "facing=east,powered=false,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 90 }, - "facing=north,shape=default": { - "model": "create:block/belt_funnel/block_default" + "facing=north,powered=true,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted_powered" }, - "facing=south,shape=default": { - "model": "create:block/belt_funnel/block_default", + "facing=south,powered=true,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted_powered", "y": 180 }, - "facing=west,shape=default": { - "model": "create:block/belt_funnel/block_default", + "facing=west,powered=true,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted_powered", "y": 270 }, - "facing=east,shape=default": { - "model": "create:block/belt_funnel/block_default", + "facing=east,powered=true,shape=retracted": { + "model": "create:block/belt_funnel/block_retracted_powered", "y": 90 }, - "facing=north,shape=extended": { + "facing=north,powered=false,shape=extended": { "model": "create:block/belt_funnel/block_extended" }, - "facing=south,shape=extended": { + "facing=south,powered=false,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 180 }, - "facing=west,shape=extended": { + "facing=west,powered=false,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 270 }, - "facing=east,shape=extended": { + "facing=east,powered=false,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 90 + }, + "facing=north,powered=true,shape=extended": { + "model": "create:block/belt_funnel/block_extended_powered" + }, + "facing=south,powered=true,shape=extended": { + "model": "create:block/belt_funnel/block_extended_powered", + "y": 180 + }, + "facing=west,powered=true,shape=extended": { + "model": "create:block/belt_funnel/block_extended_powered", + "y": 270 + }, + "facing=east,powered=true,shape=extended": { + "model": "create:block/belt_funnel/block_extended_powered", + "y": 90 } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/reality_funnel.json b/src/generated/resources/assets/create/blockstates/reality_funnel.json index 63d9403e1..7b9e14ef9 100644 --- a/src/generated/resources/assets/create/blockstates/reality_funnel.json +++ b/src/generated/resources/assets/create/blockstates/reality_funnel.json @@ -1,30 +1,56 @@ { "variants": { - "facing=down": { + "facing=down,powered=false": { "model": "create:block/reality_funnel/block", "x": 180 }, - "facing=up": { + "facing=up,powered=false": { "model": "create:block/reality_funnel/block" }, - "facing=north": { + "facing=north,powered=false": { "model": "create:block/reality_funnel/block", "x": 90 }, - "facing=south": { + "facing=south,powered=false": { "model": "create:block/reality_funnel/block", "x": 90, "y": 180 }, - "facing=west": { + "facing=west,powered=false": { "model": "create:block/reality_funnel/block", "x": 90, "y": 270 }, - "facing=east": { + "facing=east,powered=false": { "model": "create:block/reality_funnel/block", "x": 90, "y": 90 + }, + "facing=down,powered=true": { + "model": "create:block/reality_funnel/block_powered", + "x": 180 + }, + "facing=up,powered=true": { + "model": "create:block/reality_funnel/block_powered" + }, + "facing=north,powered=true": { + "model": "create:block/reality_funnel/block_powered", + "x": 90 + }, + "facing=south,powered=true": { + "model": "create:block/reality_funnel/block_powered", + "x": 90, + "y": 180 + }, + "facing=west,powered=true": { + "model": "create:block/reality_funnel/block_powered", + "x": 90, + "y": 270 + }, + "facing=east,powered=true": { + "model": "create:block/reality_funnel/block_powered", + "x": 90, + "y": 90 } } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 784f1cf69..ed2b72bbb 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -742,16 +742,19 @@ public class AllBlocks { public static final BlockEntry REALITY_FUNNEL = REGISTRATE.block("reality_funnel", RealityFunnelBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.directionalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p))) + .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .item(FunnelItem::new) .transform(customItemModel()) .register(); public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.horizontalBlock(c.get(), - s -> AssetLookup.partialBaseModel(c, p, s.get(BeltFunnelBlock.SHAPE) - .getName()))) + .blockstate((c, p) -> p.horizontalBlock(c.get(), s -> { + String shape = s.get(BeltFunnelBlock.SHAPE) + .getName(); + return s.get(BeltFunnelBlock.POWERED) ? AssetLookup.partialBaseModel(c, p, shape, "powered") + : AssetLookup.partialBaseModel(c, p, shape); + })) .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) .register(); diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index e690a9169..9404ed41c 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -65,7 +65,10 @@ public class AllShapes { NIXIE_TUBE_CEILING = shape(0, 12, 0, 16, 16, 16).add(9, 1, 5, 15, 16, 11) .add(1, 1, 5, 7, 16, 11) .forHorizontalAxis(), - REALITY_FUNNEL = shape(2, -2, 2, 14, 2, 14).forDirectional(UP), + REALITY_FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) + .add(1, 6, 1, 15, 10, 15) + .add(0, 10, 0, 16, 16, 16) + .forDirectional(UP), BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), BELT_FUNNEL_DEFAULT = shape(3, -5, 12, 13, 13, 17).add(0, -5, 6, 16, 16, 12) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index 48fa9c93f..fb7217329 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -17,9 +17,11 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; +import net.minecraft.state.BooleanProperty; import net.minecraft.state.EnumProperty; import net.minecraft.state.IProperty; import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.IStringSerializable; @@ -36,11 +38,10 @@ import net.minecraft.world.World; public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public enum Shape implements IStringSerializable { - RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), - DEFAULT(AllShapes.BELT_FUNNEL_DEFAULT), - EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED); + RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED); VoxelShaper shaper; @@ -56,14 +57,15 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { public BeltFunnelBlock(Properties p_i48377_1_) { super(p_i48377_1_); - setDefaultState(getDefaultState().with(SHAPE, Shape.DEFAULT)); + setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED) + .with(POWERED, false)); } @Override protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, SHAPE)); + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, SHAPE, POWERED)); } - + @Override public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { @@ -71,8 +73,9 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { } @Override - public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { - return updateShape(super.getStateForPlacement(p_196258_1_), p_196258_1_.getWorld(), p_196258_1_.getPos()); + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + return updateShape(super.getStateForPlacement(ctx), ctx.getWorld(), ctx.getPos()).with(POWERED, ctx.getWorld() + .isBlockPowered(ctx.getPos())); } @Override @@ -80,7 +83,7 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { PlayerEntity player) { return AllBlocks.REALITY_FUNNEL.asStack(); } - + @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, BlockPos pos, BlockPos p_196271_6_) { @@ -126,10 +129,14 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { if (fromPos.equals(pos.offset(blockFacing))) if (!isValidPosition(state, worldIn, pos)) worldIn.destroyBlock(pos, true); + + boolean previouslyPowered = state.get(POWERED); + if (previouslyPowered != worldIn.isBlockPowered(pos)) + worldIn.setBlockState(pos, state.cycle(POWERED), 2); } private BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { - state = state.with(SHAPE, Shape.DEFAULT); + state = state.with(SHAPE, Shape.RETRACTED); BlockState neighbour = world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING))); if (canConnectTo(state, neighbour)) return state.with(SHAPE, Shape.EXTENDED); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index 6d367e59f..e3873d576 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -7,6 +7,9 @@ import com.simibubi.create.foundation.block.ProperDirectionalBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; @@ -18,15 +21,25 @@ import net.minecraft.world.World; public class RealityFunnelBlock extends ProperDirectionalBlock { + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public RealityFunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); + setDefaultState(getDefaultState().with(POWERED, false)); } @Override public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(FACING, context.getFace()); + return getDefaultState().with(FACING, context.getFace()) + .with(POWERED, context.getWorld() + .isBlockPowered(context.getPos())); } - + + @Override + protected void fillStateContainer(Builder builder) { + super.fillStateContainer(builder.add(POWERED)); + } + @Override public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { @@ -58,6 +71,10 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { if (fromPos.equals(pos.offset(blockFacing))) if (!isValidPosition(state, worldIn, pos)) worldIn.destroyBlock(pos, true); + + boolean previouslyPowered = state.get(POWERED); + if (previouslyPowered != worldIn.isBlockPowered(pos)) + worldIn.setBlockState(pos, state.cycle(POWERED), 2); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java index 80ded0153..1933627ff 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.logistics.block.redstone; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; @@ -164,6 +165,8 @@ public class RedstoneLinkBlock extends ProperDirectionalBlock implements ITEPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D14&6lK~z{r?Up@E z6hRcn-z?l65Wo8pdDw4wc-VXd|BC+sSjC<{ z;LF7&DEjl3{~{GjvGZ)`2(T!ZFz7xT3LuQ^I=Y{=UiKt05CK{XkNG*-KozfCZtY&PImQG$C$eAGM#=HQM>D9naV-urvXwQD< z&hrUTRaHf2j?`cSwjNN&rT#!~n3YOr7Y%z9k6zDtJMMe=8H)-8H1PI^kY_C85lU54 zVZ@D|W^d(aB-ok${Ix>k-x_FPVS%6kY;|?DGe1AC6hT|wc3Z|IGIn-)dE@gcQW}d2 zYOHUeTm7SMS7EMoHPQIg2#N36K(&B#BFEx)Urc&OWJ2A6p?3&Q(9+V9>P#k+$}+K7 zOf6JiUaoB0;S7yTZ>O1=8LF+VRaPoMQUTA(g&nDcsI07{#l=M^;>e)LuZSlLFOJC| zp0c55;K+yUU1Js`6niCn!`GfUen~>&w23}Dip}<)p9+h)zyN|1TpIo}j`=H0Qs=b>Rf9Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1;I%~K~z{rwO89u z990+c-253aOYUG?_dk#DKPj3-aJM4E}4|V_6pY?0xCGpMRy& zq5yTYbclXqJfBR{q=JG1>g?=1k^!;>HlABprOEkwGungKP=5+&wL`fp^+gGA<}(0CzXx}L5>O^@~mKJx6 z*ECI{a2)WNemj&|iwlnPpGs#$lBu*r1d)coSK-a1?REK#fUFpEiZaNnM&M0rr?dJ$OBJMF}KfFW)DoEY2DI+(ZcQCTH^=*_yrhoi7uV>{(uT;y+z?Gghbg)^Mzaf}w6d`+4yCdg zdADz*Pu7zi;7Kf&kd5KF@;;Pj%ABeNudV>Ysw)~r&u|KX^{p8x=u;n+w!!dtlZ z8h$Ro{p$f3^F~p7`;BIKLg&FjR4_+OfcKzt-&^l}I_f(p0`FgLwbr(h^!e9Qu2Bzy zH(#u`aK|vvDv_Et-psCQ(5si_g4{Yk^!AGWZ$LE5O7cYawxH4#-u-06HP*nUk>tS>IdT$ze4)9~~njnCbq z=-u_)NBe+IDPYQm6cw5xO2@|D%>hI}Zbb0VH2ErKYMe(unM_2Ru^m^yiiP1I6@-Fh zaT{TOv>D*-e^mpQ&Oa`{5Ku0D+nX;6Wh;Pr0a-=E{g3GhIm2}fS2Gyo6@0K2i}O1? z&)=#Z_ZA^~-C&kM6lWLKXkvbeCZm6eOhuQRw{l1(`QUO?W3V6Zvvhh7-G$q6p1 za5zAglS@S`fbvEe1xg379yhhDhq|%<@7N1Bnf2A>)KFb2(pXc@TwUZ!Wk~^5l$_*~ ztdJsS%jD!!o573yz*z!b0dzjlaKEsPwA}x^@IB51F#x^!`&b|KkM>jdp#AF=oOY1j zp+34X{F{v7EI$rt2+dJ|vtVT-PG5dABV6(96HiJvp{7v0rr)3prvSx@Lk^CB3Bj5b zr9m=Yd*PfMMhg4;R#kf}mLkwBx(4*Ryb_o3l0ut$0UTZ^P!wj^4AI)wwv6HGhHD(U zN8Kv`AtESs)s37t{9mBaPCUsuW{Tt@Q@_A;bV6=6+q(&Qt}Nx$-5L@7+V$Jowd+Ke zUus|ja6dRDR9smW-a}#lo}H*`ILIUvczTd1c#l$$4uA-J^u?%H$p+YyjQcU+J0B0r eP)<{98FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMGBNQWX_Wu~2xUn`K~#8N?V4F{6h{<=`3w93o)VHsHbR&O)+ZzcHny>`!6*rP z5LqCQhXgDyU_dszu~`fT2PrR60*VwRB>%3{-yP2QPPy9C-7~U10ZV79ySA=#>elUB z)n0dY=%eJ~$xo{|fBchb3Vt~AnSpvE-?b$Zmo{0-J?QA@NOtYomF(NMFG>H_)x)pT zUnFlH9ZyI>SbptddlF*!o3rduy9!Xx^8nSDMk-tyE&-lS9Lf#GHFlvb zdHv{wr3e7=+3~(5m>%slAP78a9$p3ruyg0m+)H53o;}M7zzmiV0O1gT6akoFk$y7K zpFF+ZUnPHcxI6jd$q8#$^YAjj2W;QIy^sLi-Q9^&2FySJi2EQ@3Y4( zWsM`i^jNQv2O^Ik_pbDq08Oy~d_YkP7#J8Z0Z19J)-L4`!cT18yg3)BOB+o8x0z$r zC4c}Sd1l@ONK?w2VgZc`;MXqYkP*3!8#fv@Y}il(<*OcTn03U^n@R$NJq>S?%lgLy^YuLfH=;Nw*aZ1Im%@Ln0kz~2X*QR zaQpIs>dcFLQw3lE+qP}X9S0zQe+~M9Q(jhp(RcljA^`7s$ZHuOfXH*t5+JsT4w8<- za22%#1w)|GK&V+3Fn*yu?dMBNC4gq$69SdR8FvfHr2K&X?qc z{e*;L0%(m%fQ6|eO9X(tgyfpMtfixT;0H|^&yfJE^B5!mb!j6%B43gh_R}l@LQ5hq zYw0N8M}eyW`^h7KoXpF~BSz%sTSK`7$XYte_c6d~z<%-wpg?2p`atT;`b>yW0P6cN zm%J>?Q9j^WeXKO>CnO93pHfFohI7KlSNrS?F-rh1T$TW9$^t^dF#+=UfKW*CvMgs! zSwM_*c*3NiGt27(LIJWYM}h*b)yGQ1enP@A0rL8QP=GAUk)VKU z^|8{hpO7#E*1ZB60t~M8u_Pt{^~0r;WjPYGO!U@F*iT3pkf)S7GG#nAAuT4IM}U>^ z0Zfi!d-_)DvFu(z0||+H0rFaawkDUbF89tCa zo#;0qssdTvS>=75QS0A>NP4qFWp04wm0 z&m(k#)c;>ufQOb`43r5h#b}4E28hWwc^~Ex^J5^|VXL8`I3U(xs{wO{WT`kH)?urG zCBW>KiUVRDwi;Lh{3n=w3?1vS*B-CK*=v1O%#0mO?xq$(41fR#hChgQ*lKw11*j~6 z50T)9Nbo}>_zv$?Bp4FJA&Q{#xF+9UgEeIVY@q=Msv$UE0RCRvZb)Iy9JpZOZyujC zP!2f5&_7kr-yAfkZYcqzsvtGF_DYBC>OtoRML-*#1tB>*JU!3}6yW+kuRjiD-qj07L z0K|Fa@ZKf(0CY?&ju3PVsjzJp5TUF9!{;gjh&(Xz>1=cSCddkOoJX6|0x-+GZ+X`e zc>()(^mHSlwN-==bsG_Y=LwJk+WHDj+YV!L2tcqw#HBUG283OhEMTPs7(d@`&kM`y zfi_I0nIGoLz{v>v|&7D1sM6Zt-JsnE)aEb%mg@a z`SIa9WhJ^&JB1mG-S_-iLXULSw}oT!Mr zkHI-_r;L7DMgStgq83ou2`(Np0h}MRuP-h|Oq#j`WQ-*&%Yq_UNI)hmuLs)LYful) zYXLOG#ABNc+6x+B*ggdHRF^a?&w|=CBEZC@P04?_nQw=g@zu-#0000 Date: Thu, 25 Jun 2020 21:38:23 +0200 Subject: [PATCH 16/47] Directed Funneling and Chute Funnels - Added a funnel block variant that interacts with chutes horizontally (same item) - Belt and Chute Funnels now have a push/pull property - Removed Chute Ports --- src/generated/resources/.cache/cache | 20 +- .../create/blockstates/belt_funnel.json | 108 ++++++-- .../create/blockstates/chute_funnel.json | 64 +++++ .../assets/create/blockstates/chute_port.json | 19 -- .../resources/assets/create/lang/en_ud.json | 2 +- .../resources/assets/create/lang/en_us.json | 2 +- .../block/belt_funnel_pull_off_extended.json | 6 + .../block/belt_funnel_pull_off_retracted.json | 6 + .../block/belt_funnel_pull_on_extended.json | 6 + .../block/belt_funnel_pull_on_retracted.json | 6 + .../block/belt_funnel_push_on_extended.json | 6 + .../block/belt_funnel_push_on_retracted.json | 6 + .../models/block/chute_funnel_pull_off.json | 6 + .../models/block/chute_funnel_pull_on.json | 6 + .../models/block/chute_funnel_push_on.json | 6 + .../assets/create/models/item/chute_port.json | 3 - .../{chute_port.json => chute_funnel.json} | 2 +- .../java/com/simibubi/create/AllBlocks.java | 23 +- .../java/com/simibubi/create/AllShapes.java | 4 + .../logistics/block/chute/ChutePortBlock.java | 25 -- .../block/realityFunnel/BeltFunnelBlock.java | 79 +----- .../realityFunnel/BeltFunnelGenerator.java | 39 +++ .../block/realityFunnel/ChuteFunnelBlock.java | 39 +++ .../realityFunnel/ChuteFunnelGenerator.java | 39 +++ .../block/realityFunnel/FunnelItem.java | 21 +- .../HorizontalInteractionFunnelBlock.java | 90 +++++++ .../realityFunnel/RealityFunnelBlock.java | 62 +++-- .../block/belt_funnel/block_extended.json | 2 +- .../belt_funnel/block_extended_powered.json | 6 - .../block/belt_funnel/block_retracted.json | 2 +- .../belt_funnel/block_retracted_powered.json | 6 - .../models/block/chute_funnel/block.json | 248 ++++++++++++++++++ .../create/models/block/chute_port.json | 23 -- .../textures/block/belt_funnel_pull_off.png | Bin 0 -> 438 bytes .../textures/block/belt_funnel_pull_on.png | Bin 0 -> 433 bytes .../textures/block/belt_funnel_push_off.png | Bin 0 -> 423 bytes .../textures/block/belt_funnel_push_on.png | Bin 0 -> 426 bytes .../assets/create/textures/block/chute.png | Bin 1621 -> 1425 bytes .../create/textures/block/chute_port.png | Bin 1672 -> 0 bytes .../create/textures/block/funnel_off.png | Bin 370 -> 372 bytes .../create/textures/block/funnel_on.png | Bin 378 -> 370 bytes 41 files changed, 762 insertions(+), 220 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/chute_funnel.json delete mode 100644 src/generated/resources/assets/create/blockstates/chute_port.json create mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json create mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json create mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json create mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json create mode 100644 src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json create mode 100644 src/generated/resources/assets/create/models/block/chute_funnel_push_on.json delete mode 100644 src/generated/resources/assets/create/models/item/chute_port.json rename src/generated/resources/data/create/loot_tables/blocks/{chute_port.json => chute_funnel.json} (86%) delete mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java delete mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json delete mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json create mode 100644 src/main/resources/assets/create/models/block/chute_funnel/block.json delete mode 100644 src/main/resources/assets/create/models/block/chute_port.json create mode 100644 src/main/resources/assets/create/textures/block/belt_funnel_pull_off.png create mode 100644 src/main/resources/assets/create/textures/block/belt_funnel_pull_on.png create mode 100644 src/main/resources/assets/create/textures/block/belt_funnel_push_off.png create mode 100644 src/main/resources/assets/create/textures/block/belt_funnel_push_on.png delete mode 100644 src/main/resources/assets/create/textures/block/chute_port.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 57f7d584f..345408e7c 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -17,7 +17,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json 96a4fae5883eda130f8ec1a57d34534f6d0793c4 assets\create\blockstates\belt.json -fe0278550e4795cc9757e726b88db12b599ec9ef assets\create\blockstates\belt_funnel.json +9bbc9a2dc2428175ae0cadf7537ed6815e3e241d assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json cf9045eb16e5299a1d917c4cb536289f49411276 assets\create\blockstates\birch_window.json @@ -32,7 +32,7 @@ b8dd6e505943e06706d0718ece620ab3cf943650 assets\create\blockstates\brass_casing. cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scoria.json 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json 99def0a786714a337e2b1b17db844e4d1aee6234 assets\create\blockstates\chute.json -9ca4713c8efed79da6ab11354a25e5f8fbd6341c assets\create\blockstates\chute_port.json +dabf21c320b6d33486478cb0e4b4bbd62a753c7a assets\create\blockstates\chute_funnel.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json @@ -335,8 +335,8 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json -5753bc985f4c202fe16387c32fb8ad80c631c933 assets\create\lang\en_ud.json -0640b1b64ac1a1e337178f932f22b0b2aea61d46 assets\create\lang\en_us.json +d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json +0cc26662a5c436a5703926fe3509f0a9536ee737 assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -377,6 +377,12 @@ a033fbac3129bba9211c6c4a0e16c905643afa39 assets\create\models\block\andesite_cob 1c574ee47aeb6fcb305bfc95dd131e153b795a0e assets\create\models\block\andesite_cobblestone_wall_post.json 0ed983628e8868f77301bea1111570d3631f24fb assets\create\models\block\andesite_cobblestone_wall_side.json b1d0bb538fc8285b7d3fd77a977d78a104b83b62 assets\create\models\block\andesite_pillar.json +3928a75e18fc9fe02e3d72696e5dfddd40ef164c assets\create\models\block\belt_funnel_pull_off_extended.json +024fdab5f6bb0559bb18d2c3cffa1d5a7baf76e9 assets\create\models\block\belt_funnel_pull_off_retracted.json +eecd774d431bd9c30649e824421ead350b5333cd assets\create\models\block\belt_funnel_pull_on_extended.json +8e6e5caf8befa95d68280ecfaca9a07313570524 assets\create\models\block\belt_funnel_pull_on_retracted.json +5e93193368ebdf0fa4d53b19a306431e6d3ab099 assets\create\models\block\belt_funnel_push_on_extended.json +08f8ffc241e9a49a0981026602deb0230dd8258a assets\create\models\block\belt_funnel_push_on_retracted.json e8bfb63e0a4426f9d95cd111640169b218dead1b assets\create\models\block\belt_observer\detect.json a2e63810eceb028484b193ddf4315e1811950dc8 assets\create\models\block\belt_observer\detect_belt.json 034c308d46def892e6638ac0b3374849a6a88a26 assets\create\models\block\belt_observer\detect_belt_powered.json @@ -407,6 +413,9 @@ cd7751090cf3d55296b8e415d0af9b6f18d69770 assets\create\models\block\chiseled_gab d2e195aa2e90c712e51d855a9a4a334b52f62a69 assets\create\models\block\chiseled_limestone.json ac07568fa7b2d3fa84d0fe89a498514d30514291 assets\create\models\block\chiseled_scoria.json ecb2b85ee210dce329d2be66b98d0f0d4e6fc223 assets\create\models\block\chiseled_weathered_limestone.json +d3a156e746f890b8a0b92caa70b8eb6e690f0fb6 assets\create\models\block\chute_funnel_pull_off.json +5e4424fb63041a449ddffe143ee766018d064c8f assets\create\models\block\chute_funnel_pull_on.json +ac32d22841b5d37ef182869f605b9a97075f3d33 assets\create\models\block\chute_funnel_push_on.json f9a3f0939ea43b404eb2826b94211a25fca5ebc2 assets\create\models\block\clockwork_bearing.json 70406933cc4fa5471af6e562fd84a397347dba17 assets\create\models\block\copper_casing.json 1ef7060b0ca7e9c0bfc8151f98ca08da31862cda assets\create\models\block\crate\brass\bottom.json @@ -964,7 +973,6 @@ afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets\create\models\item\chiseled_gabb a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets\create\models\item\chiseled_scoria.json 70232ce9b88119fb383717e2c1ad113f7aad6a99 assets\create\models\item\chiseled_weathered_limestone.json fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets\create\models\item\chute.json -3b91cda68b823bf8d49a2e0cccd1b7f7c090e103 assets\create\models\item\chute_port.json b1531a7bd3f7f27b9587d13e818a93dc2d088bc8 assets\create\models\item\clockwork_bearing.json 0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets\create\models\item\clutch.json dcb09deae110077bcddf090996b51cc66e9a7de3 assets\create\models\item\cogwheel.json @@ -1748,7 +1756,7 @@ ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data\create\loot_tables\blocks\chiseled 43f446abd3c1c184a08645979edf620e59955a30 data\create\loot_tables\blocks\chiseled_scoria.json adde89e46b12de1eee6fd0c5cb98c5f45feefc15 data\create\loot_tables\blocks\chiseled_weathered_limestone.json 07ccc1576a71338cb73c4e06f8c28a2c86843877 data\create\loot_tables\blocks\chute.json -dcd45562a3459e5fd620727090d9c3c01c8ce0a4 data\create\loot_tables\blocks\chute_port.json +617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\chute_funnel.json 778b53c36d73b6e9c78fd6c091c9c3535c3c18f7 data\create\loot_tables\blocks\clockwork_bearing.json d76113310fc56eca6382d44df174096f2210d416 data\create\loot_tables\blocks\clutch.json 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data\create\loot_tables\blocks\cogwheel.json diff --git a/src/generated/resources/assets/create/blockstates/belt_funnel.json b/src/generated/resources/assets/create/blockstates/belt_funnel.json index a692d1738..ebd56a413 100644 --- a/src/generated/resources/assets/create/blockstates/belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/belt_funnel.json @@ -1,63 +1,123 @@ { "variants": { - "facing=north,powered=false,shape=retracted": { + "facing=north,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted" + }, + "facing=south,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted", + "y": 180 + }, + "facing=west,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted", + "y": 270 + }, + "facing=east,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted", + "y": 90 + }, + "facing=north,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted" + }, + "facing=south,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted", + "y": 180 + }, + "facing=west,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted", + "y": 270 + }, + "facing=east,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted", + "y": 90 + }, + "facing=north,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted" }, - "facing=south,powered=false,shape=retracted": { + "facing=south,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 180 }, - "facing=west,powered=false,shape=retracted": { + "facing=west,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 270 }, - "facing=east,powered=false,shape=retracted": { + "facing=east,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 90 }, - "facing=north,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered" + "facing=north,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted" }, - "facing=south,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered", + "facing=south,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted", "y": 180 }, - "facing=west,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered", + "facing=west,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted", "y": 270 }, - "facing=east,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered", + "facing=east,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted", "y": 90 }, - "facing=north,powered=false,shape=extended": { + "facing=north,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended" + }, + "facing=south,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended", + "y": 180 + }, + "facing=west,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended", + "y": 270 + }, + "facing=east,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended", + "y": 90 + }, + "facing=north,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended" + }, + "facing=south,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended", + "y": 180 + }, + "facing=west,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended", + "y": 270 + }, + "facing=east,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended", + "y": 90 + }, + "facing=north,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended" }, - "facing=south,powered=false,shape=extended": { + "facing=south,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 180 }, - "facing=west,powered=false,shape=extended": { + "facing=west,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 270 }, - "facing=east,powered=false,shape=extended": { + "facing=east,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 90 }, - "facing=north,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered" + "facing=north,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended" }, - "facing=south,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered", + "facing=south,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended", "y": 180 }, - "facing=west,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered", + "facing=west,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended", "y": 270 }, - "facing=east,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered", + "facing=east,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/chute_funnel.json b/src/generated/resources/assets/create/blockstates/chute_funnel.json new file mode 100644 index 000000000..59a0eda96 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/chute_funnel.json @@ -0,0 +1,64 @@ +{ + "variants": { + "facing=north,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off" + }, + "facing=south,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off", + "y": 180 + }, + "facing=west,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off", + "y": 270 + }, + "facing=east,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off", + "y": 90 + }, + "facing=north,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on" + }, + "facing=south,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on", + "y": 180 + }, + "facing=west,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on", + "y": 270 + }, + "facing=east,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on", + "y": 90 + }, + "facing=north,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block" + }, + "facing=south,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block", + "y": 180 + }, + "facing=west,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block", + "y": 270 + }, + "facing=east,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block", + "y": 90 + }, + "facing=north,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on" + }, + "facing=south,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on", + "y": 180 + }, + "facing=west,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on", + "y": 270 + }, + "facing=east,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chute_port.json b/src/generated/resources/assets/create/blockstates/chute_port.json deleted file mode 100644 index dc926c2ca..000000000 --- a/src/generated/resources/assets/create/blockstates/chute_port.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/chute_port" - }, - "facing=south": { - "model": "create:block/chute_port", - "y": 180 - }, - "facing=west": { - "model": "create:block/chute_port", - "y": 270 - }, - "facing=east": { - "model": "create:block/chute_port", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index a35239349..f35699efa 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -33,7 +33,7 @@ "block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chute": "\u01DD\u0287n\u0265\u0186", - "block.create.chute_port": "\u0287\u0279o\u0500 \u01DD\u0287n\u0265\u0186", + "block.create.chute_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287n\u0265\u0186", "block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186", "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index fcc292fd4..6697c96bb 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -36,7 +36,7 @@ "block.create.chiseled_scoria": "Chiseled Scoria", "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", "block.create.chute": "Chute", - "block.create.chute_port": "Chute Port", + "block.create.chute_funnel": "Chute Funnel", "block.create.clockwork_bearing": "Clockwork Bearing", "block.create.clutch": "Clutch", "block.create.cogwheel": "Cogwheel", diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json new file mode 100644 index 000000000..d5b74c732 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "2": "create:block/belt_funnel_pull_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json new file mode 100644 index 000000000..8139c8f3c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "2": "create:block/belt_funnel_pull_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json new file mode 100644 index 000000000..04c877bc1 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "2": "create:block/belt_funnel_pull_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json new file mode 100644 index 000000000..a0e81c6cd --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "2": "create:block/belt_funnel_pull_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json new file mode 100644 index 000000000..94272c53b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "2": "create:block/belt_funnel_push_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json new file mode 100644 index 000000000..a1800b8e0 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "2": "create:block/belt_funnel_push_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json b/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json new file mode 100644 index 000000000..f506327e4 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "3": "create:block/belt_funnel_pull_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json b/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json new file mode 100644 index 000000000..2ae11c5a2 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "3": "create:block/belt_funnel_pull_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json b/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json new file mode 100644 index 000000000..a41a5207c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "3": "create:block/belt_funnel_push_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chute_port.json b/src/generated/resources/assets/create/models/item/chute_port.json deleted file mode 100644 index 173b26be8..000000000 --- a/src/generated/resources/assets/create/models/item/chute_port.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chute_port" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chute_port.json b/src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/chute_port.json rename to src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json index bd3837343..4f7095793 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/chute_port.json +++ b/src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:chute_port" + "name": "create:reality_funnel" } ], "conditions": [ diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index ed2b72bbb..cbfd936ee 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -78,7 +78,6 @@ import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; import com.simibubi.create.content.logistics.block.chute.ChuteItem; -import com.simibubi.create.content.logistics.block.chute.ChutePortBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; @@ -99,6 +98,9 @@ import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBloc import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; import com.simibubi.create.content.logistics.block.packager.PackagerBlock; import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelGenerator; +import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelGenerator; import com.simibubi.create.content.logistics.block.realityFunnel.FunnelItem; import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; @@ -720,12 +722,6 @@ public class AllBlocks { .transform(customItemModel("_", "block")) .register(); - public static final BlockEntry CHUTE_PORT = REGISTRATE.block("chute_port", ChutePortBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.standardModel(c, p))) - .simpleItem() - .register(); - public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) .initialProperties(SharedProperties::softMetal) .transform(StressConfigDefaults.setImpact(4.0)) @@ -749,12 +745,13 @@ public class AllBlocks { public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.horizontalBlock(c.get(), s -> { - String shape = s.get(BeltFunnelBlock.SHAPE) - .getName(); - return s.get(BeltFunnelBlock.POWERED) ? AssetLookup.partialBaseModel(c, p, shape, "powered") - : AssetLookup.partialBaseModel(c, p, shape); - })) + .blockstate(new BeltFunnelGenerator()::generate) + .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .register(); + + public static final BlockEntry CHUTE_FUNNEL = REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new ChuteFunnelGenerator()::generate) .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) .register(); diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 9404ed41c..cb9a26925 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -69,6 +69,10 @@ public class AllShapes { .add(1, 6, 1, 15, 10, 15) .add(0, 10, 0, 16, 16, 16) .forDirectional(UP), + CHUTE_FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) + .add(1, 5, 1, 15, 16, 15) + .add(0, 8, 0, 16, 14, 16) + .forDirectional(UP), BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), BELT_FUNNEL_DEFAULT = shape(3, -5, 12, 13, 13, 17).add(0, -5, 6, 16, 16, 12) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java deleted file mode 100644 index 021d743ba..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.content.logistics.block.chute; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.StateContainer.Builder; - -public class ChutePortBlock extends HorizontalBlock { - - public ChutePortBlock(Properties p_i48377_1_) { - super(p_i48377_1_); - } - - @Override - protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING)); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { - return getDefaultState().with(HORIZONTAL_FACING, p_196258_1_.getPlacementHorizontalFacing()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index fb7217329..14feeab13 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -1,10 +1,8 @@ package com.simibubi.create.content.logistics.block.realityFunnel; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.foundation.utility.Lang; @@ -12,33 +10,22 @@ import com.simibubi.create.foundation.utility.VoxelShaper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; import net.minecraft.state.EnumProperty; import net.minecraft.state.IProperty; import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.ILightReader; import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { +public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public enum Shape implements IStringSerializable { RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED); @@ -57,13 +44,12 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { public BeltFunnelBlock(Properties p_i48377_1_) { super(p_i48377_1_); - setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED) - .with(POWERED, false)); + setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED)); } @Override protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, SHAPE, POWERED)); + super.fillStateContainer(p_206840_1_.add(SHAPE)); } @Override @@ -72,35 +58,13 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { return state.get(SHAPE).shaper.get(state.get(HORIZONTAL_FACING)); } - @Override - public BlockState getStateForPlacement(BlockItemUseContext ctx) { - return updateShape(super.getStateForPlacement(ctx), ctx.getWorld(), ctx.getPos()).with(POWERED, ctx.getWorld() - .isBlockPowered(ctx.getPos())); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.REALITY_FUNNEL.asStack(); - } - @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, BlockPos pos, BlockPos p_196271_6_) { - if (direction == Direction.DOWN && !isOnValidBelt(state, world, pos)) - return AllBlocks.REALITY_FUNNEL.getDefaultState() - .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); if (direction == state.get(HORIZONTAL_FACING)) return updateShape(state, world, pos); - return state; - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - return !world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING) - .getOpposite())) - .getShape(world, pos) - .isEmpty(); + else + return super.updatePostPlacement(state, direction, neighbour, world, pos, p_196271_6_); } public static boolean isOnValidBelt(BlockState state, IWorldReader world, BlockPos pos) { @@ -118,24 +82,7 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { return true; } - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - Direction blockFacing = state.get(HORIZONTAL_FACING) - .getOpposite(); - if (fromPos.equals(pos.offset(blockFacing))) - if (!isValidPosition(state, worldIn, pos)) - worldIn.destroyBlock(pos, true); - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) - worldIn.setBlockState(pos, state.cycle(POWERED), 2); - } - - private BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { + public static BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { state = state.with(SHAPE, Shape.RETRACTED); BlockState neighbour = world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING))); if (canConnectTo(state, neighbour)) @@ -143,21 +90,19 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { return state; } - private boolean canConnectTo(BlockState state, BlockState neighbour) { + private static boolean canConnectTo(BlockState state, BlockState neighbour) { if (neighbour.getBlock() instanceof BeltTunnelBlock) return true; - if (neighbour.getBlock() == this && neighbour.get(HORIZONTAL_FACING) == state.get(HORIZONTAL_FACING) - .getOpposite()) + if (neighbour.getBlock() instanceof BeltFunnelBlock + && neighbour.get(HORIZONTAL_FACING) == state.get(HORIZONTAL_FACING) + .getOpposite()) return true; return false; } @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (!context.getWorld().isRemote) - context.getWorld() - .setBlockState(context.getPos(), state.cycle(SHAPE)); - return ActionResultType.SUCCESS; + protected boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos) { + return isOnValidBelt(state, world, pos); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java new file mode 100644 index 000000000..0b74af3fe --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java @@ -0,0 +1,39 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraftforge.client.model.generators.ModelFile; + +public class BeltFunnelGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return horizontalAngle(state.get(BeltFunnelBlock.HORIZONTAL_FACING)) + 180; + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + boolean pushing = state.get(BeltFunnelBlock.PUSHING); + boolean powered = state.get(BeltFunnelBlock.POWERED); + String shapeName = state.get(BeltFunnelBlock.SHAPE) + .getName(); + if (pushing && !powered) + return AssetLookup.partialBaseModel(ctx, prov, shapeName); + String name = ctx.getName() + "_" + (pushing ? "push_" : "pull_") + (powered ? "on" : "off"); + return prov.models() + .withExistingParent(name + "_" + shapeName, prov.modLoc("block/" + ctx.getName() + "/block_" + shapeName)) + .texture("2", prov.modLoc("block/" + name)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java new file mode 100644 index 000000000..25f79c470 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java @@ -0,0 +1,39 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock; + +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; + +public class ChuteFunnelBlock extends HorizontalInteractionFunnelBlock { + + public ChuteFunnelBlock(Properties p_i48377_1_) { + super(p_i48377_1_); + } + + public static boolean isOnValidChute(BlockState state, IWorldReader world, BlockPos pos) { + Direction direction = state.get(HORIZONTAL_FACING); + if (world.getBlockState(pos.offset(direction)) + .getBlock() instanceof ChuteBlock) + return true; + return false; + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.CHUTE_FUNNEL.get(state.get(HORIZONTAL_FACING)); + } + + @Override + protected boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos) { + return isOnValidChute(state, world, pos); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java new file mode 100644 index 000000000..98ce6320f --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java @@ -0,0 +1,39 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraftforge.client.model.generators.ModelFile; + +public class ChuteFunnelGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return horizontalAngle(state.get(BeltFunnelBlock.HORIZONTAL_FACING)) + 180; + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + boolean pushing = state.get(ChuteFunnelBlock.PUSHING); + boolean powered = state.get(ChuteFunnelBlock.POWERED); + if (pushing && !powered) + return AssetLookup.partialBaseModel(ctx, prov); + String suffix = (pushing ? "push_" : "pull_") + (powered ? "on" : "off"); + String textureName = "belt_funnel_" + suffix; + String modelName = ctx.getName() + "_" + suffix; + return prov.models() + .withExistingParent(modelName, prov.modLoc("block/" + ctx.getName() + "/block")) + .texture("3", prov.modLoc("block/" + textureName)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java index a546eb1a9..5dd0d6ed8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java @@ -7,6 +7,9 @@ import net.minecraft.block.BlockState; import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItemUseContext; import net.minecraft.util.Direction; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; public class FunnelItem extends BlockItem { @@ -25,11 +28,25 @@ public class FunnelItem extends BlockItem { if (!direction.getAxis() .isHorizontal()) return state; + BlockState equivalentBeltFunnel = AllBlocks.BELT_FUNNEL.get() .getStateForPlacement(ctx) .with(BeltFunnelBlock.HORIZONTAL_FACING, direction); - if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, ctx.getWorld(), ctx.getPos())) - return equivalentBeltFunnel; + BlockState equivalentChuteFunnel = AllBlocks.CHUTE_FUNNEL.get() + .getStateForPlacement(ctx) + .with(ChuteFunnelBlock.HORIZONTAL_FACING, direction); + BlockState reversedChuteFunnel = equivalentChuteFunnel.rotate(Rotation.CLOCKWISE_180) + .cycle(ChuteFunnelBlock.PUSHING); + + World world = ctx.getWorld(); + BlockPos pos = ctx.getPos(); + if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, world, pos)) + return BeltFunnelBlock.updateShape(equivalentBeltFunnel, world, pos); + if (ChuteFunnelBlock.isOnValidChute(equivalentChuteFunnel, world, pos)) + return equivalentChuteFunnel; + if (ChuteFunnelBlock.isOnValidChute(reversedChuteFunnel, world, pos)) + return reversedChuteFunnel; + return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java new file mode 100644 index 000000000..57774d5c7 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java @@ -0,0 +1,90 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock implements IWrenchable { + + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final BooleanProperty PUSHING = BooleanProperty.create("pushing"); + + public HorizontalInteractionFunnelBlock(Properties p_i48377_1_) { + super(p_i48377_1_); + setDefaultState(getDefaultState().with(PUSHING, true) + .with(POWERED, false)); + } + + @Override + protected void fillStateContainer(Builder p_206840_1_) { + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, POWERED, PUSHING)); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + return super.getStateForPlacement(ctx).with(POWERED, ctx.getWorld() + .isBlockPowered(ctx.getPos())); + } + + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllBlocks.REALITY_FUNNEL.asStack(); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, + BlockPos pos, BlockPos p_196271_6_) { + if (!canStillInteract(state, world, pos)) + return AllBlocks.REALITY_FUNNEL.getDefaultState() + .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + return state; + } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + return !world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING) + .getOpposite())) + .getShape(world, pos) + .isEmpty(); + } + + protected abstract boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos); + + @Override + public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + boolean isMoving) { + if (worldIn.isRemote) + return; + boolean previouslyPowered = state.get(POWERED); + if (previouslyPowered != worldIn.isBlockPowered(pos)) + worldIn.setBlockState(pos, state.cycle(POWERED), 2); + } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + if (!context.getWorld().isRemote) + context.getWorld() + .setBlockState(context.getPos(), state.cycle(PUSHING)); + return ActionResultType.SUCCESS; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index e3873d576..54db37f47 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.logistics.block.realityFunnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.foundation.block.ProperDirectionalBlock; import net.minecraft.block.Block; @@ -22,7 +23,7 @@ import net.minecraft.world.World; public class RealityFunnelBlock extends ProperDirectionalBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - + public RealityFunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); setDefaultState(getDefaultState().with(POWERED, false)); @@ -30,16 +31,24 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(FACING, context.getFace()) + Direction facing = context.getFace(); + if (facing.getAxis() + .isVertical() + && context.getWorld() + .getBlockState(context.getPos() + .offset(facing.getOpposite())) + .getBlock() instanceof ChuteBlock) + facing = facing.getOpposite(); + return getDefaultState().with(FACING, facing) .with(POWERED, context.getWorld() .isBlockPowered(context.getPos())); } - + @Override protected void fillStateContainer(Builder builder) { super.fillStateContainer(builder.add(POWERED)); } - + @Override public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { @@ -49,13 +58,31 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world, BlockPos pos, BlockPos p_196271_6_) { - if (state.get(FACING) - .getAxis() - .isHorizontal() && direction == Direction.DOWN) { - BlockState equivalentFunnel = AllBlocks.BELT_FUNNEL.getDefaultState() - .with(BeltFunnelBlock.HORIZONTAL_FACING, state.get(FACING)); - if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) - return equivalentFunnel; + Direction facing = state.get(FACING); + if (facing.getAxis() + .isHorizontal()) { + if (direction == Direction.DOWN) { + BlockState equivalentFunnel = AllBlocks.BELT_FUNNEL.getDefaultState() + .with(BeltFunnelBlock.HORIZONTAL_FACING, facing) + .with(BeltFunnelBlock.POWERED, state.get(POWERED)); + if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) + return equivalentFunnel; + } + if (direction == facing) { + BlockState equivalentFunnel = AllBlocks.CHUTE_FUNNEL.getDefaultState() + .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing) + .with(ChuteFunnelBlock.POWERED, state.get(POWERED)); + if (ChuteFunnelBlock.isOnValidChute(equivalentFunnel, world, pos)) + return equivalentFunnel; + } + if (direction == facing.getOpposite()) { + BlockState equivalentFunnel = AllBlocks.CHUTE_FUNNEL.getDefaultState() + .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing.getOpposite()) + .cycle(ChuteFunnelBlock.PUSHING) + .with(ChuteFunnelBlock.POWERED, state.get(POWERED)); + if (ChuteFunnelBlock.isOnValidChute(equivalentFunnel, world, pos)) + return equivalentFunnel; + } } return state; } @@ -65,13 +92,6 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { boolean isMoving) { if (worldIn.isRemote) return; - - Direction blockFacing = state.get(FACING) - .getOpposite(); - if (fromPos.equals(pos.offset(blockFacing))) - if (!isValidPosition(state, worldIn, pos)) - worldIn.destroyBlock(pos, true); - boolean previouslyPowered = state.get(POWERED); if (previouslyPowered != worldIn.isBlockPowered(pos)) worldIn.setBlockState(pos, state.cycle(POWERED), 2); @@ -79,10 +99,10 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - return !world.getBlockState(pos.offset(state.get(FACING) + Block block = world.getBlockState(pos.offset(state.get(FACING) .getOpposite())) - .getShape(world, pos) - .isEmpty(); + .getBlock(); + return !(block instanceof RealityFunnelBlock) && !(block instanceof HorizontalInteractionFunnelBlock); } } diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index 5ada74bb1..bbdb5514d 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -2,7 +2,7 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/funnel_off", + "2": "create:block/belt_funnel_push_off", "3": "create:block/funnel_back", "4": "create:block/funnel_plating", "particle": "create:block/brass_block" diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json deleted file mode 100644 index a0fbb44b3..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "2": "create:block/funnel_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 7ff538d50..336419898 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -2,7 +2,7 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/funnel_off", + "2": "create:block/belt_funnel_push_off", "3": "create:block/funnel_back", "4": "create:block/funnel_plating", "particle": "create:block/brass_block" diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json deleted file mode 100644 index 65664520e..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "2": "create:block/funnel_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute_funnel/block.json b/src/main/resources/assets/create/models/block/chute_funnel/block.json new file mode 100644 index 000000000..5a64bd828 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute_funnel/block.json @@ -0,0 +1,248 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/belt_funnel_push_off", + "4": "create:block/funnel_plating", + "13": "create:block/chute", + "3_particle": "create:block/brass_block", + "particle": "create:block/brass_block", + "1_2": "create:block/funnel_back" + }, + "elements": [ + { + "name": "RightWall", + "from": [0, 0, 2], + "to": [2, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#3_particle"}, + "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#3"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#3_particle"}, + "west": {"uv": [0, 0, 16, 6], "rotation": 270, "texture": "#3"}, + "up": {"uv": [0, 0, 2, 6], "texture": "#3"}, + "down": {"uv": [14, 0, 16, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "LeftWall", + "from": [14, 0, 2], + "to": [16, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#3_particle"}, + "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#3"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#3_particle"}, + "west": {"uv": [0, 0, 16, 6], "rotation": 270, "texture": "#3"}, + "up": {"uv": [14, 0, 16, 6], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "Top", + "from": [2, 14, 2], + "to": [14, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 10]}, + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#3_particle"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#3_particle"}, + "up": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "Top", + "from": [2, 0, 2], + "to": [14, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 10]}, + "faces": { + "north": {"uv": [2, 14, 14, 16], "texture": "#3_particle"}, + "south": {"uv": [2, 14, 14, 16], "texture": "#3_particle"}, + "up": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "F5", + "from": [11, 1.5, 3], + "to": [14, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "F6", + "from": [5, 1.5, 3], + "to": [8, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "F6", + "from": [8, 1.5, 3], + "to": [11, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "F7", + "from": [2, 1.5, 3], + "to": [5, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "BackExtension", + "from": [2, 2, 10], + "to": [14, 14, 14], + "faces": { + "east": {"uv": [13, 10, 15, 16], "texture": "#1_2"}, + "south": {"uv": [9, 0.5, 15, 6.5], "texture": "#1_2"}, + "west": {"uv": [13, 10, 15, 16], "rotation": 180, "texture": "#1_2"}, + "up": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#1_2"}, + "down": {"uv": [13, 10, 15, 16], "rotation": 90, "texture": "#1_2"} + } + }, + { + "name": "MidExtension", + "from": [1, 1, 7], + "to": [15, 15, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, + "faces": { + "north": {"uv": [0, 9, 7, 16], "texture": "#1_2"}, + "east": {"uv": [11, 9, 13, 16], "rotation": 180, "texture": "#1_2"}, + "south": {"uv": [8.5, 0, 15.5, 7], "texture": "#1_2"}, + "west": {"uv": [11, 9, 13, 16], "texture": "#1_2"}, + "up": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#1_2"}, + "down": {"uv": [11, 9, 13, 16], "rotation": 270, "texture": "#1_2"} + } + }, + { + "name": "Back", + "from": [3, 3, 14], + "to": [13, 13, 18], + "faces": { + "east": {"uv": [9.5, 9, 14.5, 11], "rotation": 90, "texture": "#4"}, + "south": {"uv": [9.5, 11, 14.5, 16], "texture": "#4"}, + "west": {"uv": [9.5, 9, 14.5, 11], "rotation": 270, "texture": "#4"}, + "up": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, + "down": {"uv": [9.5, 9, 14.5, 11], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "Back", + "from": [1.1, 1.1, -2.9], + "to": [14.9, 14.9, 2.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, + "faces": { + "north": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#13"}, + "east": {"uv": [0, 13.5, 7, 16], "rotation": 90, "texture": "#13"}, + "west": {"uv": [0, 13.5, 7, 16], "rotation": 270, "texture": "#13"}, + "up": {"uv": [0, 13.5, 7, 16], "texture": "#13"}, + "down": {"uv": [0, 13.5, 7, 16], "rotation": 180, "texture": "#13"} + } + }, + { + "name": "Back", + "from": [2.1, 1.1, -6.7], + "to": [13.9, 4.9, -2.9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -54]}, + "faces": { + "north": {"uv": [9, 6, 15, 8], "texture": "#13"}, + "east": {"uv": [11, 6, 13, 8], "texture": "#13"}, + "south": {"uv": [0, 0, 7, 7], "texture": "#13"}, + "west": {"uv": [11, 6, 13, 8], "texture": "#13"}, + "up": {"uv": [8.5, 1, 15.5, 3], "rotation": 180, "texture": "#13"}, + "down": {"uv": [9, 4.5, 15, 6.5], "texture": "#13"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "block", + "origin": [8, 8, 8], + "children": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [4, 5, 6, 7] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [8, 9] + }, + { + "name": "DELETABLEEXTENSION", + "origin": [9, -4, 8], + "children": [] + }, + { + "name": "DELETABLEEXTESNIONMID", + "origin": [35, 12, 4], + "children": [] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [10, 11] + } + ] + }, 12] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute_port.json b/src/main/resources/assets/create/models/block/chute_port.json deleted file mode 100644 index 631e2d653..000000000 --- a/src/main/resources/assets/create/models/block/chute_port.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "14": "create:block/chute_port", - "particle": "create:block/zinc_block" - }, - "elements": [ - { - "name": "Port", - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [12, 0, 16, 4], "texture": "#14"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#14"}, - "south": {"uv": [0, 0, 4, 4], "texture": "#14"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#14"}, - "up": {"uv": [4, 4, 8, 8], "texture": "#14"}, - "down": {"uv": [0, 4, 4, 8], "texture": "#14"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_pull_off.png b/src/main/resources/assets/create/textures/block/belt_funnel_pull_off.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb3fab83118246f4cdf9a81c2a2c01979af75c8 GIT binary patch literal 438 zcmV;n0ZIOeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940ZU0lK~y+T#gV&8 z15pr$|GgwJ(SQ~fsVqzp2ufrX!KV-_Ye5?;A3zBD3|4}Vps}#APbmSx3lW4M7$Kmj zG0R?$GqbMEstHNq55w-6GygDWK5cJjUV-F#A<`)wN-2aP5QLIO%G45P{`Y;LXZtYO zxKOg-`2k%TXxv_4rLv5-t|Nw6&#yf^cA6*`Ejj1L44l{NkO?O9vpC+bVVo}V6z>$< zhZ|^jx?Bs#^>A9PVG7X{PZVprtGIu-fzA`KGSI%w9~1|hM<`5Bi21B~0*A~mRKxdN z%i^bKTkA!&G-t{CxtZ;_$Y#<~&}v`FccxI5ylF&6mLDkGwXUNExvcq>9!&8It6jVU=0ddUQ_7o&e7XSbN07*qoM6N<$g0Q-?1ONa4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_pull_on.png b/src/main/resources/assets/create/textures/block/belt_funnel_pull_on.png new file mode 100644 index 0000000000000000000000000000000000000000..cb757e00fd5cc0b4ab859e96b971b86e7a20bb39 GIT binary patch literal 433 zcmV;i0Z#sjP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0Y*tgK~y+T#gV&8 z13?sq|JmI{6I5)1q}sw13qeU(FW_6)*(>(GfI^-_UqM^3Pa{Y`yo3nCVlYS`V2D}v zI-WCT3)x^oQuxEqoS8Z2FmpapJK2;V`9X|qMuU_RaSTMUI!4A2sXfPG2n^j21{YQ> z8$lS+rH)4P4tted^aq|QNYwir;=S8Kxn!$-eo@Cwy$ol(v;nZ;ib#|I_3 zyPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TIy{R+A&A$duFE~3o$B26vb@uA)&DrkB z7V3>Aj?1SQgu)n-E*_k%@2`pPv2}_8?UJdDgA!UU`Ps$rov{>0QQMo7c6qKS^Rrm3 zUd8I-3WCQbJP%MwEIwNy?i<%Aj8DnkL>4!-tE51F_-D3mlrEI&i2{|9$WV|1QY1=~5M!){k6s{pr680N+Ci%F4@| RAb0=(002ovPDHLkV1nLau3!KF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_push_on.png b/src/main/resources/assets/create/textures/block/belt_funnel_push_on.png new file mode 100644 index 0000000000000000000000000000000000000000..203afe626e08038f592f30eb3d130cb28a70d959 GIT binary patch literal 426 zcmV;b0agBqP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T)xHYpQ`RH8i+oF82Ow7V+`ULh+?~poK~4R$6*M(zJ*ZxJM*Sg zEF%ab*>r8BwCkXLe__XSQ%g2#t!<(4Ei_tf zO1C8B(D{p^>3LvHK7H-!w>~FA7xJRK=zZBDvgP`tJh37sEBc U?nPy${Qv*}07*qoM6N<$g5B!2-2eap literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png index d7c1b0a50a27ab8401ae4963bcc9be7628b5f0b4..a6d6bcf5795e8d5c2669855d6fbecf9fb94bcdda 100644 GIT binary patch delta 1356 zcmV-S1+)6q43P_vR(~c*L_t(oN41yFPh3?L$M1XdgJFKQASfgzx`R@V3T&F*g9y!qA}o{!RjfdP}vW@X`YIxR#X zrG3VcJookWnSHx}i*!0^t{02aM*&dfNE+k%t~4|x->{C)z|zu^yg&(njDj(3U~O$p z`ySTQ!J4`Gd4Ia%fmRYgJp<++KbCJ;$3HkYkd9h~<@tQxbaZq`Uz>vYz$zCBuqKnq zNFU{`+n~^K=JE~jajUB&9*tC$4}hfo zR)Y{o7H9*mwQNr-P_ASYSVLg3xV!)A0VL!4&J99ua&j_YP$QoJaVRA0GZdzHiC`-EUPy0dkcC=0_ouNn1rp zQJPA%HGfGw8IQ-L<#K7$-Q8tnPTHv~06RN7qL^&Zn9%o-jUrJf~7HmefpKJj{M@L7cHD!TXu6;7? zzxRraD~es+O;O*9Pshdr^843?1rxJzBLQrUh+DEpb{iR^PUxJeyLV;1CIX)o`x;8z z=YQqO^WZ!JH*O3E^?KbTtwQyp9^-67&DMhhON5|C=e>KMhwJe``}*O66=7f7((`|0 zOy&R48XoxO(Qm<*(a` zXR)xlwQDvvs+QfJ$ZEAFl6TBuZhsUs3oeSLEYQ^0wkOlS_UP4PnTAzJ<^+~CcY{*t zRzTf9`Ci~&YC1bRPexCJqdYvG|H}ez?9QD4cPrdWrTbF>+l8 z4kj1e3jt)ge{jzr2IRg~ymrkjKYiLz4)ivQRKC-&v&q O0000^CRHrD2!~~0)NGqiYng~S0 z0ym8bRu?Y#1G+S_&=})Z7ycLiXd+8ps7XapQm`emfSS+*6O5qN4(-fzrZdm;Igc~E zc~h+4W#@wbH5J#bqafippb&djH%8?A#?YF7PNqvWNJQkLgmh=ad0LU0vvjJ9CR&1Wa zdL~$N{=x;O>VJVG31FT97cO4ZcR0sux7#`~tFXLWF1wMD5uMvGupfwWl>lps#iGtp zo(zM**4fKDz{9O^CFyip*wu9o5uO?LJ7kT-c8FUV_dq-Z+O?wfD$0dkc0ti4Lnzi*?YDRmrcR$e9kOVdPlCiPM46E?kKnDjxjC%> z!=61)gh7D!y5hw^-f8z_E|(J-^^ry+djIIr=k)!)DzJE)A{tO!Ibi>GC>9H%D5FYq zxon@rlYi;7uVZMa;6_KQB8PMgQ~}u7*igk(gXM(%4%zKUR4PNdr&1}qqMZ5A$SzkF z1tu#}QTclzfauASCw25yfmv>INSH?qaiVdgQc*;PB$SycxzF4hRRVKmV3?qV-rGHXR6$XK?YmmYlCCM{#jnQkxlp-(* z0c%M1A>ujKiU)vqC@+-f@>#8lVv+C$LL{0SLGwT=47CW{XIGYWa`4fLyZ-x{duq?H zt{cXyqkUPQ#4D#xh1B=L<;%{OywL;}Bho^)BVlBXK4E)ao0-w``Ut!}KGstbf4*|( zc7M1Nfg?wbhOJi1WkjKQ(LUpZp&|XCEksCabe=i$rk)q=6#TXpC87c4D8Bc&BTyX3 z;l!1M%Va3OoGSEvPuGY&gdjRQJFBBdU^`&-|0U59ccVO?4@8*|DdlAp!Eo75)5ll)gpQAFpEYMNXF9_ z!fw<}lSmyu_L3?fj>IRB7!ne?7Jn}iFJfwL-n)0V$|RP5U2($_PI3Tvep>#A=xEzk zFUVOCB82PGf-hbADarv9TTJuPI8e?;wL)A+EhA4HdqI0SuxnOa#xpyq976~T@ck&{ zh7>K74d&7Zq0wyWe?^neKHa-!#pTVLw=_xd0DYgJ^C{OPl=mrj4ZyBt zD>rV2BrV@`K)ttHUCr$KRWKNW+S*-hQd9xNdsV=ng@pypRJ)QHlFIFdG=Kg_l>p@c z7vEj4YfG-xHr!p2jE#+^`}5AKCf{Fw*EAvT!?}L}#6WUR6M;4O01E&B07*qoM6N<$ Ef-xBQPyhe` diff --git a/src/main/resources/assets/create/textures/block/chute_port.png b/src/main/resources/assets/create/textures/block/chute_port.png deleted file mode 100644 index 88fd5a3f15139dec5cb0a8aa6122fc15ea5bfe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1672 zcmX|CdpOkj8vp+0=8|Dz?3T>>nZ~52&X~%oT=E;q3`>c&O_Gr!kr|B3FfpMTY-T7^ zCy6t&U6eKEV3%@>Rym94oM~tZu@=WIqR7Zjb)NIb`@YZTeV_O8c|L!THOV@m_A*=gfn~?04T+)v>{j>HsG=X;s7vy_{pG}yvRviaxHJq zA)Y@cjF%V^djfDnBBFV;=o38Ho<^r_-7*756aaw3db%?XBprQq&4okSLp;yPDsfN8 zF+4A1jw0npYTWF7d#KHRlp{59$H_S?kAqwS-q^s3im)UwL-voGgZq5_XYIbakyWg! zZAqGbRUbAzRXum=-F2t%u)f63_Rgu~*!ksq-<$nX9;NEa9o}r@vde%w+xGK+Tf3R6 znaA7Ba&yJ^TGm}?OB0M!3I;M-##P-Nmk#J@Jfx(R@mKFnqtg}+#wTbKsv8<^R4A2s zB^{iB?y(1@yJo6^IE{Z~=%LuetYP`%1I+0+s$R8f*=p)G#6v3n?#uVNoz9@2JQk`gZgeS)bauEo)8jM4Uuj;*`4E2aJ4zv9r1TU< zsue!*#;^jEM1UbaC_}v*FIK#@ew1h~>`6AM2z8Xl;IIoF`MIS-;AN(i z^mK19xfgTn8TDj%aewWlrulVtu7UNl&Hq*vDqLLSJ2*V!H3Ynob*eSwEAg<@C%uTM z3j>OV1@F6|K^AM=1Zo=zreuo)(J?#w_H6C#TTwVRNspena1MhoEactKKp%hkCa*}t z^PV6K*4`{&IlOlLmEjaZFoFw4NUczS_}ft+B{g<2MD{S&(@u}Q;nsC@g)zI!UN@zj z`T8)h2qmE6p^y4$YHEW1jB^hn3c!|en)aGhojD|%`cI3*3pF{K^Ko?3V)fhmHoSIwv8WtGH``yQI!rT3iJwRg5N{O*mvT_Dd8u2pH* zQ#U*_uLe#|PTwXZCi>Ub*Sid>^89J0hL8rF2G4xgLup2jyYd zExj*amU&K1PTIhkPq0FJWh-+wZ*HGBwH%6hI@@aE28_*j^0{2D@9yGx8F=(`_tBN! zdd_(pka6~MCBA!kd3obNPA_7ZVzGYLtyGFJg~n%V*;ueR!Gs3)AAqhsx%4i7~%#i!A(JO4CooU>^f=#^0Zj2anJfNU5V z3PP2*r&gfo8Ah#f!nN?=#A74j4rS|=CnFMPda7?Cgtaw*%Fu^eYQYUOjckRbr;ag0 zp3!M%MS|z+KW#T>e-#r_C;n&qDPup9d*S^nALtkehcmitV|W)_7XJPxBe zDP6e@qvD4AU?)Z3>{$VFMm`#q!K%q*9dwfNQ$8Uy>uO(6pWYvn^A}~6cw&==U1y&B zLlfyPmAh()IfSc(1dp>}^a$7VUV?`XfRqXw8xK&BTq|3Sbe!LrPnzavEj zJs2C!{8H+dy3h#0oO`1w>VGQ(0*yR3{s$_$rwg_ScPw2tdkjUW#c+>%;pxJyK$xH_F&qrP7d$E{FL^}sZDw6Jk3`)*f%7Dr7%Y^M_ zcPdQ_OO8Ki5ZmgC5=c}+*cG{;U5&M^|C~Y2fJ@N(3N%!7bQDPZyz61!S|b^dP~sFkX*@e$&&+dI^O->L z*|gXwJwya;3#2x?Q3m(R<~v5<^)13JE)V7Sph6Rq28*siZhz7hgu;KfL&$o(S>Ud& z5%^aY-^_2Zt$`htXE;nCc+&T-is`=p;`&U#famDMNP{eXQDG7_i~8F9%q6&rJ3pPu z$x)T}w`Sf0&M`@llG!c8INO_%oi^nHR$)&nW!ARD6y|bhBjyyjN z6akyOz){OURZ$dxFXA&=R`znCMFux$~izm45tXzV5;F!6AxYtV%3}$ubsnShiqEf)Qh=k>L0Tx$$OR%fQQHM# z+lksPRAX%ysw*OmT_EU0BNvFYRN>MNK^X2Z{I>w`2V8{1d4Jh45dZ)H07*qoM6N<$ Ef}GojN&o-= diff --git a/src/main/resources/assets/create/textures/block/funnel_on.png b/src/main/resources/assets/create/textures/block/funnel_on.png index ae89427226bd0cafaca126f36c3f21774fcff339..eb51c22fea82ee60b1a25caf6d325d78c41e006a 100644 GIT binary patch delta 306 zcmV-20nPsU0`dZoNq@lr01m+cxRGn^00038NklV4e5JkVeCL$EHDG^c% z3W$VII12@Jsua*ug}iahD>cx=zC?XO;@ z4<5oc%W+fF@ZKZO0hfnq)QmdHIkpz~{;^QA=dSN}2FR?F#ebw|5SkPPCeeqvF(EeU z2^MJz!@sh4IeA527VboC(TAwB7gwU;E^^P;d@Nr;^XP=dO;Jm<7O^Ns!eZv!^Tr8* zS5Z%+d;i!Qg!{*4S_4Wc8F@Gt^RR^9O%|ec9-r&?qCw-fxK~-?gOW-vkm$t4E|7gE zO1p5%jZ!Y0b1S2=3xrNoa)HE0ReZE-ki%Wae>VXB0D&X0o!NcYoB#j-07*qoM6N<$ Ef)iDW^Z)<= delta 314 zcmV-A0mc6E0{Q}wNq@os01m?_!~W={%C$%3#>ma)a`f}s&a(dI!R{DfPXloX)u}ot&NGX$TK|5 zW{4ZSzO8X`lw&o0MkUE(;XpVSmcmEj1K%4`v%2 Date: Fri, 26 Jun 2020 01:16:17 +0200 Subject: [PATCH 17/47] Populang - Outdated localizations will now have a populated counterpart in the generated assets, for easier maintenance --- src/generated/resources/.cache/cache | 11 +- .../resources/assets/create/lang/en_us.json | 4 +- .../assets/create/lang/unfinished/de_de.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/fr_fr.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/it_it.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/ja_jp.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/ko_kr.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/nl_nl.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/pt_br.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/ru_ru.json | 1361 +++++++++++++++++ .../assets/create/lang/unfinished/zh_cn.json | 1361 +++++++++++++++++ .../create/foundation/data/LangMerger.java | 142 +- .../create/lang/Localization Readme.txt | 10 +- 13 files changed, 12393 insertions(+), 23 deletions(-) create mode 100644 src/generated/resources/assets/create/lang/unfinished/de_de.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/fr_fr.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/it_it.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/ja_jp.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/ko_kr.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/nl_nl.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/pt_br.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/ru_ru.json create mode 100644 src/generated/resources/assets/create/lang/unfinished/zh_cn.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 345408e7c..e60933ee1 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -336,7 +336,16 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json -0cc26662a5c436a5703926fe3509f0a9536ee737 assets\create\lang\en_us.json +56b1f1f0d28a4523ae1e2e57be7d58716edb54bf assets\create\lang\en_us.json +eceeb85745ce5b39d3fb0ab594641e7297e3dcee assets\create\lang\unfinished\de_de.json +514032f2f67fb4b4eeed311c9c3b7d0e36c31436 assets\create\lang\unfinished\fr_fr.json +1b4661d0e99bc26061b53817e5ad8c6a440d4b6a assets\create\lang\unfinished\it_it.json +2e7d9659f699f3c3bb4740c354dd4286ee2179cc assets\create\lang\unfinished\ja_jp.json +dfa78c83916cbd277ecdfb1783041470556d8399 assets\create\lang\unfinished\ko_kr.json +c6df53cb093090c2bfcccf910bb2261d1b0119c2 assets\create\lang\unfinished\nl_nl.json +2772dade72823ee9a174638afb5d9cec3834527b assets\create\lang\unfinished\pt_br.json +dd03b38344088dfd4517a380e9ed5052b20e4d90 assets\create\lang\unfinished\ru_ru.json +ef2f3a2b8c547821203d2f0487e7885bb2d6dcca assets\create\lang\unfinished\zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 6697c96bb..bb60a2c89 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -529,7 +529,7 @@ "create.generic.unit.minutes": "Minutes", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "\u00B0", + "create.generic.unit.degrees": "°", "create.action.scroll": "Scroll", "create.action.confirm": "Confirm", @@ -1075,7 +1075,7 @@ "block.create.furnace_engine.tooltip.behaviour1": "_Starts_ _powering_ a _Flywheel_ placed in front of it (1m apart). Use a Blast Furnace for higher speeds.", "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "A large metal wheel to _harness_ _and_ _stabilize_ generated force by an _attached_ _Engine_. Flywheels connect to engines if they are _1m_ _apart_ and at a _90\u00B0_ _Angle_ from each other.", + "block.create.flywheel.tooltip.summary": "A large metal wheel to _harness_ _and_ _stabilize_ generated force by an _attached_ _Engine_. Flywheels connect to engines if they are _1m_ _apart_ and at a _90°_ _Angle_ from each other.", "block.create.flywheel.tooltip.condition1": "When Attached to Running Engine", "block.create.flywheel.tooltip.behaviour1": "Provides _Rotational_ _Force_ to a connected contraption based on the generator's strength and speed.", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json new file mode 100644 index 000000000..ac258ff13 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 766" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "adjustable_crate", + "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", + "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", + "block.create.adjustable_repeater": "Verzögernder Verstärker", + "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_bricks": "Andesitziegel", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "UNLOCALIZED: Basin", + "block.create.belt": "Mechanischer Riemen", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "Fließband-Beobachter", + "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "UNLOCALIZED: Brass Block", + "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", + "block.create.clutch": "Kupplung", + "block.create.cogwheel": "Zahnrad", + "block.create.copper_block": "UNLOCALIZED: Copper Block", + "block.create.copper_casing": "UNLOCALIZED: Copper Casing", + "block.create.copper_ore": "UNLOCALIZED: Copper Ore", + "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", + "block.create.creative_crate": "Bauplankanonenmacher", + "block.create.creative_motor": "UNLOCALIZED: Creative Motor", + "block.create.crushing_wheel": "Mahlwerkrad", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", + "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", + "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", + "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", + "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "UNLOCALIZED: Deployer", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "Dioritziegel", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "Dolomit", + "block.create.dolomite_bricks": "Dolomitziegel", + "block.create.dolomite_bricks_slab": "Dolomitziegelstufe", + "block.create.dolomite_bricks_stairs": "Dolomitziegeltreppe", + "block.create.dolomite_bricks_wall": "Dolomitziegelmauer", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "Dolomitsäule", + "block.create.encased_belt": "Eingeschlossener Riemen", + "block.create.encased_fan": "Eingeschlossener Propeller", + "block.create.encased_shaft": "Eingeschlossene Welle", + "block.create.extractor": "Auswerfer", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "UNLOCALIZED: Flywheel", + "block.create.framed_glass": "UNLOCALIZED: Framed Glass", + "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", + "block.create.funnel": "Fließbandtrichter", + "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", + "block.create.gabbro": "Gabbro", + "block.create.gabbro_bricks": "Gabbroziegel", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "Gabbroziegeltreppe", + "block.create.gabbro_bricks_wall": "Gabbroziegelmauer", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "Getriebe", + "block.create.gearshift": "Gangschaltung", + "block.create.granite_bricks": "Granitziegel", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", + "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "Großes Zahnrad", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "Kalksand", + "block.create.limestone": "Kalkstein", + "block.create.limestone_bricks": "Kalksteinziegel", + "block.create.limestone_bricks_slab": "Kalksteinziegelstufe", + "block.create.limestone_bricks_stairs": "Kalksteinziegeltreppe", + "block.create.limestone_bricks_wall": "Kalksteinziegelmauer", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "Kalksteinsäule", + "block.create.linear_chassis": "Schubgerüst", + "block.create.linked_extractor": "Verknüpfter Auswerfer", + "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "Mechanisches Lager", + "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", + "block.create.mechanical_drill": "Mechanischer Bohrer", + "block.create.mechanical_harvester": "Mechanische Erntemaschine", + "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", + "block.create.mechanical_piston": "Mechanischer Kolben", + "block.create.mechanical_piston_head": "Mechanisches Kolbenende", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "Mechanische Presse", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", + "block.create.millstone": "UNLOCALIZED: Millstone", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "UNLOCALIZED: Nozzle", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", + "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "Polierter Dolomit", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "Polierter Gabbro", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "Polierter Kalkstein", + "block.create.polished_limestone_slab": "Polierte Kalksteinstufe", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", + "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "Polierter Verwitterter Kalkstein", + "block.create.polished_weathered_limestone_slab": "Polierte Verwitterte Kalksteinstufe", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", + "block.create.powered_latch": "UNLOCALIZED: Powered Latch", + "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", + "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", + "block.create.pulse_repeater": "Pulsierender Verstärker", + "block.create.radial_chassis": "Drehgerüst", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "Redstone-Kontakt", + "block.create.redstone_link": "Redstone-Verbindung", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "UNLOCALIZED: Rope", + "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", + "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", + "block.create.schematic_table": "Bauplantisch", + "block.create.schematicannon": "Bauplankanone", + "block.create.scoria": "UNLOCALIZED: Scoria", + "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", + "block.create.shaft": "Welle", + "block.create.speedometer": "UNLOCALIZED: Speedometer", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben", + "block.create.stockpile_switch": "Vorratssensor", + "block.create.stressometer": "UNLOCALIZED: Stressometer", + "block.create.tiled_glass": "Glasfliesen", + "block.create.tiled_glass_pane": "Glasfliesenscheibe", + "block.create.transposer": "UNLOCALIZED: Transposer", + "block.create.turntable": "Drehtisch", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", + "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "Wasserrad", + "block.create.weathered_limestone": "Verwitterter Kalkstein", + "block.create.weathered_limestone_bricks": "Verwitterte Kalksteinziegel", + "block.create.weathered_limestone_bricks_slab": "Verwitterte Kalksteinziegelstufe", + "block.create.weathered_limestone_bricks_stairs": "Verwitterte Kalksteinziegeltreppe", + "block.create.weathered_limestone_bricks_wall": "Verwitterte Kalksteinziegelmauer", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", + "block.create.zinc_block": "UNLOCALIZED: Zinc Block", + "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", + "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", + "item.create.belt_connector": "Mechanischer Riemen", + "item.create.brass_hand": "UNLOCALIZED: Brass Hand", + "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", + "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", + "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", + "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", + "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", + "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", + "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_brass": "UNLOCALIZED: Crushed Brass", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "UNLOCALIZED: Deforester", + "item.create.dough": "Teig", + "item.create.electron_tube": "UNLOCALIZED: Electron Tube", + "item.create.empty_schematic": "Leerer Bauplan", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "Filter", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "Blockpistole", + "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", + "item.create.iron_sheet": "Eisenblech", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "Propeller", + "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", + "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", + "item.create.rose_quartz": "Rosenquarz", + "item.create.sand_paper": "UNLOCALIZED: Sand Paper", + "item.create.schematic": "Bauplan", + "item.create.schematic_and_quill": "Bauplan und Feder", + "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "Baumdünger", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "Symmetriestab", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "UNLOCALIZED: Whisk", + "item.create.wrench": "UNLOCALIZED: Wrench", + "item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot", + "item.create.zinc_nugget": "UNLOCALIZED: Zinc Nugget", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s stolperte in ein Mahlwerk", + "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", + "death.attack.create.fan_lava": "%1$s wurde von Lava verweht", + "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", + "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", + "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", + + "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "Mahlen", + "create.recipe.milling": "UNLOCALIZED: Milling", + "create.recipe.splashing": "Waschen", + "create.recipe.splashing.fan": "Propeller hinter fließendem Wasser", + "create.recipe.smoking_via_fan": "Räuchern", + "create.recipe.smoking_via_fan.fan": "Propeller hinter Feuer", + "create.recipe.blasting_via_fan": "Schmelzen", + "create.recipe.blasting_via_fan.fan": "Propeller hinter Lava", + "create.recipe.pressing": "Mechanische Presse", + "create.recipe.mixing": "UNLOCALIZED: Mixing", + "create.recipe.packing": "UNLOCALIZED: Compacting", + "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", + "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", + "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", + "create.recipe.blockzapper_upgrade": "Blockpistole", + "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", + "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", + "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", + "create.recipe.processing.chance": "Chance: %1$s%%", + "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", + + "create.generic.range": "Reichweite", + "create.generic.radius": "Radius", + "create.generic.width": "UNLOCALIZED: Width", + "create.generic.height": "UNLOCALIZED: Height", + "create.generic.length": "UNLOCALIZED: Length", + "create.generic.speed": "Geschwindigkeit", + "create.generic.delay": "Verzögerung", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Sekunden", + "create.generic.unit.minutes": "Minuten", + "create.generic.unit.rpm": "UNLOCALIZED: RPM", + "create.generic.unit.stress": "UNLOCALIZED: su", + "create.generic.unit.degrees": "UNLOCALIZED: °", + + "create.action.scroll": "Wechseln", + "create.action.confirm": "Bestätigen", + "create.action.abort": "Abbrechen", + "create.action.saveToFile": "Speichern", + "create.action.discard": "Löschen", + + "create.keyinfo.toolmenu": "Werkzeugmenü", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", + "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", + "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", + "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", + "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", + "create.gui.toolmenu.focusKey": "Halte [%1$s] zum Fokussieren", + "create.gui.toolmenu.cycle": "[Mausrad] zum Wechseln", + "create.gui.symmetryWand.mirrorType": "Spiegeln", + "create.gui.symmetryWand.orientation": "Orientierung", + + "create.symmetry.mirror.plane": "Einfach Spiegeln", + "create.symmetry.mirror.doublePlane": "Rechteckig", + "create.symmetry.mirror.triplePlane": "Achteckig", + + "create.orientation.orthogonal": "Orthogonal", + "create.orientation.diagonal": "Diagonal", + "create.orientation.horizontal": "Horizontal", + "create.orientation.alongZ": "Entlang Z", + "create.orientation.alongX": "Entlang X", + + "create.gui.blockzapper.title": "Blockpistole", + "create.gui.blockzapper.replaceMode": "Austauschmodus", + "create.gui.blockzapper.searchDiagonal": "Diagonalen folgen", + "create.gui.blockzapper.searchFuzzy": "Materialgrenzen ignorieren", + "create.gui.blockzapper.range": "Reichweite", + "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", + "create.gui.blockzapper.patternSection": "Muster", + "create.gui.blockzapper.pattern.solid": "Fest", + "create.gui.blockzapper.pattern.checkered": "Schachbrett", + "create.gui.blockzapper.pattern.inversecheckered": "Inverses Schachbrett", + "create.gui.blockzapper.pattern.chance25": "25%-Chance", + "create.gui.blockzapper.pattern.chance50": "50%-Chance", + "create.gui.blockzapper.pattern.chance75": "75%-Chance", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", + "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", + "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", + "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", + "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", + "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", + "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", + "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", + "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", + "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", + "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", + "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", + "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", + "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", + + "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + + "create.blockzapper.usingBlock": "Auswahl: %1$s", + "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", + "create.blockzapper.component.body": "Rumpf", + "create.blockzapper.component.amplifier": "Verstärker", + "create.blockzapper.component.accelerator": "Beschleuniger", + "create.blockzapper.component.retriever": "Empfänger", + "create.blockzapper.component.scope": "Fernrohr", + "create.blockzapper.componentTier.none": "Nichts", + "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", + "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", + "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", + "create.blockzapper.empty": "Keine Blöcke übrig!", + + "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", + "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", + "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", + "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", + "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "Filter", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + + "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", + "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", + "create.gui.goggles.at_current_speed": "UNLOCALIZED: At current Speed", + "create.gui.goggles.base_value": "UNLOCALIZED: Base Value", + "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", + "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", + "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", + "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", + "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", + "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", + "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "adjustable_crate", + "create.gui.adjustable_crate.storageSpace": "Lagerraum", + "create.gui.stockpile_switch.title": "Vorratssensor", + "create.gui.stockpile_switch.lowerLimit": "Untergrenze", + "create.gui.stockpile_switch.upperLimit": "Obergrenze", + "create.gui.stockpile_switch.startAt": "Signal bei", + "create.gui.stockpile_switch.startAbove": "Signal über", + "create.gui.stockpile_switch.stopAt": "Signalstopp bei", + "create.gui.stockpile_switch.stopBelow": "Signalstopp über", + "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", + "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", + "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", + "create.gui.sequenced_gearshift.instruction.wait": "UNLOCALIZED: Wait", + "create.gui.sequenced_gearshift.instruction.wait.duration": "UNLOCALIZED: Duration", + "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", + "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", + "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", + "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", + "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", + + "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", + "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", + "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", + "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", + "create.schematicAndQuill.prompt": "Gib dem Bauplan einen Namen:", + "create.schematicAndQuill.fallbackName": "Mein Bauplan", + "create.schematicAndQuill.saved": "Gespeichert als %1$s", + + "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", + "create.schematic.position": "Position", + "create.schematic.rotation": "Rotation", + "create.schematic.rotation.none": "Nein", + "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", + "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", + "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", + "create.schematic.mirror": "Spiegeln", + "create.schematic.mirror.none": "Nein", + "create.schematic.mirror.frontBack": "Vor-Zurück", + "create.schematic.mirror.leftRight": "Links-Rechts", + "create.schematic.tool.deploy": "Positionieren", + "create.schematic.tool.move": "XZ Bewegen", + "create.schematic.tool.movey": "Y Bewegen", + "create.schematic.tool.rotate": "Rotieren", + "create.schematic.tool.print": "Drucken", + "create.schematic.tool.flip": "Umdrehen", + "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", + "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", + "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", + "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", + "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", + "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Bewegt das Schema vertikal", + "create.schematic.tool.movey.description.1": "[Strg]-Mausrad zum hoch- und runterbewegen", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", + "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", + "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", + "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", + "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Synchronisation...", + "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", + "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", + + "create.gui.schematicTable.title": "Bauplantisch", + "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", + "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", + "create.gui.schematicTable.uploading": "Hochladen...", + "create.gui.schematicTable.finished": "Hochgeladen!", + "create.gui.schematicannon.title": "Bauplankanone", + "create.gui.schematicannon.settingsTitle": "Platzier-Optionen", + "create.gui.schematicannon.listPrinter": "Materiallistendruck", + "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", + "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", + "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", + "create.gui.schematicannon.optionEnabled": "Aktiviert", + "create.gui.schematicannon.optionDisabled": "Deaktiviert", + "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", + "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", + "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", + "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", + "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", + "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", + "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", + "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", + "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", + + "create.schematicannon.status.idle": "Aus", + "create.schematicannon.status.ready": "Bereit", + "create.schematicannon.status.running": "An", + "create.schematicannon.status.finished": "Fertig", + "create.schematicannon.status.paused": "Pausiert", + "create.schematicannon.status.stopped": "Gestoppt", + "create.schematicannon.status.noGunpowder": "Schwarzpulver leer", + "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", + "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", + "create.schematicannon.status.searching": "Suchen", + "create.schematicannon.status.skipping": "Überspringen", + "create.schematicannon.status.missingBlock": "Fehlender Block:", + "create.schematicannon.status.placing": "Platzieren", + "create.schematicannon.status.clearing": "Blöcke entfernen", + "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", + "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", + "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", + + "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", + "create.gui.filter.whitelist": "UNLOCALIZED: Whitelist", + "create.gui.filter.whitelist.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Whitelist rejects everything.", + "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", + "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", + "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", + "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", + + "create.item_attributes.placeable": "UNLOCALIZED: is placeable", + "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", + "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", + "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", + "create.item_attributes.damaged": "UNLOCALIZED: is damaged", + "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", + "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", + "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", + "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", + "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", + "create.item_attributes.in_item_group": "UNLOCALIZED: belongs to %1$s", + "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", + "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", + "create.gui.attribute_filter.whitelist_disjunctive": "UNLOCALIZED: Whitelist (Any)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", + "create.gui.attribute_filter.whitelist_conjunctive": "UNLOCALIZED: Whitelist (All)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", + "create.gui.attribute_filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.attribute_filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", + "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", + + "create.tooltip.holdKey": "Halte [%1$s]", + "create.tooltip.holdKeyOrKey": "Halte [%1$s] oder [%2$s]", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Strg", + "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", + "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", + "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", + "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", + "create.tooltip.stressImpact": "UNLOCALIZED: Stress Impact: %1$s", + "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", + "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", + "create.tooltip.stressImpact.high": "UNLOCALIZED: High", + "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", + "create.tooltip.capacityProvided": "UNLOCALIZED: Stress Capacity: %1$s", + "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", + "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", + "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", + "create.tooltip.capacityProvided.asGenerator": "UNLOCALIZED: (As Generator)", + "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", + "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "UNLOCALIZED: Min. Ingredients", + + "create.command.killTPSCommand": "UNLOCALIZED: killtps", + "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", + + "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon shoots", + "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon finishes", + "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press activates", + "create.subtitle.mechanical_press_item_break": "UNLOCALIZED: Metal clanks", + "create.subtitle.blockzapper_place": "UNLOCALIZED: Blocks zap into place", + "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative Ding", + "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining Boop", + "create.subtitle.block_funnel_eat": "UNLOCALIZED: Funnel CHOMPS", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "BEISPIELGEGENSTAND (nur ein Marker, um zu zeigen, dass dieser Tooltip existiert)", + "item.create.example_item.tooltip.summary": "Eine Kurzbeschreibung eines Gegenstands. _Unterstriche_ heben einen Begriff hervor.", + "item.create.example_item.tooltip.condition1": "Wenn dies", + "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", + "item.create.example_item.tooltip.condition2": "Und wenn dies", + "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", + "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", + "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", + + "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", + "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", + "item.create.wand_of_symmetry.tooltip.condition1": "Wenn in der Schnellleiste", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Bleibt aktiv", + "item.create.wand_of_symmetry.tooltip.control1": "R-Klick auf Boden", + "item.create.wand_of_symmetry.tooltip.action1": "_Erstellt_ oder _Bewegt_ den Spiegel", + "item.create.wand_of_symmetry.tooltip.control2": "R-Klick in die Luft", + "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", + "item.create.wand_of_symmetry.tooltip.control3": "R-Klick beim Schleichen", + "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", + + "item.create.handheld_blockzapper.tooltip": "BLOCKPISTOLE", + "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", + "item.create.handheld_blockzapper.tooltip.control1": "L-Klick auf Block", + "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", + "item.create.handheld_blockzapper.tooltip.control2": "R-Klick auf Block", + "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", + "item.create.handheld_blockzapper.tooltip.control3": "R-Klick beim Schleichen", + "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", + + "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", + "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", + "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", + "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", + "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", + "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", + "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", + + "item.create.tree_fertilizer.tooltip": "BAUMDÜNGER", + "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", + "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", + "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", + + "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", + "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ _items_ or several _nested_ _filters_.", + "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ item _attributes_ and _categories_.", + "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.empty_schematic.tooltip": "LEERER BAUPLAN", + "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", + + "item.create.schematic.tooltip": "BAUPLAN", + "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", + "item.create.schematic.tooltip.condition1": "Wenn gehalten", + "item.create.schematic.tooltip.behaviour1": "Kann mit den Werkzeugen auf dem Bildschirm positioniert werden", + "item.create.schematic.tooltip.control1": "R-Klick beim Schleichen", + "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", + + "item.create.schematic_and_quill.tooltip": "BAUPLAN UND FEDER", + "item.create.schematic_and_quill.tooltip.summary": "Wird benutzt, um eine existierende Struktur in der Welt als eine .nbt-Datei zu speichern.", + "item.create.schematic_and_quill.tooltip.condition1": "Schritt 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", + "item.create.schematic_and_quill.tooltip.condition2": "Schritt 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", + "item.create.schematic_and_quill.tooltip.control1": "R-Klick", + "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", + "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", + "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", + "item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen", + "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", + + "block.create.schematicannon.tooltip": "BAUPLANKANONE", + "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", + "block.create.schematicannon.tooltip.control1": "Wenn R-Geklickt", + "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", + + "block.create.schematic_table.tooltip": "BAUPLANTISCH", + "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", + "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", + "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", + + "block.create.shaft.tooltip": "WELLE", + "block.create.shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse.", + + "block.create.cogwheel.tooltip": "ZAHNRAD", + "block.create.cogwheel.tooltip.summary": "_Überträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", + + "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", + "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", + + "block.create.encased_shaft.tooltip": "EINGESCHLOSSENE WELLE", + "block.create.encased_shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Übertragung von Rotation durch Wände hindurch.", + + "block.create.gearbox.tooltip": "GETRIEBE", + "block.create.gearbox.tooltip.summary": "_Leitet_ _Rotation_ in _vier_ _Richtungen_ weiter. Kehrt geradlinige Verbindungen um.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "GANGSCHALTUNG", + "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.gearshift.tooltip.condition1": "Wenn aktiv", + "block.create.gearshift.tooltip.behaviour1": "_Kehrt_ die ausgehende Drehrichtung _um._", + + "block.create.clutch.tooltip": "KUPPLUNG", + "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.clutch.tooltip.condition1": "Wenn aktiv", + "block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.", + + "block.create.encased_belt.tooltip": "EINGESCHLOSSENER RIEMEN", + "block.create.encased_belt.tooltip.summary": "_Überträgt_ _Rotation_ durch seinen Block und zu einem angeschlossenen _Eingeschlossenen_ _Riemen._", + "block.create.encased_belt.tooltip.condition1": "Wenn an einem anderen Eingeschlossenen Riemen angeschlossen", + "block.create.encased_belt.tooltip.behaviour1": "Wird der angeschlossene Block die exakt gleiche Rotationsgeschwindigkeit und Richtung haben. Angeschlossene Riemen müssen nicht in die gleiche Richtung schauen.", + + "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", + "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", + "block.create.adjustable_pulley.tooltip.condition1": "UNLOCALIZED: Redstone Control", + "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", + + "item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN", + "item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.", + "item.create.belt_connector.tooltip.control1": "R-Klick auf Welle", + "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", + "item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen", + "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", + + "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", + "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", + "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored_ _indicators_ corresponding to the _Speed_ _Level_ of a placed kinetic component as well as _Stress_ _Impact_ and _Capacity_ of individual components.", + "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", + "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", + + "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", + "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", + "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", + "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates_ _components_ toward or away from the face with which you interacted.", + "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles_ _Kinetic_ _components_ and places them back in _your_ _inventory_.", + + "block.create.creative_motor.tooltip": "UNLOCALIZED: CREATIVE MOTOR", + "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", + + "block.create.water_wheel.tooltip": "WASSERRAD", + "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", + + "block.create.encased_fan.tooltip": "EINGESCHLOSSENER PROPELLER", + "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", + "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", + "block.create.encased_fan.tooltip.behaviour1": "Liefert _Rotationsenergie_ (muss vertikal ausgerichtet sein)", + "block.create.encased_fan.tooltip.condition2": "Wenn angetrieben", + "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", + "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", + "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", + + "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", + "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", + + "block.create.hand_crank.tooltip": "UNLOCALIZED: HAND CRANK", + "block.create.hand_crank.tooltip.summary": "UNLOCALIZED: A simple _source_ of _Rotational_ _Force_ that requires the interaction of players.", + "block.create.hand_crank.tooltip.condition1": "UNLOCALIZED: When Used", + "block.create.hand_crank.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to an attached contraption. _Sneak_ _to_ _reverse_ the rotation.", + + "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping_ _track_ _of_ _time_.", + "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", + + "block.create.turntable.tooltip": "DREHTISCH", + "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", + + "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", + "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", + "block.create.millstone.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.millstone.tooltip.behaviour1": "UNLOCALIZED: Starts applying _milling_ _recipes_ to any items inserted from the side or the top of the block.", + "block.create.millstone.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", + + "block.create.crushing_wheel.tooltip": "MAHLWERKRAD", + "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", + "block.create.crushing_wheel.tooltip.condition1": "Wenn mit einem anderem Mahlwerkrad verbunden", + "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", + + "block.create.mechanical_press.tooltip": "MECHANISCHE PRESSE", + "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", + "block.create.mechanical_press.tooltip.condition1": "Wenn durch Redstone aktiviert", + "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", + "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", + "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "UNLOCALIZED: BASIN", + "block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "UNLOCALIZED: MECHANICAL MIXER", + "block.create.mechanical_mixer.tooltip.summary": "UNLOCALIZED: A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).", + "block.create.mechanical_mixer.tooltip.condition1": "UNLOCALIZED: When above Basin", + "block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present.", + "block.create.mechanical_mixer.tooltip.condition2": "UNLOCALIZED: When used with Wrench", + "block.create.mechanical_mixer.tooltip.behaviour2": "UNLOCALIZED: _Configures_ the minimum amount of _total_ _ingredients_ for applied recipes. Use this option to _rule_ _out_ _unwanted_ _recipes_ with similar but less ingredients.", + + "block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER", + "block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.", + "block.create.mechanical_crafter.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.mechanical_crafter.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _the_ _crafting_ _process_ as soon as _all_ _crafters_ in the grid have been _given_ _an_ _item_.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "UNLOCALIZED: When Wrenched at Front", + "block.create.mechanical_crafter.tooltip.action1": "UNLOCALIZED: _Cycles_ _the_ _direction_ an individual crafter _moves_ _its_ _items_ towards. To form a working grid, _arrange_ _the_ _belts_ _in_ _a_ _flow_ which moves all items towards a final crafter. The final crafter must _point_ _away_ from the grid.", + "block.create.mechanical_crafter.tooltip.control2": "UNLOCALIZED: When Wrenched at back", + "block.create.mechanical_crafter.tooltip.action2": "UNLOCALIZED: _Connects_ the _input_ _inventory_ of adjacent crafters. Use this to _combine_ _slots_ in the crafting grid and _save_ _on_ _input_ _work_.", + + "block.create.furnace_engine.tooltip": "UNLOCALIZED: FURNACE ENGINE", + "block.create.furnace_engine.tooltip.summary": "UNLOCALIZED: A powerful source of _Rotational_ _Power_ that requires a _running_ _furnace_ to work.", + "block.create.furnace_engine.tooltip.condition1": "UNLOCALIZED: When Attached to Lit Furnace", + "block.create.furnace_engine.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _powering_ a _Flywheel_ placed in front of it (1m apart). Use a Blast Furnace for higher speeds.", + + "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", + "block.create.flywheel.tooltip.summary": "UNLOCALIZED: A large metal wheel to _harness_ _and_ _stabilize_ generated force by an _attached_ _Engine_. Flywheels connect to engines if they are _1m_ _apart_ and at a _90°_ _Angle_ from each other.", + "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Attached to Running Engine", + "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to a connected contraption based on the generator's strength and speed.", + + "block.create.portable_storage_interface.tooltip": "UNLOCALIZED: PORTABLE STORAGE INTERFACE", + "block.create.portable_storage_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving_ _items_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley.", + "block.create.portable_storage_interface.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.portable_storage_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _transposers_ such that transposers _facing_ _away_ from the interface _pull_ _items_, and transposers targeting the interface will _insert_ _items_ from attached inventory. The contraption will briefly stall as items are exchanged.", + + "block.create.rotation_speed_controller.tooltip": "UNLOCALIZED: ROTATION SPEED CONTROLLER", + "block.create.rotation_speed_controller.tooltip.summary": "UNLOCALIZED: A _configurable_ _relay_ able to speed up or slow down the target component to any desired speed.", + "block.create.rotation_speed_controller.tooltip.condition1": "UNLOCALIZED: When Attached to Large Cogwheel", + "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", + + "block.create.mechanical_piston.tooltip": "MECHANISCHER KOLBEN", + "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben", + "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + + "block.create.sticky_mechanical_piston.tooltip": "KLEBRIGER MECHANISCHER KOLBEN", + "block.create.sticky_mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Klebrigen_ _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Klolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Wenn angetrieben", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + + "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", + "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", + "block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht", + "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", + + "block.create.mechanical_bearing.tooltip": "MECHANISCHES LAGER", + "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", + "block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben", + "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", + "block.create.mechanical_bearing.tooltip.condition2": "Wenn durch Redstone aktiviert", + "block.create.mechanical_bearing.tooltip.behaviour2": "Fängt an, _Rotationsenergie_ durch das Drehen der angebrachten Struktur zu erzeugen. Die Struktur muss _geeignete_ _Segelblöcke_ beinhalten. (Momentan jede Art von Wolle).", + + "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", + "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", + "block.create.clockwork_bearing.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.clockwork_bearing.tooltip.behaviour1": "UNLOCALIZED: Starts rotating the attached Structure towards the _current_ _hour_. If an independent second structure exists in front of the first one, it will serve as the _minute_ _hand_.", + + "block.create.sequenced_gearshift.tooltip": "UNLOCALIZED: SEQUENCED GEARSHIFT", + "block.create.sequenced_gearshift.tooltip.summary": "UNLOCALIZED: A _programmable_ _utility_ _component,_ which can change its _rotational_ _through-put_ according to up to _5_ _consecutive_ _instructions._ Use this to power Mechanical Bearings, Pistons or Pulleys with more control over timing and speed. May become less precise at higher speeds.", + "block.create.sequenced_gearshift.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _executing_ programmed instructions based on the input speed.", + "block.create.sequenced_gearshift.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.sequenced_gearshift.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface._", + + "block.create.cart_assembler.tooltip": "UNLOCALIZED: CART ASSEMBLER", + "block.create.cart_assembler.tooltip.summary": "UNLOCALIZED: When _placed_ _on_ a _Rail_, adopts functionality and _assembles/disassebles_ _structures_ on passing _carts_.", + "block.create.cart_assembler.tooltip.condition1": "UNLOCALIZED: When placed above Rail", + "block.create.cart_assembler.tooltip.behaviour1": "UNLOCALIZED: _Assembles_ onto passing _carts_ _when_ _powered_, _disassembles_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "UNLOCALIZED: ROPE PULLEY", + "block.create.rope_pulley.tooltip.summary": "UNLOCALIZED: Moves attached _blocks_ and _structures_ _vertically_. Use _Chassis_ or _Slime_ _Blocks_ to move more than a single block.", + "block.create.rope_pulley.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", + + "block.create.linear_chassis.tooltip": "SCHUBGERÜST", + "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", + "block.create.linear_chassis.tooltip.condition1": "Wenn durch einen Mechanischen Kolben bewegt", + "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", + "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.linear_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", + "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", + + "block.create.radial_chassis.tooltip": "DREHGERÜST", + "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", + "block.create.radial_chassis.tooltip.condition1": "Wenn durch ein Lager gedreht", + "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Überträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", + "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.radial_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", + "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", + + "block.create.mechanical_drill.tooltip": "MECHANISCHER BOHRER", + "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", + "block.create.mechanical_drill.tooltip.condition1": "Wenn angetrieben", + "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", + "block.create.mechanical_drill.tooltip.condition2": "Wenn durch einem Mechanischen Kolben bewegt", + "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", + + "block.create.mechanical_harvester.tooltip": "MECHANISCHE ERNTEMASCHINE", + "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", + "block.create.mechanical_harvester.tooltip.condition1": "Wenn durch einem Mechanischen Kolben bewegt", + "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "UNLOCALIZED: MECHANICAL SAW", + "block.create.mechanical_saw.tooltip.summary": "UNLOCALIZED: Suitable for _cutting_ _trees_ effectively and for _cutting_ _blocks_ into their carpentered counterparts. It is movable using _Mechanical_ _Pistons_ or _Bearings_.", + "block.create.mechanical_saw.tooltip.condition1": "UNLOCALIZED: When facing up", + "block.create.mechanical_saw.tooltip.behaviour1": "UNLOCALIZED: Applies _Sawing_ and _Stonecutting_ _Recipes_ to items dropped onto or inserted into it. When multiple outputs are possible, it cycles through them unless a _filter_ is assigned.", + "block.create.mechanical_saw.tooltip.condition2": "UNLOCALIZED: When facing horizontally", + "block.create.mechanical_saw.tooltip.behaviour2": "UNLOCALIZED: _Breaks_ _logs_ in front of it. If the log supported a tree on its own, the _tree_ _will_ _collapse_ away from the saw.", + "block.create.mechanical_saw.tooltip.condition3": "UNLOCALIZED: While Moving", + "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", + + "block.create.stockpile_switch.tooltip": "VORRATSSENSOR", + "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", + "block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit", + "block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.", + "block.create.stockpile_switch.tooltip.condition2": "Wenn über dem oberen Limit", + "block.create.stockpile_switch.tooltip.behaviour2": "Wird das Redstone-Signal eingeschaltet bis das untere Limit wieder erreicht wird.", + "block.create.stockpile_switch.tooltip.control1": "Wenn R-geklickt", + "block.create.stockpile_switch.tooltip.action1": "Wird das _Konfigurationsmenü_ geöffnet", + + "block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG", + "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", + "block.create.redstone_link.tooltip.condition1": "Wenn aktiv", + "block.create.redstone_link.tooltip.behaviour1": "Liefern eingehende Verbindungen mit derselben _Frequenz_ ein Redstone-Signal.", + "block.create.redstone_link.tooltip.control1": "Wenn mit einem Gegenstand R-geklickt", + "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", + "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", + "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "REDSTONE-KONTAKT", + "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", + "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", + "block.create.redstone_contact.tooltip.behaviour1": "Liefert ein _Redstone-Signal._", + "block.create.redstone_contact.tooltip.condition2": "Wenn durch einen Mechanischen Kolben bewegt", + "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", + + "block.create.adjustable_crate.tooltip": "adjustable_crate", + "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", + "block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt", + "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", + + "block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER", + "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "AUSWERFER", + "block.create.extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird keine Gegenstände auswerfen, bis der Platz dafür frei ist. Kann einen Stack von Gegenständen als _Filter_ zugewiesen bekommen.", + "block.create.extractor.tooltip.condition1": "Wenn durch Redstone aktiviert", + "block.create.extractor.tooltip.behaviour1": "_Pausiert_ den Auswerfer", + "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", + "block.create.extractor.tooltip.control1": "R-Klick auf Filterplatz", + "block.create.extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter. ", + + "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", + "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.transposer.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.transposer.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.transposer.tooltip.behaviour2": "UNLOCALIZED: Transposers can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the transposer is backed up, the _belt_ _will_ _stall_.", + "block.create.transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will pull the item _type_ and _count_ of the filter stack exclusively.", + + "block.create.deployer.tooltip": "UNLOCALIZED: DEPLOYER", + "block.create.deployer.tooltip.summary": "UNLOCALIZED: _Punches_, _Uses_, and _Activates_. This machine will try to _imitate_ a _player_ as a much as possible. Can _Take_ and _Deposit_ _items_ in adjacent _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.deployer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.deployer.tooltip.behaviour1": "UNLOCALIZED: Extends its arm and _activates_ in the block space _2m_ _ahead_ of itself.", + "block.create.deployer.tooltip.condition2": "UNLOCALIZED: R-Clicked with Wrench", + "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", + + "block.create.linked_extractor.tooltip": "VERKÜPFTER AUSWERFER", + "block.create.linked_extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird Gegenstände nicht auswerfen, bis der Platz frei ist. Kann einen Stack von Gegenständen zugewiesen bekommen. Kann aus Distanz mit einer _Redstone-Verbindung_ kontrolliert werden.", + "block.create.linked_extractor.tooltip.condition1": "Wenn die Restone-Verbindung aktiv ist", + "block.create.linked_extractor.tooltip.behaviour1": "Wird der Auswerfer _pausiert._", + "block.create.linked_extractor.tooltip.control1": "R-Klick auf den Filterplatz", + "block.create.linked_extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter.", + "block.create.linked_extractor.tooltip.control2": "R-Klick auf den Frequenzplatz", + "block.create.linked_extractor.tooltip.action2": "Weist den momentan _gehaltenen_ _Gegenstand_ als Teil der gelisteten Frequenz zu. Wann auch immer eine übertragende _Redstone-Verbindung_ derselben Frequenz aktiv ist, pausiert dieser Auswerfer.", + + "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", + "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", + "block.create.linked_transposer.tooltip.condition1": "UNLOCALIZED: When Redstone Link Active", + "block.create.linked_transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.linked_transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.linked_transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will only pull items that match the item _type_ and _count_ of the filter stack.", + "block.create.linked_transposer.tooltip.control2": "UNLOCALIZED: R-Click on Frequency Space", + "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", + + "block.create.funnel.tooltip": "FLIEẞBANDTRICHTER", + "block.create.funnel.tooltip.summary": "Sammelt eingehende Gegenstände auf einem _Mechanischen_ _Riemen_ und fügt diese in einen verbundenen _Behälter_ ein, wenn möglich. Muss direkt _auf_ dem Riemen sein, mit der Öffnung entgegen der Bewegungsrichtung des Riemens zeigend. Der Behälter muss auf der gleichen Höhe wie der Trichter sein.", + "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", + "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", + + "block.create.belt_tunnel.tooltip": "UNLOCALIZED: BELT TUNNEL", + "block.create.belt_tunnel.tooltip.summary": "UNLOCALIZED: An aesthetic option for running your _Mechanical_ _Belts_ through walls. Belts have to be reinforced with _Brass_ _Casing_. Tunnels can _synchronize_ with _their_ _neighbours_, only letting items pass if all tunnels in the group have one waiting. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "UNLOCALIZED: R-Click with Wrench on Front", + "block.create.belt_tunnel.tooltip.action1": "UNLOCALIZED: Toggles _synchronized_ _behaviour_. Synchronized tunnels hold items until their neighbours have an item as well.", + "block.create.belt_tunnel.tooltip.control2": "UNLOCALIZED: R-Click with Wrench on Side", + "block.create.belt_tunnel.tooltip.action2": "UNLOCALIZED: _Adjusts_ _window_ _shutters_ if the tunnel has a window on that face.", + + "block.create.brass_casing.tooltip": "UNLOCALIZED: BRASS CASING", + "block.create.brass_casing.tooltip.summary": "UNLOCALIZED: Sturdy machine casing with a variety of uses. Safe for decoration.", + "block.create.brass_casing.tooltip.condition1": "UNLOCALIZED: When used on Mechanical Belt", + "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", + + "block.create.belt_observer.tooltip": "FLIEẞBAND-BEOBACHTER", + "block.create.belt_observer.tooltip.summary": "Erkennt Gegenstände, die vor ihm auf einem _Mechanischen_ _Riemen_ vorbeilaufen. Funktioniert wunderbar mit einem _Kolben_ über ihm, der gewisse Gegenstände runterschubst. ", + "block.create.belt_observer.tooltip.condition1": "Wenn ein Gegenstand mit dem Filter übereinstimmt", + "block.create.belt_observer.tooltip.behaviour1": "Sendet einen kurzen _Redstone-Puls_ an alle Seiten. Bei einem leeren Filter passiert dies mit allen Gegenständen.", + "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", + "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", + "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", + "block.create.belt_observer.tooltip.behaviour3": "UNLOCALIZED: _Ejects_ _matching_ _items_ off the side. If the target belt or space is _occupied_, the item will be _held_ _in_ _place_.", + "block.create.belt_observer.tooltip.condition4": "UNLOCALIZED: Split Mode", + "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", + + "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", + "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", + + "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", + "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", + + "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", + "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", + + "block.create.analog_lever.tooltip": "UNLOCALIZED: ANALOG LEVER", + "block.create.analog_lever.tooltip.summary": "UNLOCALIZED: A lever with more _precise_ _control_ over its emitted _signal_ _strength_.", + + "block.create.powered_toggle_latch.tooltip": "UNLOCALIZED: POWERED TOGGLE LATCH", + "block.create.powered_toggle_latch.tooltip.summary": "UNLOCALIZED: A lever that can be toggled by a _Redstone_ _Pulse_.", + + "block.create.powered_latch.tooltip": "UNLOCALIZED: POWERED LATCH", + "block.create.powered_latch.tooltip.summary": "UNLOCALIZED: A lever that can be controlled by _Redstone_ _Signals_. A signal on the _back_ _enables_ it, a signal from the _side_ _will_ _reset_ it.", + + "block.create.speedometer.tooltip": "UNLOCALIZED: SPEEDOMETER", + "block.create.speedometer.tooltip.summary": "UNLOCALIZED: Measures and displays the _rotational_ _speed_ of attached kinetic components. Supports _Redstone_ _Comparators_.", + "block.create.speedometer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.speedometer.tooltip.behaviour1": "UNLOCALIZED: Indicates a color corresponding to the level of speed. _Green_ indicates Slow, _Blue_ Moderate and _Purple_ Fast rotation. Some mechanical components require a sufficient level of speed to work properly.", + + "block.create.stressometer.tooltip": "UNLOCALIZED: STRESSOMETER", + "block.create.stressometer.tooltip.summary": "UNLOCALIZED: Measures and displays the _overall_ _stress_ of the attached kinetic network. Supports _Redstone_ _Comparators_.", + "block.create.stressometer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.stressometer.tooltip.behaviour1": "UNLOCALIZED: Indicates a color corresponding to the level of stress. _Over-stressed_ _networks_ will cease to move. Stress can be relieved by adding more _rotational_ _sources_ to the network.", + + "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", + "tool.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "tool.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking_ _at_ _them_", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed_ _light_.", + + "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in_ _the_ _void_.", + + "item.create.crafter_slot_cover.tooltip": "UNLOCALIZED: SLOT COVER", + "item.create.crafter_slot_cover.tooltip.summary": "UNLOCALIZED: Used to mark a _Mechanical_ _Crafter_ as an empty slot in a recipe. Crafters do not necessarily have to form a full square grid. This is useful when there are recipes where _ingredients_ _are_ _diagonal_ to each other.", + + "create.tooltip.wip": "UNLOCALIZED: WIP", + "create.tooltip.workInProgress": "UNLOCALIZED: Work in progress!", + "create.tooltip.randomWipDescription0": "UNLOCALIZED: Please keep this item away from children.", + "create.tooltip.randomWipDescription1": "UNLOCALIZED: A baby panda dies every time you use this item. Every. Time.", + "create.tooltip.randomWipDescription2": "UNLOCALIZED: Use at your own risk.", + "create.tooltip.randomWipDescription3": "UNLOCALIZED: This is not the item you are looking for, *finger-wiggles* please disperse.", + "create.tooltip.randomWipDescription4": "UNLOCALIZED: This item will self-destruct in 10 seconds. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "UNLOCALIZED: Believe me, it's useless.", + "create.tooltip.randomWipDescription6": "UNLOCALIZED: By using this item, you hereby consent to our disclaimer and agree to its terms.", + "create.tooltip.randomWipDescription7": "UNLOCALIZED: This one maybe isn't for you. What about that one?", + "create.tooltip.randomWipDescription8": "UNLOCALIZED: Use it and regret your decision immediately.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json new file mode 100644 index 000000000..2ca12f853 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 368" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "Caisse ajustable", + "block.create.adjustable_pulley": "Poulie de tapis roulant analogique", + "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", + "block.create.adjustable_repeater": "Répéteur réglable", + "block.create.analog_lever": "Levier analogique", + "block.create.andesite_bricks": "Briques d'andésite", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "Boîtier en andésite", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "Bassin", + "block.create.belt": "Tapis roulant", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "Observateur d'entité", + "block.create.belt_tunnel": "Tunnel de convoyeur", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "UNLOCALIZED: Brass Block", + "block.create.brass_casing": "Boîtier en laiton", + "block.create.cart_assembler": "Assembleur de wagon", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "Roulement mécanique horloger", + "block.create.clutch": "Embrayage", + "block.create.cogwheel": "Roue dentée", + "block.create.copper_block": "Bloc de cuivre", + "block.create.copper_casing": "Boîtier en cuivre", + "block.create.copper_ore": "Minerai de cuivre", + "block.create.copper_shingles": "Bardeaux de cuivre", + "block.create.creative_crate": "Créateur de schémacanon", + "block.create.creative_motor": "Moteur", + "block.create.crushing_wheel": "Roue de concassage", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "Horloge à coucou", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "Scorie sombre", + "block.create.dark_scoria_bricks": "Briques de scorie sombre", + "block.create.dark_scoria_bricks_slab": "Dalles de briques de scorie sombre", + "block.create.dark_scoria_bricks_stairs": "Escaliers de briques de scorie sombre", + "block.create.dark_scoria_bricks_wall": "Muret de briques de scorie sombre", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "Déployeur", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "Briques de diorite", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "Dolomie", + "block.create.dolomite_bricks": "Briques de dolomie", + "block.create.dolomite_bricks_slab": "Dalle de briques de dolomie", + "block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomie", + "block.create.dolomite_bricks_wall": "Muret de briques de dolomie", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "Pillier de dolomie", + "block.create.encased_belt": "Tapis roulant enfermé", + "block.create.encased_fan": "Ventilateur enfermé", + "block.create.encased_shaft": "Arbre mécanique enfermé", + "block.create.extractor": "Extracteur", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "Volant d'inertie", + "block.create.framed_glass": "Grande fenêtre en verre", + "block.create.framed_glass_pane": "Grande vitre encadrée", + "block.create.funnel": "Entonnoir amélioré", + "block.create.furnace_engine": "Moteur de four", + "block.create.gabbro": "Gabbro", + "block.create.gabbro_bricks": "Briques de gabbro", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "Escaliers en briques de gabbro", + "block.create.gabbro_bricks_wall": "Muret en briques de gabbro", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "Boîte à roue dentée", + "block.create.gearshift": "Décaleur de rotation", + "block.create.granite_bricks": "Briques de granite", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "Manivelle", + "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", + "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "Grande roue dentée", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "Chaux", + "block.create.limestone": "Calcaire", + "block.create.limestone_bricks": "Briques de calcaire", + "block.create.limestone_bricks_slab": "Dalle de briques de calcaire", + "block.create.limestone_bricks_stairs": "Escaliers de briques de calcaire", + "block.create.limestone_bricks_wall": "Muret de briques de calcaire", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "Pillier de calcaire", + "block.create.linear_chassis": "Châssis linéaire", + "block.create.linked_extractor": "Extracteur lié", + "block.create.linked_transposer": "Transposeur lié", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "Roulement mécanique", + "block.create.mechanical_crafter": "Établi mécanique", + "block.create.mechanical_drill": "Perceuse mécanique", + "block.create.mechanical_harvester": "Récolteuse mécanique", + "block.create.mechanical_mixer": "Mixeur mécanique", + "block.create.mechanical_piston": "Piston mécanique", + "block.create.mechanical_piston_head": "Tête de piston mécanique", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "Presse mécanique", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "Scie mécanique", + "block.create.millstone": "UNLOCALIZED: Millstone", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "Scorie naturelle", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "Buse", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "Pôle d'extension de piston", + "block.create.polished_dark_scoria": "Scorie sombre polie", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "Dolomie polie", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "Gabbro poli", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "Calcaire poli", + "block.create.polished_limestone_slab": "Dalle de calcaire polie", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "Scorie polie", + "block.create.polished_scoria_slab": "Dalle de scorie polie", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "Calcaire patinées polies", + "block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "Interface de stockage portable", + "block.create.powered_latch": "Verrou alimenté", + "block.create.powered_toggle_latch": "Verrou alimenté à bascule", + "block.create.pulley_magnet": "Aimant de poulie", + "block.create.pulse_repeater": "Répéteur d'impulsions", + "block.create.radial_chassis": "Châssis radial", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "redstone_contact Redstone", + "block.create.redstone_link": "Liaison Redstone", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "Corde", + "block.create.rope_pulley": "Poulie à corde", + "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", + "block.create.schematic_table": "Table à schéma", + "block.create.schematicannon": "Schémacanon", + "block.create.scoria": "Scorie", + "block.create.scoria_bricks": "Briques de scorie", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "Pillier de scorie", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", + "block.create.shaft": "Arbre mécanique", + "block.create.speedometer": "Compteur de vitesse", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "Piston mécanique collant", + "block.create.stockpile_switch": "Détecteur de stockage", + "block.create.stressometer": "Stressomètre", + "block.create.tiled_glass": "Verre carrelé", + "block.create.tiled_glass_pane": "Vitre carrelé", + "block.create.transposer": "Transposeur", + "block.create.turntable": "Plaque tournante", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "Fenêtre en verre verticale", + "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "Roue à eau", + "block.create.weathered_limestone": "Calcaire patinées", + "block.create.weathered_limestone_bricks": "Briques de calcaire patinées", + "block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "Pillier de calcaire patinées", + "block.create.zinc_block": "UNLOCALIZED: Zinc Block", + "block.create.zinc_ore": "Minerai de zinc", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "Alliage d'andésite", + "item.create.attribute_filter": "Filtre d'attribut", + "item.create.belt_connector": "Tapis roulant", + "item.create.brass_hand": "Main", + "item.create.brass_ingot": "Lingot de laiton", + "item.create.brass_nugget": "Pépite de laiton", + "item.create.brass_sheet": "Plaques de laiton", + "item.create.chromatic_compound": "Composé chromatique", + "item.create.copper_ingot": "Lingot de cuivre", + "item.create.copper_nugget": "Pépite de cuivre", + "item.create.copper_sheet": "Plaques de cuivre", + "item.create.crafter_slot_cover": "Couvercle", + "item.create.crushed_brass": "Laiton concassé", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "Déforesteur", + "item.create.dough": "Pâte", + "item.create.electron_tube": "Tube électronique", + "item.create.empty_schematic": "Schéma vide", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "Filtre", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "Lunettes d'ingénieur", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "Blockzappeur portable", + "item.create.handheld_worldshaper": "Térraformeur portable", + "item.create.integrated_circuit": "Circuit intégré", + "item.create.iron_sheet": "Plaque de Fer", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "Quartz rose poli", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "Hélice", + "item.create.red_sand_paper": "Papier de verre rouge", + "item.create.refined_radiance": "Éclat raffiné", + "item.create.rose_quartz": "Quartz rose", + "item.create.sand_paper": "Papier de verre", + "item.create.schematic": "Schéma", + "item.create.schematic_and_quill": "Schéma et plume", + "item.create.shadow_steel": "Acier sombre", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "Engrais pour arbre", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "Bâton de symétrie", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "Fouet", + "item.create.wrench": "Clé", + "item.create.zinc_ingot": "Barre de zinc", + "item.create.zinc_nugget": "Pépite de zinc", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage", + "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", + "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", + "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", + "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", + "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", + + "create.block.deployer.damage_source_name": "un déployeur voyou", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "Ecrasement", + "create.recipe.milling": "UNLOCALIZED: Milling", + "create.recipe.splashing": "Lavage en vrac", + "create.recipe.splashing.fan": "Ventilateur derrière de l'eau qui coule", + "create.recipe.smoking_via_fan": "Fumer en vrac", + "create.recipe.smoking_via_fan.fan": "Fan behind Fire", + "create.recipe.blasting_via_fan": "Ventilateur derrière du feu", + "create.recipe.blasting_via_fan.fan": "Ventilateur derrière de la lave", + "create.recipe.pressing": "Pressage", + "create.recipe.mixing": "Mixage", + "create.recipe.packing": "Compactage", + "create.recipe.mechanical_sawing": "Sciage", + "create.recipe.mechanical_crafting": "Fabrication mécanique", + "create.recipe.block_cutting": "Coupe de bloc", + "create.recipe.blockzapper_upgrade": "Blockzappeur portable", + "create.recipe.sandpaper_polishing": "Polissage au papier de verre", + "create.recipe.mystery_conversion": "Métamorphose chromatique", + "create.recipe.processing.catalyst": "Catalyseur", + "create.recipe.processing.chance": "%1$s%% de chance", + "create.recipe.processing.chanceToReturn": "%1$s%% de chance de retour", + + "create.generic.range": "Portée", + "create.generic.radius": "Rayon", + "create.generic.width": "Largeur", + "create.generic.height": "Hauteur", + "create.generic.length": "Longueur", + "create.generic.speed": "Vitesse", + "create.generic.delay": "Delai", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Secondes", + "create.generic.unit.minutes": "Minutes", + "create.generic.unit.rpm": "tr/min", + "create.generic.unit.stress": "us", + "create.generic.unit.degrees": "°", + + "create.action.scroll": "Faire défiler", + "create.action.confirm": "Confirmer", + "create.action.abort": "Abandonner", + "create.action.saveToFile": "Sauvegarder", + "create.action.discard": "Annuler", + + "create.keyinfo.toolmenu": "Focus sur le menu de l'outil", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Choisissez une option:", + "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", + "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", + "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", + "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", + "create.gui.toolmenu.focusKey": "Enfoncez [%1$s] pour focus", + "create.gui.toolmenu.cycle": "[SCROLL] pour cycler", + "create.gui.symmetryWand.mirrorType": "Mirroir", + "create.gui.symmetryWand.orientation": "Orientation", + + "create.symmetry.mirror.plane": "Miroir une fois", + "create.symmetry.mirror.doublePlane": "Rectangulaire", + "create.symmetry.mirror.triplePlane": "Octogonal", + + "create.orientation.orthogonal": "Orthogonal", + "create.orientation.diagonal": "Diagonal", + "create.orientation.horizontal": "Horizontal", + "create.orientation.alongZ": "Sur Z", + "create.orientation.alongX": "Sur X", + + "create.gui.blockzapper.title": "Blockzappeur portable", + "create.gui.blockzapper.replaceMode": "Mode de remplacement", + "create.gui.blockzapper.searchDiagonal": "Suivez les diagonales", + "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", + "create.gui.blockzapper.range": "Plage de propagation", + "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", + "create.gui.blockzapper.patternSection": "Motif", + "create.gui.blockzapper.pattern.solid": "Solide", + "create.gui.blockzapper.pattern.checkered": "Quamechanical_drillage", + "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", + "create.gui.blockzapper.pattern.chance25": "25%", + "create.gui.blockzapper.pattern.chance50": "50%", + "create.gui.blockzapper.pattern.chance75": "75%", + "create.gui.terrainzapper.title": "Térraformeur portable", + "create.gui.terrainzapper.placement": "Placement", + "create.gui.terrainzapper.placement.merged": "Fusionner", + "create.gui.terrainzapper.placement.attached": "Attacher", + "create.gui.terrainzapper.placement.inserted": "Inserer", + "create.gui.terrainzapper.brush": "Pinceau", + "create.gui.terrainzapper.brush.cuboid": "Cuboïde", + "create.gui.terrainzapper.brush.sphere": "Sphère", + "create.gui.terrainzapper.brush.cylinder": "Cylindre", + "create.gui.terrainzapper.tool": "Outil", + "create.gui.terrainzapper.tool.fill": "Remplir", + "create.gui.terrainzapper.tool.place": "Placer", + "create.gui.terrainzapper.tool.replace": "Remplacer", + "create.gui.terrainzapper.tool.clear": "Effacer", + "create.gui.terrainzapper.tool.overlay": "Recouvrir", + "create.gui.terrainzapper.tool.flatten": "Applatir", + + "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", + + "create.blockzapper.usingBlock": "Utilisation: %1$s", + "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", + "create.blockzapper.component.body": "Corps", + "create.blockzapper.component.amplifier": "Amplifieur", + "create.blockzapper.component.accelerator": "Accélérateur", + "create.blockzapper.component.retriever": "Récupérateur", + "create.blockzapper.component.scope": "Lunette", + "create.blockzapper.componentTier.none": "Aucun", + "create.blockzapper.componentTier.brass": "Laiton", + "create.blockzapper.componentTier.chromatic": "Chromatique", + "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", + "create.blockzapper.empty": "Plus de blocs!", + + "create.contraptions.movement_mode": "Mode de mouvement", + "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", + "create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", + "create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "Filtre", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + + "create.gui.goggles.generator_stats": "Statistiques du générateur:", + "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", + "create.gui.goggles.at_current_speed": "À la vitesse actuelle", + "create.gui.goggles.base_value": "Valeur de base", + "create.gui.gauge.info_header": "Informations sur la jauge:", + "create.gui.speedometer.title": "Vitesse de rotation", + "create.gui.stressometer.title": "Stress du réseau", + "create.gui.stressometer.capacity": "Capacité restante", + "create.gui.stressometer.overstressed": "Surmenée", + "create.gui.stressometer.no_rotation": "Pas de rotation", + "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "Caisse réglable", + "create.gui.adjustable_crate.storageSpace": "Espace de stockage", + "create.gui.stockpile_switch.title": "Commutateur de stockage", + "create.gui.stockpile_switch.lowerLimit": "Seuil inférieur", + "create.gui.stockpile_switch.upperLimit": "Seuil supérieur", + "create.gui.stockpile_switch.startAt": "Signal de départ à", + "create.gui.stockpile_switch.startAbove": "Signal de démarrage au-dessus", + "create.gui.stockpile_switch.stopAt": "Signal d'arrêt à", + "create.gui.stockpile_switch.stopBelow": "Signal d'arrêt en-dessous", + "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", + "create.gui.sequenced_gearshift.instruction": "Instructions", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", + "create.gui.sequenced_gearshift.instruction.wait": "Attente", + "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", + "create.gui.sequenced_gearshift.instruction.end": "Fin", + "create.gui.sequenced_gearshift.speed": "Vitesse, direction", + "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", + "create.gui.sequenced_gearshift.speed.forward_fast": "Vitesse double, normal", + "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", + "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", + + "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Première position définie.", + "create.schematicAndQuill.secondPos": "Seconde position définie.", + "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", + "create.schematicAndQuill.abort": "Sélection supprimée.", + "create.schematicAndQuill.prompt": "Entrez un nom pour le schéma:", + "create.schematicAndQuill.fallbackName": "Mon schéma", + "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", + + "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", + "create.schematic.position": "Position", + "create.schematic.rotation": "Rotation", + "create.schematic.rotation.none": "Aucune", + "create.schematic.rotation.cw90": "Sens horaire 90", + "create.schematic.rotation.cw180": "Sens horaire 180", + "create.schematic.rotation.cw270": "Sens horaire 270", + "create.schematic.mirror": "Mirroir", + "create.schematic.mirror.none": "Aucun", + "create.schematic.mirror.frontBack": "Avant-Arrière", + "create.schematic.mirror.leftRight": "Gauche-Droite", + "create.schematic.tool.deploy": "Déployer", + "create.schematic.tool.move": "Déplacer XZ", + "create.schematic.tool.movey": "Déplacer Y", + "create.schematic.tool.rotate": "Tourner", + "create.schematic.tool.print": "Imprimer", + "create.schematic.tool.flip": "Retourner", + "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", + "create.schematic.tool.deploy.description.1": "Clic droit sur le sol pour placer.", + "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", + "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", + "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", + "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", + "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", + "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", + "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Synchronisation...", + "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", + "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", + + "create.gui.schematicTable.title": "Table à schéma", + "create.gui.schematicTable.availableSchematics": "Schémas disponibles", + "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", + "create.gui.schematicTable.uploading": "Téléchargement...", + "create.gui.schematicTable.finished": "Téléchargement terminé!", + "create.gui.schematicannon.title": "Schémacanon", + "create.gui.schematicannon.settingsTitle": "Options de placement", + "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", + "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Tirs restants: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s", + "create.gui.schematicannon.optionEnabled": "Actuellement activé", + "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", + "create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides", + "create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide", + "create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi", + "create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien", + "create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants", + "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", + "create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.", + "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Le canon ne remplacera jamais les blocs solides dans sa zone de travail, seulement non solides et air.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", + "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", + + "create.schematicannon.status.idle": "Repos", + "create.schematicannon.status.ready": "Prêt", + "create.schematicannon.status.running": "En cours", + "create.schematicannon.status.finished": "Terminé", + "create.schematicannon.status.paused": "Pausé", + "create.schematicannon.status.stopped": "Arrêté", + "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", + "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", + "create.schematicannon.status.targetOutsideRange": "Cible trop lointaine", + "create.schematicannon.status.searching": "Recherche", + "create.schematicannon.status.skipping": "Saut", + "create.schematicannon.status.missingBlock": "Blocs manquants:", + "create.schematicannon.status.placing": "Placement", + "create.schematicannon.status.clearing": "Suppression des blocs", + "create.schematicannon.status.schematicInvalid": "Schéma non valide", + "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", + "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", + + "create.gui.filter.blacklist": "Liste noire", + "create.gui.filter.blacklist.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", + "create.gui.filter.whitelist": "Liste blanche", + "create.gui.filter.whitelist.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", + "create.gui.filter.respect_data": "Respect des données", + "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", + "create.gui.filter.ignore_data": "Ignorer les données", + "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", + + "create.item_attributes.placeable": "est placeable", + "create.item_attributes.consumable": "peut être mangé", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", + "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", + "create.item_attributes.enchanted": "est enchanté", + "create.item_attributes.damaged": "est endommagé", + "create.item_attributes.badly_damaged": "est fortement damaged", + "create.item_attributes.not_stackable": "ne peut pas s'empiler", + "create.item_attributes.equipable": "peut être équipé", + "create.item_attributes.furnace_fuel": "est du combustible", + "create.item_attributes.in_tag": "est étiqueté %1$s", + "create.item_attributes.in_item_group": "appartient à %1$s", + "create.item_attributes.added_by": "a été ajouté par %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", + "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", + "create.gui.attribute_filter.whitelist_disjunctive": "Liste blanche (n'importe)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", + "create.gui.attribute_filter.whitelist_conjunctive": "Liste blanche (tout)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", + "create.gui.attribute_filter.blacklist": "Liste noire", + "create.gui.attribute_filter.blacklist.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", + "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", + + "create.tooltip.holdKey": "Enfoncez [%1$s]", + "create.tooltip.holdKeyOrKey": "Enfoncez [%1$s] ou [%2$s]", + "create.tooltip.keyShift": "Maj", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Vitesse requise: %1$s", + "create.tooltip.speedRequirement.none": "Aucune", + "create.tooltip.speedRequirement.medium": "Modérée", + "create.tooltip.speedRequirement.high": "Rapide", + "create.tooltip.stressImpact": "Impact du stress: %1$s", + "create.tooltip.stressImpact.low": "Faible", + "create.tooltip.stressImpact.medium": "Modéré", + "create.tooltip.stressImpact.high": "Elevé", + "create.tooltip.stressImpact.overstressed": "Surmené", + "create.tooltip.capacityProvided": "Capacité de stress: %1$s", + "create.tooltip.capacityProvided.low": "Petite", + "create.tooltip.capacityProvided.medium": "Moyenne", + "create.tooltip.capacityProvided.high": "Grande", + "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", + "create.tooltip.generationSpeed": "Génère à %1$s %2$s", + "create.tooltip.analogStrength": "Force analogique: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "Ingrédients min.", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.subtitle.schematicannon_launch_block": "Tire de schémacanon", + "create.subtitle.schematicannon_finish": "Fin de schémacanon", + "create.subtitle.slime_added": "Bruit de slime", + "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", + "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", + "create.subtitle.blockzapper_place": "Blocs se zappant en place", + "create.subtitle.blockzapper_confirm": "Ding d'affirmation", + "create.subtitle.blockzapper_deny": "Boop de déclin", + "create.subtitle.block_funnel_eat": "Croc d'entonoir", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "OBJET EXEMPLE (juste une indication que cette info-bulle existe)", + "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", + "item.create.example_item.tooltip.condition1": "Quand ceci", + "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", + "item.create.example_item.tooltip.condition2": "Et quand cela", + "item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez", + "item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé", + "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", + + "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", + "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", + "item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif", + "item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol", + "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", + "item.create.wand_of_symmetry.tooltip.control2": "Clic droit dans les airs", + "item.create.wand_of_symmetry.tooltip.action2": "_Retire_ le mirroir actif", + "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", + "item.create.wand_of_symmetry.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", + + "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPEUR", + "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", + "item.create.handheld_blockzapper.tooltip.control1": "Clic gauche sur un bloc", + "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.handheld_blockzapper.tooltip.control2": "Clic droit sur un bloc", + "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", + "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.handheld_blockzapper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_.", + + "item.create.handheld_worldshaper.tooltip": "TERRAFORMEUR", + "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", + "item.create.handheld_worldshaper.tooltip.control1": "Clic gauche sur un bloc", + "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.handheld_worldshaper.tooltip.control2": "Clic droit sur un bloc", + "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", + "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", + + "item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRE", + "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.", + "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre", + "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_", + + "item.create.deforester.tooltip": "DÉFORESTEUR", + "item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des arbres en une fraction de seconde.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "FILTRE", + "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", + "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.filter.tooltip.condition2": "Clic droit", + "item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", + + "item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS", + "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.attribute_filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", + "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "Clic droit", + "item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", + + "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", + "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", + + "item.create.schematic.tooltip": "SCHÉMA", + "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", + "item.create.schematic.tooltip.condition1": "Lorsque tenu en main", + "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", + "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", + "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", + + "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", + "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", + "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", + "item.create.schematic_and_quill.tooltip.control1": "Clic droit", + "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl maintenu", + "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", + "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", + "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", + + "block.create.schematicannon.tooltip": "SCHÉMACANON", + "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", + "block.create.schematicannon.tooltip.control1": "Clic droit", + "block.create.schematicannon.tooltip.action1": "Ouvre l'_Interface_", + + "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", + "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", + "block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide", + "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", + + "block.create.shaft.tooltip": "ARBRE MÉCANIQUE", + "block.create.shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite.", + + "block.create.cogwheel.tooltip": "ROUE DENTÉE", + "block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", + + "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", + "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", + + "block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÎTÉ", + "block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", + + "block.create.gearbox.tooltip": "BOÎTE DE VITESSES", + "block.create.gearbox.tooltip.summary": "_Relais_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION", + "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.", + "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", + "block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.", + + "block.create.clutch.tooltip": "EMBRAYAGE", + "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.", + "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", + "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", + + "block.create.encased_belt.tooltip": "TAPIS ROULANT ENFERMÉ", + "block.create.encased_belt.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés.", + "block.create.encased_belt.tooltip.condition1": "Lorsque connecté", + "block.create.encased_belt.tooltip.behaviour1": "Les blocs attachés auront la _même_ _vitesse_ _de_ _rotation_ et direction. Ils n'ont pas besoin de regarder dans la même direction.", + + "block.create.adjustable_pulley.tooltip": "POULIE DE TAPIS ROULANT ANALOGIQUE", + "block.create.adjustable_pulley.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés. Les _tapis_ _roulants_ _enfermés_ attachés _tourneront_ _plus_ _vite_ en fonction du _signal_ _de_ _redstone_ _analogique_ que ce bloc reçoit.", + "block.create.adjustable_pulley.tooltip.condition1": "Contrôle Redstone", + "block.create.adjustable_pulley.tooltip.behaviour1": "Sans signal, il ne va pas _accélérer_ les tapis roulants connectées. Avec un tapis roulant connectée au signal de pleine puissance, vitesse _doublées_.", + + "item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS", + "item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", + "item.create.belt_connector.tooltip.control1": "Clic droit sur arbre", + "item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", + "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", + "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", + + "item.create.goggles.tooltip": "LUNETTES", + "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", + "item.create.goggles.tooltip.condition1": "Lorsque portées", + "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", + "item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge", + "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", + + "item.create.wrench.tooltip": "CLÉ", + "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", + "item.create.wrench.tooltip.control1": "Clic droit a kinetic block", + "item.create.wrench.tooltip.action1": "_Tourne_ les _composents_ proche ou loin de la face avec lequel vous avez interagi.", + "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", + "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", + + "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", + "block.create.creative_motor.tooltip.summary": "Une source configurable de _force_ _de_ _rotation_.", + + "block.create.water_wheel.tooltip": "ROUE À EAU", + "block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.", + + "block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ", + "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", + "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", + "block.create.encased_fan.tooltip.condition2": "Lorsque tourné", + "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", + "block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux", + "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", + + "block.create.nozzle.tooltip": "BUSE", + "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", + + "block.create.hand_crank.tooltip": "MANIVELLE", + "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", + "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", + "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", + + "block.create.cuckoo_clock.tooltip": "COUCOU", + "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", + "block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné", + "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", + + "block.create.turntable.tooltip": "PLAQUE TOURNANTE", + "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.", + + "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", + "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", + "block.create.millstone.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.millstone.tooltip.behaviour1": "UNLOCALIZED: Starts applying _milling_ _recipes_ to any items inserted from the side or the top of the block.", + "block.create.millstone.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", + + "block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE", + "block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.", + "block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage", + "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", + + "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", + "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", + "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", + "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", + "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "BASSIN", + "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", + "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", + "block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin", + "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.", + "block.create.mechanical_mixer.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configure_ la quantité minimale du _total_ _d'ingredients_ pour les recettes appliquées. Utilisez cette option pour _exclure_ les _recettes_ _indésirables_ avec des ingrédients similaires mais moins.", + + "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", + "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", + "block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", + "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", + "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", + "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", + + "block.create.furnace_engine.tooltip": "MOTEUR DE FOUR", + "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", + "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", + "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", + + "block.create.flywheel.tooltip": "VOLANT D'INERTIE", + "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", + "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", + "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", + + "block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE", + "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", + "block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.", + + "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", + "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", + + "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", + "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + + "block.create.sticky_mechanical_piston.tooltip": "PISTON MÉCANIQUE COLLANT", + "block.create.sticky_mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_ _collant_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + + "block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON", + "block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", + "block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", + "block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", + + "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", + "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", + "block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.mechanical_bearing.tooltip.condition2": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Commence à fournir une _force_ _de_ rotation_ générée à partir de la rotation de la structure attachée. La structure doit inclure des _blocs_ _de_ _voiles_ appropriés (actuellement n'importe quel bloc de laine).", + + "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", + "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", + "block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", + + "block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ", + "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", + "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", + "block.create.sequenced_gearshift.tooltip.condition2": "Clic droit", + "block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_", + + "block.create.cart_assembler.tooltip": "ASSEMBLEUR DE CHARIOT", + "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.", + "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "POULIE DE CORDE", + "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.rope_pulley.tooltip.condition1": "Lorsque tourné", + "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + + "block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION", + "block.create.linear_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", + "block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", + "block.create.linear_chassis.tooltip.control1": "Clic droit avec une boule de slime", + "block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", + + "block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION", + "block.create.radial_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", + "block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", + "block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", + "block.create.radial_chassis.tooltip.control1": "Clic droit avec une boule de slime", + "block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", + + "block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE", + "block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", + "block.create.mechanical_drill.tooltip.condition2": "Lorsqu'en mouvement", + "block.create.mechanical_drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.", + + "block.create.mechanical_harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", + "block.create.mechanical_harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_harvester.tooltip.condition1": "Lorsqu'en mouvement", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE", + "block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut", + "block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", + "block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal", + "block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un arbre, _l'arbre_ _tombera_ loin de la scie.", + "block.create.mechanical_saw.tooltip.condition3": "Lorsqu'en mouvement", + "block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _arbres_ avec lesquels la scie entre en collision.", + + "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", + "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", + "block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum", + "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", + "block.create.stockpile_switch.tooltip.condition2": "Lorsqu'au dessus de la limite de stockage maximum", + "block.create.stockpile_switch.tooltip.behaviour2": "Commence à fournir de _l'énergie_ jusqu'à ce que la limite d'énergie soit réatteinte.", + "block.create.stockpile_switch.tooltip.control1": "Clic droit", + "block.create.stockpile_switch.tooltip.action1": "Ouvre l'_interface_ _de_ _configuration_.", + + "block.create.redstone_link.tooltip": "LIAISON REDSTONE", + "block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.", + "block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté", + "block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.", + "block.create.redstone_link.tooltip.control1": "Clic droit avec un objet", + "block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", + "block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi", + "block.create.redstone_link.tooltip.action2": "TBascule entre le mode _receveur_ et _transmetteur_.", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "redstone_contact REDSTONE", + "block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact", + "block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ _redstone_.", + "block.create.redstone_contact.tooltip.condition2": "Lorsqu'en mouvement", + "block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.", + + "block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE", + "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.adjustable_crate.tooltip.control1": "Clic droit", + "block.create.adjustable_crate.tooltip.action1": "Ouvre _l'interface_.", + + "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", + "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "EXTRACTEUR", + "block.create.extractor.tooltip.summary": "_Prend_ des _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.extractor.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", + "block.create.extractor.tooltip.condition2": "Tirage actif du tapis roulant", + "block.create.extractor.tooltip.behaviour2": "Les extracteurs peuvent extraire les objets _de_ _tapis_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque l'extracteur est bloqué, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.extractor.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + + "block.create.transposer.tooltip": "TRANSPOSEUR", + "block.create.transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.transposer.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", + "block.create.transposer.tooltip.condition2": "Tirage actif du tapis roulant", + "block.create.transposer.tooltip.behaviour2": "Les transposeurs peuvent extraire des éléments _de_ _tapis_ _roulants_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque le transposeur est sauvegardé, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.transposer.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + + "block.create.deployer.tooltip": "DÉPLOYEUR", + "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", + "block.create.deployer.tooltip.condition1": "Lorsque tourné", + "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", + "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", + "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", + + "block.create.linked_extractor.tooltip": "EXTRACTEUR LIÉ", + "block.create.linked_extractor.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être assigné une pile d'éléments en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_extractor.tooltip.condition1": "Lorsque la liaison redstone est active", + "block.create.linked_extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", + "block.create.linked_extractor.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.linked_extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + "block.create.linked_extractor.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_extractor.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, cet extracteur s'arrête.", + + "block.create.linked_transposer.tooltip": "TRANSPOSEUR LIÉ", + "block.create.linked_transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_transposer.tooltip.condition1": "Lorsque la liaison redstone est active", + "block.create.linked_transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", + "block.create.linked_transposer.tooltip.control1": "Clic droit sur l'espace du filtre", + "block.create.linked_transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", + "block.create.linked_transposer.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_transposer.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, ce transposeur s'arrête.", + + "block.create.funnel.tooltip": "ENTONNOIR AMÉLIORÉ", + "block.create.funnel.tooltip.summary": "_Collecte_ les _objets_ en _approche_ et les insère dans _l'inventaire_ attaché si possible. Peut collecter des objets dans le _monde_ et des objets sur un _tapis_ _roulant_.", + "block.create.funnel.tooltip.condition1": "Passage de tapis roulant passif", + "block.create.funnel.tooltip.behaviour1": "Les entonnoirs améliorés peuvent extraire des éléments _des_ _tapis_ _roulant_ lorsqu'ils sont placés au-dessus d'eux, latéralement ou à l'extrémité. Lorsqu'un entonnoir amélioré latéral est sauvegardé, les éléments sur le _tapis_ roulant_ _ne_ _vont_ _pas_ _caler_.", + + "block.create.belt_tunnel.tooltip": "TUNNEL DE TAPIS ROULANT", + "block.create.belt_tunnel.tooltip.summary": "Une option esthétique pour faire passer vos _tapis_ _roulants_ _mécaniques_ à travers les murs. Les tapis roulants doivent être renforcées avec des _boîtiers_ _en_ _laiton_. Les tunnels peuvent se _synchroniser_ avec _leurs_voisins_, ne laissant passer les éléments que si tous les tunnels du groupe ont un en attente. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "Clic droit avec une clé devant", + "block.create.belt_tunnel.tooltip.action1": "Active le _comportement_ _synchronisé_. Les tunnels synchronisés contiennent des objets jusqu'à ce que leurs voisins en aient également.", + "block.create.belt_tunnel.tooltip.control2": "Clic droit avec une clé sur les côtés", + "block.create.belt_tunnel.tooltip.action2": "_Ajuste_ _les_ _volets_ _des_ _fenêtres_ si le tunnel a une fenêtre sur cette face.", + + "block.create.brass_casing.tooltip": "BOÎTIER EN LAITON", + "block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", + "block.create.brass_casing.tooltip.condition1": "Lorsqu'utilisé sur un tapis roulant mécanique", + "block.create.brass_casing.tooltip.behaviour1": "_Renforce_ les _tapis_ _roulants_ avec une fondation en laiton. Les tapis roulants renforcées peuvent prendre en charge les _tunnels_, _extracteurs_, _entonnoir améliorés_ et _transposeurs_ interagissant avec le tapis roulant sur les côtés et en dessous.", + + "block.create.belt_observer.tooltip": "OBSERVATEUR DE TAPIS ROULANT", + "block.create.belt_observer.tooltip.summary": "Détecte les éléments et les entités passant sur un _tapis_ _roulant_ _mécanique_ devant lui. Utilisez une _clé_ pour faire défiler son comportement. Les non-éléments seront toujours traités en mode détection quel que soit le paramètre.", + "block.create.belt_observer.tooltip.condition1": "Mode détection", + "block.create.belt_observer.tooltip.behaviour1": "Fournit un redstone _pendant_ qu'un _objet_ _correspondant_ _soit_ sur le segment de tapis roulant observé.", + "block.create.belt_observer.tooltip.condition2": "Mode impulsion", + "block.create.belt_observer.tooltip.behaviour2": "Émet une _impulsion_ lorsqu'un _objet_ _correspondant_ _passe_ au centre du segment de tapis roulant observé.", + "block.create.belt_observer.tooltip.condition3": "Mode éjection", + "block.create.belt_observer.tooltip.behaviour3": "_Éject_ les _objets_ _correspondants_ sur le côté. Si le tapis roulant ou l'espace cible est _occupé_, l'objet sera _tenu_ _en_ _place_.", + "block.create.belt_observer.tooltip.condition4": "Mode partage", + "block.create.belt_observer.tooltip.behaviour4": "_Partage_ une _pile_ _d'objets_ _correspondants_ et _éjecte_ _la_ _moitié_ de celui-ci sur le côté.", + + "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", + "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", + + "block.create.adjustable_repeater.tooltip": "RÉPÉTEUR RÉGLABLE", + "block.create.adjustable_repeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + + "block.create.adjustable_pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", + "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + + "block.create.analog_lever.tooltip": "LEVIER ANALOGIQUE", + "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", + + "block.create.powered_toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", + "block.create.powered_toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", + + "block.create.powered_latch.tooltip": "VERROU ALIMENTÉ", + "block.create.powered_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", + + "block.create.speedometer.tooltip": "COMPTEUR DE VITESSE", + "block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.speedometer.tooltip.condition1": "Lorsque tourné", + "block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", + + "block.create.stressometer.tooltip": "STRESSOMÈTRE", + "block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.stressometer.tooltip.condition1": "Lorsque tourné", + "block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", + + "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", + "tool.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "tool.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking_ _at_ _them_", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", + "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", + + "item.create.shadow_steel.tooltip": "ACIER SOMBRE", + "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", + + "item.create.crafter_slot_cover.tooltip": "COUVERCLE D'EMPLACEMENT", + "item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", + + "create.tooltip.wip": "En cours", + "create.tooltip.workInProgress": "En cours!", + "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", + "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", + "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", + "create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agites les doigts* veuillez vous disperser.", + "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.", + "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", + "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", + "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json new file mode 100644 index 000000000..2f59f7bf6 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 352" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "Baule Regolabile", + "block.create.adjustable_pulley": "Puleggia analogica", + "block.create.adjustable_pulse_repeater": "Ripetitore di Impulsi Regolabile", + "block.create.adjustable_repeater": "Ripetitore Regolabile", + "block.create.analog_lever": "Leva Analogica", + "block.create.andesite_bricks": "Mattoni di Andesite", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "Involucro di Andesite", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "Bacinella", + "block.create.belt": "Nastro Meccanico", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "Osservatore a Cinghia", + "block.create.belt_tunnel": "Tunnel Trasportatore", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "Blocco di Ottone", + "block.create.brass_casing": "Involucro di Ottone", + "block.create.cart_assembler": "Assemblatore Carrello da Miniera", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "Supporto del Orologio", + "block.create.clutch": "Frizione", + "block.create.cogwheel": "Ruota Dentata", + "block.create.copper_block": "Blocco di Rame", + "block.create.copper_casing": "Involucro di Rame", + "block.create.copper_ore": "Rame Grezzo", + "block.create.copper_shingles": "Tegole di Rame", + "block.create.creative_crate": "Creatore Cannoneschematico", + "block.create.creative_motor": "Motore", + "block.create.crushing_wheel": "Ruota di Frantumazione", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "Orologio a Cucù", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "Scoria Scura", + "block.create.dark_scoria_bricks": "Mattoni di Scoria Scura", + "block.create.dark_scoria_bricks_slab": "Lastra di Mattoni di Scoria Scura", + "block.create.dark_scoria_bricks_stairs": "Scalini di Mattoni di Scoria Scura", + "block.create.dark_scoria_bricks_wall": "Muretto di Mattoni di Scoria Scura", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "Installatore", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "Mattoni di Diorite", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "Dolomite", + "block.create.dolomite_bricks": "Mattoni di Dolomite", + "block.create.dolomite_bricks_slab": "Lastra di Mattoni di Dolomite", + "block.create.dolomite_bricks_stairs": "Scalini di Mattoni di Dolomite", + "block.create.dolomite_bricks_wall": "Muretto di Mattoni di Dolomite", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "Pilastro di Dolomite", + "block.create.encased_belt": "Nastro Incassato", + "block.create.encased_fan": "Ventilatore incassato", + "block.create.encased_shaft": "Albero Incassato", + "block.create.extractor": "Estrattore", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "Volano", + "block.create.framed_glass": "Finestra Grande Vetro", + "block.create.framed_glass_pane": "Pannello di Finestra Grande Vetro", + "block.create.funnel": "Imbuto", + "block.create.furnace_engine": "Motore Fornace", + "block.create.gabbro": "Gabbro", + "block.create.gabbro_bricks": "Mattoni di Gabbro", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "Scalini di Mattoni di Gabbro", + "block.create.gabbro_bricks_wall": "Muretto di Mattoni di Gabbro", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "Riduttore", + "block.create.gearshift": "Cambio", + "block.create.granite_bricks": "Mattoni di Granito", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "Manovella", + "block.create.horizontal_framed_glass": "Finestra Orizzontale Vetro", + "block.create.horizontal_framed_glass_pane": "Pannello di Finestra Orizzontale Vetro", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "Ruota Dentata Grande", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "Silico Calcare", + "block.create.limestone": "Calcare", + "block.create.limestone_bricks": "Mattoni di Calcare", + "block.create.limestone_bricks_slab": "Lastra di Mattoni di Calcare", + "block.create.limestone_bricks_stairs": "Scalini di Mattoni di Calcare Levigato", + "block.create.limestone_bricks_wall": "Muretto di Mattoni di Calcare Levigato", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "Pilastro di Calcare", + "block.create.linear_chassis": "Telaio Lineare", + "block.create.linked_extractor": "Estrattore Connesso", + "block.create.linked_transposer": "Traspositore Connesso", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "Supporto Meccanico", + "block.create.mechanical_crafter": "Costruttore Meccanico", + "block.create.mechanical_drill": "Trapano Meccanico", + "block.create.mechanical_harvester": "Mietitrice Meccanica", + "block.create.mechanical_mixer": "Miscelatore Meccanico", + "block.create.mechanical_piston": "Pistome Meccanico", + "block.create.mechanical_piston_head": "Testa Pistome Meccanico", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "Pressa Meccanica", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "Sega Meccanica", + "block.create.millstone": "Macina", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "Scoria Naturale", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "Ugello", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "Palo Pistome", + "block.create.polished_dark_scoria": "Scoria Scura Levigata", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "Dolomite Levigato", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "Gabbro Levigato", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "Calcare Levigato", + "block.create.polished_limestone_slab": "Lastra di Calcare Levigato", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "Scoria Levigata", + "block.create.polished_scoria_slab": "Lastra di Scoria Levigata", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "Calcare Consumato Levigato", + "block.create.polished_weathered_limestone_slab": "Lastra di Calcare Consumato Levigato", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "Interfaccia di Archiviazione Portatile", + "block.create.powered_latch": "Leva Alimentata", + "block.create.powered_toggle_latch": "Leva Alimentata Alterata", + "block.create.pulley_magnet": "Magnete della Puleggia", + "block.create.pulse_repeater": "Ripetitore di Impulsi", + "block.create.radial_chassis": "Telaio Radiale", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "Contatto Redstone", + "block.create.redstone_link": "Collegamento Redstone", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "Corda", + "block.create.rope_pulley": "Puleggia della Corda", + "block.create.rotation_speed_controller": "Regolatore di Velocità di Rotazione", + "block.create.schematic_table": "Banco Schematico", + "block.create.schematicannon": "Cannoneschematico", + "block.create.scoria": "Scoria", + "block.create.scoria_bricks": "Mattoni di Scoria", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "Pilastro di Scoria", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "Cambio Sequenziale", + "block.create.shaft": "Albero", + "block.create.speedometer": "Tachimetro", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "Pistome Meccanico Appiccicoso", + "block.create.stockpile_switch": "Interruttore Accumulatore", + "block.create.stressometer": "Stressometro", + "block.create.tiled_glass": "Vetro Piastrellato", + "block.create.tiled_glass_pane": "Pannello di Vetro Piastrellato", + "block.create.transposer": "Traspositore", + "block.create.turntable": "Piatto", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "Finestra Verticale Vetro", + "block.create.vertical_framed_glass_pane": "Pannello di Finestra Verticale Vetro", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "Ruota d'Acqua", + "block.create.weathered_limestone": "Calcare Consumato", + "block.create.weathered_limestone_bricks": "Mattoni di Calcare Consumato", + "block.create.weathered_limestone_bricks_slab": "Lastra di Mattoni di Calcare Consumato", + "block.create.weathered_limestone_bricks_stairs": "Scalini di Mattoni di Calcare Consumato Levigato", + "block.create.weathered_limestone_bricks_wall": "Muretto di Mattoni di Calcare Consumato Levigato", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "Pilastro di Calcare Consumato", + "block.create.zinc_block": "Blocco di Zinco", + "block.create.zinc_ore": "Zinco Grezzo", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "Lega di Andesite", + "item.create.attribute_filter": "Filtro Attributi", + "item.create.belt_connector": "Nastro Meccanico", + "item.create.brass_hand": "Mano", + "item.create.brass_ingot": "Lingotto di Ottone", + "item.create.brass_nugget": "Pepita di Ottone", + "item.create.brass_sheet": "Lamiera di Ottone", + "item.create.chromatic_compound": "Composto Cromatico", + "item.create.copper_ingot": "Lingotto di Rame", + "item.create.copper_nugget": "Pepita di Rame", + "item.create.copper_sheet": "Lamiera di Rame", + "item.create.crafter_slot_cover": "Rivestimento Slot Creazione", + "item.create.crushed_brass": "Ottone Frantumato", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "Deforestatore", + "item.create.dough": "Impasto", + "item.create.electron_tube": "Valvola", + "item.create.empty_schematic": "Schematica Vuota", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "Filtro", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "Occhiali da Ingegnere", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "Zapper di Blocchi Portatile", + "item.create.handheld_worldshaper": "Plasmatore del Mondo Portatile", + "item.create.integrated_circuit": "Circuito Integrato", + "item.create.iron_sheet": "Lamiera di Ferro", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "Quarzo Rosa Levigato", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "Elica", + "item.create.red_sand_paper": "Carta Vetrata Rossa", + "item.create.refined_radiance": "Radiance Raffinata", + "item.create.rose_quartz": "Quarzo Rosa", + "item.create.sand_paper": "Carta Vetrata", + "item.create.schematic": "Schematica", + "item.create.schematic_and_quill": "Schematica e Penna d'Oca", + "item.create.shadow_steel": "Acciaio Oscuro", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "Fertilizzante per Alberi", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "Asta di Simetria", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "Frusta", + "item.create.wrench": "Chiave Inglese", + "item.create.zinc_ingot": "Barra di Zinco", + "item.create.zinc_nugget": "Pepita di Zinco", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s è stato elaborato dala Ruota di Frantumazione", + "death.attack.create.fan_fire": "%1$s è stato bruciato a morte da aria calda", + "death.attack.create.fan_lava": "%1$s è stato bruciato a morte dal ventilatore di lava", + "death.attack.create.mechanical_drill": "%1$s è stato impalato dal Trapano Meccanico", + "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla Sega Meccanica", + "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria dall'orologio a cucù manomesso", + + "create.block.deployer.damage_source_name": "un Disadattato", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "Frantumazione", + "create.recipe.milling": "Fresatura", + "create.recipe.splashing": "Lavaggio alla Rinfusa", + "create.recipe.splashing.fan": "Ventilatore Dietro l'Acqua Corrente", + "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", + "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", + "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", + "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", + "create.recipe.pressing": "Pressatura", + "create.recipe.mixing": "Mescolamento", + "create.recipe.packing": "Compattazione", + "create.recipe.mechanical_sawing": "Segagione", + "create.recipe.mechanical_crafting": "Creazione Meccanico", + "create.recipe.block_cutting": "Taglio Blocco", + "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", + "create.recipe.sandpaper_polishing": "Carta Vetrata Levigata", + "create.recipe.mystery_conversion": "Metamorfosi Cromatica", + "create.recipe.processing.catalyst": "Catalizzatore", + "create.recipe.processing.chance": "%1$s%% Possibilità", + "create.recipe.processing.chanceToReturn": "%1$s%% Possibilità di Ritorno", + + "create.generic.range": "Gamma", + "create.generic.radius": "Raggio", + "create.generic.width": "Larghezza", + "create.generic.height": "Altezza", + "create.generic.length": "Lunghezza", + "create.generic.speed": "Velocità", + "create.generic.delay": "Ritardo", + "create.generic.unit.ticks": "Tick", + "create.generic.unit.seconds": "Secondi", + "create.generic.unit.minutes": "Minuti", + "create.generic.unit.rpm": "RPM", + "create.generic.unit.stress": "su", + "create.generic.unit.degrees": "°", + + "create.action.scroll": "Scorri", + "create.action.confirm": "Conferma", + "create.action.abort": "Annulla", + "create.action.saveToFile": "Salva", + "create.action.discard": "Scarta", + + "create.keyinfo.toolmenu": "Focalizza sul Menu Strumento", + "create.keyinfo.scrollup": "Simula Rotellina del Mouse Verso Su (nel mondo)", + "create.keyinfo.scrolldown": "Simula Rotellina del Mouse Verso Giù (nel mondo)", + + "create.gui.scrollInput.defaultTitle": "Scegli un Opzione:", + "create.gui.scrollInput.scrollToModify": "Scorri per Modificare", + "create.gui.scrollInput.scrollToAdjustAmount": "Scorri Fino a Regolare l'Importo", + "create.gui.scrollInput.scrollToSelect": "Scorri per Selezionare", + "create.gui.scrollInput.shiftScrollsFaster": "Premi Shift per Scorrere più Velocemente", + "create.gui.toolmenu.focusKey": "Premi [%1$s] per Aprire il Menu", + "create.gui.toolmenu.cycle": "[SCORRI] per navigare", + "create.gui.symmetryWand.mirrorType": "Specchio", + "create.gui.symmetryWand.orientation": "Orientamento", + + "create.symmetry.mirror.plane": "Una volta", + "create.symmetry.mirror.doublePlane": "Rettangolare", + "create.symmetry.mirror.triplePlane": "Ottagonale", + + "create.orientation.orthogonal": "Ortogonale", + "create.orientation.diagonal": "Diagonale", + "create.orientation.horizontal": "Orizzontale", + "create.orientation.alongZ": "Lungo Z", + "create.orientation.alongX": "Lungo X", + + "create.gui.blockzapper.title": "Posizionatore di Blocchi", + "create.gui.blockzapper.replaceMode": "Modalità Sostituire", + "create.gui.blockzapper.searchDiagonal": "Segui Diagonali", + "create.gui.blockzapper.searchFuzzy": "Ignora i Bordi dei Materiali", + "create.gui.blockzapper.range": "Gamma Diffusione", + "create.gui.blockzapper.needsUpgradedAmplifier": "Richiede Aggirnamento del Amplificatore", + "create.gui.blockzapper.patternSection": "Schema", + "create.gui.blockzapper.pattern.solid": "Solido", + "create.gui.blockzapper.pattern.checkered": "Scacchiera", + "create.gui.blockzapper.pattern.inversecheckered": "Scacchiera Invertita", + "create.gui.blockzapper.pattern.chance25": "25% Riempito", + "create.gui.blockzapper.pattern.chance50": "50% Riempito", + "create.gui.blockzapper.pattern.chance75": "75% Riempito", + "create.gui.terrainzapper.title": "Plasmatore del Mondo", + "create.gui.terrainzapper.placement": "Piazzamento", + "create.gui.terrainzapper.placement.merged": "Fuso", + "create.gui.terrainzapper.placement.attached": "Attaccato", + "create.gui.terrainzapper.placement.inserted": "Inserito", + "create.gui.terrainzapper.brush": "Pennello", + "create.gui.terrainzapper.brush.cuboid": "Cuboide", + "create.gui.terrainzapper.brush.sphere": "Sferico", + "create.gui.terrainzapper.brush.cylinder": "Cilindrico", + "create.gui.terrainzapper.tool": "Strumento", + "create.gui.terrainzapper.tool.fill": "Riempi", + "create.gui.terrainzapper.tool.place": "Piazza", + "create.gui.terrainzapper.tool.replace": "Sostituisci", + "create.gui.terrainzapper.tool.clear": "Ripulisci", + "create.gui.terrainzapper.tool.overlay": "Ricopri", + "create.gui.terrainzapper.tool.flatten": "Appiattisci", + + "create.terrainzapper.shiftRightClickToSet": "Clic-Destro e Shift per selezionare una forma", + + "create.blockzapper.usingBlock": "In utilizzo: %1$s", + "create.blockzapper.componentUpgrades": "Aggiornamenti dei Componenti:", + "create.blockzapper.component.body": "Corpo", + "create.blockzapper.component.amplifier": "Amplificatore", + "create.blockzapper.component.accelerator": "Acceleratore", + "create.blockzapper.component.retriever": "Cane da Riporto", + "create.blockzapper.component.scope": "Portata", + "create.blockzapper.componentTier.none": "Nessuno", + "create.blockzapper.componentTier.brass": "Ottone", + "create.blockzapper.componentTier.chromatic": "Cromatico", + "create.blockzapper.leftClickToSet": "Clic-Sinistro su un blocco per impostare il materiale", + "create.blockzapper.empty": "Fuori dai Blocchi!", + + "create.contraptions.movement_mode": "Modalità Movimento", + "create.contraptions.movement_mode.move_place": "Posizionare Sempre quando è Fermo", + "create.contraptions.movement_mode.move_place_returned": "Posiziona solo nella Posizione Iniziale", + "create.contraptions.movement_mode.move_never_place": "Posiziona solo quando Ancora Distrutto", + "create.contraptions.movement_mode.rotate_place": "Posiziona Sempre quando è Fermo", + "create.contraptions.movement_mode.rotate_place_returned": "Posiziona solo vicino all'Angolo Iniziale", + "create.contraptions.movement_mode.rotate_never_place": "Posiziona Solo quando l'Ancora viene Distrutta", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "Filtro", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + + "create.gui.goggles.generator_stats": "Statistiche del Generatore:", + "create.gui.goggles.kinetic_stats": "Statistiche Cinetiche:", + "create.gui.goggles.at_current_speed": "Alla velocità Attuale", + "create.gui.goggles.base_value": "Valore Base", + "create.gui.gauge.info_header": "Informazioni sul Calibro:", + "create.gui.speedometer.title": "Velocità di Rotazione", + "create.gui.stressometer.title": "Stress della Rete", + "create.gui.stressometer.capacity": "Capacità Rimanente", + "create.gui.stressometer.overstressed": "Sovrastressato", + "create.gui.stressometer.no_rotation": "Nessuna Rotazione", + "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", + "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", + "create.gui.adjustable_crate.title": "Baule Regolabile", + "create.gui.adjustable_crate.storageSpace": "Spazio di Immagazzinamento", + "create.gui.stockpile_switch.title": "Interruttore Accumulatore", + "create.gui.stockpile_switch.lowerLimit": "Soglia Inferiore", + "create.gui.stockpile_switch.upperLimit": "Soglia Superiore", + "create.gui.stockpile_switch.startAt": "Inizia Segnale al", + "create.gui.stockpile_switch.startAbove": "Inizia il Segnale dop.", + "create.gui.stockpile_switch.stopAt": "Ferma Segnale al", + "create.gui.stockpile_switch.stopBelow": "Ferma il Segnale dop.", + "create.gui.sequenced_gearshift.title": "Cambio Sequenziale", + "create.gui.sequenced_gearshift.instruction": "Istruzione", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Gira", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angolo", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistone", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanza", + "create.gui.sequenced_gearshift.instruction.wait": "Aspetta", + "create.gui.sequenced_gearshift.instruction.wait.duration": "Durata", + "create.gui.sequenced_gearshift.instruction.end": "Fine", + "create.gui.sequenced_gearshift.speed": "Velocità, Direzione", + "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, Avanti", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, Avanti", + "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, Invertita", + "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, Invertita", + + "create.schematicAndQuill.dimensions": "Dimensione Schematica: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Prima posizione impostata.", + "create.schematicAndQuill.secondPos": "Seconda posizione impostata.", + "create.schematicAndQuill.noTarget": "Premi [Ctrl] per selezionare il Blocco d'Aria.", + "create.schematicAndQuill.abort": "Selezione rimossa.", + "create.schematicAndQuill.prompt": "Immettere un nome per lo schema:", + "create.schematicAndQuill.fallbackName": "La mia Schematica", + "create.schematicAndQuill.saved": "Salvata come %1$s", + + "create.schematic.invalid": "[!] Oggetto non valido - Utilizza invece il Banco Schematico", + "create.schematic.position": "Posizione", + "create.schematic.rotation": "Rotazione", + "create.schematic.rotation.none": "Nessuna", + "create.schematic.rotation.cw90": "Senso Orario 90", + "create.schematic.rotation.cw180": "Senso Orario 180", + "create.schematic.rotation.cw270": "Senso Orario 270", + "create.schematic.mirror": "Specchio", + "create.schematic.mirror.none": "Nessuno", + "create.schematic.mirror.frontBack": "Fronte-Retro", + "create.schematic.mirror.leftRight": "Sinistra-Destra", + "create.schematic.tool.deploy": "Installa", + "create.schematic.tool.move": "Muovi XZ", + "create.schematic.tool.movey": "Muovi Y", + "create.schematic.tool.rotate": "Ruota", + "create.schematic.tool.print": "Stampa", + "create.schematic.tool.flip": "Capovolgi", + "create.schematic.tool.deploy.description.0": "Sposta la struttura in una posizione.", + "create.schematic.tool.deploy.description.1": "Clic-Destro sul terreno per posizionarla.", + "create.schematic.tool.deploy.description.2": "premi [Ctrl] per selezionare a distanza fissa.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Scorri per cambiare la distanza.", + "create.schematic.tool.move.description.0": "Sposta la Schematica in Orizzontale.", + "create.schematic.tool.move.description.1": "Indica la Schematica e [CTRL]-Scorri per spingerla.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Sposta la Schematica verticalmente.", + "create.schematic.tool.movey.description.1": "[CTRL]-Scorri per spostarla su/giù.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Ruota la Schematica attorno al suo centro.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Scorri ruota di 90 gradi.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Posiziona istantaneamente la struttura nel mondo.", + "create.schematic.tool.print.description.1": "[Clic-Destro] per confermare la posizione corrente.", + "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Capovolge la schematica lungo la faccia selezionata.", + "create.schematic.tool.flip.description.1": "Indica la schematica e [CTRL]-Scorri per capovolgerla.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Sincronizzazione...", + "create.schematics.uploadTooLarge": "La schematica è troppo grande.", + "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", + + "create.gui.schematicTable.title": "Banco Schematico", + "create.gui.schematicTable.availableSchematics": "Schatiche disponibili", + "create.gui.schematicTable.noSchematics": "Nessuna Schatica Salvata", + "create.gui.schematicTable.uploading": "Caricamento...", + "create.gui.schematicTable.finished": "Caricamento Finito!", + "create.gui.schematicannon.title": "Cannoneschematico", + "create.gui.schematicannon.settingsTitle": "Impostazioni di Posizionamento", + "create.gui.schematicannon.listPrinter": "Stampante Lisra dei Materiali", + "create.gui.schematicannon.gunpowderLevel": "Polvere da sparo al %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Spari Rimanenti: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Con il backup: %1$s", + "create.gui.schematicannon.optionEnabled": "Attualmente Abilitato", + "create.gui.schematicannon.optionDisabled": "Attualmente Disabilitato", + "create.gui.schematicannon.option.dontReplaceSolid": "Non sostituire i Blocchi Solidi", + "create.gui.schematicannon.option.replaceWithSolid": "Sostituisci Solidi con Solidi", + "create.gui.schematicannon.option.replaceWithAny": "Sostituisci Solidi con Qualsiasi", + "create.gui.schematicannon.option.replaceWithEmpty": "Sostituisci Solidi con il Vuoto", + "create.gui.schematicannon.option.skipMissing": "Salta i Blocchi Mancanti", + "create.gui.schematicannon.option.skipTileEntities": "Proteggi i Blocchi Entità", + "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", + "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco Solido nella sua area di lavoro, solo non solidi e aria.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", + "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dal aria.", + + "create.schematicannon.status.idle": "Inattivo", + "create.schematicannon.status.ready": "Pronto", + "create.schematicannon.status.running": "In Esecuzione", + "create.schematicannon.status.finished": "Finito", + "create.schematicannon.status.paused": "In Pausa", + "create.schematicannon.status.stopped": "Fermato", + "create.schematicannon.status.noGunpowder": "Niente Polvere da sparo", + "create.schematicannon.status.targetNotLoaded": "Il Blocco non è Caricato", + "create.schematicannon.status.targetOutsideRange": "Obbiettivo Troppo Lontano", + "create.schematicannon.status.searching": "Ricercando", + "create.schematicannon.status.skipping": "Saltando", + "create.schematicannon.status.missingBlock": "Bloc. Mancante:", + "create.schematicannon.status.placing": "Piazzando", + "create.schematicannon.status.clearing": "Cancellando Blocchi", + "create.schematicannon.status.schematicInvalid": "Schematica Non Valida", + "create.schematicannon.status.schematicNotPlaced": "Schematica Non Implementata", + "create.schematicannon.status.schematicExpired": "File Schematica Scaduto", + + "create.gui.filter.blacklist": "Lista Nera", + "create.gui.filter.blacklist.description": "Gli oggetti passano se NON corrispondono a nessuno dei precedenti. Una Lista Nera vuota accetta tutto.", + "create.gui.filter.whitelist": "Lista Bianca", + "create.gui.filter.whitelist.description": "Gli oggetti passano se corrispondono a uno dei precedenti. Una Lista Bianca vuota rifiuta tutto.", + "create.gui.filter.respect_data": "Rispetto dei Dati", + "create.gui.filter.respect_data.description": "Gli oggetti corrispondono solo se la loro durata, incantesimi e altri attributi corrispondono.", + "create.gui.filter.ignore_data": "Ignora Dati", + "create.gui.filter.ignore_data.description": "Gli oggetti corrispondono indipendentemente dai loro attributi.", + + "create.item_attributes.placeable": "è posizionabile", + "create.item_attributes.consumable": "può essere mangiato", + "create.item_attributes.smeltable": "può essere Fuso", + "create.item_attributes.washable": "può essere Lavato", + "create.item_attributes.smokable": "può essere Affumicato", + "create.item_attributes.blastable": "è fondibile in un Forno fusorio", + "create.item_attributes.enchanted": "è incantato", + "create.item_attributes.damaged": "è danneggiato", + "create.item_attributes.badly_damaged": "è gravemente danneggiato", + "create.item_attributes.not_stackable": "non impilabile", + "create.item_attributes.equipable": "può essere equipaggiato", + "create.item_attributes.furnace_fuel": "è il combustibile della fornace", + "create.item_attributes.in_tag": "è etichettato %1$s", + "create.item_attributes.in_item_group": "appartiene a %1$s", + "create.item_attributes.added_by": "è stato aggiunto da %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Nessun attributo selezionato", + "create.gui.attribute_filter.selected_attributes": "Attributi selezionati:", + "create.gui.attribute_filter.whitelist_disjunctive": "Lista Bianca (Qualsiasi)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "Gli oggetti passano se hanno uno degli attributi selezionati.", + "create.gui.attribute_filter.whitelist_conjunctive": "Lista Bianca (Tutti)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "Gli oggetti passano solo se hanno TUTTI gli attributi selezionati.", + "create.gui.attribute_filter.blacklist": "Lista Nera", + "create.gui.attribute_filter.blacklist.description": "Gli oggetti passano se NON hanno nessuno degli attributi selezionati.", + "create.gui.attribute_filter.add_reference_item": "Agg. Oggetto di Riferim.", + + "create.tooltip.holdKey": "Premi [%1$s]", + "create.tooltip.holdKeyOrKey": "Premi [%1$s] o [%2$s]", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Velocità Richiesta: %1$s", + "create.tooltip.speedRequirement.none": "Nessuna", + "create.tooltip.speedRequirement.medium": "Moderata", + "create.tooltip.speedRequirement.high": "Veloce", + "create.tooltip.stressImpact": "Impatto sullo Stress: %1$s", + "create.tooltip.stressImpact.low": "Basso", + "create.tooltip.stressImpact.medium": "Moderato", + "create.tooltip.stressImpact.high": "Alto", + "create.tooltip.stressImpact.overstressed": "Sovrastressato", + "create.tooltip.capacityProvided": "Capacità dello Stress: %1$s", + "create.tooltip.capacityProvided.low": "Piccola", + "create.tooltip.capacityProvided.medium": "Media", + "create.tooltip.capacityProvided.high": "Grande", + "create.tooltip.capacityProvided.asGenerator": "(Come generatore)", + "create.tooltip.generationSpeed": "Genera %1$s %2$s", + "create.tooltip.analogStrength": "Forza Analogica: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "Ingredienti Min.", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", + "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps avvia per rallentare artificialmente il tick del server", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.subtitle.schematicannon_launch_block": "Tiri del Cannoneschematico", + "create.subtitle.schematicannon_finish": "Finiture Cannoneschematico", + "create.subtitle.slime_added": "Slime schiacciato", + "create.subtitle.mechanical_press_activation": "Pressa Meccanica attiva", + "create.subtitle.mechanical_press_item_break": "Metal clanks", + "create.subtitle.blockzapper_place": "Posiziona blocchi nello spazio", + "create.subtitle.blockzapper_confirm": "Ding Affermativo", + "create.subtitle.blockzapper_deny": "Boop in Calo", + "create.subtitle.block_funnel_eat": "CHOMPS a Imbuto", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "OGGETTO DI ESEMPIO (solo un indicatore che esiste nella descrizione)", + "item.create.example_item.tooltip.summary": "Una breve descrizione dell'oggetto. La _sottolineatura_ evidenzia un termine.", + "item.create.example_item.tooltip.condition1": "Quando questo", + "item.create.example_item.tooltip.behaviour1": "Quindi questo articolo fa questo. (i comportamenti mostrati con shift)", + "item.create.example_item.tooltip.condition2": "E quando questo", + "item.create.example_item.tooltip.behaviour2": "Puoi aggiungere tutti i comportamenti che desideri", + "item.create.example_item.tooltip.control1": "Quando premi Ctrl", + "item.create.example_item.tooltip.action1": "Questi controlli vengono visualizzati.", + + "item.create.wand_of_symmetry.tooltip": "ASTA DI SIMETRIA", + "item.create.wand_of_symmetry.tooltip.summary": "Rispecchia perfettamente il posizionamento dei blocchi su piani configurati.", + "item.create.wand_of_symmetry.tooltip.condition1": "In Hotbar", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Rimane attivo", + "item.create.wand_of_symmetry.tooltip.control1": "Clic-Destro sul Terreno", + "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _Sposta_ lo Specchio", + "item.create.wand_of_symmetry.tooltip.control2": "Clic-Destro in Aria", + "item.create.wand_of_symmetry.tooltip.action2": "_Rimuove_ lo Specchio attivo", + "item.create.wand_of_symmetry.tooltip.control3": "Clic-Destro da Accovacciato", + "item.create.wand_of_symmetry.tooltip.action3": "Apre l'_Interfaccia_ _di_ _Configurazione_", + + "item.create.handheld_blockzapper.tooltip": "POSIZIONATORE DI BLOCCHI PORTATILE", + "item.create.handheld_blockzapper.tooltip.summary": "Nuovo gadget per posizionare o scambiare blocchi a distanza.", + "item.create.handheld_blockzapper.tooltip.control1": "Clic-Sinistro su un Blocco", + "item.create.handheld_blockzapper.tooltip.action1": "Imposta i blocchi posizionati dallo strumento sul blocco selezionato.", + "item.create.handheld_blockzapper.tooltip.control2": "Clic-Destro su un Blocco", + "item.create.handheld_blockzapper.tooltip.action2": "_Piazza_ o _Sostituisce_ il blocco selezionato.", + "item.create.handheld_blockzapper.tooltip.control3": "Clic-Destro da Accovacciato", + "item.create.handheld_blockzapper.tooltip.action3": "Apre l'_Interfaccia_ _di_ _Configurazione_.", + + "item.create.handheld_worldshaper.tooltip": "PLASMATORE DEL MONDO PORTATILE", + "item.create.handheld_worldshaper.tooltip.summary": "Strumento per la creazione di _paesaggi_ e _caratteristiche_ _del_ _terreno_.", + "item.create.handheld_worldshaper.tooltip.control1": "Clic-Sinistro su un Blocco", + "item.create.handheld_worldshaper.tooltip.action1": "Imposta i blocchi posizionati dallo strumento sul blocco selezionato.", + "item.create.handheld_worldshaper.tooltip.control2": "Clic-Destro su un Blocco", + "item.create.handheld_worldshaper.tooltip.action2": "Applica il _Pennello_ e lo _Strumento_ attualmente selezionati nella posizione selezionata.", + "item.create.handheld_worldshaper.tooltip.control3": "Clic-Destro da Accovacciato", + "item.create.handheld_worldshaper.tooltip.action3": "Apre l'_Interfaccia_ _di_ _Configurazione_", + + "item.create.tree_fertilizer.tooltip": "FERTILIZZANTE PER ALBERI", + "item.create.tree_fertilizer.tooltip.summary": "Una potente combinazione di minerali adatta ad accelerare la crescita di tipi di alberi comuni.", + "item.create.tree_fertilizer.tooltip.condition1": "Se utilizzato su un Arboscello", + "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce gli Alberi _indipendentemente_ dalle _condizioni_ _di_ _spaziatura_", + + "item.create.deforester.tooltip": "DEFORESTATORE", + "item.create.deforester.tooltip.summary": "Un' _ascia_ _radiante_ in grado di abbattere alberi in una frazione di secondo.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "FILTRO", + "item.create.filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, confrontandoli con una _serie_ _di_ _oggetti_ o diversi _filtri_ _nidificati_.", + "item.create.filter.tooltip.condition1": "Quando si trova nello slot del filtro", + "item.create.filter.tooltip.behaviour1": "_Controlla_ il flusso degli oggetti in base alla sua _configurazione_.", + "item.create.filter.tooltip.condition2": "Clic-Destro su di esso", + "item.create.filter.tooltip.behaviour2": "Apre l'_Interfaccia_ _di_ _Configurazione_.", + + "item.create.attribute_filter.tooltip": "FILTRO ATTRIBUTI", + "item.create.attribute_filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, abbinandolo a una _serie_ _di_ _attributi_ e _categorie_ di oggetti.", + "item.create.attribute_filter.tooltip.condition1": "Quando si trova nello slot del filtro", + "item.create.attribute_filter.tooltip.behaviour1": "_Controlla_ il flusso degli oggetti in base alla sua _configurazione_.", + "item.create.attribute_filter.tooltip.condition2": "Clic-Destro su di esso", + "item.create.attribute_filter.tooltip.behaviour2": "Apre l'_Interfaccia_ _di_ _Configurazione_.", + + "item.create.empty_schematic.tooltip": "SCHEMATICA VUOTA", + "item.create.empty_schematic.tooltip.summary": "Utilizzato come ingrediente per ricette e per la scrittura al _Banco_ _Schematico_.", + + "item.create.schematic.tooltip": "SCHEMATICA", + "item.create.schematic.tooltip.summary": "Contiene una struttura da posizionare e collocare nel mondo. Posiziona l'ologramma come desiderato e usa un _Cannoneschematico_ per costruirla.", + "item.create.schematic.tooltip.condition1": "Quando Tenuto", + "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli Strumenti sullo Schermo.", + "item.create.schematic.tooltip.control1": "Clic-Destro da Accovacciato", + "item.create.schematic.tooltip.action1": "Apre un'_Interfaccia_ per l'immissione di _Coordinate_ esatte.", + + "item.create.schematic_and_quill.tooltip": "SCHEMATICA E PENNA D'OCA", + "item.create.schematic_and_quill.tooltip.summary": "Utilizzato per salvare una struttura nel tuo mondo in un file .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Seleziona due punti d'angolo usando il Clic-Destro.", + "item.create.schematic_and_quill.tooltip.condition2": "Passo 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scorri_ sui volti per regolare le dimensioni. Clic-Destro di nuovo per salvare.", + "item.create.schematic_and_quill.tooltip.control1": "Clic-Destro", + "item.create.schematic_and_quill.tooltip.action1": "Seleziona un punto d'angolo / conferma il salvataggio.", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl Premuto", + "item.create.schematic_and_quill.tooltip.action2": "Seleziona i punti a _mezz'aria_. _Scorri_ per regolare la distanza.", + "item.create.schematic_and_quill.tooltip.control3": "Clic-Destro da Accovacciato", + "item.create.schematic_and_quill.tooltip.action3": "_Resetta_ e rimuove la selezione.", + + "block.create.schematicannon.tooltip": "CANNONESCHEMATICO", + "block.create.schematicannon.tooltip.summary": "Spara blocchi per ricreare una _Schematica_ distribuita nel Mondo. Usa gli oggetti degli inventari adiacenti e della _Polvere da sparo_ come combustibile.", + "block.create.schematicannon.tooltip.control1": "Clic-Destro su di esso", + "block.create.schematicannon.tooltip.action1": "Apre l'_Interfaccia_", + + "block.create.schematic_table.tooltip": "BANCO SCHEMATICO", + "block.create.schematic_table.tooltip.summary": "Scrive schematiche salvate su una _Schematica_ _Vuota_.", + "block.create.schematic_table.tooltip.condition1": "Quando viene fornita una Schematica Vuota", + "block.create.schematic_table.tooltip.behaviour1": "Carica un file selezionato dalla cartella Schematics.", + + "block.create.shaft.tooltip": "ALBERO", + "block.create.shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta.", + + "block.create.cogwheel.tooltip": "RUOTA DENTATA", + "block.create.cogwheel.tooltip.summary": "_Rotazione_ _Relè_ in linea retta e su _Ruote_ _Dentate_ adiacenti.", + + "block.create.large_cogwheel.tooltip": "RUOTA DENTATA GRANDE", + "block.create.large_cogwheel.tooltip.summary": "Una versione più grande della _Ruota_ _Dentata_, consente di _modificare_ la _Velocità_ _di_ _Rotazione_ quando è collegato alla sua controparte più piccola.", + + "block.create.encased_shaft.tooltip": "ALBERO INCASSATO", + "block.create.encased_shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta. Adatto per propagare la rotazione attraverso le pareti.", + + "block.create.gearbox.tooltip": "RIDUTTORE", + "block.create.gearbox.tooltip.summary": "_Rotazione_ _Relè_ in _quatro_ _direzioni_ Inverte le connessioni diritte.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "CAMBIO", + "block.create.gearshift.tooltip.summary": "Un controllo per attivare / disattivare la direzione di rotazione per gli alberi collegati.", + "block.create.gearshift.tooltip.condition1": "Quando Alimentato", + "block.create.gearshift.tooltip.behaviour1": "_Inverte_ la rotazione in uscita.", + + "block.create.clutch.tooltip": "FRIZIONE", + "block.create.clutch.tooltip.summary": "Un controllo per innestare / disinnestare la rotazione per gli alberi collegati.", + "block.create.clutch.tooltip.condition1": "Quando Alimentato", + "block.create.clutch.tooltip.behaviour1": "_Interrompe_ il trasferimento della rotazione dall'altro lato.", + + "block.create.encased_belt.tooltip": "NASTRO INCASSATO", + "block.create.encased_belt.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_", + "block.create.encased_belt.tooltip.condition1": "Quando Connesso", + "block.create.encased_belt.tooltip.behaviour1": "I blocchi collegati avranno la _stessa_ _velocità_ _di_ _rotazione_ e direzione esatte. Non devono affrontare allo stesso modo.", + + "block.create.adjustable_pulley.tooltip": "PULEGGIA ANALOGICA", + "block.create.adjustable_pulley.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_. I nastri incassati attaccati _ruoteranno_ _più_ _velocemente_ in base al _segnale_ _analogico_ _di_ _redstone_ ricevuto da questo blocco.", + "block.create.adjustable_pulley.tooltip.condition1": "Controllo Redstone", + "block.create.adjustable_pulley.tooltip.behaviour1": "Senza un segnale, _non_ _accelererà_ i nastri collegati. Con un segnale a piena forza collegato al nastro, la velocità _raddoppia_.", + + "item.create.belt_connector.tooltip": "NASTRO MECCANICO", + "item.create.belt_connector.tooltip.summary": "Collega due o più _Alberi_ con un _Nastro_ _Meccanico_. Gli alberi collegati avranno la stessa velocità e direzione di rotazione esatte. Il Nastro può fungere da _Trasportatore_ per _Oggetti_ ed _Entità_.", + "item.create.belt_connector.tooltip.control1": "Clic-Destro sui Alberi", + "item.create.belt_connector.tooltip.action1": "Seleziona l'albero come una puleggia del Nastro. Entrambi gli Alberi selezionati devono _allinearsi_ _Verticalmente_, _Orizzontalmente_, o _Diagonalmente_ verso la direzione del Nastro.", + "item.create.belt_connector.tooltip.control2": "Clic-Destro da Accovacciato", + "item.create.belt_connector.tooltip.action2": "_Reimposta_ la prima posizione selezionata per il Nastro.", + + "item.create.goggles.tooltip": "OCCHIALI DA INGEGNERE", + "item.create.goggles.tooltip.summary": "Un paio di occhiali per migliorare la tua visione con utili _informazioni_ _cinetiche_.", + "item.create.goggles.tooltip.condition1": "Quando indossati", + "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _Livello_ _di_ _Velocità_ di un componente cinetico posizionato, nonché all'_Impatto_ _dello_ _Stress_ e la capacità dei singoli componenti.", + "item.create.goggles.tooltip.condition2": "Quando si guarda il calibro", + "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _Velocità_ o lo _Stress_ della rete a cui è collegato il misuratore.", + + "item.create.wrench.tooltip": "CHIAVE INGLESE", + "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _Ruotare_, _Smontare_ e _Configurare_ i componenti.", + "item.create.wrench.tooltip.control1": "Clic-Destro su un blocco cinetico", + "item.create.wrench.tooltip.action1": "_Ruota_ _i_ _componenti_ verso o lontano dalla faccia con cui hai interagito.", + "item.create.wrench.tooltip.control2": "Clic-Destro da Accovacciato", + "item.create.wrench.tooltip.action2": "_Smonta_ _i_ _Componenti_ _Cinetici_ e li rimette nel _tuo_ _inventario_.", + + "block.create.creative_motor.tooltip": "MOTORE", + "block.create.creative_motor.tooltip.summary": "Una fonte configurabile di _Forza_ _di_ _Rotazione_.", + + "block.create.water_wheel.tooltip": "RUOTA D'ACQUA", + "block.create.water_wheel.tooltip.summary": "Fornisce un _Forza_ _di_ _Rotazione_ prelevata da correnti d'_Acqua_ _Adiacenti_.", + + "block.create.encased_fan.tooltip": "VENTILATORE INCASSATO", + "block.create.encased_fan.tooltip.summary": "Converte la _Forza_ _di_ _Rotazione_ in _Correnti_ _d'Aria_ e ritorno. Ha una varietà di usi.", + "block.create.encased_fan.tooltip.condition1": "Quando Alimentato da Redstone", + "block.create.encased_fan.tooltip.behaviour1": "Fornisce _forza_ _di_ _rotazione_ da qualsiasi _fonte_ _di_ _calore_ immediatamente al di sotto di sé. Il ventilatore deve essere rivolto verso il basso.", + "block.create.encased_fan.tooltip.condition2": "Quando in Ruotazione", + "block.create.encased_fan.tooltip.behaviour2": "_Spinge_ o _Tira_ Entità, a seconda della velocità di Rotazione in entrata.", + "block.create.encased_fan.tooltip.condition3": "Quando soffia attraverso blocchi speciali", + "block.create.encased_fan.tooltip.behaviour3": "_Liquidi_ e particelle di _Fuoco_ vengono emessi nel flusso d'aria. Questo può essere usato per _elaborare_ _oggetti_.", + + "block.create.nozzle.tooltip": "UGELLO", + "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _Ventilatore_ _Incassato_ per distribuire il suo effetto sulle Entità in _tutte_ _le_ _direzioni_.", + + "block.create.hand_crank.tooltip": "MANOVELLA", + "block.create.hand_crank.tooltip.summary": "Una semplice _fonte_ di _Forza_ _di_ _Rotazione_ che richiede l'interazione dei giocatori.", + "block.create.hand_crank.tooltip.condition1": "Quando usata", + "block.create.hand_crank.tooltip.behaviour1": "Fornisce una _Forza_ _di_ _Rotazione_ a un aggeggio attaccato. _Accovacciati_ _per_ _invertire_ la rotazione.", + + "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", + "block.create.cuckoo_clock.tooltip.summary": "Artigianato raffinato per _decorare_ uno spazio e _tener_ _traccia_ _del_ _tempo_.", + "block.create.cuckoo_clock.tooltip.condition1": "Quando Ruotato", + "block.create.cuckoo_clock.tooltip.behaviour1": "Mostra l'_ora_ _corrente_ e suona una melodia due volte al giorno. Si _attiva_ una volta a mezzogiorno e al crepuscolo, non appena i _giocatori_ _possono_ _dormire_.", + + "block.create.turntable.tooltip": "PIATTO", + "block.create.turntable.tooltip.summary": "Trasforma la _Forza_ _di_ _Rotazione_ in una Raffinata Cinetosi.", + + "block.create.millstone.tooltip": "MACINA", + "block.create.millstone.tooltip.summary": "Un componente cinetico adatto per la _rettifica_ dei _materiali_ inseriti. Può essere alimentato da una ruota dentata adiacente o collegandosi all'albero nella parte inferiore. I risultati devono essere estratti dal componente.", + "block.create.millstone.tooltip.condition1": "Quando Ruotato", + "block.create.millstone.tooltip.behaviour1": "Inizia ad applicare le _ricette_ di _fresatura_ a tutti gli elementi inseriti dal lato o dalla parte superiore del blocco.", + "block.create.millstone.tooltip.condition2": "Quando Toccato con Clic-Destro", + "block.create.millstone.tooltip.behaviour2": "Raccogli manualmente gli output.", + + "block.create.crushing_wheel.tooltip": "RUOTA DI FRANTUMAZIONE", + "block.create.crushing_wheel.tooltip.summary": "Grandi ruote girevoli che _rompono_ qualsiasi cosa.", + "block.create.crushing_wheel.tooltip.condition1": "Se collegata ad altre ruote di frantumazione", + "block.create.crushing_wheel.tooltip.behaviour1": "Forma una frantumatrice per la lavorazione di una varietà di cose. I denti delle ruote devono connettersi e muoversi con la _stessa_ _velocità_ in _direzioni_ _opposte_.", + + "block.create.mechanical_press.tooltip": "PRESSA MECCANICA", + "block.create.mechanical_press.tooltip.summary": "Un pistone potente per comprimere gli oggetti sottostanti. Richiede una _Forza_ _di_ _Rotazione_ costante.", + "block.create.mechanical_press.tooltip.condition1": "Quando alimentata da Redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Inizia_ a comprimere gli oggetti rilasciati al di sotto di esso.", + "block.create.mechanical_press.tooltip.condition2": "Quando sopra a un Nastro Meccanico", + "block.create.mechanical_press.tooltip.behaviour2": "Comprime _Automaticamente_ gli oggetti che passano sul Nastro.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "BACINELLA", + "block.create.basin.tooltip.summary": "Un pratico _contenitore_ _di_ _oggetti_ utilizzato nella lavorazione con il _Miscelatore_ _Meccanico_ e la _Pressa_ _Meccanica_. Supporta i _Comparatori_ _Redstone_.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "MISCELATORE MECCANICO", + "block.create.mechanical_mixer.tooltip.summary": "Una frusta cinetica per applicare qualsiasi ricetta di creazione informe agli oggetti sottostanti. Richiede una _Forza_ _di_ _Rotazione_ costante e una _Bacinella_ posizionata sotto (con uno spazio in mezzo).", + "block.create.mechanical_mixer.tooltip.condition1": "Quando sopra a una Bacinella", + "block.create.mechanical_mixer.tooltip.behaviour1": "Inizia a mescolare gli oggetti nella bacinella ogni volta che sono presenti tutti gli ingredienti necessari.", + "block.create.mechanical_mixer.tooltip.condition2": "Se utilizzato con la Chiave Inglese", + "block.create.mechanical_mixer.tooltip.behaviour2": "Configura la quantità minima di _ingredienti_ _totali_ per le ricette applicate. Utilizzare questa opzione per _escludere_ _ricette_ _indesiderate_ con ingredienti simili o meno.", + + "block.create.mechanical_crafter.tooltip": "COSTRUTTORE MECCANICO", + "block.create.mechanical_crafter.tooltip.summary": "Un assemblatore cinetico per _automatizzare_ qualsiasi ricetta di _creazione_ _modellata_. Posiziona i _multipli_ _in_ _una_ _griglia_ corrispondente alla tua ricetta, e _disponi_ _i_ _loro_ _nastri_ per creare un _flusso_ che esce dalla griglia su uno degli costruttori.", + "block.create.mechanical_crafter.tooltip.condition1": "Quando ruotato", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Inizia_ _il_ _processo_ _di_ _creazione_ non appena a tutti i costruttori della griglia è stato assegnato un oggetto.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "Quando Strappato sul Davanti", + "block.create.mechanical_crafter.tooltip.action1": "_Cicla_ _la_ _direzione_ verso cui un singolo costruttore _sposta_ _i_ _suoi_ _oggetti_. Per formare una griglia di lavoro, _disporre_ _i_ _nastri_ _in_ _un_ _flusso_ che sposta tutti gli oggetti verso il costruttore finale. Il costruttore finale deve puntare lontano dalla griglia.", + "block.create.mechanical_crafter.tooltip.control2": "Quando Strappato sul Dietro", + "block.create.mechanical_crafter.tooltip.action2": "_Collega_ l'_inventario_ _di_ _input_ _ dei costruttori adiacenti. Usa questo per _combinare_ _gli_ _slot_ nella griglia di creazione e _risparmiare_ _sul_ _lavoro_ _di_ _input_.", + + "block.create.furnace_engine.tooltip": "MOTORE FORNACE", + "block.create.furnace_engine.tooltip.summary": "Una potente fonte di _Potenza_ _Rotazionale_ che richiede un _forno_ _funzionante_ per funzionare.", + "block.create.furnace_engine.tooltip.condition1": "Se Collegato alla Fornace Accesa", + "block.create.furnace_engine.tooltip.behaviour1": "_Inizia_ _a_ _alimentare_ un _Volano_ posto di fronte (a 1m di distanza). Utilizza un Forno Fusorio per velocità più elevate.", + + "block.create.flywheel.tooltip": "VOLANO", + "block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1m_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.", + "block.create.flywheel.tooltip.condition1": "Se collegato a un Motore in Funzione", + "block.create.flywheel.tooltip.behaviour1": "Fornisce la _Forza_ _di_ _Rotazione_ a un aggeggio connesso in base alla forza e alla velocità del generatore.", + + "block.create.portable_storage_interface.tooltip": "INTERFACCIA DI ARCHIVIAZIONE PORTATILE", + "block.create.portable_storage_interface.tooltip.summary": "Un punto di interscambio portatile per _spostare_ _oggetti_ da e verso una _struttura_ mossa da un pistone, supporto, carrello da miniera o puleggia.", + "block.create.portable_storage_interface.tooltip.condition1": "In Movimento", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagisce con i _traspositori_ fissi in modo tale che i traspositori _rivolti_ _lontano_ dall'interfaccia _estraggano_ _gli_ _oggetti_, e i traspositori che puntano l'interfaccia _inseriranno_ _gli_ _oggetti_ dall'inventario allegato. Il congegno si arresterà brevemente quando gli oggetti vengono scambiati.", + + "block.create.rotation_speed_controller.tooltip": "REGOLATORE DI VELOCITÀ DI ROTAZIONE", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relè_ _configurabile_ in grado di accelerare o rallentare il componente selezionato a qualsiasi velocità desiderata.", + "block.create.rotation_speed_controller.tooltip.condition1": "Se collegato a una Ruota Dentata Grande", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Inoltra la forza di rotazione in entrata alla ruota, cercando di far _corrispondere_ la _velocità_ con cui è configurata come obbiettivo. La ruota dentata deve essere fissata sulla parte superiore del controllo.", + + "block.create.mechanical_piston.tooltip": "PISTOME MECCANICO", + "block.create.mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", + "block.create.mechanical_piston.tooltip.condition1": "Quando Ruotato", + "block.create.mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", + + "block.create.sticky_mechanical_piston.tooltip": "PISTOME MECCANICO APPICCICOSO", + "block.create.sticky_mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_ _Appiccicoso_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Ruotato", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", + + "block.create.piston_extension_pole.tooltip": "PALO PISTOME", + "block.create.piston_extension_pole.tooltip.summary": "Estende la gamma dei _Pistoni_ _Meccanici_.", + "block.create.piston_extension_pole.tooltip.condition1": "Se collegato al Pistone Meccanico", + "block.create.piston_extension_pole.tooltip.behaviour1": "Estende la gamma di un pistone di 1 blocco", + + "block.create.mechanical_bearing.tooltip": "SUPPORTO MECCANICO", + "block.create.mechanical_bearing.tooltip.summary": "Utilizzato per ruotare _strutture_ _grandi_ o sfruttare la _Forza_ _di_ _Rotazione_ dal vento.", + "block.create.mechanical_bearing.tooltip.condition1": "Quando Ruotato", + "block.create.mechanical_bearing.tooltip.behaviour1": "Inizia a ruotare i blocchi collegati. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", + "block.create.mechanical_bearing.tooltip.condition2": "Quando Alimentato da Redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Inizia a fornire _Forza_ _di_ _Rotazione_ generata dalla rotazione della struttura collegata. La struttura deve includere _Blocchi_ _di_ _Vela_ adatti (attualmente qualsiasi blocco di lana).", + + "block.create.clockwork_bearing.tooltip": "SUPPORTO DEL OROLOGIO", + "block.create.clockwork_bearing.tooltip.summary": "Una versione avanzata del _Supporto_ _Meccanico_ per ruotare fino a due _lancette_ in base al _tempo_ _di_ _gioco_ corrente.", + "block.create.clockwork_bearing.tooltip.condition1": "Quando Ruotato", + "block.create.clockwork_bearing.tooltip.behaviour1": "Inizia a ruotare la Struttura collegata verso l'_ora_ _corrente_. Se è presente una seconda struttura, fungerà da _lancetta_ _dei_ _minuti_.", + + "block.create.sequenced_gearshift.tooltip": "CAMBIO SEQUENZIALE", + "block.create.sequenced_gearshift.tooltip.summary": "Un _componente_ _di_ _utilità_ _programmabile_, che può cambiare il suo _throughput_ _rotazionale_ secondo un massimo di _5_ _istruzioni_ _consecutive_. Utilizzalo per alimentare i Supporti Meccanici, Pistoni o Pulegge con un maggiore controllo sui tempi e sulla velocità. Può diventare meno preciso a velocità più elevate.", + "block.create.sequenced_gearshift.tooltip.condition1": "Quando alimentato da Redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Inizia_ _l'esecuzione_ delle istruzioni programmate in base alla velocità in input.", + "block.create.sequenced_gearshift.tooltip.condition2": "Quando Toccato con Clic-Destro", + "block.create.sequenced_gearshift.tooltip.behaviour2": "Apre l'_Interfaccia_ _di_ _Configurazione_", + + "block.create.cart_assembler.tooltip": "ASSEMBLATORE CARRELLO DA MINIERA", + "block.create.cart_assembler.tooltip.summary": "Monta una Struttura connessa su un _Carrello_ _da_ _miniera_ di _passaggio_.", + "block.create.cart_assembler.tooltip.condition1": "Quando Alimentato da Redstone", + "block.create.cart_assembler.tooltip.behaviour1": "Smonta le strutture montate nei _carrelli_ _da_ _miniera_ di _passaggio_ e le rimette nel mondo.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "PULEGGIA DELLA CORDA", + "block.create.rope_pulley.tooltip.summary": "Sposta i blocchi e le strutture collegati in verticale. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", + "block.create.rope_pulley.tooltip.condition1": "Quando Ruotato", + "block.create.rope_pulley.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla Velocità di Rotazione in input.", + + "block.create.linear_chassis.tooltip": "TELAIO LINEARE", + "block.create.linear_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", + "block.create.linear_chassis.tooltip.condition1": "Quando Spostato", + "block.create.linear_chassis.tooltip.behaviour1": "_Sposta_ tutti i _Telai_ _attaccati_ con lo stesso orientamento e una colonna di Blocchi all'interno della sua gamma. I blocchi verranno tirati solo se la faccia del telaio è _Appiccicosa_ (Vedi con [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "Con Chiave Inglese", + "block.create.linear_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi CTRL per modificare anche la gamma di tutti i blocchi telaio collegati.", + "block.create.linear_chassis.tooltip.control1": "Quando si fa Clic-Destro con la Palla di slime", + "block.create.linear_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", + + "block.create.radial_chassis.tooltip": "TELAIO RADIALE", + "block.create.radial_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", + "block.create.radial_chassis.tooltip.condition1": "Quando Spostato", + "block.create.radial_chassis.tooltip.behaviour1": "_Sposta_ tutti i _Telai_ _collegati_ in una colonna, e un cilindro di blocchi attorno a se stesso. I blocchi attorno ad esso vengono spostati solo quando si trovano nella gamma e sono attaccati a un lato appiccicoso (Vedi con [Ctrl]).", + "block.create.radial_chassis.tooltip.condition2": "Con Chiave Inglese", + "block.create.radial_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi CTRL per modificare anche la gamma di tutti i blocchi telaio collegati.", + "block.create.radial_chassis.tooltip.control1": "Quando si fa Clic-Destro con la Palla di slime", + "block.create.radial_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", + + "block.create.mechanical_drill.tooltip": "TRAPANO MECCANICO", + "block.create.mechanical_drill.tooltip.summary": "Un dispositivo meccanico adatto per _rompere_ i _blocchi_. È mobile con _Pistoni_ o _Supporti_ _meccanici_.", + "block.create.mechanical_drill.tooltip.condition1": "Quando Ruotato", + "block.create.mechanical_drill.tooltip.behaviour1": "Funziona come un Rompi blocchi _stazionario_. Fa anche _male_ _alle_ _entità_ nella sua area effettiva", + "block.create.mechanical_drill.tooltip.condition2": "In Movimento", + "block.create.mechanical_drill.tooltip.behaviour2": "Rompe i blocchi con cui il trapano si scontra.", + + "block.create.mechanical_harvester.tooltip": "MIETITRICE MECCANICA", + "block.create.mechanical_harvester.tooltip.summary": "Una mietitrice meccanica adatta per l'automazione delle colture di medie dimensioni. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.mechanical_harvester.tooltip.condition1": "In Movimento", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Raccoglie_ tutte le _colture_ _mature_ con cui la lama si scontra e ripristina il loro stato iniziale di crescita.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "SEGA MECCANICA", + "block.create.mechanical_saw.tooltip.summary": "Adatto per _tagliare_ _alberi_ in modo efficace e per _tagliare_ _blocchi_ nelle loro controparti carpentate. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.mechanical_saw.tooltip.condition1": "Di fronte", + "block.create.mechanical_saw.tooltip.behaviour1": "Applica le _Ricette_ di _Segatura_ e _Lavorazione_ _della_ _Pietra_ agli oggetti rilasciati o inseriti al suo interno. Quando sono possibili gli output, le scorre ciclicamente a meno che non sia assegnato un _filtro_.", + "block.create.mechanical_saw.tooltip.condition2": "Di fronte in orizzontale", + "block.create.mechanical_saw.tooltip.behaviour2": "_Rompe_ i _tronchi_ di fronte a se. Se il troco supportava un albero da solo, l'albero crollerebbe lontano dalla sega.", + "block.create.mechanical_saw.tooltip.condition3": "In Movimento", + "block.create.mechanical_saw.tooltip.behaviour3": "_Taglia_ tutti gli _alberi_ con cui la sega si scontra.", + + "block.create.stockpile_switch.tooltip": "INTERRUTTORE ACCUMULATORE", + "block.create.stockpile_switch.tooltip.summary": "Attiva / disattiva un segnale Redstone in base allo _Spazio_ _di_ _Stoccaggio_ nel Contenitore collegato.", + "block.create.stockpile_switch.tooltip.condition1": "Quando inferiore al limite inferiore", + "block.create.stockpile_switch.tooltip.behaviour1": "Smette di fornire il _Segnale_ _Redstone_", + "block.create.stockpile_switch.tooltip.condition2": "Quando supera il Limite Superiore.", + "block.create.stockpile_switch.tooltip.behaviour2": "Inizia a fornire un _Segnale_ _Redstone_ fino al raggiungimento del limite inferiore.", + "block.create.stockpile_switch.tooltip.control1": "Quando Toccato con Clic-Destro", + "block.create.stockpile_switch.tooltip.action1": "Apre l'_Interfaccia_ _di_ _Configurazione_.", + + "block.create.redstone_link.tooltip": "COLLEGAMENTO REDSTONE", + "block.create.redstone_link.tooltip.summary": "Endpoint per connessioni _Wireless_ _di_ _Redstone_. Le _Frequenze_ possono essere assegnate utilizzando qualsiasi oggetto. La gamma del segnale è limitata, sebbene ragionevolmente lontana.", + "block.create.redstone_link.tooltip.condition1": "Quando Alimentato", + "block.create.redstone_link.tooltip.behaviour1": "La ricezione di collegamenti della stessa _Frequenza_ produrrà un segnale Redstone.", + "block.create.redstone_link.tooltip.control1": "Quando Clic-Destro su un oggetto", + "block.create.redstone_link.tooltip.action1": "Imposta la _Frequenza_ su quell'oggetto. È possibile utilizzare un totale di _due_ _oggetti_ _differenti_ in combinazione per definire una frequenza.", + "block.create.redstone_link.tooltip.control2": "Clic-Destro da Accovacciato", + "block.create.redstone_link.tooltip.action2": "Alterna tra la modalità _Ricevitore_ e _Trasmettitore_.", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "CONTATTO REDSTONE", + "block.create.redstone_contact.tooltip.summary": "Emette solo un segnale di pietrarossa in coppia. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.redstone_contact.tooltip.condition1": "Di fronte ad altri Contatti", + "block.create.redstone_contact.tooltip.behaviour1": "Fornisce un _Segnale_ _Redstone_.", + "block.create.redstone_contact.tooltip.condition2": "In Movimento", + "block.create.redstone_contact.tooltip.behaviour2": "Attiva tutti i contatti fissi che passa.", + + "block.create.adjustable_crate.tooltip": "BAULE REGOLABILE", + "block.create.adjustable_crate.tooltip.summary": "Questo _Contenitore_ _di_ _Stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _Pile_ di qualsiasi oggetto. Supporta _Comparatori_ _Redstone_.", + "block.create.adjustable_crate.tooltip.control1": "Quando Cliccato con Clic-Destro", + "block.create.adjustable_crate.tooltip.action1": "Apre l'_Interfaccia_.", + + "block.create.creative_crate.tooltip": "CREATORE CANNONESCHEMATICO", + "block.create.creative_crate.tooltip.summary": "Fornisce una scorta infinita di blocchi ai _Cannoneschematici_ adiacenti.", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "ESTRATTORE", + "block.create.extractor.tooltip.summary": "_Prende_ _Oggetti_ da un _Inventario _ allegato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.extractor.tooltip.condition1": "Quando alimentato da Redstone", + "block.create.extractor.tooltip.behaviour1": "_Ferma_ l'Estrattore.", + "block.create.extractor.tooltip.condition2": "Attiva Tiraggio del Nastro", + "block.create.extractor.tooltip.behaviour2": "Gli estrattori possono estrarre oggetti _da_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando l'estrattore è bloccato, il _nastro_ _si_ _arresterà_.", + "block.create.extractor.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", + "block.create.extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + + "block.create.transposer.tooltip": "TRASPOSITORE", + "block.create.transposer.tooltip.summary": "_Prende_ _oggetti_ da un _inventario_ allegato e li inserisce immediatamente nell'_inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.transposer.tooltip.condition1": "Quando Alimentato da Redstone", + "block.create.transposer.tooltip.behaviour1": "_Ferma_ il Traspositore.", + "block.create.transposer.tooltip.condition2": "Attiva Tiraggio del Nastro", + "block.create.transposer.tooltip.behaviour2": "I Traspositori possono estrarre oggetti _dai_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando viene eseguito il backup del traspositore, il _nastro_ _si_ _arresterà_.", + "block.create.transposer.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", + "block.create.transposer.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + + "block.create.deployer.tooltip": "INSTALLATORE", + "block.create.deployer.tooltip.summary": "_Punzoni_, _Usi_ e _Attivazioni_. Questa macchina proverà a _imitare_ un _giocatore_ il più possibile. Può _Prendere_ e _depositare_ _oggetti_ nell'_Inventario_ adiacente. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.deployer.tooltip.condition1": "Quando Ruotato", + "block.create.deployer.tooltip.behaviour1": "Allunga il braccio e si _attiva_ nello spazio di un blocco _2m_ _davanti_ a sé.", + "block.create.deployer.tooltip.condition2": "Clic-Destro con la Chiave Inglese", + "block.create.deployer.tooltip.behaviour2": "Attiva / disattiva la modalità di perforazione. In _modalità_ _pugno_, l'Installatore tenterà di usare il suo oggetto per _rompere_ _blocchi_ o _ferire_ _entità_.", + + "block.create.linked_extractor.tooltip": "ESTRATTORE CONNESSO", + "block.create.linked_extractor.tooltip.summary": "_Prende_ _gli_ _oggetti_ da un _Inventario_ attaccato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", + "block.create.linked_extractor.tooltip.condition1": "Quando il Collegamento Redstone è attivo", + "block.create.linked_extractor.tooltip.behaviour1": "_Ferma_ l'Estrattore.", + "block.create.linked_extractor.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", + "block.create.linked_extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.linked_extractor.tooltip.control2": "Clic-Destro sullo Spazio di Frequenza", + "block.create.linked_extractor.tooltip.action2": "Assegna l'_oggetto_ attualmente _trattenuto_ come parte della Frequenza ascoltata. Ogni volta che viene alimentato un _Collegamento_ _Redstone_ della stessa frequenza di trasmissione, questo estrattore si mette in pausa.", + + "block.create.linked_transposer.tooltip": "TRASPOSITORE CONNESSO", + "block.create.linked_transposer.tooltip.summary": "_Prende_ _oggetti_ da un _Inventario_ allegato e li inserisce immediatamente nell'_Inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", + "block.create.linked_transposer.tooltip.condition1": "Quando il Collegamento Redstone è Attivo", + "block.create.linked_transposer.tooltip.behaviour1": "_Ferma_ il Traspositore.", + "block.create.linked_transposer.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", + "block.create.linked_transposer.tooltip.action1": "Assegna la _pila_ attualmente _tenuta_ come _Filtro_. Il Traspositore estrae solo gli oggetti che corrispondono al tipo di oggetto e al conteggio della pila di filtri.", + "block.create.linked_transposer.tooltip.control2": "Clic-Destro sullo Spazio di Frequenza", + "block.create.linked_transposer.tooltip.action2": "Assegna l'_oggetto_ attualmente _tenuto_ come parte della Frequenza ascoltata. Ogni volta che viene alimentato un _Collegamento_ _Redstone_ della stessa frequenza di trasmissione, questo Traspositore si ferma.", + + "block.create.funnel.tooltip": "IMBUTO", + "block.create.funnel.tooltip.summary": "_Raccoglie_ _gli_ _oggetti_ _in_ _arrivo_ e li inserisce nell'_inventario_ allegato, se possibile. Può raccogliere oggetti nel _mondo_ e oggetti su un _nastro_.", + "block.create.funnel.tooltip.condition1": "Tirare il Nastro passivamente", + "block.create.funnel.tooltip.behaviour1": "Gli imbuti possono estrarre gli oggetti _dai_ _nastri_ quando vengono posizionati sopra di essi, lateralmente o alla fine. Quando viene eseguito il backup di un imbuto laterale, gli oggetti sul _nastro_ _non_ _si_ _arrestano_.", + + "block.create.belt_tunnel.tooltip": "TUNNEL TRASPORTATORE", + "block.create.belt_tunnel.tooltip.summary": "Un'opzione estetica per far passare i tuoi _Nastri_ _Meccanici_ attraverso i muri. I Nastri devono essere rinforzati con l'_Involucro_ _di_ _Ottone_. I tunnel possono _sincronizzarsi_ con _i_ _loro_ _vicini_, lasciando passare gli oggetti solo se tutti i tunnel del gruppo hanno uno in attesa. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "Clic-Destro con la Chiave Inglese sul Davanti", + "block.create.belt_tunnel.tooltip.action1": "Attiva / Disattiva il _comportamento_ _sincronizzato_. I tunnel sincronizzati contengono oggetti fino a quando anche i loro vicini non ne hanno uno.", + "block.create.belt_tunnel.tooltip.control2": "Clic-Destro con la Chiave Inglese sul Lato", + "block.create.belt_tunnel.tooltip.action2": "_Regola_ _le_ _finestre_ se il tunnel ha una finestra su quella faccia.", + + "block.create.brass_casing.tooltip": "INVOLUCRO DI OTTONE", + "block.create.brass_casing.tooltip.summary": "Involucro delle macchine robusto con una varietà di usi. Di sicuro per la decorazione.", + "block.create.brass_casing.tooltip.condition1": "Se utilizzato su un Nastro Meccanico", + "block.create.brass_casing.tooltip.behaviour1": "_Rinforza_ _i_ _nastri_ con una base in ottone. I nastri rinforzati possono supportare i _Tunnel_ _Trasportatori_, _Estrattori_, _Imbuti_ e _Traspositori_ interagendo con i nastri dai lati e sotto.", + + "block.create.belt_observer.tooltip": "OSSERVATORE A CINGHIA", + "block.create.belt_observer.tooltip.summary": "Rileva oggetti ed entità che passano su un _Nastro_ _Meccanico_ di fronte. Usa una _Chiave_ _Inglese_ per scorrere il suo comportamento. I non oggetti verranno sempre gestiti in modalità rilevamento indipendentemente dall'impostazione.", + "block.create.belt_observer.tooltip.condition1": "Modalità di Rilevamento", + "block.create.belt_observer.tooltip.behaviour1": "Fornisce un segnale redstone _mentre_ un _oggetto_ _corrispondente_ si _trova_ nel segmento del nastro osservato.", + "block.create.belt_observer.tooltip.condition2": "Modalità a Impulsi", + "block.create.belt_observer.tooltip.behaviour2": "Emette un _impulso_ quando un _oggetto_ _corrispondente_ _passa_ al centro del segmento del nastro osservato.", + "block.create.belt_observer.tooltip.condition3": "Modalità di Espulsione", + "block.create.belt_observer.tooltip.behaviour3": "_Espelle_ _gli_ _oggetti_ _corrispondenti_ dal lato. Se il nastro bersaglio o lo spazio è _occupato_, l'oggetto verrà _tenuto_ _in_ _posizione_.", + "block.create.belt_observer.tooltip.condition4": "Modalità Divisa", + "block.create.belt_observer.tooltip.behaviour4": "_Divide_ una _pila_ _di_ _oggetti_ _corrispondenti_ ed _espelle_ _metà_ di essa dal lato.", + + "block.create.pulse_repeater.tooltip": "RIPETITORE DI IMPULSI", + "block.create.pulse_repeater.tooltip.summary": "Un semplice circuito per tagliare i segnali redstone di passaggio ad una lunghezza di _1_ _tick_.", + + "block.create.adjustable_repeater.tooltip": "RIPETITORE REGOLABILE", + "block.create.adjustable_repeater.tooltip.summary": "Un _Ripetitore_ _Redstone_ avanzato con un _Ritardo_ _configurabile_ fino a 30 minuti.", + + "block.create.adjustable_pulse_repeater.tooltip": "RIPETITORE DI IMPULSI REGOLABILE", + "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _Ripetitore_ _di_ _Impulsi_ con un _Ritardo_ _configurabile_ fino a 30 minuti.", + + "block.create.analog_lever.tooltip": "LEVA ANALOGICA", + "block.create.analog_lever.tooltip.summary": "Una leva con un _controllo_ _più_ _preciso_ sulla _potenza_ _del_ _segnale_ emesso.", + + "block.create.powered_toggle_latch.tooltip": "LEVA ALIMENTATA ALTERATA", + "block.create.powered_toggle_latch.tooltip.summary": "Una leva che può essere attivata/disattivata da un _Impulso_ _Redstone_.", + + "block.create.powered_latch.tooltip": "LEVA ALIMENTATA", + "block.create.powered_latch.tooltip.summary": "Una leva che può essere controllata dai _Segnali_ _Redstone. Un segnale sul _retro_ _la_ _abilita_, un _segnale_ _laterale_ _la_ _resetterà_ .", + + "block.create.speedometer.tooltip": "TACHIMETRO", + "block.create.speedometer.tooltip.summary": "Misura e visualizza la _velocità_ _di_ _rotazione_ dei componenti cinetici collegati. Supporta _Comparatori_ _Redstone_.", + "block.create.speedometer.tooltip.condition1": "Quando Ruotato", + "block.create.speedometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di velocità. Il _Verde_ indica una rotazione Lenta, _Blu_ Moderata e _Viola_ Veloce. Alcuni componenti meccanici richiedono un livello di velocità sufficiente per funzionare correttamente.", + + "block.create.stressometer.tooltip": "STRESSOMETRO", + "block.create.stressometer.tooltip.summary": "Misura e visualizza lo _stress_ _complessivo_ della rete cinetica collegata. Supporta _Comparatori_ _Redstone_.", + "block.create.stressometer.tooltip.condition1": "Quando Ruotato", + "block.create.stressometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di stress. Le _reti_ _troppo_ _stressate_ cesseranno di muoversi. Lo stress può essere alleviato aggiungendo più _fonti_ _di_ _rotazione_ alla rete.", + + "tool.create.sand_paper.tooltip": "CARTA VETRATA", + "tool.create.sand_paper.tooltip.summary": "Una carta ruvida che può essere utilizzata per _levigare_ _materiali_ o affilare i tuoi _strumenti_.", + "tool.create.sand_paper.tooltip.condition1": "Quando Usata", + "tool.create.sand_paper.tooltip.behaviour1": "Applica la lucidatura agli oggetti _tenuti_ _in_ _mano_ o distesi a _terra_ quando _li_ _guardi_", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "RADIANCE RAFFINATA", + "item.create.refined_radiance.tooltip.summary": "Un Materiale Cromatico forgiato dalla _luce_ _assorbita_.", + + "item.create.shadow_steel.tooltip": "ACCIAIO OSCURO", + "item.create.shadow_steel.tooltip.summary": "Un Materiale Cromatico forgiato _nel_ _vuoto_.", + + "item.create.crafter_slot_cover.tooltip": "RIVESTIMENTO SLOT CREAZIONE", + "item.create.crafter_slot_cover.tooltip.summary": "Utilizzato per coprire uno slot vuoto in un _Costruttore_ _Meccanico_ in una ricetta. I Costruttori non devono necessariamente formare una griglia quadrata completa. Questo è utile quando ci sono ricette in cui gli _ingredienti_ _sono_ _in_ _diagonale_ tra loro.", + + "create.tooltip.wip": "WIP", + "create.tooltip.workInProgress": "Work in progress!", + "create.tooltip.randomWipDescription0": "Si prega di tenere questo oggetto lontano dai bambini.", + "create.tooltip.randomWipDescription1": "Un cucciolo di panda muore ogni volta che usi questo oggetto. Ogni. Volta.", + "create.tooltip.randomWipDescription2": "Da utilizzare a proprio rischio.", + "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* perfavore dispartene.", + "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Credimi, è inutile.", + "create.tooltip.randomWipDescription6": "Utilizzando questo articolo, acconsenti al nostro disclaimer e accetti i suoi termini.", + "create.tooltip.randomWipDescription7": "Questo forse non fa per te. Che ne dici di quello?", + "create.tooltip.randomWipDescription8": "Usalo e rimpiangi immediatamente la tua decisione.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json new file mode 100644 index 000000000..15ae97444 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 347" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "調整可能なクレート", + "block.create.adjustable_pulley": "アナログベルトプーリー", + "block.create.adjustable_pulse_repeater": "調整可能なパルスリピーター", + "block.create.adjustable_repeater": "調整可能なリピーター", + "block.create.analog_lever": "アナログレバー", + "block.create.andesite_bricks": "安山岩レンガ", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "安山岩ケーシング", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "鉢", + "block.create.belt": "メカニカルベルト", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "ベルトオブザーバー", + "block.create.belt_tunnel": "コンベアトンネル", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "真鍮ブロック", + "block.create.brass_casing": "真鍮ケーシング", + "block.create.cart_assembler": "カートアセンブラ", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "時計仕掛けのベアリング", + "block.create.clutch": "クラッチ", + "block.create.cogwheel": "歯車", + "block.create.copper_block": "銅ブロック", + "block.create.copper_casing": "銅ケーシング", + "block.create.copper_ore": "銅鉱石", + "block.create.copper_shingles": "銅のこけら板", + "block.create.creative_crate": "概略図砲クリエティフィアー", + "block.create.creative_motor": "モーター", + "block.create.crushing_wheel": "破砕ホイール", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "鳩時計", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "ダークスコリア", + "block.create.dark_scoria_bricks": "ダークスコリアレンガ", + "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガのハーフブロック", + "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガの階段", + "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガの塀", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "デプロイヤー", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "閃緑岩レンガ", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "苦灰石", + "block.create.dolomite_bricks": "苦灰石レンガ", + "block.create.dolomite_bricks_slab": "苦灰石レンガのハーフブロック", + "block.create.dolomite_bricks_stairs": "苦灰石レンガの階段", + "block.create.dolomite_bricks_wall": "苦灰石レンガの塀", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "苦灰石の柱", + "block.create.encased_belt": "ケース入りベルト", + "block.create.encased_fan": "ケース入りファン", + "block.create.encased_shaft": "ケース入りシャフト", + "block.create.extractor": "エクストラクター", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "勢車", + "block.create.framed_glass": "大きなガラス窓", + "block.create.framed_glass_pane": "大きなガラス窓板", + "block.create.funnel": "漏斗", + "block.create.furnace_engine": "かまどエンジン", + "block.create.gabbro": "斑れい岩", + "block.create.gabbro_bricks": "斑れい岩レンガ", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "斑れい岩レンガの階段", + "block.create.gabbro_bricks_wall": "斑れい岩レンガの塀", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "ギアボックス", + "block.create.gearshift": "ギアシフト", + "block.create.granite_bricks": "花崗岩レンガ", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "ハンドクランク", + "block.create.horizontal_framed_glass": "横型ガラス窓", + "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "大きな歯車", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "石灰砕砂", + "block.create.limestone": "石灰岩", + "block.create.limestone_bricks": "石灰岩レンガ", + "block.create.limestone_bricks_slab": "石灰岩レンガのハーフブロック", + "block.create.limestone_bricks_stairs": "石灰岩レンガの階段", + "block.create.limestone_bricks_wall": "石灰岩レンガの塀", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "石灰岩の柱", + "block.create.linear_chassis": "リニアシャーシ", + "block.create.linked_extractor": "リンクされたエクストラクター", + "block.create.linked_transposer": "リンクされたトランスポーザー", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "メカニカルベアリング", + "block.create.mechanical_crafter": "メカニカルクラフター", + "block.create.mechanical_drill": "メカニカルドリル", + "block.create.mechanical_harvester": "メカニカルハーベスター", + "block.create.mechanical_mixer": "メカニカルミキサー", + "block.create.mechanical_piston": "メカニカルピストン", + "block.create.mechanical_piston_head": "メカニカルピストンヘッド", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "メカニカルプレス", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "メカニカル鋸", + "block.create.millstone": "石臼", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "自然スコリア", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "ノズル", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "ピストン延長ポール", + "block.create.polished_dark_scoria": "磨かれたダークスコリア", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "磨かれた苦灰石", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "磨かれた斑れい岩", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "磨かれた石灰岩", + "block.create.polished_limestone_slab": "磨かれた石灰岩のハーフブロック", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "磨かれたスコリア", + "block.create.polished_scoria_slab": "磨かれたスコリアのハーフブロック", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "磨かれた風化石灰岩", + "block.create.polished_weathered_limestone_slab": "磨かれた風化石灰岩のハーフブロック", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "ポータブルストレージインターフェイス", + "block.create.powered_latch": "パワードラッチ", + "block.create.powered_toggle_latch": "パワードトグルラッチ", + "block.create.pulley_magnet": "プーリーマグネット", + "block.create.pulse_repeater": "パルスリピーター", + "block.create.radial_chassis": "ラジアルシャーシ", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "レッドストーンコンタクト", + "block.create.redstone_link": "レッドストーンリンク", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "ロープ", + "block.create.rope_pulley": "ローププーリー", + "block.create.rotation_speed_controller": "回転速度制御器", + "block.create.schematic_table": "概略図テーブル", + "block.create.schematicannon": "概略図砲", + "block.create.scoria": "スコリア", + "block.create.scoria_bricks": "スコリアレンガ", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "スコリアの柱", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "シーケンスギアシフト", + "block.create.shaft": "軸", + "block.create.speedometer": "スピードメーター", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "粘着メカニカルピストン", + "block.create.stockpile_switch": "在庫スイッチ", + "block.create.stressometer": "ストレスメーター", + "block.create.tiled_glass": "タイルガラス", + "block.create.tiled_glass_pane": "タイルガラス板", + "block.create.transposer": "トランスポーザー", + "block.create.turntable": "ターンテーブル", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "垂直ガラス窓", + "block.create.vertical_framed_glass_pane": "垂直ガラス窓板", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "水車", + "block.create.weathered_limestone": "風化した石灰岩", + "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", + "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", + "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", + "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの塀", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", + "block.create.zinc_block": "亜鉛ブロック", + "block.create.zinc_ore": "亜鉛鉱石", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "安山岩合金", + "item.create.attribute_filter": "属性フィルター", + "item.create.belt_connector": "メカニカルベルト", + "item.create.brass_hand": "手", + "item.create.brass_ingot": "真鍮インゴット", + "item.create.brass_nugget": "真鍮ナゲット", + "item.create.brass_sheet": "真鍮シート", + "item.create.chromatic_compound": "色彩の化合物", + "item.create.copper_ingot": "銅インゴット", + "item.create.copper_nugget": "銅塊", + "item.create.copper_sheet": "銅板", + "item.create.crafter_slot_cover": "クラフタースロットカバー", + "item.create.crushed_brass": "砕いた真鍮", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "デフォレスター", + "item.create.dough": "生地", + "item.create.electron_tube": "電子管", + "item.create.empty_schematic": "空の概略図", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "フィルター", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "エンジニアのゴーグル", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "携帯型ブロックザッパー", + "item.create.handheld_worldshaper": "携帯型ワールドシェイパー", + "item.create.integrated_circuit": "集積回路", + "item.create.iron_sheet": "鉄板", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "磨かれたローズクォーツ", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "プロペラ", + "item.create.red_sand_paper": "赤い紙やすり", + "item.create.refined_radiance": "洗練された輝き", + "item.create.rose_quartz": "ローズクォーツ", + "item.create.sand_paper": "紙やすり", + "item.create.schematic": "概略図", + "item.create.schematic_and_quill": "概略図と羽根ペン", + "item.create.shadow_steel": "シャドウスチール", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "木の肥料", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "対称の杖", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "泡立て器", + "item.create.wrench": "レンチ", + "item.create.zinc_ingot": "亜鉛棒", + "item.create.zinc_nugget": "亜鉛塊", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s は破砕ホイールによって処理されました", + "death.attack.create.fan_fire": "%1$s は熱風で焼死した", + "death.attack.create.fan_lava": "%1$s は溶岩ファンによって焼死した", + "death.attack.create.mechanical_drill": "%1$s はメカニカルドリルに突き刺さった", + "death.attack.create.mechanical_saw": "%1$s はメカニカル鋸で半分にカットされた", + "death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された", + + "create.block.deployer.damage_source_name": "悪いデプロイヤー", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "粉砕", + "create.recipe.milling": "製粉", + "create.recipe.splashing": "一括洗浄", + "create.recipe.splashing.fan": "流れる水の後ろにファンを置く", + "create.recipe.smoking_via_fan": "一括燻製", + "create.recipe.smoking_via_fan.fan": "炎の後ろにファンを置く", + "create.recipe.blasting_via_fan": "一括製錬", + "create.recipe.blasting_via_fan.fan": "溶岩の後ろにファンを置く", + "create.recipe.pressing": "押しつぶし", + "create.recipe.mixing": "混合", + "create.recipe.packing": "圧縮", + "create.recipe.mechanical_sawing": "製材", + "create.recipe.mechanical_crafting": "メカニカルクラフト", + "create.recipe.block_cutting": "ブロックカット", + "create.recipe.blockzapper_upgrade": "携帯型ブロックザッパー", + "create.recipe.sandpaper_polishing": "紙やすりでの研磨", + "create.recipe.mystery_conversion": "色彩変態", + "create.recipe.processing.catalyst": "触媒", + "create.recipe.processing.chance": "%1$s%%チャンス", + "create.recipe.processing.chanceToReturn": "%1$s%%チャンスで戻る", + + "create.generic.range": "範囲", + "create.generic.radius": "半径", + "create.generic.width": "幅", + "create.generic.height": "高さ", + "create.generic.length": "長さ", + "create.generic.speed": "速度", + "create.generic.delay": "遅延", + "create.generic.unit.ticks": "ティック", + "create.generic.unit.seconds": "秒", + "create.generic.unit.minutes": "分", + "create.generic.unit.rpm": "RPM", + "create.generic.unit.stress": "su", + "create.generic.unit.degrees": "°", + + "create.action.scroll": "スクロール", + "create.action.confirm": "確認", + "create.action.abort": "中止", + "create.action.saveToFile": "保存", + "create.action.discard": "捨てる", + + "create.keyinfo.toolmenu": "フォーカスツールメニュー", + "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", + "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", + + "create.gui.scrollInput.defaultTitle": "オプションを選択:", + "create.gui.scrollInput.scrollToModify": "スクロールして変更", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして金額を調整", + "create.gui.scrollInput.scrollToSelect": "スクロールして選択", + "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", + "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカス", + "create.gui.toolmenu.cycle": "[SCROLL] でサイクル", + "create.gui.symmetryWand.mirrorType": "ミラー", + "create.gui.symmetryWand.orientation": "オリエンテーション", + + "create.symmetry.mirror.plane": "線対称", + "create.symmetry.mirror.doublePlane": "長方形", + "create.symmetry.mirror.triplePlane": "八角形", + + "create.orientation.orthogonal": "直交", + "create.orientation.diagonal": "対角線", + "create.orientation.horizontal": "横型", + "create.orientation.alongZ": "Zに沿る", + "create.orientation.alongX": "Xに沿る", + + "create.gui.blockzapper.title": "携帯型ブロックザッパー", + "create.gui.blockzapper.replaceMode": "置換モード", + "create.gui.blockzapper.searchDiagonal": "対角線にフォロー", + "create.gui.blockzapper.searchFuzzy": "マテリアルの境界を無視", + "create.gui.blockzapper.range": "範囲", + "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードが必要", + "create.gui.blockzapper.patternSection": "模様", + "create.gui.blockzapper.pattern.solid": "敷き詰め", + "create.gui.blockzapper.pattern.checkered": "チェッカーボード", + "create.gui.blockzapper.pattern.inversecheckered": "逆チェッカーボード", + "create.gui.blockzapper.pattern.chance25": "25% ロール", + "create.gui.blockzapper.pattern.chance50": "50% ロール", + "create.gui.blockzapper.pattern.chance75": "75% ロール", + "create.gui.terrainzapper.title": "携帯型ワールドシェイパー", + "create.gui.terrainzapper.placement": "配置", + "create.gui.terrainzapper.placement.merged": "合併", + "create.gui.terrainzapper.placement.attached": "添える", + "create.gui.terrainzapper.placement.inserted": "挿入", + "create.gui.terrainzapper.brush": "磨き", + "create.gui.terrainzapper.brush.cuboid": "立方体", + "create.gui.terrainzapper.brush.sphere": "球体", + "create.gui.terrainzapper.brush.cylinder": "円筒", + "create.gui.terrainzapper.tool": "ツール", + "create.gui.terrainzapper.tool.fill": "埋立", + "create.gui.terrainzapper.tool.place": "設置", + "create.gui.terrainzapper.tool.replace": "置換", + "create.gui.terrainzapper.tool.clear": "削除", + "create.gui.terrainzapper.tool.overlay": "重ねる", + "create.gui.terrainzapper.tool.flatten": "平坦化", + + "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", + + "create.blockzapper.usingBlock": "使用中: %1$s", + "create.blockzapper.componentUpgrades": "コンポーネントアップグレード:", + "create.blockzapper.component.body": "ボディー", + "create.blockzapper.component.amplifier": "増幅", + "create.blockzapper.component.accelerator": "加速", + "create.blockzapper.component.retriever": "レトリーバー", + "create.blockzapper.component.scope": "範囲", + "create.blockzapper.componentTier.none": "無し", + "create.blockzapper.componentTier.brass": "真鍮", + "create.blockzapper.componentTier.chromatic": "色彩", + "create.blockzapper.leftClickToSet": "ブロックをシフト-左クリックでマテリアルを選択", + "create.blockzapper.empty": "ブロック不足!", + + "create.contraptions.movement_mode": "移動モード", + "create.contraptions.movement_mode.move_place": "停止時に常に配置", + "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", + "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", + "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", + "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", + "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "フィルタ", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + + "create.gui.goggles.generator_stats": "ジェネレータの統計:", + "create.gui.goggles.kinetic_stats": "動力の統計:", + "create.gui.goggles.at_current_speed": "現在の速度", + "create.gui.goggles.base_value": "基本値", + "create.gui.gauge.info_header": "計器の情報:", + "create.gui.speedometer.title": "回転速度", + "create.gui.stressometer.title": "ネットワークの応力", + "create.gui.stressometer.capacity": "残りの容量", + "create.gui.stressometer.overstressed": "超過応力", + "create.gui.stressometer.no_rotation": "回転なし", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", + "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらにソースを追加するか、コンポーネントに_負荷をかけ_応力の影響を大きくします。", + "create.gui.adjustable_crate.title": "調整可能なクレート", + "create.gui.adjustable_crate.storageSpace": "収納スペース", + "create.gui.stockpile_switch.title": "在庫スイッチ", + "create.gui.stockpile_switch.lowerLimit": "下限しきい値", + "create.gui.stockpile_switch.upperLimit": "上限しきい値", + "create.gui.stockpile_switch.startAt": "開始信号", + "create.gui.stockpile_switch.startAbove": "以上の開始信号", + "create.gui.stockpile_switch.stopAt": "停止信号", + "create.gui.stockpile_switch.stopBelow": "以下の停止信号", + "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", + "create.gui.sequenced_gearshift.instruction": "命令", + "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", + "create.gui.sequenced_gearshift.instruction.wait": "待機", + "create.gui.sequenced_gearshift.instruction.wait.duration": "期間", + "create.gui.sequenced_gearshift.instruction.end": "終了", + "create.gui.sequenced_gearshift.speed": "速度, 方向", + "create.gui.sequenced_gearshift.speed.forward": "入力速度, フォワード", + "create.gui.sequenced_gearshift.speed.forward_fast": "倍速, フォワード", + "create.gui.sequenced_gearshift.speed.back": "入力速度, 反転", + "create.gui.sequenced_gearshift.speed.back_fast": "倍速, 反転", + + "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "最初の位置セット。", + "create.schematicAndQuill.secondPos": "2番目の位置セット。", + "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", + "create.schematicAndQuill.abort": "選択を削除しました。", + "create.schematicAndQuill.prompt": "概略図の名前を入力してください:", + "create.schematicAndQuill.fallbackName": "My Schematic", + "create.schematicAndQuill.saved": "%1$s として保存しました", + + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使用してください", + "create.schematic.position": "位置", + "create.schematic.rotation": "回転", + "create.schematic.rotation.none": "無し", + "create.schematic.rotation.cw90": "時計回りに90", + "create.schematic.rotation.cw180": "時計回りに180", + "create.schematic.rotation.cw270": "時計回りに270", + "create.schematic.mirror": "ミラー", + "create.schematic.mirror.none": "無し", + "create.schematic.mirror.frontBack": "正面-背面", + "create.schematic.mirror.leftRight": "左-右", + "create.schematic.tool.deploy": "配置する", + "create.schematic.tool.move": "XZを移動", + "create.schematic.tool.movey": "Yを移動", + "create.schematic.tool.rotate": "回転", + "create.schematic.tool.print": "印刷", + "create.schematic.tool.flip": "フリップ", + "create.schematic.tool.deploy.description.0": "構造を特定の場所に移動します。", + "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します。", + "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します。", + "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します。", + "create.schematic.tool.move.description.0": "概略図を水平に動かします。", + "create.schematic.tool.move.description.1": "概略図をポイントし、 [Ctrl]-スクロールして押し出します。", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "概略図を垂直に動かします。", + "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します。", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます。", + "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します。", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します。", + "create.schematic.tool.print.description.1": "[右クリック] して、現在の場所への配置を確認します。", + "create.schematic.tool.print.description.2": "このツールはクリエイティブモード専用です。", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "選択した面に沿って概略図を反転します。", + "create.schematic.tool.flip.description.1": "概略図をポイントし、 [CTRL]-スクロールして反転します。", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "同期しています...", + "create.schematics.uploadTooLarge": "概略図が大きすぎます。", + "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", + + "create.gui.schematicTable.title": "概略図テーブル", + "create.gui.schematicTable.availableSchematics": "利用可能な概略図", + "create.gui.schematicTable.noSchematics": "保存された概略図はありません", + "create.gui.schematicTable.uploading": "アップロードしています...", + "create.gui.schematicTable.finished": "アップロードが完了しました!", + "create.gui.schematicannon.title": "概略図砲", + "create.gui.schematicannon.settingsTitle": "配置設定", + "create.gui.schematicannon.listPrinter": "材料リストプリンター", + "create.gui.schematicannon.gunpowderLevel": "火薬はあと %1$s%% 残っています", + "create.gui.schematicannon.shotsRemaining": "残りのショット数: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップあり: %1$s", + "create.gui.schematicannon.optionEnabled": "現在有効", + "create.gui.schematicannon.optionDisabled": "現在無効", + "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", + "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", + "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", + "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", + "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", + "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", + "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", + "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", + "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業領域の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", + "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置にソリッドブロックが含まれている場合にのみ、その作業領域のソリッドブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithAny.description": "概略図のロケーションにブロックが含まれている場合、大砲はその作業領域の個体ブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", + + "create.schematicannon.status.idle": "停止中", + "create.schematicannon.status.ready": "準備完了", + "create.schematicannon.status.running": "稼働中", + "create.schematicannon.status.finished": "完成", + "create.schematicannon.status.paused": "一時停止中", + "create.schematicannon.status.stopped": "停止", + "create.schematicannon.status.noGunpowder": "火薬不足", + "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", + "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", + "create.schematicannon.status.searching": "検索中", + "create.schematicannon.status.skipping": "スキップ", + "create.schematicannon.status.missingBlock": "不明なブロック:", + "create.schematicannon.status.placing": "配置中", + "create.schematicannon.status.clearing": "ブロックをクリア中", + "create.schematicannon.status.schematicInvalid": "概略図が無効です", + "create.schematicannon.status.schematicNotPlaced": "配置されていない概略図です", + "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", + + "create.gui.filter.blacklist": "ブラックリスト", + "create.gui.filter.blacklist.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。 空のブラックリストはすべてを受け入れます。", + "create.gui.filter.whitelist": "ホワイトリスト", + "create.gui.filter.whitelist.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。 空のホワイトリストはすべてを拒否します。", + "create.gui.filter.respect_data": "データを重視", + "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", + "create.gui.filter.ignore_data": "データを無視", + "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", + + "create.item_attributes.placeable": "設置可能か", + "create.item_attributes.consumable": "食べられるか", + "create.item_attributes.smeltable": "精錬可能か", + "create.item_attributes.washable": "洗えるか", + "create.item_attributes.smokable": "燻製可能か", + "create.item_attributes.blastable": "高炉で製錬可能か", + "create.item_attributes.enchanted": "エンチャント済みか", + "create.item_attributes.damaged": "破損してるか", + "create.item_attributes.badly_damaged": "ひどく損傷してるか", + "create.item_attributes.not_stackable": "スタック可能か", + "create.item_attributes.equipable": "装備可能か", + "create.item_attributes.furnace_fuel": "かまどの燃料か", + "create.item_attributes.in_tag": "%1$s のタグが付けられてるか", + "create.item_attributes.in_item_group": "%1$s に属してるか", + "create.item_attributes.added_by": "%1$s によって追加されたか", + + "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", + "create.gui.attribute_filter.selected_attributes": "選択された属性:", + "create.gui.attribute_filter.whitelist_disjunctive": "ホワイトリスト(どれか)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.whitelist_conjunctive": "ホワイトリスト(全て)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.blacklist": "ブラックリスト", + "create.gui.attribute_filter.blacklist.description": "選択された属性を持たない場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", + + "create.tooltip.holdKey": "[%1$s] を長押し", + "create.tooltip.holdKeyOrKey": "[%1$s] または [%2$s] を長押し", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "スピード要件: %1$s", + "create.tooltip.speedRequirement.none": "無し", + "create.tooltip.speedRequirement.medium": "中速", + "create.tooltip.speedRequirement.high": "高速", + "create.tooltip.stressImpact": "応力への影響: %1$s", + "create.tooltip.stressImpact.low": "低", + "create.tooltip.stressImpact.medium": "中", + "create.tooltip.stressImpact.high": "高", + "create.tooltip.stressImpact.overstressed": "超過応力", + "create.tooltip.capacityProvided": "応力許容量: %1$s", + "create.tooltip.capacityProvided.low": "小", + "create.tooltip.capacityProvided.medium": "中", + "create.tooltip.capacityProvided.high": "大", + "create.tooltip.capacityProvided.asGenerator": "(ジェネレータとして)", + "create.tooltip.generationSpeed": "%1$s %2$sを生成", + "create.tooltip.analogStrength": "アナログ強度: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "最小 材料", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーバーティックが通常の速度に戻りました:D", + "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用してサーバーのティックを通常の速度に戻します", + "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", + "create.subtitle.schematicannon_finish": "概略図砲が終了する", + "create.subtitle.slime_added": "スライムスクイーズ", + "create.subtitle.mechanical_press_activation": "メカニカルプレスが作動する", + "create.subtitle.mechanical_press_item_break": "金属クランク", + "create.subtitle.blockzapper_place": "ブロックザップされる", + "create.subtitle.blockzapper_confirm": "アファーマティブディン", + "create.subtitle.blockzapper_deny": "衰退するブープ", + "create.subtitle.block_funnel_eat": "ファンネルCHOMPS", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "アイテムの例(このツールチップが存在する単なるマーカー)", + "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。 _アンダースコア_用語を強調表示します。", + "item.create.example_item.tooltip.condition1": "これは", + "item.create.example_item.tooltip.behaviour1": "次に、このアイテムはこれを行います。 (行動はシフトで示されます)", + "item.create.example_item.tooltip.condition2": "そしてこれは", + "item.create.example_item.tooltip.behaviour2": "あなたは好きなだけ行動を追加することができます", + "item.create.example_item.tooltip.control1": "Ctrlを押したとき", + "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", + + "item.create.wand_of_symmetry.tooltip": "対称性が必要", + "item.create.wand_of_symmetry.tooltip.summary": "構成されたプレーン全体のブロック配置を完全にミラーリングします。", + "item.create.wand_of_symmetry.tooltip.condition1": "ホットバーにあるとき", + "item.create.wand_of_symmetry.tooltip.behaviour1": "アクティブのまま", + "item.create.wand_of_symmetry.tooltip.control1": "地面を右クリックしたとき", + "item.create.wand_of_symmetry.tooltip.action1": "ミラーを_作成_または_移動_", + "item.create.wand_of_symmetry.tooltip.control2": "空中を右クリックしたとき", + "item.create.wand_of_symmetry.tooltip.action2": "アクティブなミラーを_削除_", + "item.create.wand_of_symmetry.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_を開きます", + + "item.create.handheld_blockzapper.tooltip": "ブロックザッパー", + "item.create.handheld_blockzapper.tooltip.summary": "離れた場所にブロックを配置または交換するための新しいガジェット。", + "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックしたとき", + "item.create.handheld_blockzapper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", + "item.create.handheld_blockzapper.tooltip.control2": "ブロックを右クリックしたとき", + "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_配置_または_置換_します。", + "item.create.handheld_blockzapper.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_を開きます", + + "item.create.handheld_worldshaper.tooltip": "ハンドヘルドワールドシェーパー", + "item.create.handheld_worldshaper.tooltip.summary": "_風景_や_地形の特徴_を作成するための便利なツール。", + "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", + "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", + "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", + "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_をターゲットの場所に適用します。", + "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_を開きます", + + "item.create.tree_fertilizer.tooltip": "木質肥料", + "item.create.tree_fertilizer.tooltip.summary": "一般的な木の種類の成長を加速するのに適したミネラルの強力な組み合わせ。", + "item.create.tree_fertilizer.tooltip.condition1": "苗木に使用したとき", + "item.create.tree_fertilizer.tooltip.behaviour1": "_間隔の条件_に_関係なく_ツリーを成長させる", + + "item.create.deforester.tooltip": "デフォレスター", + "item.create.deforester.tooltip.summary": "一瞬で木を切り倒すことができる_輝く斧_。", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "フィルタ", + "item.create.filter.tooltip.summary": "ロジスティックデバイスの_出力_と_入力_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_ネストされたフィルター_と照合します。", + "item.create.filter.tooltip.condition1": "フィルタースロットにセットしたとき", + "item.create.filter.tooltip.behaviour1": "_構成_に応じてアイテムの流れを_制御_します。", + "item.create.filter.tooltip.condition2": "右クリックしたとき", + "item.create.filter.tooltip.behaviour2": "_設定インターフェース_を開きます", + + "item.create.attribute_filter.tooltip": "属性フィルター", + "item.create.attribute_filter.tooltip.summary": "ロジスティックデバイスの_出力_と_入力_をより_正確_に_制御_し、アイテムの_属性_と_カテゴリのセット_と照合します。", + "item.create.attribute_filter.tooltip.condition1": "フィルタースロットにセットしたとき", + "item.create.attribute_filter.tooltip.behaviour1": "_構成_に応じてアイテムの流れを_制御_します。", + "item.create.attribute_filter.tooltip.condition2": "右クリックしたとき", + "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_を開きます", + + "item.create.empty_schematic.tooltip": "空のスキーマ", + "item.create.empty_schematic.tooltip.summary": "レシピの材料として、および_概略図テーブル_での記述に使用されます。", + + "item.create.schematic.tooltip": "概略図", + "item.create.schematic.tooltip.summary": "ワールドに配置および配置される構造を保持します。 ホログラムを必要に応じて配置し、_概略図砲_を使用して作成します。", + "item.create.schematic.tooltip.condition1": "持ったとき", + "item.create.schematic.tooltip.behaviour1": "画面上のツールを使用して配置できます。", + "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", + "item.create.schematic.tooltip.action1": "正確な_座標_を入力するための_インターフェース_を開きます。", + + "item.create.schematic_and_quill.tooltip": "概略図と羽根ペン", + "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存するために使用されます。", + "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", + "item.create.schematic_and_quill.tooltip.behaviour1": "右クリックして2つのコーナーポイントを選択します。", + "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。 もう一度右クリックして保存します。", + "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", + "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", + "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", + "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。 _スクロール_して距離を調整します。", + "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", + + "block.create.schematicannon.tooltip": "スキーマキャノン", + "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。 隣接するインベントリからのアイテムを供給し、_火薬_を燃料として使用します。", + "block.create.schematicannon.tooltip.control1": "右クリックしたとき", + "block.create.schematicannon.tooltip.action1": "_インターフェイス_を開きます", + + "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip.summary": "保存された概略図を_空の概略図_に書き込みます。", + "block.create.schematic_table.tooltip.condition1": "空の概略図が与えられたとき", + "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", + + "block.create.shaft.tooltip": "軸", + "block.create.shaft.tooltip.summary": "_回転_を直線で_中継_します。", + + "block.create.cogwheel.tooltip": "コグホイール", + "block.create.cogwheel.tooltip.summary": "_回転_を直線で、隣接する_歯車_に_中継_します。", + + "block.create.large_cogwheel.tooltip": "大型コグホイール", + "block.create.large_cogwheel.tooltip.summary": "より大きなバージョンの_歯車_により、小さな対応物に接続したときに_回転速度_を_変更_できます。", + + "block.create.encased_shaft.tooltip": "内蔵シャフト", + "block.create.encased_shaft.tooltip.summary": "_回転_を直線で_中継_します。 壁を通過する回転の伝播に適しています。", + + "block.create.gearbox.tooltip": "ギアボックス", + "block.create.gearbox.tooltip.summary": "_中継_する_4方向_の_回転_直線接続を逆にします。", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "ギアシフト", + "block.create.gearshift.tooltip.summary": "接続されたシャフトの回転方向を切り替えるコントロール。", + "block.create.gearshift.tooltip.condition1": "パワーが入ってるとき", + "block.create.gearshift.tooltip.behaviour1": "出て行く回転を_逆_にします。", + + "block.create.clutch.tooltip": "クラッチ", + "block.create.clutch.tooltip.summary": "接続されたシャフトの回転をオン/オフするコントロール。", + "block.create.clutch.tooltip.condition1": "パワーが入ってるとき", + "block.create.clutch.tooltip.behaviour1": "反対側への回転の伝達を_停止_します。", + + "block.create.encased_belt.tooltip": "ケース入りベルト", + "block.create.encased_belt.tooltip.summary": "_回転_をそのブロックと接続された_ケース入りベルト_に_中継_します。", + "block.create.encased_belt.tooltip.condition1": "接続したとき", + "block.create.encased_belt.tooltip.behaviour1": "アタッチされたブロックの_回転速度_と方向はまったく_同じ_です。 彼らは同じように向き合う必要はありません。", + + "block.create.adjustable_pulley.tooltip": "アナログベルトプーリー", + "block.create.adjustable_pulley.tooltip.summary": "ブロックを介して_回転を中継_し、取り付けられた_ケース入りベルト_に伝達します。 取り付けられた包み込まれたベルトは、このブロックが受信する_アナログレッドストーン信号_に基づいて_より速く回転_します。", + "block.create.adjustable_pulley.tooltip.condition1": "レッドストーンコントロール", + "block.create.adjustable_pulley.tooltip.behaviour1": "信号がないと、接続されているベルトの_速度が上がりません_。 フルストレングスシグナル接続ベルトにより、_速度は2倍になります_。", + + "item.create.belt_connector.tooltip": "ベルトコネクター", + "item.create.belt_connector.tooltip.summary": "2つ以上の_シャフト_を_メカニカルベルト_で接続します。 接続されたシャフトの回転速度と方向はまったく同じです。 ベルトは、_アイテム_と_エンティティ_の_コンベア_として機能できます。", + "item.create.belt_connector.tooltip.control1": "シャフトを右クリックしたとき", + "item.create.belt_connector.tooltip.action1": "ベルトの1つのプーリーとしてシャフトを選択します。 選択した両方のシャフトは、_ベルトの方向_に向かって_垂直_、_水平_、または_斜め_に整列する必要があります。", + "item.create.belt_connector.tooltip.control2": "スニークしながらシャフトを右クリックしたとき", + "item.create.belt_connector.tooltip.action2": "ベルトの最初に選択された位置を_リセット_します。", + + "item.create.goggles.tooltip": "ゴーグル", + "item.create.goggles.tooltip.summary": "有用な動力情報で視覚を強化するための眼鏡。", + "item.create.goggles.tooltip.condition1": "着用したとき", + "item.create.goggles.tooltip.behaviour1": "配置されたキネティックコンポーネントの_速度レベル_に対応する_色付きのインジケーター_と、個々のコンポーネント_の応力の影響_と_容量_を表示します。", + "item.create.goggles.tooltip.condition2": "計器を見たとき", + "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの速度または応力に関する詳細情報を表示します。", + + "item.create.wrench.tooltip": "レンチ", + "item.create.wrench.tooltip.summary": "動力論的からくりに取り組むための便利なツール。 コンポーネントの_回転_、_解体_、_設定_に使用できます。", + "item.create.wrench.tooltip.control1": "動力ブロックを右クリックしたとき", + "item.create.wrench.tooltip.action1": "_操作した面に向かって、または面から離れるように_コンポーネントを回転させます_。", + "item.create.wrench.tooltip.control2": "スニークしながら右クリックしたとき", + "item.create.wrench.tooltip.action2": "_動力コンポーネントを分解_し、_インベントリ_に戻します。", + + "block.create.creative_motor.tooltip": "クリエイティブモーター", + "block.create.creative_motor.tooltip.summary": "_回転力_を設定可能なソース。", + + "block.create.water_wheel.tooltip": "水車", + "block.create.water_wheel.tooltip.summary": "_隣接する水流_から取得される_回転力_を提供します。", + + "block.create.encased_fan.tooltip": "内蔵ファン", + "block.create.encased_fan.tooltip.summary": "_回転力_を_気流_に変換し、戻します。さまざまな用途があります。", + "block.create.encased_fan.tooltip.condition1": "レッドストーン動力を与えたとき", + "block.create.encased_fan.tooltip.behaviour1": "直下の_熱源_から_回転力_を提供します。 ファンは下向きにする必要があります。", + "block.create.encased_fan.tooltip.condition2": "回転したとき", + "block.create.encased_fan.tooltip.behaviour2": "入力回転速度に応じて、エンティティを_押す_または_引き戻_します。", + "block.create.encased_fan.tooltip.condition3": "特別なブロックを吹き抜けるとき", + "block.create.encased_fan.tooltip.behaviour3": "_液体_と_炎_の粒子が空気の流れに放出されます。 これは、_アイテムの処理_に使用できます。", + + "block.create.nozzle.tooltip": "ノズル", + "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", + + "block.create.hand_crank.tooltip": "ハンドクランク", + "block.create.hand_crank.tooltip.summary": "プレイヤーの相互作用を必要とする_回転力の単純な情報源_。", + "block.create.hand_crank.tooltip.condition1": "使用してるとき", + "block.create.hand_crank.tooltip.behaviour1": "付属の仕掛けに_回転力_を提供します。 _スニークで回転を逆_にします。", + + "block.create.cuckoo_clock.tooltip": "鳩時計", + "block.create.cuckoo_clock.tooltip.summary": "空間を_飾り_、_時間を追跡する_ための素晴らしい職人技。", + "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", + "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。 _プレイヤーが眠れるようになる_とすぐに、_正午_と夕暮れに1回_アクティブ_になります。", + + "block.create.turntable.tooltip": "ターンテーブル", + "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", + + "block.create.millstone.tooltip": "石臼", + "block.create.millstone.tooltip.summary": "挿入された_材料_の_研削_に適したキネティックコンポーネント。 隣接する歯車によって、または下部のシャフトに接続することによって、動力を供給できます。 結果はコンポーネントから抽出する必要があります。", + "block.create.millstone.tooltip.condition1": "回転したとき", + "block.create.millstone.tooltip.behaviour1": "ブロックの側面または上面から挿入されたアイテムを_粉砕_を開始します。", + "block.create.millstone.tooltip.condition2": "右クリックしたとき", + "block.create.millstone.tooltip.behaviour2": "出力物を手動で収集します。", + + "block.create.crushing_wheel.tooltip": "クラッシングホイール", + "block.create.crushing_wheel.tooltip.summary": "何かを_分解_する大きな回転可能なホイール。", + "block.create.crushing_wheel.tooltip.condition1": "他の破砕ホイールに取り付けたとき", + "block.create.crushing_wheel.tooltip.behaviour1": "様々な物を処理するための破砕機を形成します。 ホイールの歯は、同じ速度で接続し、反対方向に動く必要があります。", + + "block.create.mechanical_press.tooltip": "メカニカルプレス", + "block.create.mechanical_press.tooltip.summary": "その下のアイテムを圧縮するための強力なピストン。 一定の_回転力_が必要です。", + "block.create.mechanical_press.tooltip.condition1": "レッドストーン動力を受けたとき", + "block.create.mechanical_press.tooltip.behaviour1": "その下にドロップされたアイテムの圧縮を_開始_します。", + "block.create.mechanical_press.tooltip.condition2": "メカニカルベルトの上にあるとき", + "block.create.mechanical_press.tooltip.behaviour2": "ベルト上のバイパスアイテムを_自動的_に圧縮します。", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "鉢", + "block.create.basin.tooltip.summary": "_メカニカルミキサー_と_メカニカルプレス_での処理に使用される便利な_アイテムの入れ物_。_レッドストーンコンパレータ_をサポートします。", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "メカニカルミキサー", + "block.create.mechanical_mixer.tooltip.summary": "その下のアイテムに形状のない製作レシピを適用するための動力ミキサー。 一定の_回転力_と下に配置された_鉢_が必要です(間にギャップがあります)。", + "block.create.mechanical_mixer.tooltip.condition1": "鉢の上にあるとき", + "block.create.mechanical_mixer.tooltip.behaviour1": "必要なすべての成分が存在するときはいつでも、鉢のアイテムの混合を開始します。", + "block.create.mechanical_mixer.tooltip.condition2": "レンチと併用したとき", + "block.create.mechanical_mixer.tooltip.behaviour2": "適用されるレシピの_総材料_の最小量を_構成_します。 このオプションを使用して、似ているが成分が少ない_不要なレシピを除外_します。", + + "block.create.mechanical_crafter.tooltip": "メカニカルクラフト", + "block.create.mechanical_crafter.tooltip.summary": "_あらゆる形状の製作レシピ_を自動化するための動的アセンブラー。 _レシピに対応するグリッドに複数を配置_し、_フェアベルトを配置して_、いずれかのクラフターのグリッドから出る_流れ_を作成します。", + "block.create.mechanical_crafter.tooltip.condition1": "回転したとき", + "block.create.mechanical_crafter.tooltip.behaviour1": "グリッド内の_すべてのクラフター_にテンプレートが_与えられる_とすぐに、_生産プロセスを開始_します。", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "フロントでレンチしたとき", + "block.create.mechanical_crafter.tooltip.action1": "_個々の生産者が_アイテムを移動_する_方向_を循環させます。 作業グリッドを形成するには、すべてのアイテムを最終的なクラフターに向かって_移動させる流れ_に_ベルト_を配置します。 最終的なクラフターはグリッドから_離れる_方向を指さなければなりません。", + "block.create.mechanical_crafter.tooltip.control2": "後ろでレンチしたとき", + "block.create.mechanical_crafter.tooltip.action2": "隣接するクラフターの_入力インベントリ_を_接続_します。 これを使用して、クラフトグリッドの_スロットを結合_し、_入力作業を節約_します。", + + "block.create.furnace_engine.tooltip": "かまどエンジン", + "block.create.furnace_engine.tooltip.summary": "_稼働するかまど_が機能することを必要とする強力な_回転動力源_。", + "block.create.furnace_engine.tooltip.condition1": "燃えてるかまどに取り付けたとき", + "block.create.furnace_engine.tooltip.behaviour1": "その前(1m離れて)に配置された_フライホイールへの動力供給を開始_します。 高速化するには高炉を使用してください。", + + "block.create.flywheel.tooltip": "勢車", + "block.create.flywheel.tooltip.summary": "_取り付けたのエンジン_が発生する_力を利用して安定_させる大型の金属ホイール。 勢車が_1 m離れていて_、_互いに90°の角度にある_場合、エンジンに接続します。", + "block.create.flywheel.tooltip.condition1": "実行中のエンジンに取り付けられてるとき", + "block.create.flywheel.tooltip.behaviour1": "ジェネレータの強度と速度に基づいて、取り付けた仕掛けに_回転力_を提供します。", + + "block.create.portable_storage_interface.tooltip": "ポータブルストレージインターフェイス", + "block.create.portable_storage_interface.tooltip.summary": "ピストン、ベアリング、トロッコ、またはプーリーによって移動される_構造物_との間で_アイテムを移動_するためのポータブル交換ポイント。", + "block.create.portable_storage_interface.tooltip.condition1": "移動してるとき", + "block.create.portable_storage_interface.tooltip.behaviour1": "インターフェースの_反対側_にある_トランスポーザー_が_アイテムを引っ張り_、インターフェースをターゲットとするトランスポーザーが接続されたインベントリから_アイテムを挿入_するように、固定トランスポーザーと相互作用します。 アイテムが交換されると、からくりは一時的に停止します。", + + "block.create.rotation_speed_controller.tooltip": "回転速度コントローラー", + "block.create.rotation_speed_controller.tooltip.summary": "ターゲットコンポーネントを任意の速度に加速または減速できる_構成可能な中継_。", + "block.create.rotation_speed_controller.tooltip.condition1": "大きな歯車に取り付けたとき", + "block.create.rotation_speed_controller.tooltip.behaviour1": "入ってくる回転力をホイールに中継し、目標とするように構成された_速度に一致_させようとします。 _歯車はコントローラーの上に取り付ける_必要があります。", + + "block.create.mechanical_piston.tooltip": "メカニカルピストン", + "block.create.mechanical_piston.tooltip.summary": "_ピストン_より高度なもの。 _回転力_を使用して、取り付けられた構造物を正確に移動します。 背面の_ピストン延長極_は、このデバイスの_範囲_を定義します。 延長がないと、ピストンは動きません。 _シャーシ_または_スライムブロック_を使用して、1行以上のブロックを移動します。", + "block.create.mechanical_piston.tooltip.condition1": "回転したとき", + "block.create.mechanical_piston.tooltip.behaviour1": "取り付けられた構造物の移動を開始します。 速度と方向は、入力される回転速度と相関します。", + + "block.create.sticky_mechanical_piston.tooltip": "粘着メカニカルピストン", + "block.create.sticky_mechanical_piston.tooltip.summary": "_粘着ピストン_より高度なもの。 _回転力_を使用して、取り付けられた構造物を正確に移動します。 背面の_ピストン延長極_は、このデバイスの_範囲_を定義します。 延長がないと、ピストンは動きません。 _シャーシ_または_スライムブロック_を使用して、1行以上のブロックを移動します。", + "block.create.sticky_mechanical_piston.tooltip.condition1": "回転したとき", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "取り付けられた構造物の移動を開始します。 速度と方向は、入力される回転速度と相関します。", + + "block.create.piston_extension_pole.tooltip": "ピストンポール", + "block.create.piston_extension_pole.tooltip.summary": "メカニカルピストンの範囲を拡張します。", + "block.create.piston_extension_pole.tooltip.condition1": "メカニカルピストンに取り付けたとき", + "block.create.piston_extension_pole.tooltip.behaviour1": "ピストンの範囲を1ブロック拡張", + + "block.create.mechanical_bearing.tooltip": "メカニカルベアリング", + "block.create.mechanical_bearing.tooltip.summary": "_大きな構造物_を回転させたり、風からの_回転力_を利用したりするために使用されます。", + "block.create.mechanical_bearing.tooltip.condition1": "回転したとき", + "block.create.mechanical_bearing.tooltip.behaviour1": "アタッチされたブロックの回転を開始します。_シャーシ_または_スライムブロック_を使用して、複数のブロックを移動します。", + "block.create.mechanical_bearing.tooltip.condition2": "レッドストーン動力を与えたとき", + "block.create.mechanical_bearing.tooltip.behaviour2": "取り付けた構造物の回転から生成される_回転力_の提供を開始します。 構造には、適切な_帆ブロック_(現在はすべてのウールブロック)を含める必要があります。", + + "block.create.clockwork_bearing.tooltip": "時計仕掛けベアリング", + "block.create.clockwork_bearing.tooltip.summary": "現在の_ゲーム内時間_に応じて最大2つの_時計の針_を回転させる、_メカニカルベアリング_より高度なもの。", + "block.create.clockwork_bearing.tooltip.condition1": "回転したとき", + "block.create.clockwork_bearing.tooltip.behaviour1": "現在の時間に向かって取り付けた構造物の回転を開始します。 2番目の構造が存在する場合、それは分針として機能します。", + + "block.create.sequenced_gearshift.tooltip": "順次ギアシフト", + "block.create.sequenced_gearshift.tooltip.summary": "最大_5つの連続する命令_に従って_回転スループット_を変更できる_プログラム可能_な_ユーティリティコンポーネント_。 これを使用して、メカニカルベアリング、ピストン、またはプーリーに動力を供給し、タイミングと速度をより細かく制御します。 高速では精度が低下する可能性があります。", + "block.create.sequenced_gearshift.tooltip.condition1": "レッドストーン信号を与えたとき", + "block.create.sequenced_gearshift.tooltip.behaviour1": "入力速度に基づいてプログラムされた命令の実行を開始します。", + "block.create.sequenced_gearshift.tooltip.condition2": "右クリックしたとき", + "block.create.sequenced_gearshift.tooltip.behaviour2": "_設定インターフェース_を開きます", + + "block.create.cart_assembler.tooltip": "カートアッセンブラー", + "block.create.cart_assembler.tooltip.summary": "接続された構造物を_通過するトロッコ_に取り付けます。", + "block.create.cart_assembler.tooltip.condition1": "レッドストーン信号を与えたとき", + "block.create.cart_assembler.tooltip.behaviour1": "_通過するカート_のマウントされた構造物を_分解_し、それらをワールドに戻します。", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "ローププーリー", + "block.create.rope_pulley.tooltip.summary": "取り付けた_ブロックと構造物を垂直_に移動します。 _シャーシブロック_または_スライムブロック_を使用して、1つ以上のブロックを移動します。", + "block.create.rope_pulley.tooltip.condition1": "回転したとき", + "block.create.rope_pulley.tooltip.behaviour1": "取り付けた構造物の移動を開始します。 速度と方向は、入力される回転速度に相関します。", + + "block.create.linear_chassis.tooltip": "トランスシャーシ", + "block.create.linear_chassis.tooltip.summary": "移動用の構造を接続する構成可能なベースブロック。", + "block.create.linear_chassis.tooltip.condition1": "移動したとき", + "block.create.linear_chassis.tooltip.behaviour1": "_取り付けられるすべてのシャーシ_を同じ方向に移動し、ブロックの列をその範囲内に移動します。 ブロックは、シャーシの表面が_粘着性_がある場合にのみ引っ張られます([Ctrl]を参照)。", + "block.create.linear_chassis.tooltip.condition2": "レンチしたとき", + "block.create.linear_chassis.tooltip.behaviour2": "このシャーシブロックの_範囲_を構成します。 CTRLキーを押したまま、接続されているすべてのシャーシブロックの範囲も変更します。", + "block.create.linear_chassis.tooltip.control1": "スライムボールで右クリックしたとき", + "block.create.linear_chassis.tooltip.action1": "クリックした面を_粘着性_にします。 移動すると、シャーシは移動方向に関係なく、取り付けられたブロックを_引っ張り_ます。", + + "block.create.radial_chassis.tooltip": "回転シャーシ", + "block.create.radial_chassis.tooltip.summary": "移動用の構造を取り付ける構成可能なベースブロック。", + "block.create.radial_chassis.tooltip.condition1": "動かしたとき", + "block.create.radial_chassis.tooltip.behaviour1": "列に_取り付けられてるすべてのシャーシ_、およびそれ自体の周りのブロックのシリンダーを_移動_します。 周囲のブロックは、範囲内にあり、粘着面に接続されている場合にのみ移動されます([Ctrl]を参照)。", + "block.create.radial_chassis.tooltip.condition2": "レンチを使ったとき", + "block.create.radial_chassis.tooltip.behaviour2": "このシャーシブロックの_範囲_を構成します。 CTRLキーを押したまま、接続されているすべてのシャーシブロックの範囲も変更します。", + "block.create.radial_chassis.tooltip.control1": "スライムボールで右クリックしたとき", + "block.create.radial_chassis.tooltip.action1": "クリックした面を_粘着性_にします。 シャーシが移動すると、粘着面に接続されているすべての指定ブロックが一緒に移動します。", + + "block.create.mechanical_drill.tooltip": "機械ドリル", + "block.create.mechanical_drill.tooltip.summary": "_ブロックを壊す_のに適した機械装置。 _メカニカルピストン_または_ベアリング_で移動可能です。", + "block.create.mechanical_drill.tooltip.condition1": "回転したとき", + "block.create.mechanical_drill.tooltip.behaviour1": "_静止_したブロックブレーカーとして機能します。 また、有効領域の_エンティティを傷つけます_。", + "block.create.mechanical_drill.tooltip.condition2": "動かしたとき", + "block.create.mechanical_drill.tooltip.behaviour2": "ドリルが衝突するブロックを壊します。", + + "block.create.mechanical_harvester.tooltip": "メカニカルハーベスター", + "block.create.mechanical_harvester.tooltip.summary": "中規模の作物の自動化に適した機械式植物カッター。 _メカニカルピストン_または_ベアリング_で移動可能です。", + "block.create.mechanical_harvester.tooltip.condition1": "動かしたとき", + "block.create.mechanical_harvester.tooltip.behaviour1": "ブレードが衝突する_すべての成熟した作物を収穫_し、それらを初期の成長状態にリセットします。", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "メカニカル鋸", + "block.create.mechanical_saw.tooltip.summary": "木を効果的に切断したり、大工したものにブロックを切断したりするのに適しています。 メカニカルピストンまたはベアリングを使用して移動可能です。", + "block.create.mechanical_saw.tooltip.condition1": "上向きのとき", + "block.create.mechanical_saw.tooltip.behaviour1": "そこにドロップまたは挿入されたアイテムに_製材_およびストーンカッティングレシピを適用します。 複数の出力が可能な場合、フィルターが割り当てられていない限り、出力が循環します。", + "block.create.mechanical_saw.tooltip.condition2": "横向きの場合", + "block.create.mechanical_saw.tooltip.behaviour2": "その前で_原木を分割_します。 原木がそれ自体でツリーをサポートしていた場合、_木はのこぎりから離れて崩壊_します。", + "block.create.mechanical_saw.tooltip.condition3": "動かしたとき", + "block.create.mechanical_saw.tooltip.behaviour3": "のこぎりが衝突する_すべての木を切り倒します_。", + + "block.create.stockpile_switch.tooltip": "在庫スイッチ", + "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。", + "block.create.stockpile_switch.tooltip.condition1": "下限を下回ったとき", + "block.create.stockpile_switch.tooltip.behaviour1": "レッドストーン信号を停止", + "block.create.stockpile_switch.tooltip.condition2": "上限を超えたとき。", + "block.create.stockpile_switch.tooltip.behaviour2": "再び下限に達するまで、レッドストーン信号の提供を開始します。", + "block.create.stockpile_switch.tooltip.control1": "右クリックしたとき", + "block.create.stockpile_switch.tooltip.action1": "_設定インターフェース_を開きます", + + "block.create.redstone_link.tooltip": "レッドストーンリンク", + "block.create.redstone_link.tooltip.summary": "_ワイヤレスレッドストーン_接続のエンドポイント。 任意のアイテムを使用して_周波数_を割り当てることができます。 信号範囲は限られていますが、かなり離れています。", + "block.create.redstone_link.tooltip.condition1": "入力があるとき", + "block.create.redstone_link.tooltip.behaviour1": "同じ周波数のリンクを受信すると、レッドストーン信号が生成されます。", + "block.create.redstone_link.tooltip.control1": "アイテムで右クリックしたとき", + "block.create.redstone_link.tooltip.action1": "_周波数_をそのアイテムに設定します。 周波数を定義するために、_合計2つの異なるアイテム_を組み合わせて使用できます。", + "block.create.redstone_link.tooltip.control2": "スニークしながら右クリックしたとき", + "block.create.redstone_link.tooltip.action2": "_受信機_モードと_送信機_モードを切り替えます。", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "レッドストーンコンタクト", + "block.create.redstone_contact.tooltip.summary": "レッドストーンパワーのみをペアで放出します。 _メカニカルピストン_または_ベアリング_で移動可能です。", + "block.create.redstone_contact.tooltip.condition1": "他のコンタクトに直面したとき", + "block.create.redstone_contact.tooltip.behaviour1": "レッドストーン信号を提供します。", + "block.create.redstone_contact.tooltip.condition2": "動かしたとき", + "block.create.redstone_contact.tooltip.behaviour2": "通過するすべての固定接点をトリガーします。", + + "block.create.adjustable_crate.tooltip": "調整可能なクレート", + "block.create.adjustable_crate.tooltip.summary": "この_ストレージコンテナ_では、容量を手動で制御できます。 任意のアイテムの最大_16スタック_を保持できます。 _レッドストーンコンパレータ_をサポートします。", + "block.create.adjustable_crate.tooltip.control1": "右クリックしたとき", + "block.create.adjustable_crate.tooltip.action1": "_インターフェース_を開きます", + + "block.create.creative_crate.tooltip": "クリエイティブクレート", + "block.create.creative_crate.tooltip.summary": "隣接する概略図砲へブロックの無限に供給します。", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "抽出器", + "block.create.extractor.tooltip.summary": "付属のインベントリから_アイテムを取り_、地面にドロップします。 スペースが空いていない限り、アイテムはドロップされません。 _フィルター_としてアイテムスタックを割り当てることができます。", + "block.create.extractor.tooltip.condition1": "レッドストーン信号があるとき", + "block.create.extractor.tooltip.behaviour1": "エクストラクタを_一時停止_します。", + "block.create.extractor.tooltip.condition2": "アクティブベルト牽引されたとき", + "block.create.extractor.tooltip.behaviour2": "エクストラクタは、_真ちゅう製のケーシング_で補強された_ベルトから_アイテムを引き出すことができます。 エクストラクタが詰まると、_ベルトが停止_します。", + "block.create.extractor.tooltip.control1": "フィルタースペースを右クリック", + "block.create.extractor.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 エクストラクターは、アイテム_タイプ_とフィルタースタックの_数_を排他的に取得します。", + + "block.create.transposer.tooltip": "トランスポーザー", + "block.create.transposer.tooltip.summary": "取り付けされたインベントリから_アイテムを取得_し、すぐにターゲット_インベントリ_に入れます。 _フィルター_としてアイテムスタックを割り当てることができます。", + "block.create.transposer.tooltip.condition1": "レッドストーン信号があるとき", + "block.create.transposer.tooltip.behaviour1": "トランスポーザを_一時停止_します。", + "block.create.transposer.tooltip.condition2": "アクティブベルト牽引されたとき", + "block.create.transposer.tooltip.behaviour2": "トランスポーザーは、_真鍮のケーシングで補強_された_ベルトからアイテム_を引っ張ることができます。 トランスポーザがバックアップされると、_ベルトが停止_します。", + "block.create.transposer.tooltip.control1": "フィルタースペースを右クリック", + "block.create.transposer.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。トランスポーザーは、フィルタースタックのアイテムタイプと_カウント_を排他的にプルします。", + + "block.create.deployer.tooltip": "デプロイヤ", + "block.create.deployer.tooltip.summary": "_パンチ_、_使用_、_有効化_。 このマシンは、_プレイヤー_をできるだけ_真似_しようとします。 隣接するインベントリの_アイテムを受け取り_、_預ける_ことができます。 _フィルター_としてアイテムスタックを割り当てることができます。", + "block.create.deployer.tooltip.condition1": "回転したとき", + "block.create.deployer.tooltip.behaviour1": "腕を伸ばし、_2m先_のブロックスペースで_発動_。", + "block.create.deployer.tooltip.condition2": "レンチで右クリックしたとき", + "block.create.deployer.tooltip.behaviour2": "パンチモードを切り替えます。 _パンチモード_では、デプロイヤはそのアイテムを使用して_ブロックを壊したりエンティティを傷つけ_たりしようとします。", + + "block.create.linked_extractor.tooltip": "リンクエクストラクター", + "block.create.linked_extractor.tooltip.summary": "取り付けてる_インベントリ_から_アイテムを取り_、それらを地面に落とします。 スペースが空いていない限り、アイテムはドロップされません。 _フィルター_としてアイテムスタックを割り当てることができます。 _レッドストーンリンク_を介してリモートで制御できます。", + "block.create.linked_extractor.tooltip.condition1": "レッドストーンリンクがアクティブな場合", + "block.create.linked_extractor.tooltip.behaviour1": "エクストラクタを_一時停止_します。", + "block.create.linked_extractor.tooltip.control1": "フィルタースペースを右クリックしたとき", + "block.create.linked_extractor.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 エクストラクターは、_アイテムタイプ_とフィルタースタックの_数_を排他的に取得します。", + "block.create.linked_extractor.tooltip.control2": "周波数スペースを右クリックしたとき", + "block.create.linked_extractor.tooltip.action2": "リッスンされている周波数の一部として_現在保持_されているアイテムを割り当てます。 同じ周波数の送信_レッドストーンリンク_に動力が供給されると、このエクストラクターは一時停止します。", + + "block.create.linked_transposer.tooltip": "リンクされたトランスポーザー", + "block.create.linked_transposer.tooltip.summary": "取り付けてる_インベントリ_から_アイテムを取得_し、すぐにターゲット_インベントリ_に入れます。 フィルターとしてアイテムスタックを割り当てることができます。 _レッドストーンリンク_を介してリモートで制御できます。", + "block.create.linked_transposer.tooltip.condition1": "レッドストーンリンクがアクティブのとき", + "block.create.linked_transposer.tooltip.behaviour1": "トランスポーザを_一時停止_します。", + "block.create.linked_transposer.tooltip.control1": "フィルタースペースを右クリックしたとき", + "block.create.linked_transposer.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 トランスポーザーは、アイテム_タイプ_とフィルター_スタック_の数に一致するアイテムのみをプルします。", + "block.create.linked_transposer.tooltip.control2": "周波数スペースを右クリックしたとき", + "block.create.linked_transposer.tooltip.action2": "聴いてる周波数の一部として現在_保持されているアイテム_を割り当てます。 同じ周波数の送信レッドストーンリンクに動力が供給されると、このトランスポーザーは一時停止します。", + + "block.create.funnel.tooltip": "漏斗", + "block.create.funnel.tooltip.summary": "_入力アイテムを収集_し、可能な場合はそれらを取り付けた_インベントリ_に挿入します。 _世界_のアイテムや_ベルト_のアイテムを集めることができます。", + "block.create.funnel.tooltip.condition1": "パッシブベルト引っ張り", + "block.create.funnel.tooltip.behaviour1": "漏斗は、_ベルトの上_から横または端に配置すると、ベルトからアイテムを引き出すことができます。 横向きのファンネルをバックアップすると、_ベルト上のアイテムが停止することはありません_。", + + "block.create.belt_tunnel.tooltip": "ベルトトンネル", + "block.create.belt_tunnel.tooltip.summary": "_メカニカルベルト_を壁に通すための美的なオプション。 ベルトは真鍮の_ケーシング_で_補強_する必要があります。 トンネルは_隣接_グループと同期でき、グループ内のすべてのトンネルに1つの待機がある場合にのみアイテムを通過させます。 [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "前面をレンチで右クリック", + "block.create.belt_tunnel.tooltip.action1": "_同期動作_を切り替えます。 同期されたトンネルは、ネイバーがアイテムを取得するまでアイテムを保持します。", + "block.create.belt_tunnel.tooltip.control2": "横面をレンチで右クリック", + "block.create.belt_tunnel.tooltip.action2": "トンネルにその面に窓がある場合、_窓シャッターを調整_します。", + + "block.create.brass_casing.tooltip": "真ちゅうのケーシング", + "block.create.brass_casing.tooltip.summary": "さまざまな用途に使用できる頑丈な機械ケーシング。 装飾用にも安全です。", + "block.create.brass_casing.tooltip.condition1": "メカニカルベルトに使用したとき", + "block.create.brass_casing.tooltip.behaviour1": "真鍮製のファンデーションでベルトを補強します。 強化ベルトは、ベルトトンネル、エクストラクタ、ファンネル、およびトランスポーザをベルトの側面および下から相互作用することをサポートできます。", + + "block.create.belt_observer.tooltip": "ベルトオブザーバー", + "block.create.belt_observer.tooltip.summary": "その前のメカニカルベルト上を通り過ぎるアイテムとエンティティを検出します。 レンチを使用して、その動作を循環させます。 非アイテムは、設定に関係なく常に検出モードで処理されます。", + "block.create.belt_observer.tooltip.condition1": "検出モード", + "block.create.belt_observer.tooltip.behaviour1": "_一致するアイテムが観測_されたベルトセグメントにある間、レッドストーンを出力します。", + "block.create.belt_observer.tooltip.condition2": "パルスモード", + "block.create.belt_observer.tooltip.behaviour2": "一致するアイテムが観測_されたベルトセグメントの中心を通過するときに_パルス_を発します。", + "block.create.belt_observer.tooltip.condition3": "イジェクトモード", + "block.create.belt_observer.tooltip.behaviour3": "_一致するアイテム_を側面から排出します。 対象のベルトやスペースが占有されている場合、アイテムは_所定の位置に保持_されます。", + "block.create.belt_observer.tooltip.condition4": "分割モード", + "block.create.belt_observer.tooltip.behaviour4": "_一致するアイテムスタック_を分割し、その_半分_を側面から_排出_します。", + + "block.create.pulse_repeater.tooltip": "パルスリピーター", + "block.create.pulse_repeater.tooltip.summary": "通過するレッドストーン信号を_1ティック_の長さにカットする簡単な回路。", + + "block.create.adjustable_repeater.tooltip": "フレックスリピーター", + "block.create.adjustable_repeater.tooltip.summary": "最大_30分_の遅延を_設定可能_な高度な_レッドストーンリピーター_。", + + "block.create.adjustable_pulse_repeater.tooltip": "フレックスパルスリピーター", + "block.create.adjustable_pulse_repeater.tooltip.summary": "最大_30分_の遅延を_設定可能_な_パルスリピーター_。", + + "block.create.analog_lever.tooltip": "アナログレバー", + "block.create.analog_lever.tooltip.summary": "_発信信号強度_をより_正確に制御_するレバー。", + + "block.create.powered_toggle_latch.tooltip": "パワードトグルラッチ", + "block.create.powered_toggle_latch.tooltip.summary": "レッドストーンパルスによってトグルできるレバー。", + + "block.create.powered_latch.tooltip": "パワードラッチ", + "block.create.powered_latch.tooltip.summary": "_レッドストーン信号_で制御できるレバー。 _背面の信号_はそれを可能にし、_側面からの信号_はそれをリセットします。", + + "block.create.speedometer.tooltip": "スピードメーター", + "block.create.speedometer.tooltip.summary": "接続された動力コンポーネントの_回転速度_を測定して表示します。 _レッドストーンコンパレータ_をサポートします。", + "block.create.speedometer.tooltip.condition1": "回転したとき", + "block.create.speedometer.tooltip.behaviour1": "速度のレベルに対応する色を示します。 _緑_は低速、_青_は中程度、_紫_は高速回転を示します。 一部の機械コンポーネントは、適切に機能するために十分なレベルの速度を必要とします。", + + "block.create.stressometer.tooltip": "ストレスメーター", + "block.create.stressometer.tooltip.summary": "接続された動力ネットワークの全体的な応力を測定して表示します。 レッドストーンコンパレータをサポートします。", + "block.create.stressometer.tooltip.condition1": "回転したとき", + "block.create.stressometer.tooltip.behaviour1": "応力のレベルに対応する色を示します。 _過度に応力がかかったネットワーク_は動きを止めます。 ネットワークに_回転源_を追加することで、応力を軽減できます。", + + "tool.create.sand_paper.tooltip": "サンドペーパー", + "tool.create.sand_paper.tooltip.summary": "_素材を磨いたり_、_道具_を研ぐために使用できる粗い紙。", + "tool.create.sand_paper.tooltip.condition1": "使用したとき", + "tool.create.sand_paper.tooltip.behaviour1": "オフハンドで持っているアイテムや地面に落ちているアイテムを見ると研磨します", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "洗練された放射", + "item.create.refined_radiance.tooltip.summary": "_吸収された光_から鍛造されたクロマチックマテリアル。", + + "item.create.shadow_steel.tooltip": "シャドウスチール", + "item.create.shadow_steel.tooltip.summary": "_虚無_から鍛造されたクロマティックマテリアル。", + + "item.create.crafter_slot_cover.tooltip": "スロットカバー", + "item.create.crafter_slot_cover.tooltip.summary": "_メカニカルクラフター_でレシピの空のスロットとしてマークするために使用されます。 クラフターは必ずしも完全な正方格子を形成する必要はありません。 これは、_成分が互いに対角線_であるレシピがある場合に役立ちます。", + + "create.tooltip.wip": "WIP", + "create.tooltip.workInProgress": "作業中です!", + "create.tooltip.randomWipDescription0": "お子様の手の届かないところに保管してください。", + "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使用するたびに死にます。そう、すべての時間。", + "create.tooltip.randomWipDescription2": "自己責任。", + "create.tooltip.randomWipDescription3": "これはあなたが探しているアイテムではありません。* finger-wiggles *を分散させてください。", + "create.tooltip.randomWipDescription4": "このアイテムは10秒で自己破壊します。 10、9、8 ...", + "create.tooltip.randomWipDescription5": "私を信じて、それは無駄だ。", + "create.tooltip.randomWipDescription6": "このアイテムを使用することにより、お客様はここに免責事項に同意し、その条件に同意するものとします。", + "create.tooltip.randomWipDescription7": "これはあなたのためではないかもしれません。 あれはどう??", + "create.tooltip.randomWipDescription8": "それを使ってすぐに決断したことに後悔してください。", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json new file mode 100644 index 000000000..ab309250f --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 352" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "가변 창고", + "block.create.adjustable_pulley": "덮힌 벨트 변속기", + "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", + "block.create.adjustable_repeater": "가변 리피터", + "block.create.analog_lever": "아날로그 레버", + "block.create.andesite_bricks": "안산안 벽돌", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "안산암 케이스", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "대야", + "block.create.belt": "컨베이어 벨트", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "벨트 감지기", + "block.create.belt_tunnel": "컨베이어 벨트 터널", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "황동 블럭", + "block.create.brass_casing": "황동 케이스", + "block.create.cart_assembler": "카트 조립기", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "시계 베어링", + "block.create.clutch": "클러치", + "block.create.cogwheel": "톱나버퀴", + "block.create.copper_block": "구리 블럭", + "block.create.copper_casing": "구리 케이스", + "block.create.copper_ore": "구리 광석", + "block.create.copper_shingles": "구리 판자", + "block.create.creative_crate": "청사진 대포 지원기", + "block.create.creative_motor": "모터", + "block.create.crushing_wheel": "분쇄 휠", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "뻐꾸기 시계", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "짙은 스코리아", + "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", + "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", + "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", + "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "배포기", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "섬록암 벽돌", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "백운암", + "block.create.dolomite_bricks": "백운암 벽돌", + "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", + "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", + "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "백운암 기둥", + "block.create.encased_belt": "덮힌 벨트", + "block.create.encased_fan": "덮힌 환풍기", + "block.create.encased_shaft": "덮힌 축", + "block.create.extractor": "추출기", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "플라이휠", + "block.create.framed_glass": "큰 유리", + "block.create.framed_glass_pane": "큰 유리판", + "block.create.funnel": "깔대기", + "block.create.furnace_engine": "화로 엔진", + "block.create.gabbro": "반려암", + "block.create.gabbro_bricks": "반려암 벽돌", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", + "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "기어박스", + "block.create.gearshift": "기어쉬프트", + "block.create.granite_bricks": "화강암 벽돌", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "핸드 크랭크", + "block.create.horizontal_framed_glass": "수평 유리", + "block.create.horizontal_framed_glass_pane": "수평 유리판", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "큰 톱니바퀴", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "석회모래", + "block.create.limestone": "석회암", + "block.create.limestone_bricks": "석회암 벽돌", + "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", + "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", + "block.create.limestone_bricks_wall": "석회암 벽돌 담장", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "석회암 기둥", + "block.create.linear_chassis": "직선 섀시", + "block.create.linked_extractor": "무선 추출기", + "block.create.linked_transposer": "무선 트랜스포저", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "베어링", + "block.create.mechanical_crafter": "기계식 조합기", + "block.create.mechanical_drill": "드릴", + "block.create.mechanical_harvester": "수확기", + "block.create.mechanical_mixer": "믹서", + "block.create.mechanical_piston": "기계식 피스톤", + "block.create.mechanical_piston_head": "기계식 피스톤 머리", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "압착기", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "톱", + "block.create.millstone": "맷돌", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "자연 스코리아", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "노즐", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "피스톤 연장 축", + "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "윤나는 백운암", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "윤나는 반려암", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "윤나는 석회암", + "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "윤나는 스코리아", + "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", + "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "이동식 저장소 인터페이스", + "block.create.powered_latch": "레드스톤 걸쇠", + "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", + "block.create.pulley_magnet": "도르래 자석", + "block.create.pulse_repeater": "펄스 리피터", + "block.create.radial_chassis": "원형 섀시", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "동형 감지기", + "block.create.redstone_link": "레드스톤 링크", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "밧줄", + "block.create.rope_pulley": "밧줄 도르래", + "block.create.rotation_speed_controller": "회전 속도 컨트롤러", + "block.create.schematic_table": "청사진 테이블", + "block.create.schematicannon": "청사진 대포", + "block.create.scoria": "스코리아", + "block.create.scoria_bricks": "스코리아 벽돌", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "스코리아 기둥", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "순서 기어쉬프트", + "block.create.shaft": "축", + "block.create.speedometer": "속도 계측기", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "끈끈이 기계식 피스톤", + "block.create.stockpile_switch": "수량 스위치", + "block.create.stressometer": "피로도 계측기", + "block.create.tiled_glass": "타일 유리", + "block.create.tiled_glass_pane": "타일 유리판", + "block.create.transposer": "트랜스포저", + "block.create.turntable": "돌림판", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "수직 유리", + "block.create.vertical_framed_glass_pane": "수직 유리판", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "물레방아", + "block.create.weathered_limestone": "풍화된 석회암", + "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", + "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", + "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", + "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", + "block.create.zinc_block": "아연 블럭", + "block.create.zinc_ore": "아연 광석", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "안산암 합금", + "item.create.attribute_filter": "속성 필터 틀", + "item.create.belt_connector": "기계식 벨트", + "item.create.brass_hand": "황동 손", + "item.create.brass_ingot": "황동 주괴", + "item.create.brass_nugget": "황동 조각", + "item.create.brass_sheet": "황동 판", + "item.create.chromatic_compound": "색채 혼합물", + "item.create.copper_ingot": "구리 주괴", + "item.create.copper_nugget": "구리 조각", + "item.create.copper_sheet": "구리 판", + "item.create.crafter_slot_cover": "작업대 슬롯 덮개", + "item.create.crushed_brass": "분쇄된 황동", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "산림파괴자", + "item.create.dough": "반죽", + "item.create.electron_tube": "전지 튜브", + "item.create.empty_schematic": "빈 청사진", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "필터 틀", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "엔지니어의 고글", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "휴대용 블럭발사기", + "item.create.handheld_worldshaper": "휴대용 세계편집기", + "item.create.integrated_circuit": "집적 회로", + "item.create.iron_sheet": "철 판", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "윤나는 장밋빛 석영", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "프로펠러", + "item.create.red_sand_paper": "붉은 사포", + "item.create.refined_radiance": "정제된 광채", + "item.create.rose_quartz": "장밋빛 석영", + "item.create.sand_paper": "사포", + "item.create.schematic": "청사진", + "item.create.schematic_and_quill": "청사진과 깃펜", + "item.create.shadow_steel": "그림자 강철", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "나무 비료", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "대칭의 지팡이", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "혼합기", + "item.create.wrench": "렌치", + "item.create.zinc_ingot": "아연 주괴", + "item.create.zinc_nugget": "아연 조각", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s이(가) 분쇄 휠에 의해 가공되었습니다", + "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람으로 타버렸습니다", + "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 타버렸습니다", + "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", + "death.attack.create.mechanical_saw": "%1$s이(가) 톱날에 반으로 갈라져 죽었습니다", + "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", + + "create.block.deployer.damage_source_name": "순수한 배포기", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "분쇄", + "create.recipe.milling": "맷돌질", + "create.recipe.splashing": "세척", + "create.recipe.splashing.fan": "물과 환풍기", + "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", + "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", + "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", + "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", + "create.recipe.pressing": "압착", + "create.recipe.mixing": "혼합", + "create.recipe.packing": "압축", + "create.recipe.mechanical_sawing": "제재", + "create.recipe.mechanical_crafting": "기계 조합", + "create.recipe.block_cutting": "블럭 절단", + "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", + "create.recipe.sandpaper_polishing": "사포 연마", + "create.recipe.mystery_conversion": "?", + "create.recipe.processing.catalyst": "촉매", + "create.recipe.processing.chance": "%1$s%% 확률", + "create.recipe.processing.chanceToReturn": "%1$s%% 확률로 반환", + + "create.generic.range": "범위", + "create.generic.radius": "반지름", + "create.generic.width": "폭", + "create.generic.height": "높이", + "create.generic.length": "길이", + "create.generic.speed": "속도", + "create.generic.delay": "딜레이", + "create.generic.unit.ticks": "틱", + "create.generic.unit.seconds": "초", + "create.generic.unit.minutes": "분", + "create.generic.unit.rpm": "RPM", + "create.generic.unit.stress": "su", + "create.generic.unit.degrees": "°", + + "create.action.scroll": "스크롤하세요", + "create.action.confirm": "확인", + "create.action.abort": "중단", + "create.action.saveToFile": "저장", + "create.action.discard": "삭제", + + "create.keyinfo.toolmenu": "메뉴 세부정보 보기", + "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "옵션을 선택하세요:", + "create.gui.scrollInput.scrollToModify": "스크롤로 수정하기", + "create.gui.scrollInput.scrollToAdjustAmount": "스크롤로 수량 조절하기", + "create.gui.scrollInput.scrollToSelect": "스크롤로 선택", + "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기", + "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", + "create.gui.toolmenu.cycle": "스크롤로 순환", + "create.gui.symmetryWand.mirrorType": "반사", + "create.gui.symmetryWand.orientation": "방위", + + "create.symmetry.mirror.plane": "거울 모드", + "create.symmetry.mirror.doublePlane": "사각형 모드", + "create.symmetry.mirror.triplePlane": "팔각형 모드", + + "create.orientation.orthogonal": "수직으로", + "create.orientation.diagonal": "대각선으로", + "create.orientation.horizontal": "수평으로", + "create.orientation.alongZ": "Z좌표를 따라", + "create.orientation.alongX": "X좌표를 따라", + + "create.gui.blockzapper.title": "휴대용 블럭발사기", + "create.gui.blockzapper.replaceMode": "대체 모드", + "create.gui.blockzapper.searchDiagonal": "대각선을 따라", + "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", + "create.gui.blockzapper.range": "범위", + "create.gui.blockzapper.needsUpgradedAmplifier": "업그레이드가 필요합니다", + "create.gui.blockzapper.patternSection": "패턴 설정", + "create.gui.blockzapper.pattern.solid": "원형", + "create.gui.blockzapper.pattern.checkered": "체스판", + "create.gui.blockzapper.pattern.inversecheckered": "반전된 체스판", + "create.gui.blockzapper.pattern.chance25": "램덤으로 25% 채우기", + "create.gui.blockzapper.pattern.chance50": "램덤으로 50% 채우기", + "create.gui.blockzapper.pattern.chance75": "랜덤으로 75% 채우기", + "create.gui.terrainzapper.title": "휴대용 세계편집기", + "create.gui.terrainzapper.placement": "설치방식", + "create.gui.terrainzapper.placement.merged": "선택한 블럭에", + "create.gui.terrainzapper.placement.attached": "선택한 블럭 옆에", + "create.gui.terrainzapper.placement.inserted": "선택한 블럭 안에", + "create.gui.terrainzapper.brush": "브러쉬", + "create.gui.terrainzapper.brush.cuboid": "정육면체", + "create.gui.terrainzapper.brush.sphere": "구", + "create.gui.terrainzapper.brush.cylinder": "원통", + "create.gui.terrainzapper.tool": "도구", + "create.gui.terrainzapper.tool.fill": "채우기", + "create.gui.terrainzapper.tool.place": "설치", + "create.gui.terrainzapper.tool.replace": "대체", + "create.gui.terrainzapper.tool.clear": "지우기", + "create.gui.terrainzapper.tool.overlay": "덮어씌우기", + "create.gui.terrainzapper.tool.flatten": "평탄화", + + "create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기", + + "create.blockzapper.usingBlock": "현재 블럭: %1$s", + "create.blockzapper.componentUpgrades": "부품 업그레이드:", + "create.blockzapper.component.body": "몸통", + "create.blockzapper.component.amplifier": "증폭기", + "create.blockzapper.component.accelerator": "가속기", + "create.blockzapper.component.retriever": "회수기", + "create.blockzapper.component.scope": "스코프", + "create.blockzapper.componentTier.none": "없음", + "create.blockzapper.componentTier.brass": "황동", + "create.blockzapper.componentTier.chromatic": "혼돈의 결정체", + "create.blockzapper.leftClickToSet": "좌클릭으로 블럭 설정하기", + "create.blockzapper.empty": "블럭이 없습니다!", + + "create.contraptions.movement_mode": "이동 설정", + "create.contraptions.movement_mode.move_place": "멈췄을때 항상 블럭 설치하기", + "create.contraptions.movement_mode.move_place_returned": "멈췄을떄 최초 위치에서만 블럭 설치하기", + "create.contraptions.movement_mode.move_never_place": "멈춰도 블럭 설치하지 않기", + "create.contraptions.movement_mode.rotate_place": "멈췄을때 항상 블럭 설치하기", + "create.contraptions.movement_mode.rotate_place_returned": "멈췄을떄 최초 각도에서만 블럭 설치하기", + "create.contraptions.movement_mode.rotate_never_place": "멈춰도 블럭 설치하지 않기", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "필터", + "create.logistics.firstFrequency": "주파수. #1", + "create.logistics.secondFrequency": "주파수. #2", + + "create.gui.goggles.generator_stats": "발전 상태:", + "create.gui.goggles.kinetic_stats": "가동 상태:", + "create.gui.goggles.at_current_speed": "현재 속도", + "create.gui.goggles.base_value": "기본 수치", + "create.gui.gauge.info_header": "게이지 정보:", + "create.gui.speedometer.title": "회전 속도", + "create.gui.stressometer.title": "네트워크 부하", + "create.gui.stressometer.capacity": "용량", + "create.gui.stressometer.overstressed": "과부하됨", + "create.gui.stressometer.no_rotation": "회전없음", + "create.gui.contraptions.not_fast_enough": "이 %1$s은(는) 작동하기에 _회전 속도_가 _부족합니다_", + "create.gui.contraptions.network_overstressed": "이 장치는 _과부하_되었습니다. _높은 피로도_ 용량을 가진 발전기를 추가로 설치하거나 장치 _속도_를 _늦추세요_.", + "create.gui.adjustable_crate.title": "가변 창고 ", + "create.gui.adjustable_crate.storageSpace": "저장 공간", + "create.gui.stockpile_switch.title": "수량 스위치", + "create.gui.stockpile_switch.lowerLimit": "최소 신호 유지수량", + "create.gui.stockpile_switch.upperLimit": "최초 신호 발동수량", + "create.gui.stockpile_switch.startAt": "다음 수량에 신호 주기", + "create.gui.stockpile_switch.startAbove": "다음 수량이상일떄 신호 주기", + "create.gui.stockpile_switch.stopAt": "다음 수량에 신호 멈추기", + "create.gui.stockpile_switch.stopBelow": "다음 수량이하일때 신호 멈추기", + "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", + "create.gui.sequenced_gearshift.instruction": "설명", + "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "각도", + "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", + "create.gui.sequenced_gearshift.instruction.wait": "정지", + "create.gui.sequenced_gearshift.instruction.wait.duration": "지속시간", + "create.gui.sequenced_gearshift.instruction.end": "마침", + "create.gui.sequenced_gearshift.speed": "속도, 방향", + "create.gui.sequenced_gearshift.speed.forward": "입력된 속도, 그대로 회전", + "create.gui.sequenced_gearshift.speed.forward_fast": "입력된 속도의 2배, 그대로 회전", + "create.gui.sequenced_gearshift.speed.back": "입력된 속도, 반대로 회전", + "create.gui.sequenced_gearshift.speed.back_fast": "입력된 속도의 2배, 반대로 회전", + + "create.schematicAndQuill.dimensions": "청사진 크기: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정됨.", + "create.schematicAndQuill.secondPos": "두번째 위치 지정됨.", + "create.schematicAndQuill.noTarget": "[Ctrl]을 눌러 공기 블럭을 선택하기.", + "create.schematicAndQuill.abort": "위치 제거됨.", + "create.schematicAndQuill.prompt": "청사진의 제목을 작성하기:", + "create.schematicAndQuill.fallbackName": "내 청사진", + "create.schematicAndQuill.saved": "%1$s로 저장됨", + + "create.schematic.invalid": "[!] 없는 아이템 - 청사진 테이블을 이용하세요", + "create.schematic.position": "위치", + "create.schematic.rotation": "회전", + "create.schematic.rotation.none": "없음", + "create.schematic.rotation.cw90": "90도 시계방향 회전", + "create.schematic.rotation.cw180": "180도 시계방향 회전", + "create.schematic.rotation.cw270": "270도 시계방향 회전", + "create.schematic.mirror": "거울", + "create.schematic.mirror.none": "없음", + "create.schematic.mirror.frontBack": "전-후", + "create.schematic.mirror.leftRight": "좌-우", + "create.schematic.tool.deploy": "전개", + "create.schematic.tool.move": "X/Z좌표 이동", + "create.schematic.tool.movey": "Y좌표 이동", + "create.schematic.tool.rotate": "회전", + "create.schematic.tool.print": "설치", + "create.schematic.tool.flip": "뒤집기", + "create.schematic.tool.deploy.description.0": "구조물을 해당 위치로 고정합니다.", + "create.schematic.tool.deploy.description.1": "땅에다 우클릭으로 설치합니다.", + "create.schematic.tool.deploy.description.2": "[Ctrl]을 눌러 플레이어-청사진의 거리를 설정합니다.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-스크롤로 거리를 조정합니다.", + "create.schematic.tool.move.description.0": "청사진을 수평 이동시킵니다.", + "create.schematic.tool.move.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "청사진을 수직 이동시킵니다.", + "create.schematic.tool.movey.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "청사진을 돌립니다.", + "create.schematic.tool.rotate.description.1": "[CTRL]-스크롤로 90도 돌립니다.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "구조물을 즉시 설치합니다.", + "create.schematic.tool.print.description.1": "[우클릭]으로 현재 지점에 설치를 허가합니다.", + "create.schematic.tool.print.description.2": "이 도구는 크리에이티브 모드 전용입니다.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "당신이 보는 면으로 청사진을 뒤집습니다.", + "create.schematic.tool.flip.description.1": "청사진을 보고 [CTRL]-스크롤로 뒤집습니다.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "동기화 중...", + "create.schematics.uploadTooLarge": "청사진이 너무 큽니다!.", + "create.schematics.maxAllowedSize": "최대 청사진 파일 크기는:", + + "create.gui.schematicTable.title": "청사진 테이블", + "create.gui.schematicTable.availableSchematics": "이용가능한 청사진", + "create.gui.schematicTable.noSchematics": "저장된 청사진 없음", + "create.gui.schematicTable.uploading": "업로딩 중...", + "create.gui.schematicTable.finished": "업로드 완료!", + "create.gui.schematicannon.title": "청사진 대포", + "create.gui.schematicannon.settingsTitle": "설치 설정", + "create.gui.schematicannon.listPrinter": "재료 목록 프린터", + "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "남은 발포 수 : %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", + "create.gui.schematicannon.optionEnabled": "현재 활성화 됨", + "create.gui.schematicannon.optionDisabled": "현재 비활성화 됨", + "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블럭을 대체하지 않음", + "create.gui.schematicannon.option.replaceWithSolid": "온전한 블럭을 재료로 대체함", + "create.gui.schematicannon.option.replaceWithAny": "온전한 블럭을 아무 재료로 대체함", + "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블럭을 공기로 채움", + "create.gui.schematicannon.option.skipMissing": "부족한 블럭을 무시하고 진행", + "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", + "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블럭을 찾지 못할 경우,건너뛰고 다음 블럭 설치를 진행합니다.", + "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블럭을 대체하지 않습니다.", + "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블럭을 대포가 가진 재료로 대체합니다.", + "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블럭을 대포가 가진 어떠한 재료로든 대체합니다.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "대포가 작업구역의 블럭들을 제거하고 공기로 채웁니다.", + + "create.schematicannon.status.idle": "휴식", + "create.schematicannon.status.ready": "준비됨", + "create.schematicannon.status.running": "가동 중", + "create.schematicannon.status.finished": "완료", + "create.schematicannon.status.paused": "멈춤", + "create.schematicannon.status.stopped": "중단됨", + "create.schematicannon.status.noGunpowder": "화약이 부족함", + "create.schematicannon.status.targetNotLoaded": "블럭이 준비되지 않음", + "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", + "create.schematicannon.status.searching": "검색 중", + "create.schematicannon.status.skipping": "건너뛰는 중", + "create.schematicannon.status.missingBlock": "부족한 블럭:", + "create.schematicannon.status.placing": "설치 중", + "create.schematicannon.status.clearing": "블럭을 제거하는 중", + "create.schematicannon.status.schematicInvalid": "청사진 없음", + "create.schematicannon.status.schematicNotPlaced": "청사진이 전개되지 않음", + "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", + + "create.gui.filter.blacklist": "블랙리스트", + "create.gui.filter.blacklist.description": "위 목록에 맞지않는 아이템이면 통과합니다. 빈 블랙리스트는 모두 통과시킵니다.", + "create.gui.filter.whitelist": "화이트리스트", + "create.gui.filter.whitelist.description": "위 목록에 맞는 아이템이면 통과합니다. 빈 화이트리스트는 모두 통과시키지 않습니다.", + "create.gui.filter.respect_data": "상세정보 일치", + "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", + "create.gui.filter.ignore_data": "상세정보 무시", + "create.gui.filter.ignore_data.description": "상세정보와 상관없이 아이템 종류만 일치한다면 통과시킵니다.", + + "create.item_attributes.placeable": "설치할 수 있음", + "create.item_attributes.consumable": "먹을 수 있음", + "create.item_attributes.smeltable": "구워질 수 있음", + "create.item_attributes.washable": "세척될 수 있음", + "create.item_attributes.smokable": "훈연될 수 있음", + "create.item_attributes.blastable": "용광로에 녹일 수 있음", + "create.item_attributes.enchanted": "마법부여됨", + "create.item_attributes.damaged": "내구도가 닮", + "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", + "create.item_attributes.not_stackable": "겹쳐질 수 없음", + "create.item_attributes.equipable": "장착할 수 있음", + "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있음", + "create.item_attributes.in_tag": "%1$s로 등록됨", + "create.item_attributes.in_item_group": "%1$s탭에 속함", + "create.item_attributes.added_by": "%1$s가 추가함", + + "create.gui.attribute_filter.no_selected_attributes": "속성이 선택되지 않음", + "create.gui.attribute_filter.selected_attributes": "선택된 속성:", + "create.gui.attribute_filter.whitelist_disjunctive": "화이트리스트 (최소)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "아이템이 선택된 속성 중 하나라도 가지고 있다면 통과시킵니다.", + "create.gui.attribute_filter.whitelist_conjunctive": "화이트리스트 (모두)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "아이템이 선택된 속성 모두를 가지고 있어야 통과시킵니다.", + "create.gui.attribute_filter.blacklist": "블랙리스트", + "create.gui.attribute_filter.blacklist.description": "아이템이 선택된 속성이 없다면 통과시킵니다.", + "create.gui.attribute_filter.add_reference_item": "참고할 아이템을 추가하기", + + "create.tooltip.holdKey": "[%1$s]를 눌러 설명보기", + "create.tooltip.holdKeyOrKey": "[%1$s] 또는 [%2$s]를 눌러 설명보기", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "회전속도 요구: %1$s", + "create.tooltip.speedRequirement.none": "없음", + "create.tooltip.speedRequirement.medium": "보통", + "create.tooltip.speedRequirement.high": "빠름", + "create.tooltip.stressImpact": "피로도 부하: %1$s", + "create.tooltip.stressImpact.low": "낮음", + "create.tooltip.stressImpact.medium": "보통", + "create.tooltip.stressImpact.high": "높음", + "create.tooltip.stressImpact.overstressed": "과부하됨", + "create.tooltip.capacityProvided": "피로도 용량: %1$s", + "create.tooltip.capacityProvided.low": "적음", + "create.tooltip.capacityProvided.medium": "보통", + "create.tooltip.capacityProvided.high": "큼", + "create.tooltip.capacityProvided.asGenerator": "(발전기로써)", + "create.tooltip.generationSpeed": "%1$s %2$s만큼 발전함", + "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "최소 재료 종류", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", + "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", + "create.subtitle.slime_added": "슬라임이 철퍽거림", + "create.subtitle.mechanical_press_activation": "압착기가 가동됨", + "create.subtitle.mechanical_press_item_break": "금속이 부딫힘", + "create.subtitle.blockzapper_place": "블럭이 순간이동됨", + "create.subtitle.blockzapper_confirm": "확인 효과음", + "create.subtitle.blockzapper_deny": "취소 효과음", + "create.subtitle.block_funnel_eat": "깔때기가 흡입함", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "When this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And When this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "When Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", + "item.create.wand_of_symmetry.tooltip.summary": "설정된 반사 모드에 따라 블럭 설치를 똑같이 재현합니다.", + "item.create.wand_of_symmetry.tooltip.condition1": "단축바에 있을 때", + "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", + "item.create.wand_of_symmetry.tooltip.control1": "땅에다 우클릭", + "item.create.wand_of_symmetry.tooltip.action1": "거울을 _생성하거나_ _옮깁니다_.", + "item.create.wand_of_symmetry.tooltip.control2": "공중에 우클릭", + "item.create.wand_of_symmetry.tooltip.action2": "활성화된 거을을 _제거합니다_.", + "item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.", + + "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", + "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블럭을 교체, 설치하는 놀라운 도구입니다.", + "item.create.handheld_blockzapper.tooltip.control1": "블럭을 보고 좌클릭", + "item.create.handheld_blockzapper.tooltip.action1": "이 도구로 설치할 블럭을 설정합니다.", + "item.create.handheld_blockzapper.tooltip.control2": "블럭을 보고 우클릭", + "item.create.handheld_blockzapper.tooltip.action2": "해당 위치에 설정된 블럭으로 설치하거나 교체합니다.", + "item.create.handheld_blockzapper.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _창_을 엽니다.", + + "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.", + "item.create.handheld_worldshaper.tooltip.control1": "블럭을 보고 좌클릭", + "item.create.handheld_worldshaper.tooltip.action1": "이 도구로 설치할 블럭을 설정합니다.", + "item.create.handheld_worldshaper.tooltip.control2": "블럭을 보고 우클릭", + "item.create.handheld_worldshaper.tooltip.action2": "해당 위치에 설정된 _브러쉬_ 와 _도구_를 적용합니다.", + "item.create.handheld_worldshaper.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _창_을 엽니다.", + + "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", + "item.create.tree_fertilizer.tooltip.summary": "일반적인 나무 종류들의 성장을 촉진시킬 강력한 미네랄의 혼합물입니다.", + "item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때", + "item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.", + + "item.create.deforester.tooltip": "DEFORESTER", + "item.create.deforester.tooltip.summary": "수 초 만에 나무를 쓰러뜨리는 _경이로운_ _도끼_입니다.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "FILTER", + "item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 정확하게 _조정_합니다.", + "item.create.filter.tooltip.condition1": "필터 슬롯에 있을 때", + "item.create.filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", + "item.create.filter.tooltip.condition2": "우클릭", + "item.create.filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", + + "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _속성_ 목록에 따라 정확하게 _조정_합니다.", + "item.create.attribute_filter.tooltip.condition1": "필터 슬롯에 있을 때", + "item.create.attribute_filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", + "item.create.attribute_filter.tooltip.condition2": "우클릭", + "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", + + "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", + "item.create.empty_schematic.tooltip.summary": "조합 재료로 쓰이거나 청사진 테이블에서 청사진을 불러올 때 쓰입니다.", + + "item.create.schematic.tooltip": "SCHEMATIC", + "item.create.schematic.tooltip.summary": "세계에 구조물을 홀로그램으로 불러와 지정하고 설치합니다. 지정된 홀로그램은 청사진 대포의 작업 영역이 됩니다.", + "item.create.schematic.tooltip.condition1": "들고 있을 떄", + "item.create.schematic.tooltip.behaviour1": "UI의 도구로 변경/설치 할 수 있습니다.", + "item.create.schematic.tooltip.control1": "웅크린 상태에서 우클릭", + "item.create.schematic.tooltip.action1": "정확한 _좌표_ 입력을 위한 창을 엽니다.", + + "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", + "item.create.schematic_and_quill.tooltip.summary": "세계에 있는 구조물을 .nbt 파일로 저장할 때 쓰입니다.", + "item.create.schematic_and_quill.tooltip.condition1": "1단계", + "item.create.schematic_and_quill.tooltip.behaviour1": "두 모서리를 우클릭으로 선택하세요.", + "item.create.schematic_and_quill.tooltip.condition2": "2단계", + "item.create.schematic_and_quill.tooltip.behaviour2": "면을 바라보고 _Ctrl-스크롤_하여 크기를 조정하세요. 우클릭을 다시 하면 저장됩니다.", + "item.create.schematic_and_quill.tooltip.control1": "우클릭", + "item.create.schematic_and_quill.tooltip.action1": "모서리 선택 / 저장 확인", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있을 때", + "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 이용하여 거리를 조정합니다.", + "item.create.schematic_and_quill.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.schematic_and_quill.tooltip.action3": "선택 영역을 리셋하고 _삭제_합니다.", + + "block.create.schematicannon.tooltip": "SCHEMATICANNON", + "block.create.schematicannon.tooltip.summary": "장착된 청사진을 바탕으로 블럭들을 발포합니다. 화약을 연료로 사용하고 주변 인벤토리 공간에서 아이템을 사용합니다.", + "block.create.schematicannon.tooltip.control1": "우클릭", + "block.create.schematicannon.tooltip.action1": "창을 엽니다.", + + "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", + "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_에 저장된 청사진을 불러옵니다.", + "block.create.schematic_table.tooltip.condition1": "빈 청사진을 넣을 때", + "block.create.schematic_table.tooltip.behaviour1": "Schematics 폴더에서 선택한 파일을 업로드합니다.", + + "block.create.shaft.tooltip": "SHAFT", + "block.create.shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다.", + + "block.create.cogwheel.tooltip": "COGWHEEL", + "block.create.cogwheel.tooltip.summary": " _일직선_이나 _옆_ _톱니바퀴_로 _회전_을 _전달_합니다.", + + "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", + "block.create.large_cogwheel.tooltip.summary": "큰 톱니바퀴입니다. 작은 톱니바퀴와 맞물렸을때, _회전 속도_가 _변합니다_.", + + "block.create.encased_shaft.tooltip": "ENCASED SHAFT", + "block.create.encased_shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다. _벽을_ _넘어_ 회전을 보낼 때 유용합니다.", + + "block.create.gearbox.tooltip": "GEARBOX", + "block.create.gearbox.tooltip.summary": "_전후좌우_ / _상하전후_로 회전을 보냅니다. 한번 더 조합해서 설정을 바꿀 수 있습니다.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "GEARSHIFT", + "block.create.gearshift.tooltip.summary": "연결된 축의 회전 방향을 _변경_합니다.", + "block.create.gearshift.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.gearshift.tooltip.behaviour1": "_출력_ 회전 방향을 _반전_시킵니다.", + + "block.create.clutch.tooltip": "CLUTCH", + "block.create.clutch.tooltip.summary": "연결된 축의 회전을 끄고 킬 수 있습니다.", + "block.create.clutch.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.clutch.tooltip.behaviour1": "출력 방향 회전을 멈춥니다.", + + "block.create.encased_belt.tooltip": "ENCASED_BELT", + "block.create.encased_belt.tooltip.summary": "연결된 다른 _덮힌 벨트_에 회전을 _연결_합니다.", + "block.create.encased_belt.tooltip.condition1": "축에 연결 되었을 때", + "block.create.encased_belt.tooltip.behaviour1": "연결된 축, 기어, 장치들은 _같은_ _회전_ _속도_와 _방향_을 가집니다. 같은 방향으로 _맞대지_ _않아도_ _됩니다_.", + + "block.create.adjustable_pulley.tooltip": "ANALOG BELT PULLEY", + "block.create.adjustable_pulley.tooltip.summary": "덮힌 벨트와 같은 역할을 가집니다. 또한 입/출력 부분에 설치하고 레드스톤 신호 세기에 따라 _회전_ _속도_를 _조정_할 수 있습니다.", + "block.create.adjustable_pulley.tooltip.condition1": "레드스톤 신호 설정", + "block.create.adjustable_pulley.tooltip.behaviour1": "_입력_ 부분에 설치하면 출력 회전 속도를 _낮추고_ (최대 0.5배), _출력_ 부분에 설치하면 출력 회전 속도를 _증가시킵니다_ (최대 2배).", + + "item.create.belt_connector.tooltip": "BELT CONNECTOR", + "item.create.belt_connector.tooltip.summary": "두 개 이상의 _축_을 벨트로 연결할 수 있습니다. 연결된 축들은 _모두_ _같은_ _속도_와 _방향_을 가집니다. 벨트는 _아이템_이나 _엔티티_를 _옮길_ _수_ _있습니다_.", + "item.create.belt_connector.tooltip.control1": "축에다 우클릭", + "item.create.belt_connector.tooltip.action1": "첫번째 벨트 끝부분을 설정합니다. 두번째 축은 반드시 _수평_이나 _수직_, _대각선_ 방향에 있는 축에 연결해야합니다.", + "item.create.belt_connector.tooltip.control2": "웅크린 상태에서 우클릭", + "item.create.belt_connector.tooltip.action2": "첫번째 벨트 설정을 초기화합니다.", + + "item.create.goggles.tooltip": "GOGGLES", + "item.create.goggles.tooltip.summary": "장치 정보를 착용자의 시야에 띄어주는 안경입니다.", + "item.create.goggles.tooltip.condition1": "장착했을 때", + "item.create.goggles.tooltip.behaviour1": "해당 장치의 _속도_, _피로도_, _용량_을 레벨에 따라 에 따라 색상 UI를 보여줍니다.", + "item.create.goggles.tooltip.condition2": "계측기를 바라볼 때", + "item.create.goggles.tooltip.behaviour2": "계측기가 연결된 네트워크의 _속도_나 _스트레스_의 자세한 정보를 보여줍니다.", + + "item.create.wrench.tooltip": "WRENCH", + "item.create.wrench.tooltip.summary": "장치 구성에 유용한 도구입니다. 장치를 _회전_, _설정_, _해체_하는 데 쓰입니다.", + "item.create.wrench.tooltip.control1": "장치에 우클릭", + "item.create.wrench.tooltip.action1": "사용자가 바라보는 _면으로_ 혹은 _반대로_ 장치를 돌립니다.", + "item.create.wrench.tooltip.control2": "웅크린 상태에서 우클릭", + "item.create.wrench.tooltip.action2": "_장치_를 _해체_하고 _즉시_ _인벤토리_로 넣습니다.", + + "block.create.creative_motor.tooltip": "CREATIVE MOTOR", + "block.create.creative_motor.tooltip.summary": "회전 속도를 _조정_할 수 있는 장치입니다.", + + "block.create.water_wheel.tooltip": "WATER WHEEL", + "block.create.water_wheel.tooltip.summary": "인접한 _물의_ _흐름_에서 얻은 회전을 제공합니다.", + + "block.create.encased_fan.tooltip": "ENCASED FAN", + "block.create.encased_fan.tooltip.summary": "회전력을 바람으로 전환합니다. 다양한 용도로 사용 가능합니다.", + "block.create.encased_fan.tooltip.condition1": "레드스톤 신호를 받을 때", + "block.create.encased_fan.tooltip.behaviour1": "장치 아래의 _열_을 _회전력_으로 _바꾸어_ 제공합니다. 날개가 아래를 바라보아야 합니다.", + "block.create.encased_fan.tooltip.condition2": "돌려질 때", + "block.create.encased_fan.tooltip.behaviour2": "들어오는 회적 속도에 따라 엔티티를 밀거나 당깁니다.", + "block.create.encased_fan.tooltip.condition3": "특정 블럭을 통해 바람을 보낼 때", + "block.create.encased_fan.tooltip.behaviour3": "공기 흐름에 _액체_ 혹은 _불꽃_ 효과가 _추가_됩니다. 이는 아이템을 _공정_하는데 쓰일 수 있습니다.", + + "block.create.nozzle.tooltip": "NOZZLE", + "block.create.nozzle.tooltip.summary": "덮힌 환풍기 _앞_에 붙여 환풍기의 효과를 _전방_으로 _확대_합니다.", + + "block.create.hand_crank.tooltip": "HAND CRANK", + "block.create.hand_crank.tooltip.summary": "간단한 회전력의 원천입니다. 플레이어의 _상호작용_이 필요합니다.", + "block.create.hand_crank.tooltip.condition1": "사용될 때", + "block.create.hand_crank.tooltip.behaviour1": "연결된 장치에 _회전력_을 _제공_합니다. 웅크리면 _반대로_ 회전시킵니다.", + + "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.", + "block.create.cuckoo_clock.tooltip.condition1": "회전할 때", + "block.create.cuckoo_clock.tooltip.behaviour1": "현재 시각을 보여주고 하루에 두 번 울립니다. 점심과 플레이어가 바로 잘 수 있는 저녁에 울립니다.", + + "block.create.turntable.tooltip": "TURNTABLE", + "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 일으킵니다.", + + "block.create.millstone.tooltip": "MILLSTONE", + "block.create.millstone.tooltip.summary": "투입된 _재료_를 _가는_ 데 좋은 장치입니다. 측면 톱니바퀴나 바닥에 축을 이어 작동합니다. 결과물은 직접 빼내야 합니다.", + "block.create.millstone.tooltip.condition1": "회전 할 때", + "block.create.millstone.tooltip.behaviour1": "옆이나 위에서 투입된 아이템을 _맷돌질_합니다.", + "block.create.millstone.tooltip.condition2": "우클릭할때", + "block.create.millstone.tooltip.behaviour2": "결과물을 직접 꺼냅니다.", + + "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", + "block.create.crushing_wheel.tooltip.summary": "모든 것을 _부숴버리는_ 큰 바퀴입니다.", + "block.create.crushing_wheel.tooltip.condition1": "다른 분쇄 휠과 붙어있을 때", + "block.create.crushing_wheel.tooltip.behaviour1": "다양한 것을 _분쇄_하는 분쇄 기계를 형성합니다. 휠의 이빨이 _같은_ _속력_으로, _반대_ _방향_으로 맞물려야합니다.", + + "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", + "block.create.mechanical_press.tooltip.summary": "아래있는 아이템을 _눌러버리는_ 힘센 피스톤입니다. _지속적인_ _회전력_이 필요합니다.", + "block.create.mechanical_press.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.mechanical_press.tooltip.behaviour1": "_아래 있는_ 아이템을 누르기 시작합니다.", + "block.create.mechanical_press.tooltip.condition2": "컨베이어 벨트 위에 있을 때", + "block.create.mechanical_press.tooltip.behaviour2": "_자동으로_ 벨트 위를 지나가는 아이템을 누릅니다.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "BASIN", + "block.create.basin.tooltip.summary": "믹서나 압착기와 같이 쓰이는 간편한 _아이템_ _저장소_입니다. 레드스톤 비교기와 호환됩니다.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", + "block.create.mechanical_mixer.tooltip.summary": "아래있는 아이템을 조합할 혼합기입니다. _지속적인_ _회전력_과 한 칸 아래에 _대야_가 필요합니다.", + "block.create.mechanical_mixer.tooltip.condition1": "대야 위에 있을 때", + "block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 아이템이 준비될 때마다 대야 안의 아이템을 섞기 시작합니다.", + "block.create.mechanical_mixer.tooltip.condition2": "렌치를 사용할 때", + "block.create.mechanical_mixer.tooltip.behaviour2": "필요한 조합법의 _최소_ _재료_ _종류_를 설정합니다. 이는 적은 재료로 _원치_ _않은_ _조합법_이 작동되는 것을 막습니다.", + + "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", + "block.create.mechanical_crafter.tooltip.summary": "모든 조합법을 _자동화_할 장치입니다. 조합법대로 여러개를 _격자_로 설치하고, 화살표를 돌려 _한_ _곳으로_ _모이게_ 설정해야합니다.", + "block.create.mechanical_crafter.tooltip.condition1": "회전할 때", + "block.create.mechanical_crafter.tooltip.behaviour1": "모든 조합칸에 있는 아이템들을 조합하기 시작합니다.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "전면을 렌치로 조정할 때", + "block.create.mechanical_crafter.tooltip.action1": "각 기계식 조합기의 아이템 이동 방향을 설정합니다. 모든 조합기의 방향은 _하나의_ _최종_ _조합기_로 이동해야하며, 최종 조합기는 조합기 _바깥으로_ 아이템을 운송해야합니다.", + "block.create.mechanical_crafter.tooltip.control2": "측면/후면에서 렌치로 조정할 때", + "block.create.mechanical_crafter.tooltip.action2": "인접한 조합기와 입력 공간을 _연결_합니다. 이를 통해 일일히 아이템을 넣는 노력을 줄일 수 있습니다.", + + "block.create.furnace_engine.tooltip": "FURNACE ENGINE", + "block.create.furnace_engine.tooltip.summary": "_화로의_ _작동_을 필요로 하는 강력한 회전 동력원입니다.", + "block.create.furnace_engine.tooltip.condition1": "작동하는 화로에 붙였을 때", + "block.create.furnace_engine.tooltip.behaviour1": "붙어있는(한칸 띄어져있는) _플라이휠_에 동력을 공급합니다. _용광로_는 _두_ _배_의 화력을 냅니다.", + + "block.create.flywheel.tooltip": "FLYWHEEL", + "block.create.flywheel.tooltip.summary": "붙어있는 _화로_ _엔진_에서 생산된 힘을 안정시키고 _동력화_하는 거대한 금속 바퀴입니다. 화로 엔진으로부터 _한_ _칸_ _떨어져_ 설치해야 합니다.", + "block.create.flywheel.tooltip.condition1": "작동하는 엔진에 붙었을 때", + "block.create.flywheel.tooltip.behaviour1": "엔진의 힘에 따라 연결된 장치에 _회전력_을 제공합니다.", + + "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", + "block.create.portable_storage_interface.tooltip.summary": "움직이는 피스톤, 베어링, 수레, 밧줄 도르래의 인벤토리에서 _아이템을_ _교환하는_ 휴대용 장치입니다.", + "block.create.portable_storage_interface.tooltip.condition1": "움직일 때", + "block.create.portable_storage_interface.tooltip.behaviour1": "고정된 트랜스포저의 _방향에_ _따라_ 아이템을 _주거나_ _받습니다_. 아이템이 이동하는 동안 움직이는 기기는 _멈춥니다_.", + + "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", + "block.create.rotation_speed_controller.tooltip.summary": "해당 톱니바퀴의 속도를 _변경_할 수 있는 컨트롤러입니다.", + "block.create.rotation_speed_controller.tooltip.condition1": "큰 톱니바퀴와 연결되었을 때", + "block.create.rotation_speed_controller.tooltip.behaviour1": "들어오는 회전력을 받아, 대상의 속도를 변경합니다. _큰_ _톱니바퀴_가 컨트롤러 위에 있어야합니다.", + + "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", + "block.create.mechanical_piston.tooltip.summary": "피스톤의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", + "block.create.mechanical_piston.tooltip.condition1": "회전될 때", + "block.create.mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", + + "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", + "block.create.sticky_mechanical_piston.tooltip.summary": "끈끈이 피스톤의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "회전될 때", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", + + "block.create.piston_extension_pole.tooltip": "PISTON POLE", + "block.create.piston_extension_pole.tooltip.summary": "기계식 피스톤의 _사거리_를 늘려줍니다.", + "block.create.piston_extension_pole.tooltip.condition1": "기계식 피스톤에 연결했을 때", + "block.create.piston_extension_pole.tooltip.behaviour1": "피스톤의 사거리를 한 블럭 늘립니다.", + + "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", + "block.create.mechanical_bearing.tooltip.summary": "큰 구조물을 _회전_시키거나 _바람으로부터_ 회전력을 얻습니다.", + "block.create.mechanical_bearing.tooltip.condition1": "회전될 때", + "block.create.mechanical_bearing.tooltip.behaviour1": "연결된 블럭들을 돌리기 시작합니다. _섀시_나 _슬라임_ _블럭_을 이용해 더 많은 블럭을 움직이세요.", + "block.create.mechanical_bearing.tooltip.condition2": "레드스톤 신호를 받을 때", + "block.create.mechanical_bearing.tooltip.behaviour2": "붙어있는 구조물의 회전을 이용하여 회전력을 제공합니다. 구조물은 _날개_에 적합한 블럭이 포함되어야합니다. (현재는 _아무_ _양털_이나 가능합니다).", + + "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", + "block.create.clockwork_bearing.tooltip.summary": "현재 _인게임_ _시간_을 알려주는 _시침_, _분침_을 돌리는 업그레이드된 베어링입니다.", + "block.create.clockwork_bearing.tooltip.condition1": "회전될 때", + "block.create.clockwork_bearing.tooltip.behaviour1": "현재 시간에 맞춰 연결된 구조물을 _시침_으로써 돌리기 시작합니다. _다른_ _종류의_ _섀시_가 있다면, _분침_처럼 돌립니다.", + + "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", + "block.create.sequenced_gearshift.tooltip.summary": "연속으로 5개의 회전 명령을 내릴 수 있는 _프로그램이_ _가능한_ 장치입니다. 이것으로 베어링, 피스톤, 도르래의 움직임과 타이밍을 정할 수 있습니다. 빠른 속력에는 부정확해질 수 있습니다.", + "block.create.sequenced_gearshift.tooltip.condition1": "레드스톤 신호를 받을 때", + "block.create.sequenced_gearshift.tooltip.behaviour1": "입력 속도에 따른 프로그램된 명령들을 수행하기 시작합니다.", + "block.create.sequenced_gearshift.tooltip.condition2": "우클릭했을 때", + "block.create.sequenced_gearshift.tooltip.behaviour2": "설정 창을 엽니다.", + + "block.create.cart_assembler.tooltip": "CART ASSEMBLER", + "block.create.cart_assembler.tooltip.summary": "지나가는 _광산_ _수레_에 연결된 구조물을 붙입니다.", + "block.create.cart_assembler.tooltip.condition1": "레드스톤 신호를 받을 때", + "block.create.cart_assembler.tooltip.behaviour1": "지나가는 광산 수레에 장착된 구조물을 분리시키고 조립기에 다시 설치합니다.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "ROPE PULLEY", + "block.create.rope_pulley.tooltip.summary": "_수직으로_ 붙은 구조물을 움직입니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", + "block.create.rope_pulley.tooltip.condition1": "회전될 때", + "block.create.rope_pulley.tooltip.behaviour1": "연결된 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도, 방향에 따라 다릅니다.", + + "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", + "block.create.linear_chassis.tooltip.summary": "연결된 구조물의 이동을 위한 베이스 블럭입니다.", + "block.create.linear_chassis.tooltip.condition1": "움직일 때", + "block.create.linear_chassis.tooltip.behaviour1": "섀시의 _기둥_ _방향_으로 붙어있는 모든 블럭들을 같은 방향으로 옮깁니다. 블럭들은 섀시가 끈끈할 때만 당겨집니다 ([Ctrl]를 누르세요).", + "block.create.linear_chassis.tooltip.condition2": "렌치로 조정할 때", + "block.create.linear_chassis.tooltip.behaviour2": "대상 섀시의 사거리를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", + "block.create.linear_chassis.tooltip.control1": "슬라임 볼로 우클릭", + "block.create.linear_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 섀시는 연결된 _모든_ _블럭_을 움직이는 방향에 상관없이 당깁니다.", + + "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", + "block.create.radial_chassis.tooltip.summary": "연결된 구조물의 이동을 위한 베이스 블럭입니다.", + "block.create.radial_chassis.tooltip.condition1": "움직일 때", + "block.create.radial_chassis.tooltip.behaviour1": "섀시의 _원_ _방향_으로 붙어있는 모든 블럭들을 같은 방향으로 옮깁니다. 블럭들이 섀시가 끈끈한 면에 붙어있을 때만 움직입니다 ([Ctrl]를 누르세요).", + "block.create.radial_chassis.tooltip.condition2": "렌치로 조정할 때", + "block.create.radial_chassis.tooltip.behaviour2": "대상 섀시의 사거리를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", + "block.create.radial_chassis.tooltip.control1": "슬라임 볼로 우클릭", + "block.create.radial_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 끈끈한 면에 붙은 _모든_ _블럭_을 움직이게 합니다", + + "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", + "block.create.mechanical_drill.tooltip.summary": "블럭을 _파괴하는_ 데 적합한 장치입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.mechanical_drill.tooltip.condition1": "회전될 때", + "block.create.mechanical_drill.tooltip.behaviour1": "고정되어 블럭을 부숩니다. 또한 해당영역의 엔티티에게 피해를 줍니다.", + "block.create.mechanical_drill.tooltip.condition2": "움직일 때", + "block.create.mechanical_drill.tooltip.behaviour2": "드릴이 부딫히는 모든 블럭을 부숩니다.", + + "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", + "block.create.mechanical_harvester.tooltip.summary": "중간 크기의 작물 자동화에 적합한 _작물_ _수확기_입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.mechanical_harvester.tooltip.condition1": "움직일 때", + "block.create.mechanical_harvester.tooltip.behaviour1": "칼날에 닿는 모두 자란 작물을 수확하고 최초 성장 상태로 변경합니다.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", + "block.create.mechanical_saw.tooltip.summary": "효율적인 _벌목_과 블럭을 _제재_하는데 적합합니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.mechanical_saw.tooltip.condition1": "위를 바라볼 때", + "block.create.mechanical_saw.tooltip.behaviour1": "_제재_와 _석재_ _절단_ 조합법을 떨어진/투입된 아이템에 적용합니다. 결과물이 여러 종류고 필터가 적용이 되지 않았다면, 결과물은 _목록_ _순서_대로 배출됩니다.", + "block.create.mechanical_saw.tooltip.condition2": "옆을 바라볼 때", + "block.create.mechanical_saw.tooltip.behaviour2": "앞에 있는 원목을 자릅니다. 나무의 원목이라면, 나무가 쓰러지면서 아이템을 떨굽니다.", + "block.create.mechanical_saw.tooltip.condition3": "움직일 때", + "block.create.mechanical_saw.tooltip.behaviour3": "톱이 만나는 모든 나무를 벱니다.", + + "block.create.stockpile_switch.tooltip": "stockpile_switch", + "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_에 _여유_ _공간_을 기반으로 레드스톤 신호를 보냅니다.", + "block.create.stockpile_switch.tooltip.condition1": "_최소_ _경계_보다 낮을 경우", + "block.create.stockpile_switch.tooltip.behaviour1": "레드스톤 신호를 보내지 않습니다.", + "block.create.stockpile_switch.tooltip.condition2": "_최초_ _경계_보다 높을 경우", + "block.create.stockpile_switch.tooltip.behaviour2": "최소 경계에 다시 도달할 때까지 레드스톤 신호를 보냅니다.", + "block.create.stockpile_switch.tooltip.control1": "우클릭했을 때", + "block.create.stockpile_switch.tooltip.action1": "설정 창을 엽니다.", + + "block.create.redstone_link.tooltip": "REDSTONE LINK", + "block.create.redstone_link.tooltip.summary": "_무선_ 레드스톤 단말기입니다. 아무 아이템으로 두 개의 _주파수_를 설정할 수 있습니다. 통신거리는 제한되어 있지만, 그래도 충분히 넓습니다.", + "block.create.redstone_link.tooltip.condition1": "신호를 줄 때", + "block.create.redstone_link.tooltip.behaviour1": "같은 주파주의 다른 단말기에서 레드스톤 신호를 받습니다.", + "block.create.redstone_link.tooltip.control1": "아이템을 들고 우클릭", + "block.create.redstone_link.tooltip.action1": "그 아이템으로 주파수를 설정합니다. 주파수는 최대 두가지 아이템 조합으로 이룰 수 있습니다.", + "block.create.redstone_link.tooltip.control2": "웅크린 상태에서 우클릭", + "block.create.redstone_link.tooltip.action2": "수신/발신 모드로 바꿉니다.", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", + "block.create.redstone_contact.tooltip.summary": "_한_ _쌍_이 _서로_ _바라보고_ 있을 때 레드스톤 신호를 보냅니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.redstone_contact.tooltip.condition1": "다른 동형 감지기를 맞댈 때", + "block.create.redstone_contact.tooltip.behaviour1": "레드스톤 신호를 보냅니다.", + "block.create.redstone_contact.tooltip.condition2": "움직일 때", + "block.create.redstone_contact.tooltip.behaviour2": "지나가는 모든 고정된 동형 감지기를 작동시킵니다.", + + "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", + "block.create.adjustable_crate.tooltip.summary": "이 저장소는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", + "block.create.adjustable_crate.tooltip.control1": "우클릭 했을 때", + "block.create.adjustable_crate.tooltip.action1": "창을 엽니다.", + + "block.create.creative_crate.tooltip": "CREATIVE CRATE", + "block.create.creative_crate.tooltip.summary": "옆 _청사진 대포_에 _무한한_ 재료를 공급합니다.", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "EXTRACTOR", + "block.create.extractor.tooltip.summary": "_연결된_ _인벤토리_로부터 아이템을 꺼내 땅에 떨어뜨립니다. 공간이 비지 않았다면 아이템을 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다.", + "block.create.extractor.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", + "block.create.extractor.tooltip.condition2": "움직이는 벨트에 연결되었을 때", + "block.create.extractor.tooltip.behaviour2": "추출기는 _황동_ _케이스_가 장착된 _벨트_에서 아이템을 빼낼 수 있습니다. 추출기가 막혔을 때는, 벨트가 _멈춥니다_.", + "block.create.extractor.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.extractor.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 추출기는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + + "block.create.transposer.tooltip": "TRANSPOSER", + "block.create.transposer.tooltip.summary": "연결된 인벤토리로부터 대상 인벤토리로 아이템을 _바로_ _이동_시킵니다. 개수/필터를 설정 가능합니다.", + "block.create.transposer.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.transposer.tooltip.behaviour1": "트랜스포저를 _멈춥니다_.", + "block.create.transposer.tooltip.condition2": "움직이는 벨트에 연결되었을 때", + "block.create.transposer.tooltip.behaviour2": "트랜스포저는 _황동_ _케이스_가 장착된 _벨트_에서 아이템을 빼낼 수 있습니다. 추출기가 막혔을 때는, 벨트가 _멈춥니다_.", + "block.create.transposer.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.transposer.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 트랜스포저는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + + "block.create.deployer.tooltip": "DEPLOYER", + "block.create.deployer.tooltip.summary": " _때리고_, _사용하고_ _작동시킵니다_. 이 장치는 _플레이어_를 가능한 한 _흉내내려할_ _것입니다_. 주변 인벤토리에서 아이템을 쓰거나 넣을 수 있습니다. 필터로 사용하는 아이템을 설정할 수 있습니다.", + "block.create.deployer.tooltip.condition1": "회전될 때", + "block.create.deployer.tooltip.behaviour1": "팔을 늘려 한 칸앞에 있는 공간에서 행동합니다.", + "block.create.deployer.tooltip.condition2": "렌치로 우클릭", + "block.create.deployer.tooltip.behaviour2": "_펀치_ _모드_로 바꿉니다. 이 상태에서는 배포기가 아이템을 가지고 _부수거나_ _때리려고_ 할 것입니다.", + + "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", + "block.create.linked_extractor.tooltip.summary": "_연결된_ _인벤토리_로부터 아이템을 꺼내 땅에 떨어뜨립니다. 공간이 비지 않았다면 아이템을 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다. 레드스톤 링크를 통해 _무선으로_ 컨트롤 될 수 있습니다.", + "block.create.linked_extractor.tooltip.condition1": "레드스톤 링크 신호를 받았을 때", + "block.create.linked_extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", + "block.create.linked_extractor.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.linked_extractor.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 추출기는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + "block.create.linked_extractor.tooltip.control2": "아이템을 들고 주파수 슬롯을 우클릭", + "block.create.linked_extractor.tooltip.action2": "그 아이템으로 주파수를 설정합니다. _같은_ _주파수_의 레드스톤 링크가 신호를 보낸다면, 추출기는 멈출 것입니다.", + + "block.create.linked_transposer.tooltip": "LINKED TRANSPOSER", + "block.create.linked_transposer.tooltip.summary": "연결된 인벤토리로부터 대상 인벤토리로 아이템을 _바로_ _이동_시킵니다. 개수/필터를 설정 가능합니다. 레드스톤 링크를 통해 _무선으로_ 컨트롤 될 수 있습니다.", + "block.create.linked_transposer.tooltip.condition1": "레드스톤 링크 신호를 받았을 때", + "block.create.linked_transposer.tooltip.behaviour1": "트랜스포저를 _멈춥니다_.", + "block.create.linked_transposer.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.linked_transposer.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 트랜스포저는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + "block.create.linked_transposer.tooltip.control2": "아이템을 들고 주파수 슬롯을 우클릭", + "block.create.linked_transposer.tooltip.action2": "그 아이템으로 주파수를 설정합니다. _같은_ _주파수_의 레드스톤 링크가 신호를 보낸다면, 트랜스포저는 멈출 것입니다.", + + "block.create.funnel.tooltip": "FUNNEL", + "block.create.funnel.tooltip.summary": "들어오는 아이템을 가능하면 _연결된_ _인벤토리_에 넣습니다. _벨트_ _위_의 아이템도 끌어올 수 있습니다.", + "block.create.funnel.tooltip.condition1": "움직이는 벨트위에 있을 때", + "block.create.funnel.tooltip.behaviour1": "_벨트_의 _중간_, _끝부분_에서 아이템을 끌어올 수 있습니다. 중간에 설치된 깔때기가 _정체_되었을 땐, 벨트가 _멈춥니다_.", + + "block.create.belt_tunnel.tooltip": "BELT TUNNEL", + "block.create.belt_tunnel.tooltip.summary": "벽을 통과하는 컨베이어 벨트를 _꾸미는_ 옵션 중 하나입니다. 벨트는 _황동_ _케이스_가 장착되어 있어야합니다. 터널은 다른 벨트 라인의 터널과 _동기화_되어 모든 터널이 _같은_ _타이밍_에 아이템을 들어오게 만들 수 있습니다. [Ctrl를 누르세요]", + "block.create.belt_tunnel.tooltip.control1": "전면에 렌치로 우클릭", + "block.create.belt_tunnel.tooltip.action1": "동기화 모드를 킵니다. 동기화된 터널은 다른 동기화된 터널들이 아이템을 인식할 때까지 아이템을 통과시키지 않습니다.", + "block.create.belt_tunnel.tooltip.control2": "륵면을 우클릭", + "block.create.belt_tunnel.tooltip.action2": "터널 측면에 창문이 있다면 창문 셔터를 조절합니다.", + + "block.create.brass_casing.tooltip": "BRASS CASING", + "block.create.brass_casing.tooltip.summary": "다양한 용도가 있는 단단한 기계 케이스입니다. 꾸미는 용도로도 사용 가능합니다.", + "block.create.brass_casing.tooltip.condition1": "컨베이어 벨트에 사용할 때", + "block.create.brass_casing.tooltip.behaviour1": "벨트 밑 부분에 황동 케이스를 씌웁니다. 이 상태에선 _벨트_ _터널_, _추출기_, _깔대기_, _트랜스포저_를 벨트 _측면_, _바닥면_에 연결할 수 있습니다.", + + "block.create.belt_observer.tooltip": "BELT OBSERVER", + "block.create.belt_observer.tooltip.summary": "컨베이어 벨트위를 _지나가는_ _엔티티_나 _아이템_을 감지합니다. 렌치를 이용해 _감지시_ _행동_을 바꿉니다. 필터를 설정할 수 있습니다.", + "block.create.belt_observer.tooltip.condition1": "감지 모드", + "block.create.belt_observer.tooltip.behaviour1": "감지기 앞에 아이템이 _지나가는_ _동안_ 레드스톤 신호를 줍니다.", + "block.create.belt_observer.tooltip.condition2": "펄스 모드", + "block.create.belt_observer.tooltip.behaviour2": "감지기 앞에 아이템이 _지나갈_ _때_ 레드스톤 신호를 _1틱_ 줍니다.", + "block.create.belt_observer.tooltip.condition3": "사출 모드", + "block.create.belt_observer.tooltip.behaviour3": "옆으로 아이템을 _밀어냅니다_. 벨트나 밀어내는 공간이 _정체_되어 있다면, 아이템은 감지기 앞에서 _멈춥니다_.", + "block.create.belt_observer.tooltip.condition4": "분리 모드", + "block.create.belt_observer.tooltip.behaviour4": "아이템의 _수_를 _반으로_ _나누어_ 반은 벨트 옆으로 내보냅니다.", + + "block.create.pulse_repeater.tooltip": "PULSE REPEATER", + "block.create.pulse_repeater.tooltip.summary": "_1틱_의 레드스톤 신호를 보내는 간단한 리피터입니다.", + + "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", + "block.create.adjustable_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 업그레이드된 _레드스톤_ _리피터_입니다.", + + "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", + "block.create.adjustable_pulse_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 _펄스_ _리피터_입니다.", + + "block.create.analog_lever.tooltip": "ANALOG LEVER", + "block.create.analog_lever.tooltip.summary": "레드스톤 _신호_ _세기_를 자세히 _조정_할 수 있는 레버입니다.", + + "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", + "block.create.powered_toggle_latch.tooltip.summary": "레드스톤 신호로 끄고 켤 수 있는 _레버_입니다.", + + "block.create.powered_latch.tooltip": "POWERED LATCH", + "block.create.powered_latch.tooltip.summary": "레드스톤 신호로 컨트롤 할 수 있는 _레버_입니다. 후면에서 들어오는 신호는 레버를 키고, 측면에서 들어오는 신호는 레버를 초기화합니다.", + + "block.create.speedometer.tooltip": "SPEEDOMETER", + "block.create.speedometer.tooltip.summary": "연결된 장치의 _회전_ _속도_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", + "block.create.speedometer.tooltip.condition1": "회전될 때", + "block.create.speedometer.tooltip.behaviour1": "속도에 따라 색깔을 나타냅니다. _초록색_은 _느림_을, _파랑색_은 _보통_, _보라색_은 _빠른_ _속도_를 나타냅니다. 몇몇 장치들은 작동하기 위해 일정수준 이상의 속도가 필요합니다.", + + "block.create.stressometer.tooltip": "STRESSOMETER", + "block.create.stressometer.tooltip.summary": "연결된 네트워크의 _전체_ _피로도_ _수치_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", + "block.create.stressometer.tooltip.condition1": "회전될 때", + "block.create.stressometer.tooltip.behaviour1": "피로도에 따라 색깔을 나타냅니다. _과부화된_ _네트워크_는 움직이는 것을 멈춥니다. 과부하는 네트워크에 _추가_ _피로도_ _용량_을 가진 장치를 설치하면 해결됩니다. ", + + "tool.create.sand_paper.tooltip": "SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "재료를 _사포질_ 하기위한 거친 종이입니다. 배포기를 통해 자동으로 쓰일 수 있습니다.", + "tool.create.sand_paper.tooltip.condition1": "사용할 때", + "tool.create.sand_paper.tooltip.behaviour1": "_반대_ _손_에 있는, 혹은 _바닥에_ _있는_ 아이템을 사포질 합니다.", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", + + "item.create.shadow_steel.tooltip": "SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", + + "item.create.crafter_slot_cover.tooltip": "SLOT COVER", + "item.create.crafter_slot_cover.tooltip.summary": "기계 조합기에서 _빈_ _슬롯_을 표시하기 위해 쓰입니다. 조합기들은 정사각형 모양을 형성할 필요는 없습니다. 재료가 서로 대각선인 조합법이있을 때 유용합니다.", + + "create.tooltip.wip": "WIP", + "create.tooltip.workInProgress": "Work in progress!", + "create.tooltip.randomWipDescription0": "Please keep this item away from children.", + "create.tooltip.randomWipDescription1": "A baby panda dies every time you use this item. Every. Time.", + "create.tooltip.randomWipDescription2": "Use at your own risk.", + "create.tooltip.randomWipDescription3": "This is not the item you are looking for, *finger-wiggles* please disperse.", + "create.tooltip.randomWipDescription4": "This item will self-destruct in 10 seconds. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Believe me, it's useless.", + "create.tooltip.randomWipDescription6": "By using this item, you hereby consent to our disclaimer and agree to its terms.", + "create.tooltip.randomWipDescription7": "This one maybe isn't for you. What about that one?", + "create.tooltip.randomWipDescription8": "Use it and regret your decision immediately.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json new file mode 100644 index 000000000..905a97f91 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 702" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "FlexKrat", + "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", + "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", + "block.create.adjustable_repeater": "FlexSterker", + "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_bricks": "Andesietstenen", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "Bekken", + "block.create.belt": "Mechanische Transportband", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "Transportband Observeerder", + "block.create.belt_tunnel": "Transportband Tunnel", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "UNLOCALIZED: Brass Block", + "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.cart_assembler": "Kar Assembler", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", + "block.create.clutch": "Koppeling", + "block.create.cogwheel": "Tandwiel", + "block.create.copper_block": "UNLOCALIZED: Copper Block", + "block.create.copper_casing": "UNLOCALIZED: Copper Casing", + "block.create.copper_ore": "UNLOCALIZED: Copper Ore", + "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", + "block.create.creative_crate": "Bouwtekeningkannon Creatiefeerder", + "block.create.creative_motor": "UNLOCALIZED: Creative Motor", + "block.create.crushing_wheel": "Verpulveraar", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", + "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", + "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", + "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", + "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "UNLOCALIZED: Deployer", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "Diorietstenen", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "Dolomiet", + "block.create.dolomite_bricks": "Dolomietstenen", + "block.create.dolomite_bricks_slab": "Dolomietstenen Plaat", + "block.create.dolomite_bricks_stairs": "Dolomietstenen Trap", + "block.create.dolomite_bricks_wall": "Dolomietstenen Muur", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "Dolomiet Pilaar", + "block.create.encased_belt": "Omhulsde Transportband", + "block.create.encased_fan": "Omhulsde Ventilator", + "block.create.encased_shaft": "Omhulsde Drijfas", + "block.create.extractor": "Extractor", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "UNLOCALIZED: Flywheel", + "block.create.framed_glass": "Ingelijst Glas", + "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", + "block.create.funnel": "Transportband Trechter", + "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", + "block.create.gabbro": "Gabbro", + "block.create.gabbro_bricks": "Gabbrostenen", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "Gabbrostenen Trap", + "block.create.gabbro_bricks_wall": "Gabbrostenen Muur", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "Versnellingsbak", + "block.create.gearshift": "Versnellingspook", + "block.create.granite_bricks": "Granietstenen", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", + "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "Groot Tandwiel", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "Kalkzand", + "block.create.limestone": "Kalksteen", + "block.create.limestone_bricks": "Kalksteenstenen", + "block.create.limestone_bricks_slab": "Kalksteenstenen Plaat", + "block.create.limestone_bricks_stairs": "Kalksteenstenen Trap", + "block.create.limestone_bricks_wall": "Kalksteenstenen Muur", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "Kalksteen Pillar", + "block.create.linear_chassis": "Lineaar Frame", + "block.create.linked_extractor": "Gelinkte Extractor", + "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "Mechanische Lager", + "block.create.mechanical_crafter": "Mechanische Werkbank", + "block.create.mechanical_drill": "Mechanische Boor", + "block.create.mechanical_harvester": "Mechanische Oogster", + "block.create.mechanical_mixer": "Mechanische Menger", + "block.create.mechanical_piston": "Mechanische Kleefzuiger", + "block.create.mechanical_piston_head": "Mechanische Zuigerhoofd", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "Mechanische Pers", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "Mechanische Zaag", + "block.create.millstone": "UNLOCALIZED: Millstone", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "UNLOCALIZED: Nozzle", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "Zuiger Verlengpaal", + "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "Gepolijste Dolomiet", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "Gepolijste Gabbro", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "Gepolijste Kalksteen", + "block.create.polished_limestone_slab": "Gepolijste Kalksteen Plaat", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", + "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "Gepolijste Verweerde Kalksteen", + "block.create.polished_weathered_limestone_slab": "Gepolijste Verweerde Kalksteen Plaat", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", + "block.create.powered_latch": "UNLOCALIZED: Powered Latch", + "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", + "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", + "block.create.pulse_repeater": "Pulse Versterker", + "block.create.radial_chassis": "Rotation Frame", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "Redstone redstone_contact", + "block.create.redstone_link": "Redstone Brug", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "UNLOCALIZED: Rope", + "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", + "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", + "block.create.schematic_table": "Bouwtekening Tafel", + "block.create.schematicannon": "Bouwtekeningkannon", + "block.create.scoria": "UNLOCALIZED: Scoria", + "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", + "block.create.shaft": "Drijfas", + "block.create.speedometer": "Snelheidsmeter", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "Mechanische Zuiger", + "block.create.stockpile_switch": "Voorraad Schakelaar", + "block.create.stressometer": "Stressmeter", + "block.create.tiled_glass": "Getegeld Glas", + "block.create.tiled_glass_pane": "Getegeld Glazen Paneel", + "block.create.transposer": "UNLOCALIZED: Transposer", + "block.create.turntable": "Draaischijf", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", + "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "Waterrad", + "block.create.weathered_limestone": "Verweerde Kalksteen", + "block.create.weathered_limestone_bricks": "Verweerde Kalksteenstenen", + "block.create.weathered_limestone_bricks_slab": "Verweerde Kalksteenstenen Plaat", + "block.create.weathered_limestone_bricks_stairs": "Verweerde Kalksteenstenen Trap", + "block.create.weathered_limestone_bricks_wall": "Verweerde Kalksteenstenen Muur", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "Verweerde Kalksteen Pilaar", + "block.create.zinc_block": "UNLOCALIZED: Zinc Block", + "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", + "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", + "item.create.belt_connector": "Mechanische Transportband", + "item.create.brass_hand": "UNLOCALIZED: Brass Hand", + "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", + "item.create.brass_nugget": "Brons klompje", + "item.create.brass_sheet": "Brons Platen", + "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.copper_ingot": "Koperstaaf", + "item.create.copper_nugget": "Koper klompje", + "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", + "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_brass": "Gemalen Brons", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "Ontbosser", + "item.create.dough": "Deeg", + "item.create.electron_tube": "UNLOCALIZED: Electron Tube", + "item.create.empty_schematic": "Lege bouwtekening", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "Filter", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "Ingenieur's Bril", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "Blokzapper", + "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", + "item.create.iron_sheet": "IJzeren Platen", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "Propeller", + "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", + "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", + "item.create.rose_quartz": "Roze Kwarts", + "item.create.sand_paper": "UNLOCALIZED: Sand Paper", + "item.create.schematic": "Bouwtekening", + "item.create.schematic_and_quill": "Bouwtekening en Veer", + "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "Boom mest", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "Symmetrie Staf", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "UNLOCALIZED: Whisk", + "item.create.wrench": "Moersleutel", + "item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot", + "item.create.zinc_nugget": "Zink Nugget", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s is verwerkd door verpulverende wielen", + "death.attack.create.fan_fire": "%1$s is verbrand door hete lucht", + "death.attack.create.fan_lava": "%1$s is verbrand door een lava ventilator", + "death.attack.create.mechanical_drill": "%1$s is gespietst door een mechanische boor", + "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", + "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", + + "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "Verpulveren", + "create.recipe.milling": "UNLOCALIZED: Milling", + "create.recipe.splashing": "Bulk Wassen", + "create.recipe.splashing.fan": "Ventilator achter vloeiend water", + "create.recipe.smoking_via_fan": "Bulk Rook", + "create.recipe.smoking_via_fan.fan": "Ventilator achter vuur", + "create.recipe.blasting_via_fan": "Bulk Smelten", + "create.recipe.blasting_via_fan.fan": ""Ventilator achter Lava", + "create.recipe.pressing": "Persen", + "create.recipe.mixing": "Mengen", + "create.recipe.packing": "Compressen", + "create.recipe.mechanical_sawing": "Zagen", + "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", + "create.recipe.block_cutting": "Blok Zagen", + "create.recipe.blockzapper_upgrade": "Blokzapper", + "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", + "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", + "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", + "create.recipe.processing.chance": "%1$s%% Kans", + "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", + + "create.generic.range": "Omvang", + "create.generic.radius": "Radius", + "create.generic.width": "UNLOCALIZED: Width", + "create.generic.height": "UNLOCALIZED: Height", + "create.generic.length": "UNLOCALIZED: Length", + "create.generic.speed": "Snelheid", + "create.generic.delay": "Vertraging", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Seconden", + "create.generic.unit.minutes": "Minuten", + "create.generic.unit.rpm": "UNLOCALIZED: RPM", + "create.generic.unit.stress": "UNLOCALIZED: su", + "create.generic.unit.degrees": "UNLOCALIZED: °", + + "create.action.scroll": "Scroll", + "create.action.confirm": "Bevestigen", + "create.action.abort": "Afbreken", + "create.action.saveToFile": "Opslaan", + "create.action.discard": "Weggooien", + + "create.keyinfo.toolmenu": "Focus Gereedschap Menu", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Kies een optie:", + "create.gui.scrollInput.scrollToModify": "Scroll om aan te passen", + "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", + "create.gui.scrollInput.scrollToSelect": "Scroll om te selecteren", + "create.gui.scrollInput.shiftScrollsFaster": "Shift om sneller te Scrollen", + "create.gui.toolmenu.focusKey": "Hou [%1$s] ingedrukt om te Focusen", + "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", + "create.gui.symmetryWand.mirrorType": "Spiegelen", + "create.gui.symmetryWand.orientation": "Orientatie", + + "create.symmetry.mirror.plane": "Spiegel één keer", + "create.symmetry.mirror.doublePlane": "Rechthoekig", + "create.symmetry.mirror.triplePlane": "Achthoekig", + + "create.orientation.orthogonal": "Orthogonaal", + "create.orientation.diagonal": "Diagonaal", + "create.orientation.horizontal": "Horizontaal", + "create.orientation.alongZ": "Langs Z-as", + "create.orientation.alongX": "Langs X-as", + + "create.gui.blockzapper.title": "Blokzapper", + "create.gui.blockzapper.replaceMode": "Vervang Modus", + "create.gui.blockzapper.searchDiagonal": "Volg Diagonalen", + "create.gui.blockzapper.searchFuzzy": "Negeer materiaal granzen", + "create.gui.blockzapper.range": "Verspreid bereik", + "create.gui.blockzapper.needsUpgradedAmplifier": "Benodigd een opgewaardeerde versterker", + "create.gui.blockzapper.patternSection": "Patronen", + "create.gui.blockzapper.pattern.solid": "Vast", + "create.gui.blockzapper.pattern.checkered": "Schaakbord", + "create.gui.blockzapper.pattern.inversecheckered": "Omgekeerd Schaakbord", + "create.gui.blockzapper.pattern.chance25": "25% Gedraaid", + "create.gui.blockzapper.pattern.chance50": "50% Gedraaid", + "create.gui.blockzapper.pattern.chance75": "75% Gedraaid", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", + "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", + "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", + "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", + "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", + "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", + "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", + "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", + "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", + "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", + "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", + "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", + "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", + "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", + + "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + + "create.blockzapper.usingBlock": "Gebruikt: %1$s", + "create.blockzapper.componentUpgrades": "Component Upgrades:", + "create.blockzapper.component.body": "Lichaam", + "create.blockzapper.component.amplifier": "Versterker", + "create.blockzapper.component.accelerator": "Accelerator", + "create.blockzapper.component.retriever": "Ontvanger", + "create.blockzapper.component.scope": "Omvang", + "create.blockzapper.componentTier.none": "Geen", + "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", + "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", + "create.blockzapper.leftClickToSet": "Klik met links op een Blok om een Materiaal te kiezen", + "create.blockzapper.empty": "De Blokken zijn op!", + + "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", + "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", + "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", + "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", + "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "Filter", + "create.logistics.firstFrequency": "Freq. #1", + "create.logistics.secondFrequency": "Freq. #2", + + "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", + "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", + "create.gui.goggles.at_current_speed": "UNLOCALIZED: At current Speed", + "create.gui.goggles.base_value": "UNLOCALIZED: Base Value", + "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", + "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", + "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", + "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", + "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", + "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", + "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "FlexKrat", + "create.gui.adjustable_crate.storageSpace": "Opslagruimte", + "create.gui.stockpile_switch.title": "Voorraad Schakelaar", + "create.gui.stockpile_switch.lowerLimit": "Lagere drempel", + "create.gui.stockpile_switch.upperLimit": "Hogere drempel", + "create.gui.stockpile_switch.startAt": "Start Signaal op", + "create.gui.stockpile_switch.startAbove": "Start Signaal boven", + "create.gui.stockpile_switch.stopAt": "Stop Signaal op", + "create.gui.stockpile_switch.stopBelow": "Stop Signaal onder", + "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", + "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", + "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", + "create.gui.sequenced_gearshift.instruction.wait": "UNLOCALIZED: Wait", + "create.gui.sequenced_gearshift.instruction.wait.duration": "UNLOCALIZED: Duration", + "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", + "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", + "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", + "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", + "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", + + "create.schematicAndQuill.dimensions": "Bouwtekening Groote: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Eerste positie ingesteld.", + "create.schematicAndQuill.secondPos": "Tweede positie ingesteld.", + "create.schematicAndQuill.noTarget": "Houd [Ctrl] ingedrukt om een Lucht block te kiezen.", + "create.schematicAndQuill.abort": "Keuze verwijderd.", + "create.schematicAndQuill.prompt": "Vul een naam in voor de bouwtekening:", + "create.schematicAndQuill.fallbackName": "Mijn Bouwtekening", + "create.schematicAndQuill.saved": "Opgeslagen als %1$s", + + "create.schematic.invalid": "[!] Invalide object - Gebruik inplaats hiervan de Bouwtekening Tafel", + "create.schematic.position": "Positie", + "create.schematic.rotation": "Rotatie", + "create.schematic.rotation.none": "Geen", + "create.schematic.rotation.cw90": "Met de klok mee 90", + "create.schematic.rotation.cw180": "Met de klok mee 180", + "create.schematic.rotation.cw270": "Met de klok mee 270", + "create.schematic.mirror": "Spiegel", + "create.schematic.mirror.none": "Geen", + "create.schematic.mirror.frontBack": "Voor naar achter", + "create.schematic.mirror.leftRight": "Links naar rechts", + "create.schematic.tool.deploy": "Inzetten", + "create.schematic.tool.move": "Verplaats XZ", + "create.schematic.tool.movey": "Verplaats Y", + "create.schematic.tool.rotate": "Draai", + "create.schematic.tool.print": "Print", + "create.schematic.tool.flip": "Omdraaien", + "create.schematic.tool.deploy.description.0": "Verplaatst de structuur naar een locatie.", + "create.schematic.tool.deploy.description.1": "Klik met rechts op de grond om te plaatsen.", + "create.schematic.tool.deploy.description.2": "Houd [Ctrl] ingedrukt om op een afstand te selecteren.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Scroll om de afstand te veranderen.", + "create.schematic.tool.move.description.0": "Verschuift de Bouwtekening Horizontaal", + "create.schematic.tool.move.description.1": "Wijs naar de Bouwtekening and [CTRL]-Scroll om hem te duwen.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Verschuift de Bouwtekening Verticaal", + "create.schematic.tool.movey.description.1": "[CTRL]-Scroll om het omhoog/omlaag te bewegen", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Draait de Bouwtekening om zijn midden..", + "create.schematic.tool.rotate.description.1": "[CTRL]-Scroll om te draaien met 90 graden", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Plaats onmiddelijk de structuur in de wereld.", + "create.schematic.tool.print.description.1": "Klik met rechts om het plaatsen in de wereld te bevestigen.", + "create.schematic.tool.print.description.2": "Deze tool is alleen voor de creatieve modus.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Hiermee draait u de Bouwtekening langs het gezicht dat u selecteert.", + "create.schematic.tool.flip.description.1": "Wijs naar de Bouwtekening en [CTRL]-Scroll om hem om te draaien.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Synchroniseren...", + "create.schematics.uploadTooLarge": "Jouw Bouwtekening is te groot!", + "create.schematics.maxAllowedSize": "De maximum toegestane grote van een Bouwtekings bestand is:", + + "create.gui.schematicTable.title": "Bouwtekening Tafel", + "create.gui.schematicTable.availableSchematics": "Beschikbare Bouwtekeningen", + "create.gui.schematicTable.noSchematics": "Geen Bouwtekeningen opgeslagen", + "create.gui.schematicTable.uploading": "Uploaden...", + "create.gui.schematicTable.finished": "Upload Klaar!", + "create.gui.schematicannon.title": "Bouwtekeningkannon", + "create.gui.schematicannon.settingsTitle": "Plaatsing Instellingen", + "create.gui.schematicannon.listPrinter": "Materiaal lijst Printer", + "create.gui.schematicannon.gunpowderLevel": "Buskruit op %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Schoten over: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Met backup: %1$s", + "create.gui.schematicannon.optionEnabled": "Momenteel Ingeschakeld", + "create.gui.schematicannon.optionDisabled": "Momenteel Uitgeschakeld", + "create.gui.schematicannon.option.dontReplaceSolid": "Niet vaste blokken vervangen", + "create.gui.schematicannon.option.replaceWithSolid": "Vervang vast met vast", + "create.gui.schematicannon.option.replaceWithAny": "Vervang vast met alles", + "create.gui.schematicannon.option.replaceWithEmpty": "Vervang vast met leeg", + "create.gui.schematicannon.option.skipMissing": "Sla missende blokken over", + "create.gui.schematicannon.option.skipTileEntities": "Bescherm Tile Entities", + "create.gui.schematicannon.option.skipMissing.description": "Als het Bouwtekeningkannon niet een geschikt blok kan vinden om te plaatsen gaat hij door bij de volgende locatie.", + "create.gui.schematicannon.option.skipTileEntities.description": "Het Bouwtekeningkannon probeert blokken met data zoals kisten te vermijden", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Het Bouwtekeningkannon zal nooit vaste blokken in zijn gebied vervangen, alleen niet-vaste blokken en lucht", + "create.gui.schematicannon.option.replaceWithSolid.description": "Het Bouwtekeningkannon zal alleen vaste blokken in zijn gebied veranderen, als de bouwtekening een vast blok bevat op zijn locatie.", + "create.gui.schematicannon.option.replaceWithAny.description": "Het Bouwtekeningkannon zal vaste blokken in zijn gebied vervangen als, de bouwtekening een blok op bevat op zijn locatie.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Het Bouwtekeningkannon zal alle blokken in zijn gebied vervangen, inclusief blokken vervangen door lucht.", + + "create.schematicannon.status.idle": "IJdel", + "create.schematicannon.status.ready": "Paraat", + "create.schematicannon.status.running": "Draaiend", + "create.schematicannon.status.finished": "Klaar", + "create.schematicannon.status.paused": "Gepauzeerd", + "create.schematicannon.status.stopped": "Gestopt", + "create.schematicannon.status.noGunpowder": "Buskruit op", + "create.schematicannon.status.targetNotLoaded": "Blok is niet geladen", + "create.schematicannon.status.targetOutsideRange": "Doel is te ver weg", + "create.schematicannon.status.searching": "Aan het zoeken", + "create.schematicannon.status.skipping": "Aan het overslaan", + "create.schematicannon.status.missingBlock": "Missende Blok:", + "create.schematicannon.status.placing": "Aan het plaatsen", + "create.schematicannon.status.clearing": "Blokken aan het verwijderen", + "create.schematicannon.status.schematicInvalid": "Bouwtekening niet valide", + "create.schematicannon.status.schematicNotPlaced": "Bouwtekening niet geplaatst", + "create.schematicannon.status.schematicExpired": "Bouwtekening verlopen", + + "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", + "create.gui.filter.whitelist": "UNLOCALIZED: Whitelist", + "create.gui.filter.whitelist.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Whitelist rejects everything.", + "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", + "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", + "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", + "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", + + "create.item_attributes.placeable": "UNLOCALIZED: is placeable", + "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", + "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", + "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", + "create.item_attributes.damaged": "UNLOCALIZED: is damaged", + "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", + "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", + "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", + "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", + "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", + "create.item_attributes.in_item_group": "UNLOCALIZED: belongs to %1$s", + "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", + "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", + "create.gui.attribute_filter.whitelist_disjunctive": "UNLOCALIZED: Whitelist (Any)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", + "create.gui.attribute_filter.whitelist_conjunctive": "UNLOCALIZED: Whitelist (All)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", + "create.gui.attribute_filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.attribute_filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", + "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", + + "create.tooltip.holdKey": "Houd [%1$s] ingedrukt", + "create.tooltip.holdKeyOrKey": "Houd [%1$s] of [%2$s] ingedrukt", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Snelheid eis: %1$s", + "create.tooltip.speedRequirement.none": "Geen", + "create.tooltip.speedRequirement.medium": "Gemiddeld", + "create.tooltip.speedRequirement.high": "Snel", + "create.tooltip.stressImpact": "Stress Impact: %1$s", + "create.tooltip.stressImpact.low": "Laag", + "create.tooltip.stressImpact.medium": "Gemiddeld", + "create.tooltip.stressImpact.high": "Hoog", + "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", + "create.tooltip.capacityProvided": "Stress Capacity: %1$s", + "create.tooltip.capacityProvided.low": "Klein", + "create.tooltip.capacityProvided.medium": "Gemiddeld", + "create.tooltip.capacityProvided.high": "Groot", + "create.tooltip.capacityProvided.asGenerator": "UNLOCALIZED: (As Generator)", + "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", + "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", + + "create.command.killTPSCommand": "UNLOCALIZED: killtps", + "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", + + "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon shoots", + "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon finishes", + "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press activates", + "create.subtitle.mechanical_press_item_break": "UNLOCALIZED: Metal clanks", + "create.subtitle.blockzapper_place": "UNLOCALIZED: Blocks zap into place", + "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative Ding", + "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining Boop", + "create.subtitle.block_funnel_eat": "UNLOCALIZED: Funnel CHOMPS", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "When this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And When this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "When Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "item.create.wand_of_symmetry.tooltip": "SYMMETRIE STAF", + "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt uw blokplaatsing perfect over de geconfigureerde vlakken.", + "item.create.wand_of_symmetry.tooltip.condition1": "Waneer in de Actiebalk", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Blijft actief", + "item.create.wand_of_symmetry.tooltip.control1": "R-Klik op de Grond", + "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", + "item.create.wand_of_symmetry.tooltip.control2": "R-Klik in de Lucht", + "item.create.wand_of_symmetry.tooltip.action2": "_Verwijderd_ de actieve Spiegel", + "item.create.wand_of_symmetry.tooltip.control3": "R-Klik terwijl je Sluipt", + "item.create.wand_of_symmetry.tooltip.action3": "Opent de _Configuratie_ _Interface_", + + "item.create.handheld_blockzapper.tooltip": "BLOKZAPPER", + "item.create.handheld_blockzapper.tooltip.summary": "Ongebruikelijke gadget voor het plaatsen en verwissel van blokken over een afstand", + "item.create.handheld_blockzapper.tooltip.control1": "L-Klik op een Blok", + "item.create.handheld_blockzapper.tooltip.action1": "Zet het doelwit blok om naar het geselecteerde blok.", + "item.create.handheld_blockzapper.tooltip.control2": "R-Klik op een Blok", + "item.create.handheld_blockzapper.tooltip.action2": "_Plaatst_ of _Vervangt_ het doelwit blok.", + "item.create.handheld_blockzapper.tooltip.control3": "R-Click while Sneaking", + "item.create.handheld_blockzapper.tooltip.action3": "Opent de _Configuratie_ _Interface_", + + "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", + "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", + "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", + "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", + "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", + "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", + "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", + + "item.create.tree_fertilizer.tooltip": "BOOM MEST", + "item.create.tree_fertilizer.tooltip.summary": "Een krachtige combinatie van mineralen geschikt voor de meest voorkomende typen bomen.", + "item.create.tree_fertilizer.tooltip.condition1": "Wanneer gebruikt op Kiemplanten", + "item.create.tree_fertilizer.tooltip.behaviour1": "Groeit bomen onafhankelijk van beschikbare ruimte", + + "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", + "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ _items_ or several _nested_ _filters_.", + "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ item _attributes_ and _categories_.", + "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.empty_schematic.tooltip": "LEGE BOUWTEKENING", + "item.create.empty_schematic.tooltip.summary": "Bruikbaar als ingredient in recepten en voor het schrijven aan de _BOUWTEKENING_ _TAFEL._", + + "item.create.schematic.tooltip": "BOUWTEKENING", + "item.create.schematic.tooltip.summary": "Bevat een structuur die gepositioneerd en geplaatst van worden in de wereld. Positineer het Hologram als gewilt en gebruik een _BOUWTEKENINGKANNON_ om het te bouwen.", + "item.create.schematic.tooltip.condition1": "Wanneer ingedrukt", + "item.create.schematic.tooltip.behaviour1": "Kan gepositioneerd worden met de knoppen op het scherm", + "item.create.schematic.tooltip.control1": "R-Klik terwijl je sluipt", + "item.create.schematic.tooltip.action1": "Opent een_Interface_ voor het invullen van preciese _coordinaten._", + + "item.create.schematic_and_quill.tooltip": "BOUWTEKENING EN VEER", + "item.create.schematic_and_quill.tooltip.summary": "Bruikbaar om een contructie in je wereld op te slaan naar een .nbt bestand.", + "item.create.schematic_and_quill.tooltip.condition1": "Stap 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Selecteer twee hoekpunten met R-Klik", + "item.create.schematic_and_quill.tooltip.condition2": "Stap 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ op de zijden om de groote aan te passen. R-Klik nogmaals om op te slaan.", + "item.create.schematic_and_quill.tooltip.control1": "R-Klik", + "item.create.schematic_and_quill.tooltip.action1": "Selecteer een hoekpunt / opslaan bevestigen", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl Ingedrukt houden", + "item.create.schematic_and_quill.tooltip.action2": "Selecteer punten in _de lucht._ _Scroll_ om de afstand aan te passen.", + "item.create.schematic_and_quill.tooltip.control3": "R-Klik terwijl je sluipt", + "item.create.schematic_and_quill.tooltip.action3": "_Resets_ en verwijderd de selectie.", + + "block.create.schematicannon.tooltip": "BOUWTEKENINGKANNON", + "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", + "block.create.schematicannon.tooltip.control1": "Wanneer R-Geklikt", + "block.create.schematicannon.tooltip.action1": "Opent de _Interface_", + + "block.create.schematic_table.tooltip": "BOUWTEKENING TAFEL", + "block.create.schematic_table.tooltip.summary": "Schrijft opgeslagen bouwtekeningen op een _Lege_ _Bouwtekening_", + "block.create.schematic_table.tooltip.condition1": "Wanneer voorzien van een lege Bouwtekening", + "block.create.schematic_table.tooltip.behaviour1": "Uploadt een gekozen bestand uit uw bouwtekeningenmap", + + "block.create.shaft.tooltip": "DRIJFAS", + "block.create.shaft.tooltip.summary": "_Geeft_ _Rotatie_ _door_ in een rechte lijn.", + + "block.create.cogwheel.tooltip": "TANDWIEL", + "block.create.cogwheel.tooltip.summary": "Geeft _Rotatie_ door in een rechte lijn, en naar naastgelegen _Tandwielen._", + + "block.create.large_cogwheel.tooltip": "GROOT TANDWIEL", + "block.create.large_cogwheel.tooltip.summary": "Een grotere versie van het _TANDWIEL,_ waardoor _veranderingen_ in _Rotatiesnelheid_ mogelijk zijn indien verbonden met zijn kleinere tegenhanger.", + + "block.create.encased_shaft.tooltip": "OMHULSDE DRIJFAS", + "block.create.encased_shaft.tooltip.summary": "_Geeft_ _Rotatie_ _door_ in een rechte lijn. Geschikt voor het doorgeven van rotatie door muren.", + + "block.create.gearbox.tooltip": "VERSNELLINGSBAK", + "block.create.gearbox.tooltip.summary": "_Geeft_ _Rotatie_ _door_ in _Vier_ _richtingen._ Keert rechte verbindingen om.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "VERSNELLINGSPOOK", + "block.create.gearshift.tooltip.summary": "Een verstelbare _rotatie_ _schakelaar_ voor aangesloten drijfassen.", + "block.create.gearshift.tooltip.condition1": "Wanneer voorzien van kracht", + "block.create.gearshift.tooltip.behaviour1": "_Keert_ de binnenkomende rotatie.", + + "block.create.clutch.tooltip": "KOPPELING", + "block.create.clutch.tooltip.summary": "Een verstelbare _rotatie_ _schakelaar_ for connected shafts.", + "block.create.clutch.tooltip.condition1": "Wanneer voorzien van kracht", + "block.create.clutch.tooltip.behaviour1": "_Stopt_ met het doorgeven van kracht aan de andere kant.", + + "block.create.encased_belt.tooltip": "OMHULSDE TRANSPORTBAND", + "block.create.encased_belt.tooltip.summary": "_Geeft_ _Rotatie_ _door_ aan zichzelf en andere _Omhulsde_ _Transportbanden._", + "block.create.encased_belt.tooltip.condition1": "Wanneer aangesloten", + "block.create.encased_belt.tooltip.behaviour1": "Aangesloten blokken zullen precies _dezelfde_ _Rotatiesnelheid_ en _richting_ hebben. Ze hoeven niet dezelfde kant op te staan.", + + "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", + "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", + "block.create.adjustable_pulley.tooltip.condition1": "UNLOCALIZED: Redstone Control", + "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", + + "item.create.belt_connector.tooltip": "TRANSPORTBAND CONNECTOR", + "item.create.belt_connector.tooltip.summary": "Verbind twee _Drijfassen_ met een _Mechanische_ _Transportband._ Verbonden drijfassen zullen dezelfde rotatiesneheid en richting hebben. De Transportband kan ook Entiteiten transporteren", + "item.create.belt_connector.tooltip.control1": "R-Klikken op drijfas", + "item.create.belt_connector.tooltip.action1": "Selecteer de Drijfas als een katrol van de transportband. Beide geselecteerde drijfassen moeten _verticaal_, _horizontaal_ of _diagonaal_ in _één_ _lijn_ staan in de richting van de Transportbanden.", + "item.create.belt_connector.tooltip.control2": "R-Klikken terwijl je sluipt", + "item.create.belt_connector.tooltip.action2": "_Reset_ de eerste geselecteerde positie van de Transportband", + + "item.create.goggles.tooltip": "BRIL", + "item.create.goggles.tooltip.summary": "Een bril om je visie te augmenteren met _kinetische_ _informatie._", + "item.create.goggles.tooltip.condition1": "Wanneer gedragen", + "item.create.goggles.tooltip.behaviour1": "Laat _gekleurde_ _indicaties_ zien die corresponderen met de _Snelheid_ van een geplaatst kinetisch onderdeel.", + "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", + "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", + + "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", + "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", + "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", + "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates_ _components_ toward or away from the face with which you interacted.", + "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles_ _Kinetic_ _components_ and places them back in _your_ _inventory_.", + + "block.create.creative_motor.tooltip": "UNLOCALIZED: CREATIVE MOTOR", + "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", + + "block.create.water_wheel.tooltip": "WATERRAD", + "block.create.water_wheel.tooltip.summary": "Bied _Rotatiekracht_ van naastgelegen _water_ _stromen._", + + "block.create.encased_fan.tooltip": "OMHULSDE VENTILATOR", + "block.create.encased_fan.tooltip.summary": "Zet _Rotatiekracht_ om naar een _Luchtstroom_ en terug. Heeft een verscheidenheid aan toepassingen.", + "block.create.encased_fan.tooltip.condition1": "Wanneer aangestuurd door Redstone", + "block.create.encased_fan.tooltip.behaviour1": "Bied _Rotatiekracht_ aan van alle _hitte_ _bronnen_ direct onder zichzelf. De ventilator moet naar beneden wijzen.", + "block.create.encased_fan.tooltip.condition2": "Wanneer gedraaid", + "block.create.encased_fan.tooltip.behaviour2": "_Duwt_ of _Trekt_ Entiteiten, afhankelijk van de binnenkomende rotatiesnelheid.", + "block.create.encased_fan.tooltip.condition3": "Bij het doorblazen van speciale blokken", + "block.create.encased_fan.tooltip.behaviour3": "_Vloeitstoffen_ en _Vuur_ zenden deeltjes uit in de luchtstroom. Dit kan gebruikt worden om _objecten_ te _verwerken_", + + "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", + "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", + + "block.create.hand_crank.tooltip": "UNLOCALIZED: HAND CRANK", + "block.create.hand_crank.tooltip.summary": "UNLOCALIZED: A simple _source_ of _Rotational_ _Force_ that requires the interaction of players.", + "block.create.hand_crank.tooltip.condition1": "UNLOCALIZED: When Used", + "block.create.hand_crank.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to an attached contraption. _Sneak_ _to_ _reverse_ the rotation.", + + "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping_ _track_ _of_ _time_.", + "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", + + "block.create.turntable.tooltip": "DRAAISCHIJF", + "block.create.turntable.tooltip.summary": "Verandert _Rotatiekracht_ in verfijnde bewegingsziekte.", + + "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", + "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", + "block.create.millstone.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.millstone.tooltip.behaviour1": "UNLOCALIZED: Starts applying _milling_ _recipes_ to any items inserted from the side or the top of the block.", + "block.create.millstone.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", + + "block.create.crushing_wheel.tooltip": "VERPULVERAAR", + "block.create.crushing_wheel.tooltip.summary": "Grote draaibare wielen die alles _verpulveren_ wat hun tegen houdt.", + "block.create.crushing_wheel.tooltip.condition1": "Wanneer aangesloten op een andere Verpulveraar", + "block.create.crushing_wheel.tooltip.behaviour1": "Creëert een verpulverende installatie voor het verwerken van verschillende dingen. De tanden van de wielen moeten met elkaar in redstone_contact staan en beweken met _dezelfde_ _snelheid_ in _tegenovergestelde_ _richting._", + + "block.create.mechanical_press.tooltip": "MECHANISCHE PERS", + "block.create.mechanical_press.tooltip.summary": "Een krachtige zuiger voor het samenpersen van objecten onder zich. Heeft een constante _Rotatiekracht_ nodig.", + "block.create.mechanical_press.tooltip.condition1": "Wanneer aangestuurd door Redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Begint_ met het samenpersen van objecten onder zich.", + "block.create.mechanical_press.tooltip.condition2": "Wanneer boven een Transportband Connector", + "block.create.mechanical_press.tooltip.behaviour2": "Perst _Automatisch_ langskomende objecten op de transportband.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "UNLOCALIZED: BASIN", + "block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "MECHANISCHE MIXER", + "block.create.mechanical_mixer.tooltip.summary": "Een kinetische garde voor het toepassen van vormloze recepten op objecten eronder. Vereist constante _Rotatiekracht_ en een _Bekken_ hieronder geplaatst (met een tussenruimte).", + "block.create.mechanical_mixer.tooltip.condition1": "Wanneer boven een Bekken", + "block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.", + "block.create.mechanical_mixer.tooltip.condition2": "Wanneer gebruikt met een Sleutel", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configureert_ de minimale hoeveelheid _totale_ _ingredienten_ voor toegepaste recepten. Gebruik deze optie om _ongewenste_ _recepten_ met vergelijkbare maar minder ingrediënten _te_ _vermijden._", + + "block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER", + "block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.", + "block.create.mechanical_crafter.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.mechanical_crafter.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _the_ _crafting_ _process_ as soon as _all_ _crafters_ in the grid have been _given_ _an_ _item_.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "UNLOCALIZED: When Wrenched at Front", + "block.create.mechanical_crafter.tooltip.action1": "UNLOCALIZED: _Cycles_ _the_ _direction_ an individual crafter _moves_ _its_ _items_ towards. To form a working grid, _arrange_ _the_ _belts_ _in_ _a_ _flow_ which moves all items towards a final crafter. The final crafter must _point_ _away_ from the grid.", + "block.create.mechanical_crafter.tooltip.control2": "UNLOCALIZED: When Wrenched at back", + "block.create.mechanical_crafter.tooltip.action2": "UNLOCALIZED: _Connects_ the _input_ _inventory_ of adjacent crafters. Use this to _combine_ _slots_ in the crafting grid and _save_ _on_ _input_ _work_.", + + "block.create.furnace_engine.tooltip": "UNLOCALIZED: FURNACE ENGINE", + "block.create.furnace_engine.tooltip.summary": "UNLOCALIZED: A powerful source of _Rotational_ _Power_ that requires a _running_ _furnace_ to work.", + "block.create.furnace_engine.tooltip.condition1": "UNLOCALIZED: When Attached to Lit Furnace", + "block.create.furnace_engine.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _powering_ a _Flywheel_ placed in front of it (1m apart). Use a Blast Furnace for higher speeds.", + + "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", + "block.create.flywheel.tooltip.summary": "UNLOCALIZED: A large metal wheel to _harness_ _and_ _stabilize_ generated force by an _attached_ _Engine_. Flywheels connect to engines if they are _1m_ _apart_ and at a _90°_ _Angle_ from each other.", + "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Attached to Running Engine", + "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to a connected contraption based on the generator's strength and speed.", + + "block.create.portable_storage_interface.tooltip": "UNLOCALIZED: PORTABLE STORAGE INTERFACE", + "block.create.portable_storage_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving_ _items_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley.", + "block.create.portable_storage_interface.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.portable_storage_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _transposers_ such that transposers _facing_ _away_ from the interface _pull_ _items_, and transposers targeting the interface will _insert_ _items_ from attached inventory. The contraption will briefly stall as items are exchanged.", + + "block.create.rotation_speed_controller.tooltip": "UNLOCALIZED: ROTATION SPEED CONTROLLER", + "block.create.rotation_speed_controller.tooltip.summary": "UNLOCALIZED: A _configurable_ _relay_ able to speed up or slow down the target component to any desired speed.", + "block.create.rotation_speed_controller.tooltip.condition1": "UNLOCALIZED: When Attached to Large Cogwheel", + "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", + + "block.create.mechanical_piston.tooltip": "MECHANISCHE ZUIGER", + "block.create.mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Zuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", + "block.create.mechanical_piston.tooltip.condition1": "Wanneer gedraaid", + "block.create.mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", + + "block.create.sticky_mechanical_piston.tooltip": "MECHANISCHE KLEEFZUIGER", + "block.create.sticky_mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Kleefzuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Wanneer gedraaid", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", + + "block.create.piston_extension_pole.tooltip": "ZUIGER VERLENGPAAL", + "block.create.piston_extension_pole.tooltip.summary": "Gebruikt om het bereik van _MECHANISCHE_ _ZUIGERS_ te vergroten.", + "block.create.piston_extension_pole.tooltip.condition1": "Wanneer aangesloten op een Mechanische zuiger", + "block.create.piston_extension_pole.tooltip.behaviour1": "Verlengt het bereik van de zuigers met 1 blok", + + "block.create.mechanical_bearing.tooltip": "MECHANISCHE LAGER", + "block.create.mechanical_bearing.tooltip.summary": "Gebruikt voor het roteren van _grotere_ _structuren_ of het genereren van _Rotatiekracht_ uit wind.", + "block.create.mechanical_bearing.tooltip.condition1": "Wanneer gedraaid", + "block.create.mechanical_bearing.tooltip.behaviour1": "Begint fysiek gekoppelde _ROTATIE_ _FRAME_ te roteren inclusief hun gekoppelde blokken respectievelijk.", + "block.create.mechanical_bearing.tooltip.condition2": "When Powered by Redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Begint met het aanbieden van _Rotatiekracht_ uit het roteren van de bijbehorende structuur. De structuur moet geschikte _Zijl_ _Blokken_ bevatten (momenteel een wollen blok).", + + "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", + "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", + "block.create.clockwork_bearing.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.clockwork_bearing.tooltip.behaviour1": "UNLOCALIZED: Starts rotating the attached Structure towards the _current_ _hour_. If an independent second structure exists in front of the first one, it will serve as the _minute_ _hand_.", + + "block.create.sequenced_gearshift.tooltip": "UNLOCALIZED: SEQUENCED GEARSHIFT", + "block.create.sequenced_gearshift.tooltip.summary": "UNLOCALIZED: A _programmable_ _utility_ _component,_ which can change its _rotational_ _through-put_ according to up to _5_ _consecutive_ _instructions._ Use this to power Mechanical Bearings, Pistons or Pulleys with more control over timing and speed. May become less precise at higher speeds.", + "block.create.sequenced_gearshift.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _executing_ programmed instructions based on the input speed.", + "block.create.sequenced_gearshift.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.sequenced_gearshift.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface._", + + "block.create.cart_assembler.tooltip": "UNLOCALIZED: CART ASSEMBLER", + "block.create.cart_assembler.tooltip.summary": "UNLOCALIZED: When _placed_ _on_ a _Rail_, adopts functionality and _assembles/disassebles_ _structures_ on passing _carts_.", + "block.create.cart_assembler.tooltip.condition1": "UNLOCALIZED: When placed above Rail", + "block.create.cart_assembler.tooltip.behaviour1": "UNLOCALIZED: _Assembles_ onto passing _carts_ _when_ _powered_, _disassembles_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "UNLOCALIZED: ROPE PULLEY", + "block.create.rope_pulley.tooltip.summary": "UNLOCALIZED: Moves attached _blocks_ and _structures_ _vertically_. Use _Chassis_ or _Slime_ _Blocks_ to move more than a single block.", + "block.create.rope_pulley.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", + + "block.create.linear_chassis.tooltip": "LINEAAR FRAME", + "block.create.linear_chassis.tooltip.summary": "A configurable base for Structures moved by a _Mechanische_ _Zuiger._ These Blocks have to form the first Layer of blocks in front of the Zuiger.", + "block.create.linear_chassis.tooltip.condition1": "Wanneer bewogen door een Mechanische Zuiger", + "block.create.linear_chassis.tooltip.behaviour1": "_Beweegt_ alle _aangesloten_ _Frames_ met dezelfde oriëntatie, en daaraan bevestigde blokken. Wanneer de Zuiger wordt ingetrokken, worden blokken alleen getrokken als het framevlak _Kleverig_ (zie [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.linear_chassis.tooltip.control1": "Wanneer R-Geklikt met een slijmbal", + "block.create.linear_chassis.tooltip.action1": "Maakt het geklikte vlak _Kleverig._ Wanneer de Zuiger zich terugtrekt, zal het frame alle bevestigde blokken in zijn kolom en binnen het geconfigureerde bereik _terugtrekken._", + + "block.create.radial_chassis.tooltip": "ROTATIE FRAME", + "block.create.radial_chassis.tooltip.summary": "Vereist voor het roten van structeren met de _Mechanisch_ _Lager._ ", + "block.create.radial_chassis.tooltip.condition1": "Wanneer gedraaid door een Lager", + "block.create.radial_chassis.tooltip.behaviour1": "_Roteert_ alle blokken bevestigd aan _Klevende-zijden_ (zie [Ctrl]) binnen het geconfigureerde bereik rondom zichzelf. _Zendt_ de rotatie over naar verder bevestigd rotatie frame.", + "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.radial_chassis.tooltip.control1": "Wanneer R-Geklikt met een slijmbal", + "block.create.radial_chassis.tooltip.action1": "Maakt het geklikte vlak _Klevend._ Wanneer het frame roteert, worden alle blokken die aan deze zijde zijn bevestigd mee gedraaid.", + + "block.create.mechanical_drill.tooltip": "MECHANISCHE BOOR", + "block.create.mechanical_drill.tooltip.summary": "Een mechanisch apparaat geschikt voor het _breken_ _van_ _blokken_", + "block.create.mechanical_drill.tooltip.condition1": "Wanneer gedraaid", + "block.create.mechanical_drill.tooltip.behaviour1": "Gedraagd zich als een stationaair blok breker. Doet ook pijn aan alle entiteiten binnen zijn bereik.", + "block.create.mechanical_drill.tooltip.condition2": "Wanneer geduwt door een Mechanische Zuiger", + "block.create.mechanical_drill.tooltip.behaviour2": "Breekt blokken waar de boor mee in redstone_contact komt.", + + "block.create.mechanical_harvester.tooltip": "MECHANISCHE OOGSTER", + "block.create.mechanical_harvester.tooltip.summary": "Een Mechanische plantensnijder geschikt voor middelgrote gewasautomatisering", + "block.create.mechanical_harvester.tooltip.condition1": "Wanneer geduwt door een Mechanische Zuiger", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Oogst_ alle _Rijpe_ _Planten_ dat het mes raakt aan en zet ze terug naar hun oorspronkelijke staat van groei.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "UNLOCALIZED: MECHANICAL SAW", + "block.create.mechanical_saw.tooltip.summary": "UNLOCALIZED: Suitable for _cutting_ _trees_ effectively and for _cutting_ _blocks_ into their carpentered counterparts. It is movable using _Mechanical_ _Pistons_ or _Bearings_.", + "block.create.mechanical_saw.tooltip.condition1": "UNLOCALIZED: When facing up", + "block.create.mechanical_saw.tooltip.behaviour1": "UNLOCALIZED: Applies _Sawing_ and _Stonecutting_ _Recipes_ to items dropped onto or inserted into it. When multiple outputs are possible, it cycles through them unless a _filter_ is assigned.", + "block.create.mechanical_saw.tooltip.condition2": "UNLOCALIZED: When facing horizontally", + "block.create.mechanical_saw.tooltip.behaviour2": "UNLOCALIZED: _Breaks_ _logs_ in front of it. If the log supported a tree on its own, the _tree_ _will_ _collapse_ away from the saw.", + "block.create.mechanical_saw.tooltip.condition3": "UNLOCALIZED: While Moving", + "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", + + "block.create.stockpile_switch.tooltip": "VOORRAAD SCHAKELAAR", + "block.create.stockpile_switch.tooltip.summary": "Schakelt een Redstone signaal op basis van de _Opslagruimte_ in de aangesloten Container.", + "block.create.stockpile_switch.tooltip.condition1": "Wanneer onder de laagste limiet", + "block.create.stockpile_switch.tooltip.behaviour1": "Stopt met het aanbieden van _Redstone_ _Kracht_", + "block.create.stockpile_switch.tooltip.condition2": "Wanneer boven de hoogste limiet", + "block.create.stockpile_switch.tooltip.behaviour2": "Start met het aanbieden van _Redstone_ _Kracht_ tot de laagste limiet weer is bereikt", + "block.create.stockpile_switch.tooltip.control1": "Wanneer R-Geklikt", + "block.create.stockpile_switch.tooltip.action1": "Opent de _Configuratie_ _Interface_", + + "block.create.redstone_link.tooltip": "REDSTONE BRUG", + "block.create.redstone_link.tooltip.summary": "Eindpunten voor _Draadloze_ _Redstone-verbindingen._ Kan met elk object _Frequencies_ worden toegewezen. Signaalbereik is beperkt, maar redelijk ver.", + "block.create.redstone_link.tooltip.condition1": "Wanneer aangestuurd", + "block.create.redstone_link.tooltip.behaviour1": "Het ontvangen van verbindingen met dezelfde frequentie levert een Redstone-signaal.", + "block.create.redstone_link.tooltip.control1": "Wanneer R-Geklikt met een object", + "block.create.redstone_link.tooltip.action1": "Stelt de _Frequentie_ in op dat object. Een totaal van _twee_ _verschillende_ _objecten_ kan in combinatie worden gebruikt voor het definiëren van een frequentie", + "block.create.redstone_link.tooltip.control2": "Wanneer R-Geklikt terwijl je sluipt", + "block.create.redstone_link.tooltip.action2": "Schakelt tussen _ontvanger_ en _zender_modus.", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", + "block.create.redstone_contact.tooltip.summary": "A simple device for advanced Redstone Apparaten.", + "block.create.redstone_contact.tooltip.condition1": "Wanneer gericht op een ander redstone_contact", + "block.create.redstone_contact.tooltip.behaviour1": "Bied een _Redstone_ _Signaal_", + "block.create.redstone_contact.tooltip.condition2": "Wanneer verplaatst door een Mechanische Zuiger", + "block.create.redstone_contact.tooltip.behaviour2": "Activeert alle stationaire voorbijkomende redstone_contacten", + + "block.create.adjustable_crate.tooltip": "FLEXKRAT", + "block.create.adjustable_crate.tooltip.summary": "Met deze _Opslag_ _Container_ kan de capaciteit handmatig worden geregeld. Het kan tot _16_ _Stapels_ van elk item bevatten", + "block.create.adjustable_crate.tooltip.control1": "Wanneer R-Geklikt", + "block.create.adjustable_crate.tooltip.action1": "Opent de _Interface_", + + "block.create.creative_crate.tooltip": "CREATIEF KRAT", + "block.create.creative_crate.tooltip.summary": "Bied een eindloze vooraad blokken aan een aangeloten _Bouwtekeningkannon_", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "EXTRACTOR", + "block.create.extractor.tooltip.summary": "_Haalt_ _objecten_ uit een aangesloten _inventaris_ en laat ze op de grond vallen. Laat items niet vallen totdat de ruimte is leeggemaakt. Kan een item-stapel worden toegewezen als een _filter._", + "block.create.extractor.tooltip.condition1": "Wanneer aangestuurd door redstone", + "block.create.extractor.tooltip.behaviour1": "_Pauzeerd_ de Extractor", + "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", + "block.create.extractor.tooltip.control1": "R-Klik op Filter Plek", + "block.create.extractor.tooltip.action1": "Wijst momenteel _vastgehouden_ _stapel_ toe als de _Filter._ Extractor zal uitsluitend het object _type_ en _hoevelheid_ van de stapel op de grond gooien.", + + "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", + "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.transposer.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.transposer.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.transposer.tooltip.behaviour2": "UNLOCALIZED: Transposers can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the transposer is backed up, the _belt_ _will_ _stall_.", + "block.create.transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will pull the item _type_ and _count_ of the filter stack exclusively.", + + "block.create.deployer.tooltip": "UNLOCALIZED: DEPLOYER", + "block.create.deployer.tooltip.summary": "UNLOCALIZED: _Punches_, _Uses_, and _Activates_. This machine will try to _imitate_ a _player_ as a much as possible. Can _Take_ and _Deposit_ _items_ in adjacent _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.deployer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.deployer.tooltip.behaviour1": "UNLOCALIZED: Extends its arm and _activates_ in the block space _2m_ _ahead_ of itself.", + "block.create.deployer.tooltip.condition2": "UNLOCALIZED: R-Clicked with Wrench", + "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", + + "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", + "block.create.linked_extractor.tooltip.summary": "_Haalt_ _objecten_ uit een aangesloten _inventaris_ en laat ze op de grond vallen. Laat items niet vallen totdat de ruimte is leeggemaakt. Kan een item-stapel worden toegewezen als een _filter._ Kan op afstand worden bediend via een _Redstone_ _Brug._", + "block.create.linked_extractor.tooltip.condition1": "Wanneer Redstone verbinding actief is", + "block.create.linked_extractor.tooltip.behaviour1": "_Pauzeerd_ de Extractor", + "block.create.linked_extractor.tooltip.control1": "R-Klik op Filter Plek", + "block.create.linked_extractor.tooltip.action1": "Wijst momenteel _vastgehouden_ _stapel_ toe als de _Filter._ Extractor zal uitsluitend het object _type_ en _hoevelheid_ van de stapel op de grond gooien.", + "block.create.linked_extractor.tooltip.control2": "R-Klik op Frequency Plek", + "block.create.linked_extractor.tooltip.action2": "Wijst momenteel _vastgehouden_ _object_ toe als onderdeel van de geluisterde frequentie. Wanneer een zendende _Redstone_ _Brug_ van dezelfde frequentie wordt ingeschakeld, pauzeert deze Extractor.", + + "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", + "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", + "block.create.linked_transposer.tooltip.condition1": "UNLOCALIZED: When Redstone Link Active", + "block.create.linked_transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.linked_transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.linked_transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will only pull items that match the item _type_ and _count_ of the filter stack.", + "block.create.linked_transposer.tooltip.control2": "UNLOCALIZED: R-Click on Frequency Space", + "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", + + "block.create.funnel.tooltip": "TRANSPORTBAND TRECHTER", + "block.create.funnel.tooltip.summary": "Verzamelt inkomende items op een _Mechanische_ _Transportband_ en plaatst deze indien mogelijk in de bijgevoegde _Inventaris._ Moet zich direct op een transportband bevinden, met de opening tegenover de bewegingsrichting van de transportband. Het inventaris moet op dezelfde hoogte zijn als de trechter.", + "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", + "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", + + "block.create.belt_tunnel.tooltip": "UNLOCALIZED: BELT TUNNEL", + "block.create.belt_tunnel.tooltip.summary": "UNLOCALIZED: An aesthetic option for running your _Mechanical_ _Belts_ through walls. Belts have to be reinforced with _Brass_ _Casing_. Tunnels can _synchronize_ with _their_ _neighbours_, only letting items pass if all tunnels in the group have one waiting. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "UNLOCALIZED: R-Click with Wrench on Front", + "block.create.belt_tunnel.tooltip.action1": "UNLOCALIZED: Toggles _synchronized_ _behaviour_. Synchronized tunnels hold items until their neighbours have an item as well.", + "block.create.belt_tunnel.tooltip.control2": "UNLOCALIZED: R-Click with Wrench on Side", + "block.create.belt_tunnel.tooltip.action2": "UNLOCALIZED: _Adjusts_ _window_ _shutters_ if the tunnel has a window on that face.", + + "block.create.brass_casing.tooltip": "UNLOCALIZED: BRASS CASING", + "block.create.brass_casing.tooltip.summary": "UNLOCALIZED: Sturdy machine casing with a variety of uses. Safe for decoration.", + "block.create.brass_casing.tooltip.condition1": "UNLOCALIZED: When used on Mechanical Belt", + "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", + + "block.create.belt_observer.tooltip": "TRANSPORTBAND OBSERVEERDER", + "block.create.belt_observer.tooltip.summary": "Detecteert passerende items op een _Mechanische_ _Transportband_ ervoor. Werkt goed met een _Zuiger_ bovenop, waardoor bepaalde items worden verwijderd.", + "block.create.belt_observer.tooltip.condition1": "Wanneer een object overeenkomt met Filter", + "block.create.belt_observer.tooltip.behaviour1": "Biedt een korte _Redstone_ _pulse_ aan alle kanten. Een leeg filter komt overeen met alle passerende objecten.", + "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", + "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", + "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", + "block.create.belt_observer.tooltip.behaviour3": "UNLOCALIZED: _Ejects_ _matching_ _items_ off the side. If the target belt or space is _occupied_, the item will be _held_ _in_ _place_.", + "block.create.belt_observer.tooltip.condition4": "UNLOCALIZED: Split Mode", + "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", + + "block.create.pulse_repeater.tooltip": "PULSE VERSTERKER", + "block.create.pulse_repeater.tooltip.summary": "Een eenvoudig circuit voor het knippen van passerende redstone-signalen tot een lengte van _1_ _tick._", + + "block.create.adjustable_repeater.tooltip": "FLEXSTERKER", + "block.create.adjustable_repeater.tooltip.summary": "Een geavanceerde _Redstone_ _Verserker_ met een _configurable_ _Delay_ tot 30 minuten.", + + "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", + "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", + + "block.create.analog_lever.tooltip": "UNLOCALIZED: ANALOG LEVER", + "block.create.analog_lever.tooltip.summary": "UNLOCALIZED: A lever with more _precise_ _control_ over its emitted _signal_ _strength_.", + + "block.create.powered_toggle_latch.tooltip": "UNLOCALIZED: POWERED TOGGLE LATCH", + "block.create.powered_toggle_latch.tooltip.summary": "UNLOCALIZED: A lever that can be toggled by a _Redstone_ _Pulse_.", + + "block.create.powered_latch.tooltip": "UNLOCALIZED: POWERED LATCH", + "block.create.powered_latch.tooltip.summary": "UNLOCALIZED: A lever that can be controlled by _Redstone_ _Signals_. A signal on the _back_ _enables_ it, a signal from the _side_ _will_ _reset_ it.", + + "block.create.speedometer.tooltip": "SNELHEIDSMETER", + "block.create.speedometer.tooltip.summary": "Meet en toont de _Rotatiesnelheid_ van gekoppelde kinetische componenten.", + "block.create.speedometer.tooltip.condition1": "Wanneer gedraaid", + "block.create.speedometer.tooltip.behaviour1": "Geeft een kleur aan die overeenkomt met het snelheidsniveau. _Groen_ geeft een trage, _Blauw_ gematigde en _Paars_ een snelle rotatie aan. Sommige Mechanische componenten vereisen voldoende snelheid om goed te werken.", + + "block.create.stressometer.tooltip": "STRESSMETER", + "block.create.stressometer.tooltip.summary": "Meet en toont de _algemene_ _stress_ van het bijgevoegde kinetische netwerk.", + "block.create.stressometer.tooltip.condition1": "Wanneer gedraaid", + "block.create.stressometer.tooltip.behaviour1": "Geeft een kleur aan die overeenkomt met het stressniveau. _Overbelaste_ _netwerken_ zullen niet meer bewegen. Stress kan worden verlicht door meer _Rotatie_ _bronnen_ toe te voegen aan het netwerk.", + + "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", + "tool.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "tool.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking_ _at_ _them_", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed_ _light_.", + + "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in_ _the_ _void_.", + + "item.create.crafter_slot_cover.tooltip": "UNLOCALIZED: SLOT COVER", + "item.create.crafter_slot_cover.tooltip.summary": "UNLOCALIZED: Used to mark a _Mechanical_ _Crafter_ as an empty slot in a recipe. Crafters do not necessarily have to form a full square grid. This is useful when there are recipes where _ingredients_ _are_ _diagonal_ to each other.", + + "create.tooltip.wip": "WIP", + "create.tooltip.workInProgress": "Work in progress!", + "create.tooltip.randomWipDescription0": "Houdt dit object buiten bereik van kinderen.", + "create.tooltip.randomWipDescription1": "Een baby panda sterft elke keer als je dit object gebruikt.", + "create.tooltip.randomWipDescription2": "Gebruikt dit object op eigen risico.", + "create.tooltip.randomWipDescription3": "Niks te zien hier, vervolg uw weg.", + "create.tooltip.randomWipDescription4": "Dit object zal zichzelf vernietigen in 10 seconden.", + "create.tooltip.randomWipDescription5": "Geloof me, het is nuteloos.", + "create.tooltip.randomWipDescription6": "Door dit object te gebruiken stemt u in met onze disclaimer en gaat u akkoord met de algemene voorwaarden.", + "create.tooltip.randomWipDescription7": "Deze is misschien niet geschikt voor jou.", + "create.tooltip.randomWipDescription8": "Gebruikt het en je zal meteen spijt hebben.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json new file mode 100644 index 000000000..be62ae8e5 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 773" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "adjustable_crate", + "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", + "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", + "block.create.adjustable_repeater": "Repetidor Flex", + "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_bricks": "Tijolos de Andesite", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "UNLOCALIZED: Basin", + "block.create.belt": "Esteira Mecânica", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "Observador de Esteira", + "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "UNLOCALIZED: Brass Block", + "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", + "block.create.clutch": "Embreagem", + "block.create.cogwheel": "Roda Dentada", + "block.create.copper_block": "UNLOCALIZED: Copper Block", + "block.create.copper_casing": "UNLOCALIZED: Copper Casing", + "block.create.copper_ore": "UNLOCALIZED: Copper Ore", + "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", + "block.create.creative_crate": "Criativador Esquemaannon", + "block.create.creative_motor": "UNLOCALIZED: Creative Motor", + "block.create.crushing_wheel": "Roda de Moer", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", + "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", + "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", + "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", + "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "UNLOCALIZED: Deployer", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "Tijolos de Diorito", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "Dolomite", + "block.create.dolomite_bricks": "Tijolos de Dolomite", + "block.create.dolomite_bricks_slab": "Lajotas de Tijolos de Dolomite", + "block.create.dolomite_bricks_stairs": "Escadas de Tijolos de Dolomite", + "block.create.dolomite_bricks_wall": "Muro de Tijolos de Dolomite", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "Pilar de Dolomite", + "block.create.encased_belt": "Esteira Revestida", + "block.create.encased_fan": "Ventilador Revestida", + "block.create.encased_shaft": "Eixo Revestido", + "block.create.extractor": "Extrator", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "UNLOCALIZED: Flywheel", + "block.create.framed_glass": "UNLOCALIZED: Framed Glass", + "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", + "block.create.funnel": "Funil de Esteira", + "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", + "block.create.gabbro": "Gabbro", + "block.create.gabbro_bricks": "Tijolos de Gabbro", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", + "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "Caixa de Transmissão", + "block.create.gearshift": "Câmbio", + "block.create.granite_bricks": "Tijolos de Granito", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", + "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "Roda Dentada Grande", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "Areia Calcária", + "block.create.limestone": "Calcário", + "block.create.limestone_bricks": "Tijolos de Calcário", + "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", + "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", + "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "Pilar de Calcário", + "block.create.linear_chassis": "Chassis de Translado", + "block.create.linked_extractor": "Extrator Conectado", + "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "Rolamento Mecânico", + "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", + "block.create.mechanical_drill": "Furadeira Mecânica", + "block.create.mechanical_harvester": "Coletor Mecânico", + "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", + "block.create.mechanical_piston": "Pistão Mecânico", + "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "Prensa Mecânico", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", + "block.create.millstone": "UNLOCALIZED: Millstone", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "UNLOCALIZED: Nozzle", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "Vara de Extensão do Pistão", + "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "Dolomite Polido", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "Gabbro Polido", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "Calcário Polido", + "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", + "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "Calcário Polido Resistido", + "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", + "block.create.powered_latch": "UNLOCALIZED: Powered Latch", + "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", + "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", + "block.create.pulse_repeater": "Repetidor de Pulso", + "block.create.radial_chassis": "Chassis de Rotação", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "Contato de Redstone", + "block.create.redstone_link": "Conexão de Redstone", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "UNLOCALIZED: Rope", + "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", + "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", + "block.create.schematic_table": "Mesa de Esquematizar", + "block.create.schematicannon": "Esquemaannon", + "block.create.scoria": "UNLOCALIZED: Scoria", + "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", + "block.create.shaft": "Eixo", + "block.create.speedometer": "UNLOCALIZED: Speedometer", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", + "block.create.stockpile_switch": "Disjuntor de Armazenamento", + "block.create.stressometer": "UNLOCALIZED: Stressometer", + "block.create.tiled_glass": "Vidro Entalhado", + "block.create.tiled_glass_pane": "Vidraça Entalhada", + "block.create.transposer": "UNLOCALIZED: Transposer", + "block.create.turntable": "Mesa giratória", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", + "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "Roda de Água", + "block.create.weathered_limestone": "Calcário Resistido", + "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", + "block.create.zinc_block": "UNLOCALIZED: Zinc Block", + "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", + "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", + "item.create.belt_connector": "Esteira Mecânica", + "item.create.brass_hand": "UNLOCALIZED: Brass Hand", + "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", + "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", + "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", + "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", + "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", + "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", + "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_brass": "UNLOCALIZED: Crushed Brass", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "UNLOCALIZED: Deforester", + "item.create.dough": "Massa", + "item.create.electron_tube": "UNLOCALIZED: Electron Tube", + "item.create.empty_schematic": "Esquema vazio", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "Filtro", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "Blockzapper Portátil", + "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", + "item.create.iron_sheet": "Placas de Ferro", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "Hélice", + "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", + "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", + "item.create.rose_quartz": "Quartzo Rosa", + "item.create.sand_paper": "UNLOCALIZED: Sand Paper", + "item.create.schematic": "Esquema", + "item.create.schematic_and_quill": "Esquema e pena", + "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "Fertilizante de Árvore", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "Varinha de Simetria", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "UNLOCALIZED: Whisk", + "item.create.wrench": "UNLOCALIZED: Wrench", + "item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot", + "item.create.zinc_nugget": "UNLOCALIZED: Zinc Nugget", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", + "death.attack.create.fan_fire": "%1$s foi queimado por ar quente", + "death.attack.create.fan_lava": "%1$s foi queimado pelo ventilador de lava", + "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", + "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", + "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", + + "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "Moendo", + "create.recipe.milling": "UNLOCALIZED: Milling", + "create.recipe.splashing": "Lavando em Massa", + "create.recipe.splashing.fan": "Ventilador atras de Água corrente", + "create.recipe.smoking_via_fan": "Fumaceando em Massa", + "create.recipe.smoking_via_fan.fan": "Ventilador atras de Fogo", + "create.recipe.blasting_via_fan": "Fundindo em Massa", + "create.recipe.blasting_via_fan.fan": "Ventilador atras de Lava", + "create.recipe.pressing": "Prensa Mecânica", + "create.recipe.mixing": "UNLOCALIZED: Mixing", + "create.recipe.packing": "UNLOCALIZED: Compacting", + "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", + "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", + "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", + "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", + "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", + "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", + "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", + "create.recipe.processing.chance": "%1$s%% de chance", + "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", + + "create.generic.range": "Área", + "create.generic.radius": "Raio", + "create.generic.width": "UNLOCALIZED: Width", + "create.generic.height": "UNLOCALIZED: Height", + "create.generic.length": "UNLOCALIZED: Length", + "create.generic.speed": "Velocidade", + "create.generic.delay": "Demorada", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "Segundos", + "create.generic.unit.minutes": "Minutos", + "create.generic.unit.rpm": "UNLOCALIZED: RPM", + "create.generic.unit.stress": "UNLOCALIZED: su", + "create.generic.unit.degrees": "UNLOCALIZED: °", + + "create.action.scroll": "Rolar", + "create.action.confirm": "Confirmar", + "create.action.abort": "Abortar", + "create.action.saveToFile": "Salvar", + "create.action.discard": "Descartar", + + "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", + "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", + "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", + "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", + "create.gui.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", + "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", + "create.gui.toolmenu.cycle": "[SCROLL] para Circular", + "create.gui.symmetryWand.mirrorType": "Espelhar", + "create.gui.symmetryWand.orientation": "Orientação", + + "create.symmetry.mirror.plane": "Espelhar uma vez", + "create.symmetry.mirror.doublePlane": "Retangular", + "create.symmetry.mirror.triplePlane": "Octagonal", + + "create.orientation.orthogonal": "Ortogonal", + "create.orientation.diagonal": "Diagonal", + "create.orientation.horizontal": "Horizontal", + "create.orientation.alongZ": "Através de Z", + "create.orientation.alongX": "Através de X", + + "create.gui.blockzapper.title": "Blockzapper Portátil", + "create.gui.blockzapper.replaceMode": "Modo de Substituição", + "create.gui.blockzapper.searchDiagonal": "Seguir as Diagonais", + "create.gui.blockzapper.searchFuzzy": "Ignorar Material nas Bordas", + "create.gui.blockzapper.range": "Raio de Expansão", + "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", + "create.gui.blockzapper.patternSection": "Padrões", + "create.gui.blockzapper.pattern.solid": "Sólido", + "create.gui.blockzapper.pattern.checkered": "Xadrez", + "create.gui.blockzapper.pattern.inversecheckered": "Xadrez invertido", + "create.gui.blockzapper.pattern.chance25": "25% de chance", + "create.gui.blockzapper.pattern.chance50": "50% de chance", + "create.gui.blockzapper.pattern.chance75": "75% de chance", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", + "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", + "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", + "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", + "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", + "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", + "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", + "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", + "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", + "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", + "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", + "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", + "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", + "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", + + "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + + "create.blockzapper.usingBlock": "Usando: %1$s", + "create.blockzapper.componentUpgrades": "Melhorias do Componente:", + "create.blockzapper.component.body": "Corpo", + "create.blockzapper.component.amplifier": "Amplificador", + "create.blockzapper.component.accelerator": "Acelerador", + "create.blockzapper.component.retriever": "Retornador", + "create.blockzapper.component.scope": "Mira", + "create.blockzapper.componentTier.none": "Nada", + "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", + "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", + "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", + "create.blockzapper.empty": "Sem Blocos!", + + "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", + "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", + "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", + "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", + "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "Filtros", + "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", + "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", + + "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", + "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", + "create.gui.goggles.at_current_speed": "UNLOCALIZED: At current Speed", + "create.gui.goggles.base_value": "UNLOCALIZED: Base Value", + "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", + "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", + "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", + "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", + "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", + "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", + "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "adjustable_crate", + "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", + "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", + "create.gui.stockpile_switch.lowerLimit": "Limite Mínimo", + "create.gui.stockpile_switch.upperLimit": "Limite Máximo", + "create.gui.stockpile_switch.startAt": "Iniciar Sinal em", + "create.gui.stockpile_switch.startAbove": "Iniciar Sinal acima de", + "create.gui.stockpile_switch.stopAt": "Parar Sinal em", + "create.gui.stockpile_switch.stopBelow": "Parar Sinal abaixo de", + "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", + "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", + "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", + "create.gui.sequenced_gearshift.instruction.wait": "UNLOCALIZED: Wait", + "create.gui.sequenced_gearshift.instruction.wait.duration": "UNLOCALIZED: Duration", + "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", + "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", + "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", + "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", + "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", + + "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Primeira posição feita.", + "create.schematicAndQuill.secondPos": "Segunda posição feita.", + "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", + "create.schematicAndQuill.abort": "Seleção removida.", + "create.schematicAndQuill.prompt": "Informe um nome para o Esquema:", + "create.schematicAndQuill.fallbackName": "Meu Esquema", + "create.schematicAndQuill.saved": "Salvo como %1$s", + + "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", + "create.schematic.position": "Posição", + "create.schematic.rotation": "Rotação", + "create.schematic.rotation.none": "Nada", + "create.schematic.rotation.cw90": "Sentido horário 90", + "create.schematic.rotation.cw180": "Sentido horário 180", + "create.schematic.rotation.cw270": "Sentido horário 270", + "create.schematic.mirror": "Espelhar", + "create.schematic.mirror.none": "Nada", + "create.schematic.mirror.frontBack": "Frente para Trás", + "create.schematic.mirror.leftRight": "Esquerda para Direita", + "create.schematic.tool.deploy": "Concluir", + "create.schematic.tool.move": "Mover XZ", + "create.schematic.tool.movey": "Mover Y", + "create.schematic.tool.rotate": "Rodar", + "create.schematic.tool.print": "Imprimir", + "create.schematic.tool.flip": "Virar", + "create.schematic.tool.deploy.description.0": "Move o lugar da estrutura.", + "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", + "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", + "create.schematic.tool.move.description.0": "Vira o Esquema Horizontalmente", + "create.schematic.tool.move.description.1": "Aponte ao Esquema e [CTRL]-Rolar para empurrar.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Vira o Esquema Verticalmente", + "create.schematic.tool.movey.description.1": "[CTRL]-Rolar para mover para cima/baixo", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Roda o Esquema em torno do seu centro.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Rolar para rolar 90 Graus", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Coloca estrutura no mundo instantaneamente", + "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", + "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", + "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Sincronizando...", + "create.schematics.uploadTooLarge": "Seu esquema é muito grande", + "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", + + "create.gui.schematicTable.title": "Mesa de Desenho", + "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", + "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", + "create.gui.schematicTable.uploading": "Importando...", + "create.gui.schematicTable.finished": "Envio Concluído!", + "create.gui.schematicannon.title": "Esquemaannon", + "create.gui.schematicannon.settingsTitle": "Parâmetros de Posicionamento", + "create.gui.schematicannon.listPrinter": "Impressora de Lista de Materiais", + "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Disparos faltantes: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", + "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", + "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", + "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", + "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", + "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", + "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", + "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", + "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", + "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", + "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", + "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", + "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", + + "create.schematicannon.status.idle": "Ocioso", + "create.schematicannon.status.ready": "Pronto", + "create.schematicannon.status.running": "Trabalhando", + "create.schematicannon.status.finished": "Concluído", + "create.schematicannon.status.paused": "Pausado", + "create.schematicannon.status.stopped": "Parada", + "create.schematicannon.status.noGunpowder": "UNLOCALIZED: Out of Gunpowder", + "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", + "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", + "create.schematicannon.status.searching": "Procurando", + "create.schematicannon.status.skipping": "Pulando", + "create.schematicannon.status.missingBlock": "Bloco Faltante:", + "create.schematicannon.status.placing": "Colocando", + "create.schematicannon.status.clearing": "Limpando Blocos", + "create.schematicannon.status.schematicInvalid": "Esquema Inválido", + "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", + "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", + + "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", + "create.gui.filter.whitelist": "UNLOCALIZED: Whitelist", + "create.gui.filter.whitelist.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Whitelist rejects everything.", + "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", + "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", + "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", + "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", + + "create.item_attributes.placeable": "UNLOCALIZED: is placeable", + "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", + "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", + "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", + "create.item_attributes.damaged": "UNLOCALIZED: is damaged", + "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", + "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", + "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", + "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", + "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", + "create.item_attributes.in_item_group": "UNLOCALIZED: belongs to %1$s", + "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", + "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", + "create.gui.attribute_filter.whitelist_disjunctive": "UNLOCALIZED: Whitelist (Any)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", + "create.gui.attribute_filter.whitelist_conjunctive": "UNLOCALIZED: Whitelist (All)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", + "create.gui.attribute_filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.attribute_filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", + "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", + + "create.tooltip.holdKey": "Segure [%1$s]", + "create.tooltip.holdKeyOrKey": "Segure [%1$s] or [%2$s]", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", + "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", + "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", + "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", + "create.tooltip.stressImpact": "UNLOCALIZED: Stress Impact: %1$s", + "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", + "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", + "create.tooltip.stressImpact.high": "UNLOCALIZED: High", + "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", + "create.tooltip.capacityProvided": "UNLOCALIZED: Stress Capacity: %1$s", + "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", + "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", + "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", + "create.tooltip.capacityProvided.asGenerator": "UNLOCALIZED: (As Generator)", + "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", + "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "UNLOCALIZED: Min. Ingredients", + + "create.command.killTPSCommand": "UNLOCALIZED: killtps", + "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", + + "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon shoots", + "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon finishes", + "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press activates", + "create.subtitle.mechanical_press_item_break": "UNLOCALIZED: Metal clanks", + "create.subtitle.blockzapper_place": "UNLOCALIZED: Blocks zap into place", + "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative Ding", + "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining Boop", + "create.subtitle.block_funnel_eat": "UNLOCALIZED: Funnel CHOMPS", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "Quando this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And Quando this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", + "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", + "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Mantem-se Ativo", + "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", + "item.create.wand_of_symmetry.tooltip.action1": "_Cria_ ou _Move_ o Espelho", + "item.create.wand_of_symmetry.tooltip.control2": "B-Direito no Ar", + "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", + "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", + "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", + + "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", + "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", + "item.create.handheld_blockzapper.tooltip.control1": "B-Esquerdo no Bloco", + "item.create.handheld_blockzapper.tooltip.action1": "Define os blocos colocados pela ferramenta no bloco de destino.", + "item.create.handheld_blockzapper.tooltip.control2": "B-Direito em Bloco", + "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ ou _Substitui_ o bloco alvo.", + "item.create.handheld_blockzapper.tooltip.control3": "B-Direito equando Abaixado", + "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", + + "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", + "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", + "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", + "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", + "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", + "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", + "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", + + "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", + "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", + "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", + "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", + + "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", + "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ _items_ or several _nested_ _filters_.", + "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ item _attributes_ and _categories_.", + "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", + "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", + + "item.create.schematic.tooltip": "ESQUEMA", + "item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", + "item.create.schematic.tooltip.condition1": "Quando Em mãos", + "item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela", + "item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado", + "item.create.schematic.tooltip.action1": "Abre uma _Interface_ para informar as _Coordenadas_ exatas.", + + "item.create.schematic_and_quill.tooltip": "ESQUEMA E PENA", + "item.create.schematic_and_quill.tooltip.summary": "Usado para salvar uma Estrutura no mundo para um arquivo .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Selecione duas coordenadas de extremidade usando B-Direito", + "item.create.schematic_and_quill.tooltip.condition2": "Passo 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rolar_ nas faces para ajustar o tamanho. B-Direito de novo para Salvar.", + "item.create.schematic_and_quill.tooltip.control1": "B-Direito", + "item.create.schematic_and_quill.tooltip.action1": "Selecione um canto / confirmar salvamento", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl Pressionado", + "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", + "item.create.schematic_and_quill.tooltip.control3": "B-Direito enquanto Abaixado", + "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", + + "block.create.schematicannon.tooltip": "ESQUEMAANNON", + "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", + "block.create.schematicannon.tooltip.control1": "Quando Apertado com B-Direito", + "block.create.schematicannon.tooltip.action1": "Abre a _Interface_", + + "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", + "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", + "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", + "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", + + "block.create.shaft.tooltip": "EIXO", + "block.create.shaft.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta.", + + "block.create.cogwheel.tooltip": "RODA DENTADA", + "block.create.cogwheel.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta, e para _Rodas_ _Dentadas_ adjacentes.", + + "block.create.large_cogwheel.tooltip": "RODA DENTADA GRADE", + "block.create.large_cogwheel.tooltip.summary": "Uma versão maior da _Roda_ _Dentada,_ permitindo mudança na _Velocidade_ de _Rotação_ quando conectada a sua Contraparte.", + + "block.create.encased_shaft.tooltip": "EIXO REVESTIDO", + "block.create.encased_shaft.tooltip.summary": " _Transmite_ _Rotação_ em uma linha reta. Apropriada para propagar Rotação através de Muros.", + + "block.create.gearbox.tooltip": "CAIXA DE TRANSMISSÃO", + "block.create.gearbox.tooltip.summary": "_Transmite_ _Rotação_ em _Quatro_ _direções._ Reverte conexões diretas.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "CÂMBIO", + "block.create.gearshift.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para eixos conectados.", + "block.create.gearshift.tooltip.condition1": "Quando Ligado", + "block.create.gearshift.tooltip.behaviour1": "_Inverte_ a rotação de saída.", + + "block.create.clutch.tooltip": "EMBREAGEM", + "block.create.clutch.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para os eixos conectados.", + "block.create.clutch.tooltip.condition1": "Quando Ligado", + "block.create.clutch.tooltip.behaviour1": "_Para_ de prover rotação para o outro lado.", + + "block.create.encased_belt.tooltip": "ESTEIRA REVESTIDA", + "block.create.encased_belt.tooltip.summary": "_Transmite_ _Rotação_ através de si e para _Esteiras_ _Revestidas_ conectadas.", + "block.create.encased_belt.tooltip.condition1": "Quando Conectadas com outra Esteira Revestida", + "block.create.encased_belt.tooltip.behaviour1": "Bloco Conectado irá ter a mesma velocidade de rotação, na mesma direção. Esteiras Conectadas não precisam estar viradas para mesma direção.", + + "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", + "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", + "block.create.adjustable_pulley.tooltip.condition1": "UNLOCALIZED: Redstone Control", + "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", + + "item.create.belt_connector.tooltip": "ESTEIRA MECÂNICA", + "item.create.belt_connector.tooltip.summary": "Conecta dois _Eixos_ com uma _Esteira_ _Mecânica._ Eixos conectados irá ter exatamente a mesma velocidade e direção de rotação. A Esteira pode atuar como um _Transporte_ para _Entidades._", + "item.create.belt_connector.tooltip.control1": "B-Direito em um Eixo", + "item.create.belt_connector.tooltip.action1": "Seleciona o eixo como uma polia da Esteira. Os dois Eixos selecionadas precisam estar _alinhados_ seja na _Vertical,_ _Horizontal_ ou _Diagonal_ na direção da Esteira.", + "item.create.belt_connector.tooltip.control2": "B-Direito enquanto Abaixado", + "item.create.belt_connector.tooltip.action2": "_Cancela_ a seleção da Posição para a Esteira", + + "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", + "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", + "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored_ _indicators_ corresponding to the _Speed_ _Level_ of a placed kinetic component as well as _Stress_ _Impact_ and _Capacity_ of individual components.", + "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", + "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", + + "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", + "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", + "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", + "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates_ _components_ toward or away from the face with which you interacted.", + "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles_ _Kinetic_ _components_ and places them back in _your_ _inventory_.", + + "block.create.creative_motor.tooltip": "UNLOCALIZED: CREATIVE MOTOR", + "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", + + "block.create.water_wheel.tooltip": "RODA DE ÁGUA", + "block.create.water_wheel.tooltip.summary": "Prove _Força_ _Rotacional_ tirada de _Correntes_ de _Água_ próximas.", + + "block.create.encased_fan.tooltip": "VENTILADO REVESTIDO", + "block.create.encased_fan.tooltip.summary": "Converte _Força_ _Rotacional_ em _Correntes_ de _Ar_ e vice-versa. Muitos usos.", + "block.create.encased_fan.tooltip.condition1": "Quando sobre Fogo", + "block.create.encased_fan.tooltip.behaviour1": "Prove _Força_ _Rotacional_ (precisa ser na vertical)", + "block.create.encased_fan.tooltip.condition2": "Quando Invertido", + "block.create.encased_fan.tooltip.behaviour2": "_Empurra_ Entidades em um lado, _Puxa_ entidades no outro. Força e Velocidade dependem da Rotação de entrada.", + "block.create.encased_fan.tooltip.condition3": "Quando ar flui através de blocos especiais", + "block.create.encased_fan.tooltip.behaviour3": "Processa itens na frente do Bloco: _Água_ alva, _Fogo_ defuma, e _Lava_ derrete o ingrediente.", + + "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", + "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", + + "block.create.hand_crank.tooltip": "UNLOCALIZED: HAND CRANK", + "block.create.hand_crank.tooltip.summary": "UNLOCALIZED: A simple _source_ of _Rotational_ _Force_ that requires the interaction of players.", + "block.create.hand_crank.tooltip.condition1": "UNLOCALIZED: When Used", + "block.create.hand_crank.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to an attached contraption. _Sneak_ _to_ _reverse_ the rotation.", + + "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping_ _track_ _of_ _time_.", + "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", + + "block.create.turntable.tooltip": "MESA GIRATÓRIA", + "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", + + "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", + "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", + "block.create.millstone.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.millstone.tooltip.behaviour1": "UNLOCALIZED: Starts applying _milling_ _recipes_ to any items inserted from the side or the top of the block.", + "block.create.millstone.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", + + "block.create.crushing_wheel.tooltip": "RODA DE MOER", + "block.create.crushing_wheel.tooltip.summary": "Grandes rodas giratórias que _esmagam_ qualquer coisa que impeça seu movimento.", + "block.create.crushing_wheel.tooltip.condition1": "Quando conectado a outras Rodas de Moer", + "block.create.crushing_wheel.tooltip.behaviour1": "Forma uma estrutura de esmagamento para processar uma variedade de coisas. Os Dentes da rota precisam estar conectados e se movimentando com a _mesma_ _velocidade_ em _direções_ _opostas._", + + "block.create.mechanical_press.tooltip": "PRENSA MECÂNICA", + "block.create.mechanical_press.tooltip.summary": "Um forte pistão usado para comprimir itens abaixo dele. Precisa de _Força_ _Rotacional_ constante", + "block.create.mechanical_press.tooltip.condition1": "Quando Ligado com Redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Inicia_ compressão de itens jogados abaixo dele.", + "block.create.mechanical_press.tooltip.condition2": "Quando Sobre uma Esteira Mecânica", + "block.create.mechanical_press.tooltip.behaviour2": "_Automaticamente_ comprime itens que passando na Esteira.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "UNLOCALIZED: BASIN", + "block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "UNLOCALIZED: MECHANICAL MIXER", + "block.create.mechanical_mixer.tooltip.summary": "UNLOCALIZED: A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).", + "block.create.mechanical_mixer.tooltip.condition1": "UNLOCALIZED: When above Basin", + "block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present.", + "block.create.mechanical_mixer.tooltip.condition2": "UNLOCALIZED: When used with Wrench", + "block.create.mechanical_mixer.tooltip.behaviour2": "UNLOCALIZED: _Configures_ the minimum amount of _total_ _ingredients_ for applied recipes. Use this option to _rule_ _out_ _unwanted_ _recipes_ with similar but less ingredients.", + + "block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER", + "block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.", + "block.create.mechanical_crafter.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.mechanical_crafter.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _the_ _crafting_ _process_ as soon as _all_ _crafters_ in the grid have been _given_ _an_ _item_.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "UNLOCALIZED: When Wrenched at Front", + "block.create.mechanical_crafter.tooltip.action1": "UNLOCALIZED: _Cycles_ _the_ _direction_ an individual crafter _moves_ _its_ _items_ towards. To form a working grid, _arrange_ _the_ _belts_ _in_ _a_ _flow_ which moves all items towards a final crafter. The final crafter must _point_ _away_ from the grid.", + "block.create.mechanical_crafter.tooltip.control2": "UNLOCALIZED: When Wrenched at back", + "block.create.mechanical_crafter.tooltip.action2": "UNLOCALIZED: _Connects_ the _input_ _inventory_ of adjacent crafters. Use this to _combine_ _slots_ in the crafting grid and _save_ _on_ _input_ _work_.", + + "block.create.furnace_engine.tooltip": "UNLOCALIZED: FURNACE ENGINE", + "block.create.furnace_engine.tooltip.summary": "UNLOCALIZED: A powerful source of _Rotational_ _Power_ that requires a _running_ _furnace_ to work.", + "block.create.furnace_engine.tooltip.condition1": "UNLOCALIZED: When Attached to Lit Furnace", + "block.create.furnace_engine.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _powering_ a _Flywheel_ placed in front of it (1m apart). Use a Blast Furnace for higher speeds.", + + "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", + "block.create.flywheel.tooltip.summary": "UNLOCALIZED: A large metal wheel to _harness_ _and_ _stabilize_ generated force by an _attached_ _Engine_. Flywheels connect to engines if they are _1m_ _apart_ and at a _90°_ _Angle_ from each other.", + "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Attached to Running Engine", + "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to a connected contraption based on the generator's strength and speed.", + + "block.create.portable_storage_interface.tooltip": "UNLOCALIZED: PORTABLE STORAGE INTERFACE", + "block.create.portable_storage_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving_ _items_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley.", + "block.create.portable_storage_interface.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.portable_storage_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _transposers_ such that transposers _facing_ _away_ from the interface _pull_ _items_, and transposers targeting the interface will _insert_ _items_ from attached inventory. The contraption will briefly stall as items are exchanged.", + + "block.create.rotation_speed_controller.tooltip": "UNLOCALIZED: ROTATION SPEED CONTROLLER", + "block.create.rotation_speed_controller.tooltip.summary": "UNLOCALIZED: A _configurable_ _relay_ able to speed up or slow down the target component to any desired speed.", + "block.create.rotation_speed_controller.tooltip.condition1": "UNLOCALIZED: When Attached to Large Cogwheel", + "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", + + "block.create.mechanical_piston.tooltip": "PISTÃO MECÂNICO", + "block.create.mechanical_piston.tooltip.summary": "Uma verão melhorada do _Pistão,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. _Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", + "block.create.mechanical_piston.tooltip.condition1": "Quando Rodado", + "block.create.mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", + + "block.create.sticky_mechanical_piston.tooltip": "PISTÃO MECÂNICO GRUDENTO", + "block.create.sticky_mechanical_piston.tooltip.summary": "Uma versão melhorada do _Pistão_ _Grudento,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Rodado", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", + + "block.create.piston_extension_pole.tooltip": "VARA DE EXTENSÃO DO PISTÃO", + "block.create.piston_extension_pole.tooltip.summary": "Aumenta o alcance de _Pistões_ _Mecânicos_", + "block.create.piston_extension_pole.tooltip.condition1": "Quando preso a um Pistão Mecânico", + "block.create.piston_extension_pole.tooltip.behaviour1": "Aumenta a extensão dos pistões em 1 bloco", + + "block.create.mechanical_bearing.tooltip": "ROLAMENTO MECÂNICO", + "block.create.mechanical_bearing.tooltip.summary": "Usado para rotacionar _estruturas_ _grandes_ ou geração de _Força_ _Rotacional_ do vento.", + "block.create.mechanical_bearing.tooltip.condition1": "Quando Rodado", + "block.create.mechanical_bearing.tooltip.behaviour1": "Começa a rotacionar _Chassis_ de _Rotação_ conectados e blocos conectados a eles.", + "block.create.mechanical_bearing.tooltip.condition2": "Quando Ligado por Redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Começa a passar _Força_ _Rotacional_ das estruturas conectadas. A estrutura dele incluir _Blocos_ de _Vela_ válidos (atualmente qualquer Bloco de Lã).", + + "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", + "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", + "block.create.clockwork_bearing.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.clockwork_bearing.tooltip.behaviour1": "UNLOCALIZED: Starts rotating the attached Structure towards the _current_ _hour_. If an independent second structure exists in front of the first one, it will serve as the _minute_ _hand_.", + + "block.create.sequenced_gearshift.tooltip": "UNLOCALIZED: SEQUENCED GEARSHIFT", + "block.create.sequenced_gearshift.tooltip.summary": "UNLOCALIZED: A _programmable_ _utility_ _component,_ which can change its _rotational_ _through-put_ according to up to _5_ _consecutive_ _instructions._ Use this to power Mechanical Bearings, Pistons or Pulleys with more control over timing and speed. May become less precise at higher speeds.", + "block.create.sequenced_gearshift.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _executing_ programmed instructions based on the input speed.", + "block.create.sequenced_gearshift.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.sequenced_gearshift.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface._", + + "block.create.cart_assembler.tooltip": "UNLOCALIZED: CART ASSEMBLER", + "block.create.cart_assembler.tooltip.summary": "UNLOCALIZED: When _placed_ _on_ a _Rail_, adopts functionality and _assembles/disassebles_ _structures_ on passing _carts_.", + "block.create.cart_assembler.tooltip.condition1": "UNLOCALIZED: When placed above Rail", + "block.create.cart_assembler.tooltip.behaviour1": "UNLOCALIZED: _Assembles_ onto passing _carts_ _when_ _powered_, _disassembles_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "UNLOCALIZED: ROPE PULLEY", + "block.create.rope_pulley.tooltip.summary": "UNLOCALIZED: Moves attached _blocks_ and _structures_ _vertically_. Use _Chassis_ or _Slime_ _Blocks_ to move more than a single block.", + "block.create.rope_pulley.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", + + "block.create.linear_chassis.tooltip": "CHASSIS DE TRANSLADO", + "block.create.linear_chassis.tooltip.summary": "Uma base configurável para Estruturas serem movidas por um _Pistão_ _Mecânico._ Esses Blocos precisam formas uma camada de blocos na frente do Pistão.", + "block.create.linear_chassis.tooltip.condition1": "Quando movido por Pistão Mecânico", + "block.create.linear_chassis.tooltip.behaviour1": "_Move_ todos os _Chassis_ _conectados_ na mesma orientação, e Blocos conectados a frente dele. Quando o Pistão volta, blocos apenas serão puxados se a face do chassis for _Grudenta_ (Ver [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.linear_chassis.tooltip.control1": "Quando clicado com B-Direito com Gosma de Slime", + "block.create.linear_chassis.tooltip.action1": "Torna a face clicada _Grudenta._ Quando o pistão volta, o chassis irá _puxar_ _junto_ todos os Blocos conectados na sua coluna e no Alcance configurado.", + + "block.create.radial_chassis.tooltip": "CHASSIS DE ROTAÇÃO", + "block.create.radial_chassis.tooltip.summary": "Nessário para rotacionar estruturas om um _Rolamento_ _Mecânico._ ", + "block.create.radial_chassis.tooltip.condition1": "Quando Rotacionado por Rolamento", + "block.create.radial_chassis.tooltip.behaviour1": "_Rotaciona_ todos os blocos conectados a lados _Grudentos_ (Veja [Ctrl]) dentro do alcance configurado no seu entorno. _Propaga_ a rotação para outros Chassis de Rotação conectados.", + "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.radial_chassis.tooltip.control1": "Quando clicado com B-Direito com Goma de Slime", + "block.create.radial_chassis.tooltip.action1": "Torna face clicada em _Grudenta._ Quando o Chassis girar, todos os blocos conectados nesse lado irão girar junto.", + + "block.create.mechanical_drill.tooltip": "FURADEIRA MECÂNICA", + "block.create.mechanical_drill.tooltip.summary": "Um dispositivo mecânido feito para _quebrar_ _blocos._", + "block.create.mechanical_drill.tooltip.condition1": "Quando Rodado", + "block.create.mechanical_drill.tooltip.behaviour1": "Atua como um Bloco Quebrador _estacionário._ Também _machuca_ _entidades_ na sua área de efeito.", + "block.create.mechanical_drill.tooltip.condition2": "Quando Empurrado por Pistão Mecânico", + "block.create.mechanical_drill.tooltip.behaviour2": "Quebra os Blocos na direção do avanço da broca.", + + "block.create.mechanical_harvester.tooltip": "COLETOR MECÂNICO", + "block.create.mechanical_harvester.tooltip.summary": "Um cortador de plantas mecânico indicado para automação de culturas de médio porte", + "block.create.mechanical_harvester.tooltip.condition1": "Quando Empurrado por Pistão Mecânico", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Colhe_ todas as _safra_ _madura_ que a lâmina passar sobre, e os retorna a estado de crescimento inicial.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "UNLOCALIZED: MECHANICAL SAW", + "block.create.mechanical_saw.tooltip.summary": "UNLOCALIZED: Suitable for _cutting_ _trees_ effectively and for _cutting_ _blocks_ into their carpentered counterparts. It is movable using _Mechanical_ _Pistons_ or _Bearings_.", + "block.create.mechanical_saw.tooltip.condition1": "UNLOCALIZED: When facing up", + "block.create.mechanical_saw.tooltip.behaviour1": "UNLOCALIZED: Applies _Sawing_ and _Stonecutting_ _Recipes_ to items dropped onto or inserted into it. When multiple outputs are possible, it cycles through them unless a _filter_ is assigned.", + "block.create.mechanical_saw.tooltip.condition2": "UNLOCALIZED: When facing horizontally", + "block.create.mechanical_saw.tooltip.behaviour2": "UNLOCALIZED: _Breaks_ _logs_ in front of it. If the log supported a tree on its own, the _tree_ _will_ _collapse_ away from the saw.", + "block.create.mechanical_saw.tooltip.condition3": "UNLOCALIZED: While Moving", + "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", + + "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", + "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", + "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", + "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", + "block.create.stockpile_switch.tooltip.condition2": "Quando acima do Limite Máximo", + "block.create.stockpile_switch.tooltip.behaviour2": "Começa a enviar _Sinal_ de _Redstone_ até chegar no Limite Mínio novamente.", + "block.create.stockpile_switch.tooltip.control1": "Quando clicado com B-Direito", + "block.create.stockpile_switch.tooltip.action1": "Abre a _Interface_ de _Configuração_", + + "block.create.redstone_link.tooltip": "CONEXÃO DE REDSTONE", + "block.create.redstone_link.tooltip.summary": "Saida para conexões _Redstone_ _Sem-Fio._ Pode ter _Frequências_ usando qualquer item. Distancia do Sinal é limitada, mas resoavelmente justa.", + "block.create.redstone_link.tooltip.condition1": "Quando Ligado", + "block.create.redstone_link.tooltip.behaviour1": "Recebendo Conexões da mesma _Frequência_ irá gerar um sinal de Redstone.", + "block.create.redstone_link.tooltip.control1": "Quando clicado com B-Direito com um Item", + "block.create.redstone_link.tooltip.action1": "Altera a _Frequência_ para aquele item. Até _dois_ _itens_ _diferentes_ podem ser combinados para definir uma Frequência.", + "block.create.redstone_link.tooltip.control2": "Quando clicado com B-Direito enquanto Abaixado", + "block.create.redstone_link.tooltip.action2": "Muda entre Modo _Receptor_ e _Transmissor_ .", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "CONTATO DE REDSTONE", + "block.create.redstone_contact.tooltip.summary": "Um dispositivo simples para Mecanimos de Redstone avançados.", + "block.create.redstone_contact.tooltip.condition1": "Quando apontando para outro Contato", + "block.create.redstone_contact.tooltip.behaviour1": "Provê um _Sinal_ de _Redstone_", + "block.create.redstone_contact.tooltip.condition2": "Quando movido por Pistão Mecânico", + "block.create.redstone_contact.tooltip.behaviour2": "Ativa todos os Contatos imóveis na passagem", + + "block.create.adjustable_crate.tooltip": "adjustable_crate", + "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", + "block.create.adjustable_crate.tooltip.control1": "Quando clicado com B-Direito", + "block.create.adjustable_crate.tooltip.action1": "Abre a _Interface_", + + "block.create.creative_crate.tooltip": "CRIATIVADOR ESQUEMAANNON", + "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "EXTRATOR", + "block.create.extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ conectado e os joga no chão. Não irá jogar Itens até o espaço ser limpo. Pode ser configurado como para ser um _filtro._", + "block.create.extractor.tooltip.condition1": "Quando Ligado por Redstone", + "block.create.extractor.tooltip.behaviour1": "_Para_ o Extractor", + "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", + "block.create.extractor.tooltip.control1": "B-Direito no Espaço de Filtro", + "block.create.extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", + + "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", + "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.transposer.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.transposer.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.transposer.tooltip.behaviour2": "UNLOCALIZED: Transposers can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the transposer is backed up, the _belt_ _will_ _stall_.", + "block.create.transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will pull the item _type_ and _count_ of the filter stack exclusively.", + + "block.create.deployer.tooltip": "UNLOCALIZED: DEPLOYER", + "block.create.deployer.tooltip.summary": "UNLOCALIZED: _Punches_, _Uses_, and _Activates_. This machine will try to _imitate_ a _player_ as a much as possible. Can _Take_ and _Deposit_ _items_ in adjacent _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.deployer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.deployer.tooltip.behaviour1": "UNLOCALIZED: Extends its arm and _activates_ in the block space _2m_ _ahead_ of itself.", + "block.create.deployer.tooltip.condition2": "UNLOCALIZED: R-Clicked with Wrench", + "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", + + "block.create.linked_extractor.tooltip": "EXTRATOR CONECTADO", + "block.create.linked_extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ e os joga no chão. Não vai jogar Itens até que o espaço ser limpo. Pode ser configurado como para ser um _filtro._ Pode ser controlado remotamente via _Conexão_ de _Redstone._", + "block.create.linked_extractor.tooltip.condition1": "Quando Conexão de Redstone Ativa", + "block.create.linked_extractor.tooltip.behaviour1": "_Para_ o Extrator", + "block.create.linked_extractor.tooltip.control1": "B-Direito no Espaço de Filtro", + "block.create.linked_extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", + "block.create.linked_extractor.tooltip.control2": "B-Direito no Espaço de Frequência", + "block.create.linked_extractor.tooltip.action2": "Configura a _pilha_ atualmente _presente_ como parte da Frequência a ouvir. Quando um _Conexão_ de _Redstone_ transmissor da mesma frequência é ligado, esse Extrator irá parar.", + + "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", + "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", + "block.create.linked_transposer.tooltip.condition1": "UNLOCALIZED: When Redstone Link Active", + "block.create.linked_transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.linked_transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.linked_transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will only pull items that match the item _type_ and _count_ of the filter stack.", + "block.create.linked_transposer.tooltip.control2": "UNLOCALIZED: R-Click on Frequency Space", + "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", + + "block.create.funnel.tooltip": "FUNIL DE ESTEIRA", + "block.create.funnel.tooltip.summary": "Coleta itens passando numa _Esteira_ _Mecânica_ e os insere no _Inventário_ conetado, se possível. Precisa estar diretamente _sobre_ uma Esteira, com a abertura virada contra o movimento da Esteira. O inventário precisa estar na mesma altura que o funil.", + "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", + "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", + + "block.create.belt_tunnel.tooltip": "UNLOCALIZED: BELT TUNNEL", + "block.create.belt_tunnel.tooltip.summary": "UNLOCALIZED: An aesthetic option for running your _Mechanical_ _Belts_ through walls. Belts have to be reinforced with _Brass_ _Casing_. Tunnels can _synchronize_ with _their_ _neighbours_, only letting items pass if all tunnels in the group have one waiting. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "UNLOCALIZED: R-Click with Wrench on Front", + "block.create.belt_tunnel.tooltip.action1": "UNLOCALIZED: Toggles _synchronized_ _behaviour_. Synchronized tunnels hold items until their neighbours have an item as well.", + "block.create.belt_tunnel.tooltip.control2": "UNLOCALIZED: R-Click with Wrench on Side", + "block.create.belt_tunnel.tooltip.action2": "UNLOCALIZED: _Adjusts_ _window_ _shutters_ if the tunnel has a window on that face.", + + "block.create.brass_casing.tooltip": "UNLOCALIZED: BRASS CASING", + "block.create.brass_casing.tooltip.summary": "UNLOCALIZED: Sturdy machine casing with a variety of uses. Safe for decoration.", + "block.create.brass_casing.tooltip.condition1": "UNLOCALIZED: When used on Mechanical Belt", + "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", + + "block.create.belt_observer.tooltip": "OBSERVADOR DE ESTEIRA", + "block.create.belt_observer.tooltip.summary": "Detecta os itens passando numa _Esteira_ _Mecânica_ a sua frente. Funciona bem com um _Pistão_ em cima, empurrando certos itens.", + "block.create.belt_observer.tooltip.condition1": "Quando item bate com Filtro", + "block.create.belt_observer.tooltip.behaviour1": "Provê um _Pulso_ curto de _Redstone_ para todos os lados. Um Filtro vazio considera todos os itens passando.", + "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", + "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", + "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", + "block.create.belt_observer.tooltip.behaviour3": "UNLOCALIZED: _Ejects_ _matching_ _items_ off the side. If the target belt or space is _occupied_, the item will be _held_ _in_ _place_.", + "block.create.belt_observer.tooltip.condition4": "UNLOCALIZED: Split Mode", + "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", + + "block.create.pulse_repeater.tooltip": "REPETIDOR DE PULSO", + "block.create.pulse_repeater.tooltip.summary": "Um circuito simples para cortar pulsos de Redstone até um comprimento de _1_ _tick._", + + "block.create.adjustable_repeater.tooltip": "REPETIDOR FLEX", + "block.create.adjustable_repeater.tooltip.summary": "Um um _Repetidor_ de _Redstone_ avançado com um _Delay_ _configurável_ de até 30 Minutos.", + + "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", + "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", + + "block.create.analog_lever.tooltip": "UNLOCALIZED: ANALOG LEVER", + "block.create.analog_lever.tooltip.summary": "UNLOCALIZED: A lever with more _precise_ _control_ over its emitted _signal_ _strength_.", + + "block.create.powered_toggle_latch.tooltip": "UNLOCALIZED: POWERED TOGGLE LATCH", + "block.create.powered_toggle_latch.tooltip.summary": "UNLOCALIZED: A lever that can be toggled by a _Redstone_ _Pulse_.", + + "block.create.powered_latch.tooltip": "UNLOCALIZED: POWERED LATCH", + "block.create.powered_latch.tooltip.summary": "UNLOCALIZED: A lever that can be controlled by _Redstone_ _Signals_. A signal on the _back_ _enables_ it, a signal from the _side_ _will_ _reset_ it.", + + "block.create.speedometer.tooltip": "UNLOCALIZED: SPEEDOMETER", + "block.create.speedometer.tooltip.summary": "UNLOCALIZED: Measures and displays the _rotational_ _speed_ of attached kinetic components. Supports _Redstone_ _Comparators_.", + "block.create.speedometer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.speedometer.tooltip.behaviour1": "UNLOCALIZED: Indicates a color corresponding to the level of speed. _Green_ indicates Slow, _Blue_ Moderate and _Purple_ Fast rotation. Some mechanical components require a sufficient level of speed to work properly.", + + "block.create.stressometer.tooltip": "UNLOCALIZED: STRESSOMETER", + "block.create.stressometer.tooltip.summary": "UNLOCALIZED: Measures and displays the _overall_ _stress_ of the attached kinetic network. Supports _Redstone_ _Comparators_.", + "block.create.stressometer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.stressometer.tooltip.behaviour1": "UNLOCALIZED: Indicates a color corresponding to the level of stress. _Over-stressed_ _networks_ will cease to move. Stress can be relieved by adding more _rotational_ _sources_ to the network.", + + "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", + "tool.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "tool.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking_ _at_ _them_", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed_ _light_.", + + "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in_ _the_ _void_.", + + "item.create.crafter_slot_cover.tooltip": "UNLOCALIZED: SLOT COVER", + "item.create.crafter_slot_cover.tooltip.summary": "UNLOCALIZED: Used to mark a _Mechanical_ _Crafter_ as an empty slot in a recipe. Crafters do not necessarily have to form a full square grid. This is useful when there are recipes where _ingredients_ _are_ _diagonal_ to each other.", + + "create.tooltip.wip": "UNLOCALIZED: WIP", + "create.tooltip.workInProgress": "UNLOCALIZED: Work in progress!", + "create.tooltip.randomWipDescription0": "UNLOCALIZED: Please keep this item away from children.", + "create.tooltip.randomWipDescription1": "UNLOCALIZED: A baby panda dies every time you use this item. Every. Time.", + "create.tooltip.randomWipDescription2": "UNLOCALIZED: Use at your own risk.", + "create.tooltip.randomWipDescription3": "UNLOCALIZED: This is not the item you are looking for, *finger-wiggles* please disperse.", + "create.tooltip.randomWipDescription4": "UNLOCALIZED: This item will self-destruct in 10 seconds. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "UNLOCALIZED: Believe me, it's useless.", + "create.tooltip.randomWipDescription6": "UNLOCALIZED: By using this item, you hereby consent to our disclaimer and agree to its terms.", + "create.tooltip.randomWipDescription7": "UNLOCALIZED: This one maybe isn't for you. What about that one?", + "create.tooltip.randomWipDescription8": "UNLOCALIZED: Use it and regret your decision immediately.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json new file mode 100644 index 000000000..781de51c7 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 767" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "UNLOCALIZED: Acacia Window", + "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", + "block.create.adjustable_crate": "Гибкий ящик", + "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", + "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", + "block.create.adjustable_repeater": "Настраиваемый повторитель", + "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_bricks": "Андезитовые кирпичи", + "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", + "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", + "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", + "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", + "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", + "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", + "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.basin": "UNLOCALIZED: Basin", + "block.create.belt": "Механическая лента", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "Ленточный сканер", + "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", + "block.create.birch_window": "UNLOCALIZED: Birch Window", + "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_block": "UNLOCALIZED: Brass Block", + "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", + "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", + "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", + "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", + "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", + "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", + "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", + "block.create.clutch": "Переключаемая муфта", + "block.create.cogwheel": "Шестерня", + "block.create.copper_block": "UNLOCALIZED: Copper Block", + "block.create.copper_casing": "UNLOCALIZED: Copper Casing", + "block.create.copper_ore": "UNLOCALIZED: Copper Ore", + "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", + "block.create.creative_crate": "Креативный ящик", + "block.create.creative_motor": "UNLOCALIZED: Creative Motor", + "block.create.crushing_wheel": "Дробильное колесо", + "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", + "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", + "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", + "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", + "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", + "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", + "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", + "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", + "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", + "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", + "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", + "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", + "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", + "block.create.deployer": "UNLOCALIZED: Deployer", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "Диоритовые кирпичи", + "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", + "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", + "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", + "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", + "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", + "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", + "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", + "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", + "block.create.dolomite": "Доломит", + "block.create.dolomite_bricks": "Доломитовые кирпичи", + "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", + "block.create.dolomite_bricks_stairs": "Ступеньки из доломитового кирпича", + "block.create.dolomite_bricks_wall": "Ограда из доломитового кирпича", + "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", + "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", + "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", + "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", + "block.create.dolomite_pillar": "Доломитовая колонна", + "block.create.encased_belt": "Ленточный привод", + "block.create.encased_fan": "Вентилятор", + "block.create.encased_shaft": "Вальный привод", + "block.create.extractor": "Экстрактор", + "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", + "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", + "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", + "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", + "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", + "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", + "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", + "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", + "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", + "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", + "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", + "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", + "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", + "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", + "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", + "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", + "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", + "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", + "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", + "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", + "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", + "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", + "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", + "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", + "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", + "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", + "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", + "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", + "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", + "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", + "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", + "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", + "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", + "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", + "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", + "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "UNLOCALIZED: Flywheel", + "block.create.framed_glass": "UNLOCALIZED: Framed Glass", + "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", + "block.create.funnel": "Ленточная воронка", + "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", + "block.create.gabbro": "Габбро", + "block.create.gabbro_bricks": "Габбровые кирпичи", + "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", + "block.create.gabbro_bricks_stairs": "Ступеньки из габбрового кирпича", + "block.create.gabbro_bricks_wall": "Ограда из габбрового кирпича", + "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", + "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", + "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", + "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", + "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", + "block.create.gearbox": "Муфта", + "block.create.gearshift": "Реверсивная муфта", + "block.create.granite_bricks": "Гранитные кирпичи", + "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", + "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", + "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", + "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", + "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", + "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", + "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", + "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", + "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", + "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", + "block.create.jungle_window": "UNLOCALIZED: Jungle Window", + "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", + "block.create.large_cogwheel": "Большая шестерня", + "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", + "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", + "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", + "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", + "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", + "block.create.layered_granite": "UNLOCALIZED: Layered Granite", + "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", + "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", + "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", + "block.create.limesand": "Известь", + "block.create.limestone": "Известняк", + "block.create.limestone_bricks": "Известковые кирпичи", + "block.create.limestone_bricks_slab": "Плита из известкового кирпича", + "block.create.limestone_bricks_stairs": "Ступеньки из известкового кирпича", + "block.create.limestone_bricks_wall": "Ограда из известкового кирпича", + "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", + "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", + "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", + "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", + "block.create.limestone_pillar": "Известняковая колонна", + "block.create.linear_chassis": "Поступательная рама", + "block.create.linked_extractor": "Сигнальный экстрактор", + "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "Механический подшипник", + "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", + "block.create.mechanical_drill": "Механический бур", + "block.create.mechanical_harvester": "Механический комбайнер", + "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", + "block.create.mechanical_piston": "Механический поршень", + "block.create.mechanical_piston_head": "Ствол механического поршня", + "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", + "block.create.mechanical_press": "Механический пресс", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", + "block.create.millstone": "UNLOCALIZED: Millstone", + "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", + "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", + "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", + "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", + "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", + "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", + "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", + "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", + "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", + "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", + "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", + "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", + "block.create.nozzle": "UNLOCALIZED: Nozzle", + "block.create.oak_window": "UNLOCALIZED: Oak Window", + "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", + "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", + "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", + "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", + "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", + "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", + "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", + "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", + "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", + "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", + "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", + "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", + "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", + "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", + "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", + "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", + "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", + "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", + "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", + "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", + "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", + "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", + "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", + "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", + "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", + "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", + "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", + "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", + "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", + "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", + "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", + "block.create.paved_granite": "UNLOCALIZED: Paved Granite", + "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", + "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", + "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", + "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", + "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", + "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", + "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", + "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", + "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", + "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", + "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", + "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", + "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", + "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", + "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", + "block.create.piston_extension_pole": "Удлинитель поршня", + "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", + "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", + "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", + "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", + "block.create.polished_dolomite": "Полированный доломит", + "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", + "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", + "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", + "block.create.polished_gabbro": "Полированный габбро", + "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", + "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", + "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", + "block.create.polished_limestone": "Полированный известняк", + "block.create.polished_limestone_slab": "Плита из полированного известняка", + "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", + "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", + "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", + "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", + "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", + "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", + "block.create.polished_weathered_limestone": "Полированный обветренный известняк", + "block.create.polished_weathered_limestone_slab": "Плита из полированного обветренного известняка", + "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", + "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", + "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", + "block.create.powered_latch": "UNLOCALIZED: Powered Latch", + "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", + "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", + "block.create.pulse_repeater": "Повторитель импульса", + "block.create.radial_chassis": "Поворотная рама", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "Контактное соединение", + "block.create.redstone_link": "Сигнальное соединение", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "UNLOCALIZED: Rope", + "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", + "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", + "block.create.schematic_table": "Стол для схем", + "block.create.schematicannon": "Схемопушка", + "block.create.scoria": "UNLOCALIZED: Scoria", + "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", + "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", + "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", + "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", + "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", + "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", + "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", + "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", + "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", + "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", + "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", + "block.create.shaft": "Вал", + "block.create.speedometer": "UNLOCALIZED: Speedometer", + "block.create.spruce_window": "UNLOCALIZED: Spruce Window", + "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", + "block.create.sticky_mechanical_piston": "Липкий механический поршень", + "block.create.stockpile_switch": "Коммутатор хранилища", + "block.create.stressometer": "UNLOCALIZED: Stressometer", + "block.create.tiled_glass": "Плиточное стекло", + "block.create.tiled_glass_pane": "Плиточная стеклянная панель", + "block.create.transposer": "UNLOCALIZED: Transposer", + "block.create.turntable": "Поворотный стол", + "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", + "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", + "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", + "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", + "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", + "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", + "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", + "block.create.water_wheel": "Водяное колесо", + "block.create.weathered_limestone": "Обветренный известняк", + "block.create.weathered_limestone_bricks": "Кирпичи из обветренного известняка", + "block.create.weathered_limestone_bricks_slab": "Плита из кирпича из обветренного известняка", + "block.create.weathered_limestone_bricks_stairs": "Ступеньки из кирпича из обветренного известняка", + "block.create.weathered_limestone_bricks_wall": "Ограда из кирпича из обветренного известняка", + "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", + "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", + "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", + "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", + "block.create.weathered_limestone_pillar": "Колонна из обветренного известняка", + "block.create.zinc_block": "UNLOCALIZED: Zinc Block", + "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", + + "entity.create.contraption": "UNLOCALIZED: Contraption", + "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", + "entity.create.super_glue": "UNLOCALIZED: Super Glue", + + "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", + "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", + "item.create.belt_connector": "Механическая лента", + "item.create.brass_hand": "UNLOCALIZED: Brass Hand", + "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", + "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", + "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", + "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", + "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", + "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", + "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", + "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_brass": "UNLOCALIZED: Crushed Brass", + "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", + "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", + "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.deforester": "UNLOCALIZED: Deforester", + "item.create.dough": "Тесто", + "item.create.electron_tube": "UNLOCALIZED: Electron Tube", + "item.create.empty_schematic": "Пустая схема", + "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", + "item.create.filter": "Фильтр", + "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", + "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", + "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", + "item.create.handheld_blockzapper": "Портативный размещатель блоков", + "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", + "item.create.iron_sheet": "Железная пластина", + "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", + "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", + "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", + "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", + "item.create.propeller": "Пропеллер", + "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", + "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", + "item.create.rose_quartz": "Розовый Кварц", + "item.create.sand_paper": "UNLOCALIZED: Sand Paper", + "item.create.schematic": "Схема", + "item.create.schematic_and_quill": "Схема и перо", + "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", + "item.create.super_glue": "UNLOCALIZED: Super Glue", + "item.create.tree_fertilizer": "Удобрение для деревьев", + "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", + "item.create.wand_of_symmetry": "Посох симметрии", + "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", + "item.create.whisk": "UNLOCALIZED: Whisk", + "item.create.wrench": "UNLOCALIZED: Wrench", + "item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot", + "item.create.zinc_nugget": "UNLOCALIZED: Zinc Nugget", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "UNLOCALIZED: Welcome to Create", + "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", + "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", + "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", + "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", + "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", + "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gear", + "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a large to a small cogwheel allowing you to change the speed of your contraption.", + "advancement.create.overstressed": "UNLOCALIZED: Overstressed", + "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", + "advancement.create.belt": "UNLOCALIZED: Convey it all", + "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", + "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", + "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", + "advancement.create.goggles": "UNLOCALIZED: Stress-o-vision", + "advancement.create.goggles.desc": "UNLOCALIZED: Create some goggles to aid you in getting more kinetic information for components.", + "advancement.create.speedometer": "UNLOCALIZED: But how fast exactly?", + "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", + "advancement.create.stressometer": "UNLOCALIZED: But how stressed exactly?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", + "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", + "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", + "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", + "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", + "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone", + "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", + "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary breakers", + "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_drill", + "advancement.create.press": "UNLOCALIZED: Press goes 'Bonk!'", + "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Plates.", + "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of sand paper to polish Rose Quartz until it becomes transparent.", + "advancement.create.electron_tube": "UNLOCALIZED: Beep boop", + "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", + "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", + "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical mechanical_saw", + "advancement.create.basin": "UNLOCALIZED: Basin Operation", + "advancement.create.basin.desc": "UNLOCALIZED: Place a basin and try throwing items into it.", + "advancement.create.mixer": "UNLOCALIZED: Mixin' it Up", + "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the basin, power it, and start mixing some ingredients.", + "advancement.create.compact": "UNLOCALIZED: Automated Compacting", + "advancement.create.compact.desc": "UNLOCALIZED: Use a press and a basin to compact some items.", + "advancement.create.expert_lane_1": "UNLOCALIZED: The Andesite Expert Lane", + "advancement.create.expert_lane_1.desc": "UNLOCALIZED: Work in Progress", + "advancement.create.brass": "UNLOCALIZED: An Actual Alloy", + "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", + "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", + "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some copper sheets to create Copper Casing.", + "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", + "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", + "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", + "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", + "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", + "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", + "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", + "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", + "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", + "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", + "advancement.create.zapper": "UNLOCALIZED: Building with style", + "advancement.create.zapper.desc": "UNLOCALIZED: Craft a Blockzapper. A radiant laser gun that helps you build.", + "advancement.create.upgraded_zapper": "UNLOCALIZED: Radiant Overdrive", + "advancement.create.upgraded_zapper.desc": "UNLOCALIZED: Create and activate a fully upgraded Blockzapper.", + "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", + "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", + "advancement.create.deforester": "UNLOCALIZED: Radiant Chopping", + "advancement.create.deforester.desc": "UNLOCALIZED: Craft a Deforester, and say goodbye to the local forest.", + "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", + "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", + "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", + "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", + "advancement.create.eob": "UNLOCALIZED: End of Beta", + "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "UNLOCALIZED: Create", + "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", + + "death.attack.create.crush": "%1$s был переработан дробильными колёсами", + "death.attack.create.fan_fire": "%1$s сгорел заживо от горячего воздуха.", + "death.attack.create.fan_lava": "%1$s сгорел заживо от лавового вентилятора", + "death.attack.create.mechanical_drill": "%1$s был проколот механическим буром", + "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", + "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", + + "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "Дробление", + "create.recipe.milling": "UNLOCALIZED: Milling", + "create.recipe.splashing": "Промывка вентилятором", + "create.recipe.splashing.fan": "Вентилятор за проточной водой", + "create.recipe.smoking_via_fan": "Копчение вентилятором", + "create.recipe.smoking_via_fan.fan": "Вентилятор за огнём", + "create.recipe.blasting_via_fan": "Плавление вентилятором", + "create.recipe.blasting_via_fan.fan": "Вентелятор за лавой", + "create.recipe.pressing": "Механический пресс", + "create.recipe.mixing": "UNLOCALIZED: Mixing", + "create.recipe.packing": "UNLOCALIZED: Compacting", + "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", + "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", + "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", + "create.recipe.blockzapper_upgrade": "Портативный размещатель блоков", + "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", + "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", + "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", + "create.recipe.processing.chance": "%1$s%% шанс выпадения", + "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", + + "create.generic.range": "Зона", + "create.generic.radius": "Радиус", + "create.generic.width": "UNLOCALIZED: Width", + "create.generic.height": "UNLOCALIZED: Height", + "create.generic.length": "UNLOCALIZED: Length", + "create.generic.speed": "Скорость", + "create.generic.delay": "Задержка", + "create.generic.unit.ticks": "тик", + "create.generic.unit.seconds": "сек", + "create.generic.unit.minutes": "мин", + "create.generic.unit.rpm": "UNLOCALIZED: RPM", + "create.generic.unit.stress": "UNLOCALIZED: su", + "create.generic.unit.degrees": "UNLOCALIZED: °", + + "create.action.scroll": "КолМыши", + "create.action.confirm": "Подтвердить", + "create.action.abort": "Отменить", + "create.action.saveToFile": "Сохранить", + "create.action.discard": "Сбросить", + + "create.keyinfo.toolmenu": "Фокусировка меню иструментов", + "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", + "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", + + "create.gui.scrollInput.defaultTitle": "Выберите:", + "create.gui.scrollInput.scrollToModify": "КолМыши, чтобы изменить", + "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", + "create.gui.scrollInput.scrollToSelect": "КолМыши, чтобы выделить", + "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift, чтобы прокручивать быстрее", + "create.gui.toolmenu.focusKey": "Зажмите [%1$s], чтобы сфокусироваться", + "create.gui.toolmenu.cycle": "[КолМыши] , чтобы выбрать", + "create.gui.symmetryWand.mirrorType": "Зеркало", + "create.gui.symmetryWand.orientation": "Ориентация", + + "create.symmetry.mirror.plane": "Линейно", + "create.symmetry.mirror.doublePlane": "Прямоугольно", + "create.symmetry.mirror.triplePlane": "Восьмиугольно", + + "create.orientation.orthogonal": "Перпендикулярно", + "create.orientation.diagonal": "Диагонально", + "create.orientation.horizontal": "Горизонтально", + "create.orientation.alongZ": "По оси Z", + "create.orientation.alongX": "По оси X", + + "create.gui.blockzapper.title": "Порт. размещ. блоков", + "create.gui.blockzapper.replaceMode": "Режим замены", + "create.gui.blockzapper.searchDiagonal": "Следовать диагоналям", + "create.gui.blockzapper.searchFuzzy": "Игнорировать материальные границы", + "create.gui.blockzapper.range": "Радиус", + "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", + "create.gui.blockzapper.patternSection": "Шаблоны", + "create.gui.blockzapper.pattern.solid": "Сплошной", + "create.gui.blockzapper.pattern.checkered": "Шахматная доска", + "create.gui.blockzapper.pattern.inversecheckered": "Обратная шахматная доска", + "create.gui.blockzapper.pattern.chance25": "25% покрытия", + "create.gui.blockzapper.pattern.chance50": "50% покрытия", + "create.gui.blockzapper.pattern.chance75": "75% покрытия", + "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", + "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", + "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", + "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", + "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", + "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", + "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", + "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", + "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", + "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", + "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", + "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", + "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", + "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", + "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", + "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", + + "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + + "create.blockzapper.usingBlock": "Материал: %1$s", + "create.blockzapper.componentUpgrades": "Улучшения компонентов:", + "create.blockzapper.component.body": "Корпус", + "create.blockzapper.component.amplifier": "Усилитель", + "create.blockzapper.component.accelerator": "Ускоритель", + "create.blockzapper.component.retriever": "Коллектор", + "create.blockzapper.component.scope": "Прицел", + "create.blockzapper.componentTier.none": "Ничего", + "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", + "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", + "create.blockzapper.leftClickToSet": "ЛКМ на блок, чтобы выбрать материал", + "create.blockzapper.empty": "Закончились блоки!", + + "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", + "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", + "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", + "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", + "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", + "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", + "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", + "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", + "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", + "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", + + "create.logistics.filter": "Фильтр", + "create.logistics.firstFrequency": "Част. #1", + "create.logistics.secondFrequency": "Част. #2", + + "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", + "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", + "create.gui.goggles.at_current_speed": "UNLOCALIZED: At current Speed", + "create.gui.goggles.base_value": "UNLOCALIZED: Base Value", + "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", + "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", + "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", + "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", + "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", + "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", + "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", + "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", + "create.gui.adjustable_crate.title": "Гибкий ящик", + "create.gui.adjustable_crate.storageSpace": "Обьём хранилища", + "create.gui.stockpile_switch.title": "Сенсор хранилища", + "create.gui.stockpile_switch.lowerLimit": "Нижний порог", + "create.gui.stockpile_switch.upperLimit": "Верхний порог", + "create.gui.stockpile_switch.startAt": "Включить на", + "create.gui.stockpile_switch.startAbove": "Включить выше", + "create.gui.stockpile_switch.stopAt": "Отключить на", + "create.gui.stockpile_switch.stopBelow": "Отключить ниже", + "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", + "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", + "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", + "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", + "create.gui.sequenced_gearshift.instruction.wait": "UNLOCALIZED: Wait", + "create.gui.sequenced_gearshift.instruction.wait.duration": "UNLOCALIZED: Duration", + "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", + "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", + "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", + "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", + "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", + + "create.schematicAndQuill.dimensions": "Размер схемы: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Первая позиция установлена.", + "create.schematicAndQuill.secondPos": "Вторая позиция установлена.", + "create.schematicAndQuill.noTarget": "Зажмите [Ctrl], чтобы выделять блоки воздуха.", + "create.schematicAndQuill.abort": "Выделение удалено.", + "create.schematicAndQuill.prompt": "Введите название для новой схемы:", + "create.schematicAndQuill.fallbackName": "Моя схема", + "create.schematicAndQuill.saved": "Сохранено как %1$s", + + "create.schematic.invalid": "[!] Недействительный предмет - используйте стол для схем", + "create.schematic.position": "Позиция", + "create.schematic.rotation": "Вращение", + "create.schematic.rotation.none": "Ничего", + "create.schematic.rotation.cw90": "90° по часовой", + "create.schematic.rotation.cw180": "180° по часовой", + "create.schematic.rotation.cw270": "270° по часовой", + "create.schematic.mirror": "Отразить", + "create.schematic.mirror.none": "Ничего", + "create.schematic.mirror.frontBack": "Перед-зад", + "create.schematic.mirror.leftRight": "Лево-право", + "create.schematic.tool.deploy": "Разместить", + "create.schematic.tool.move": "Сдвиг по XZ", + "create.schematic.tool.movey": "Сдвиг по Y", + "create.schematic.tool.rotate": "Повернуть", + "create.schematic.tool.print": "Напечатать", + "create.schematic.tool.flip": "Отразить", + "create.schematic.tool.deploy.description.0": "Размещает конструкцию.", + "create.schematic.tool.deploy.description.1": "ПКМ на земле для размещения.", + "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl] для перемещения на фикс. дистанции.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-КолМыши для изменения дистанции.", + "create.schematic.tool.move.description.0": "Сдвигает схему по горизонтали", + "create.schematic.tool.move.description.1": "Смотрите на схему и [CTRL]-КолМыши для сдвига.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали", + "create.schematic.tool.movey.description.1": "[CTRL]-КолМыши для сдвига вверх/вниз", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Вращает схему вокруг центра.", + "create.schematic.tool.rotate.description.1": "[CTRL]-КолМыши для поворота на 90°", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Моментально размещает структуру в мире", + "create.schematic.tool.print.description.1": "[ПКМ] для размещения в текущем месте.", + "create.schematic.tool.print.description.2": "Только для креативного режима.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Отражает схему вдоль выбранной стороны.", + "create.schematic.tool.flip.description.1": "Смотрите на схему и [CTRL]-КолМыши для отражения.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Синхронизация...", + "create.schematics.uploadTooLarge": "Схема слишком большая", + "create.schematics.maxAllowedSize": "Максимальный размер файла схемы:", + + "create.gui.schematicTable.title": "Стол для схем", + "create.gui.schematicTable.availableSchematics": "Доступные схемы", + "create.gui.schematicTable.noSchematics": "Нет сохранённых схем", + "create.gui.schematicTable.uploading": "Загрузка...", + "create.gui.schematicTable.finished": "Загрузка завершена!", + "create.gui.schematicannon.title": "Схемопушка", + "create.gui.schematicannon.settingsTitle": "Параметры размещения", + "create.gui.schematicannon.listPrinter": "Распечатать список материалов", + "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "C запасом: %1$s", + "create.gui.schematicannon.optionEnabled": "Включена", + "create.gui.schematicannon.optionDisabled": "Отключена", + "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", + "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", + "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", + "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", + "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", + "create.gui.schematicannon.option.skipTileEntities": "Защита от сущностей", + "create.gui.schematicannon.option.skipMissing.description": "Если схемопушка не найдёт нужный блок, то она продолжит в следующем месте.", + "create.gui.schematicannon.option.skipTileEntities.description": "Схемопушка будет избегать замены блоков с данными, например сундуки.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Схемопушка никогда не заменит целые блоки, только не целые и воздух.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Схемопушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", + "create.gui.schematicannon.option.replaceWithAny.description": "Схемопушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Схемопушка отчистит все блоки, включая замену на воздух.", + + "create.schematicannon.status.idle": "Бездействует", + "create.schematicannon.status.ready": "Готова", + "create.schematicannon.status.running": "Работает", + "create.schematicannon.status.finished": "Закончила", + "create.schematicannon.status.paused": "Приостановлена", + "create.schematicannon.status.stopped": "Остановлена", + "create.schematicannon.status.noGunpowder": "Кончился порох", + "create.schematicannon.status.targetNotLoaded": "Блок не загружен", + "create.schematicannon.status.targetOutsideRange": "Цель слишком далеко", + "create.schematicannon.status.searching": "Поиск", + "create.schematicannon.status.skipping": "Пропуск", + "create.schematicannon.status.missingBlock": "Нет блока:", + "create.schematicannon.status.placing": "Размещение", + "create.schematicannon.status.clearing": "Отчистка", + "create.schematicannon.status.schematicInvalid": "Схема недействительна", + "create.schematicannon.status.schematicNotPlaced": "Схема не размещена", + "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истек", + + "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", + "create.gui.filter.whitelist": "UNLOCALIZED: Whitelist", + "create.gui.filter.whitelist.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Whitelist rejects everything.", + "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", + "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", + "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", + "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", + + "create.item_attributes.placeable": "UNLOCALIZED: is placeable", + "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", + "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", + "create.item_attributes.washable": "UNLOCALIZED: can be Washed", + "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", + "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", + "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", + "create.item_attributes.damaged": "UNLOCALIZED: is damaged", + "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", + "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", + "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", + "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", + "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", + "create.item_attributes.in_item_group": "UNLOCALIZED: belongs to %1$s", + "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", + "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", + "create.gui.attribute_filter.whitelist_disjunctive": "UNLOCALIZED: Whitelist (Any)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", + "create.gui.attribute_filter.whitelist_conjunctive": "UNLOCALIZED: Whitelist (All)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", + "create.gui.attribute_filter.blacklist": "UNLOCALIZED: Blacklist", + "create.gui.attribute_filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", + "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", + + "create.tooltip.holdKey": "Зажмите [%1$s]", + "create.tooltip.holdKeyOrKey": "Зажмите [%1$s] или [%2$s]", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", + "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", + "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", + "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", + "create.tooltip.stressImpact": "UNLOCALIZED: Stress Impact: %1$s", + "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", + "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", + "create.tooltip.stressImpact.high": "UNLOCALIZED: High", + "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", + "create.tooltip.capacityProvided": "UNLOCALIZED: Stress Capacity: %1$s", + "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", + "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", + "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", + "create.tooltip.capacityProvided.asGenerator": "UNLOCALIZED: (As Generator)", + "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", + "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "UNLOCALIZED: Min. Ingredients", + + "create.command.killTPSCommand": "UNLOCALIZED: killtps", + "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", + "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", + "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", + "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", + "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", + + "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon shoots", + "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon finishes", + "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", + "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press activates", + "create.subtitle.mechanical_press_item_break": "UNLOCALIZED: Metal clanks", + "create.subtitle.blockzapper_place": "UNLOCALIZED: Blocks zap into place", + "create.subtitle.blockzapper_confirm": "UNLOCALIZED: Affirmative Ding", + "create.subtitle.blockzapper_deny": "UNLOCALIZED: Declining Boop", + "create.subtitle.block_funnel_eat": "UNLOCALIZED: Funnel CHOMPS", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "When this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And When this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "When Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", + "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", + "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", + "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", + "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", + "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", + "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадясь", + "item.create.wand_of_symmetry.tooltip.action3": "Открывает _Меню_ _настройки_", + + "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", + "item.create.handheld_blockzapper.tooltip.summary": "Новейшее устройство для размещения или замены блоков на расстоянии.", + "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", + "item.create.handheld_blockzapper.tooltip.action1": "Устанавливает выбранный блок как материал.", + "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", + "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", + "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадясь", + "item.create.handheld_blockzapper.tooltip.action3": "Открывает _Меню_ _настройки_", + + "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", + "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", + "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", + "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", + "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", + "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", + "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", + + "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", + "item.create.tree_fertilizer.tooltip.summary": "Сильная смесь минералов, подходящая обычным видам деревьев.", + "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", + "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья независимо от свободного пространства", + + "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", + "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", + + "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", + "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", + "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", + + "item.create.filter.tooltip": "UNLOCALIZED: FILTER", + "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ _items_ or several _nested_ _filters_.", + "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls_ _outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set_ _of_ item _attributes_ and _categories_.", + "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", + "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", + "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", + + "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", + "item.create.empty_schematic.tooltip.summary": "Используется для крафта и записи в _Столе_ _для_ _схем._", + + "item.create.schematic.tooltip": "SCHEMATIC", + "item.create.schematic.tooltip.summary": "Хранит структуру для размещения. Расположите голограмму и используйте _Схемопушку_ для построения голограммы.", + "item.create.schematic.tooltip.condition1": "Когда в руке", + "item.create.schematic.tooltip.behaviour1": "Может быть размещена с помошью инструментов на экране", + "item.create.schematic.tooltip.control1": "ПКМ крадясь", + "item.create.schematic.tooltip.action1": "Открывает _Меню_ для ввода точных _Координат._", + + "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", + "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в .nbt файл.", + "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две точки с помощью ПКМ", + "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-КолМыши_ на сторону для изменения размера. ПКМ еще раз для сохранения.", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.action1": "Выбрать точку / Сохранить", + "item.create.schematic_and_quill.tooltip.control2": "С зажатым Ctrl", + "item.create.schematic_and_quill.tooltip.action2": "Выбрать точки в _воздухе._ _КолМыши_ для изменения расстояния.", + "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадясь", + "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _Удаляет_ выделение.", + + "block.create.schematicannon.tooltip": "SCHEMATICANNON", + "block.create.schematicannon.tooltip.summary": "Стреляет блоками для воссоздания размещенной _Схемы._ Использует блоки из соседних инвентарей и _Порох_ в качестве топлива.", + "block.create.schematicannon.tooltip.control1": "ПКМ по пушке", + "block.create.schematicannon.tooltip.action1": "Открывает _Меню_", + + "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", + "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схемы на _Пустые_ _схемы._", + "block.create.schematic_table.tooltip.condition1": "Если положить пустую схему.", + "block.create.schematic_table.tooltip.behaviour1": "Записывает выбранный файл из папки со схемами", + + "block.create.shaft.tooltip": "SHAFT", + "block.create.shaft.tooltip.summary": "_Передаёт_ _вращение_ по прямой.", + + "block.create.cogwheel.tooltip": "COGWHEEL", + "block.create.cogwheel.tooltip.summary": "_Передаёт_ _вращение_ по прямой и к присоеденённым _Шестерням._", + + "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", + "block.create.large_cogwheel.tooltip.summary": "Увеличенная версия _Шестерни,_ позволяющая _изменять_ _скорость_ _вращения_ при соединении с меньшим аналогом.", + + "block.create.encased_shaft.tooltip": "ENCASED SHAFT", + "block.create.encased_shaft.tooltip.summary": "_Передаёт_ _вращение_ по прямой. Подходит для передачи вращения через стены.", + + "block.create.gearbox.tooltip": "GEARBOX", + "block.create.gearbox.tooltip.summary": "_Передаёт_ _вращение_ в _4_ _направлениях._ Реверсирует прямые соединения.", + + "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", + + "block.create.gearshift.tooltip": "GEARSHIFT", + "block.create.gearshift.tooltip.summary": "_Переключатель_ _вращения_ для подсоединенных валов.", + "block.create.gearshift.tooltip.condition1": "Когда запитан", + "block.create.gearshift.tooltip.behaviour1": "_Реверсирует_ выходящее _вращение._", + + "block.create.clutch.tooltip": "CLUTCH", + "block.create.clutch.tooltip.summary": "_Переключатель_ _вращения_ для подсоединенных валов.", + "block.create.clutch.tooltip.condition1": "Когда запитан", + "block.create.clutch.tooltip.behaviour1": "_Останавливает_ подачу вращения на другую сторону.", + + "block.create.encased_belt.tooltip": "ENCASED_BELT", + "block.create.encased_belt.tooltip.summary": "_Передаёт_ _вращение_ через себя и к присоеденённому _Ленточному_ _приводу._", + "block.create.encased_belt.tooltip.condition1": "При присоеденёнии к другому Ленточному приводу", + "block.create.encased_belt.tooltip.behaviour1": "Присоеденённый блок будет иметь те же _скорость_ и _направление_ _вращения._ Присоеденённые ленты не обязаны смотреть в ту же сторону.", + + "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", + "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", + "block.create.adjustable_pulley.tooltip.condition1": "UNLOCALIZED: Redstone Control", + "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", + + "item.create.belt_connector.tooltip": "BELT CONNECTOR", + "item.create.belt_connector.tooltip.summary": "Соединяет _2_ _Вала_ с помощью _Механической_ _ленты._ Соединённые валы будут иметь одинаковые _скорость_ и _направление_ _вращения._ Лента может служить как _Конвейер_ для _Существ._", + "item.create.belt_connector.tooltip.control1": "ПКМ по валу", + "item.create.belt_connector.tooltip.action1": "Выбирает вал в качестве одного шкива ленты. Оба выбранных вала должны быть _на_ _одной_ _линии_ _вертикально,_ _горизонтально_ либо _диагонально_ по направлению ленты.", + "item.create.belt_connector.tooltip.control2": "ПКМ крадясь", + "item.create.belt_connector.tooltip.action2": "_Сбрасывает_ первый выбранный шкив для ленты.", + + "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", + "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", + "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", + "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored_ _indicators_ corresponding to the _Speed_ _Level_ of a placed kinetic component as well as _Stress_ _Impact_ and _Capacity_ of individual components.", + "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", + "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", + + "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", + "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", + "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", + "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates_ _components_ toward or away from the face with which you interacted.", + "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", + "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles_ _Kinetic_ _components_ and places them back in _your_ _inventory_.", + + "block.create.creative_motor.tooltip": "UNLOCALIZED: CREATIVE MOTOR", + "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", + + "block.create.water_wheel.tooltip": "WATER WHEEL", + "block.create.water_wheel.tooltip.summary": "Предоставляет _силу_ _вращения_ из смежных _источников_ _воды._", + + "block.create.encased_fan.tooltip": "ENCASED FAN", + "block.create.encased_fan.tooltip.summary": "Преобразовывает _силу_ _вращения_ в _воздушный_ _поток_ и обратно. Имеет множество применений.", + "block.create.encased_fan.tooltip.condition1": "При нахождении над огнём", + "block.create.encased_fan.tooltip.behaviour1": "Предоставляет _силу_ _вращения_ (должен стоять вертикально)", + "block.create.encased_fan.tooltip.condition2": "При вращении", + "block.create.encased_fan.tooltip.behaviour2": "_Толкает_ существ с одной стороны, _притягивает_ с другой. Сила и скорость зависят от входящего вращения.", + "block.create.encased_fan.tooltip.condition3": "Когда воздух проходит через специальные блоки", + "block.create.encased_fan.tooltip.behaviour3": "Обрабатывает предметы перед блоком: _вода_ моет, _огонь_ коптит, _лава_ плавит.", + + "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", + "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", + + "block.create.hand_crank.tooltip": "UNLOCALIZED: HAND CRANK", + "block.create.hand_crank.tooltip.summary": "UNLOCALIZED: A simple _source_ of _Rotational_ _Force_ that requires the interaction of players.", + "block.create.hand_crank.tooltip.condition1": "UNLOCALIZED: When Used", + "block.create.hand_crank.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to an attached contraption. _Sneak_ _to_ _reverse_ the rotation.", + + "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping_ _track_ _of_ _time_.", + "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", + + "block.create.turntable.tooltip": "TURNTABLE", + "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", + + "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", + "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", + "block.create.millstone.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.millstone.tooltip.behaviour1": "UNLOCALIZED: Starts applying _milling_ _recipes_ to any items inserted from the side or the top of the block.", + "block.create.millstone.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", + + "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", + "block.create.crushing_wheel.tooltip.summary": "Большие вращающиеся колеса, которые _дробят_ всё, что мешает их движению.", + "block.create.crushing_wheel.tooltip.condition1": "При присоеденении к другому дробильному колесу", + "block.create.crushing_wheel.tooltip.behaviour1": "Формирует дробильную установку для обработки различных вещей. Зубцы колёс должны соединяться и двигаться с _одинаковой_ _скоростью_ в _противоположных_ _направлениях._", + + "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", + "block.create.mechanical_press.tooltip.summary": "Мощный поршень для спрессовывания предметов под ним. Требуется постоянная _сила_ _вращения._", + "block.create.mechanical_press.tooltip.condition1": "Когда запитан", + "block.create.mechanical_press.tooltip.behaviour1": "_Начинает_ спрессовывать предметы под ним.", + "block.create.mechanical_press.tooltip.condition2": "При нахождении над механической лентой", + "block.create.mechanical_press.tooltip.behaviour2": "_Автоматически_ спрессовывает проходящие по ленте предметы.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "UNLOCALIZED: BASIN", + "block.create.basin.tooltip.summary": "UNLOCALIZED: A handy _item_ _container_ used in processing with the _Mechanical_ _Mixer_ and the _Mechanical_ _Press_. Supports _Redstone_ _Comparators_.", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "UNLOCALIZED: MECHANICAL MIXER", + "block.create.mechanical_mixer.tooltip.summary": "UNLOCALIZED: A kinetic whisk for applying any shapeless crafting recipes to items beneath it. Requires constant _Rotational_ _Force_ and a _Basin_ placed below (with a gap in between).", + "block.create.mechanical_mixer.tooltip.condition1": "UNLOCALIZED: When above Basin", + "block.create.mechanical_mixer.tooltip.behaviour1": "UNLOCALIZED: Starts to mix items in the basin whenever all necessary ingredients are present.", + "block.create.mechanical_mixer.tooltip.condition2": "UNLOCALIZED: When used with Wrench", + "block.create.mechanical_mixer.tooltip.behaviour2": "UNLOCALIZED: _Configures_ the minimum amount of _total_ _ingredients_ for applied recipes. Use this option to _rule_ _out_ _unwanted_ _recipes_ with similar but less ingredients.", + + "block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER", + "block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.", + "block.create.mechanical_crafter.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.mechanical_crafter.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _the_ _crafting_ _process_ as soon as _all_ _crafters_ in the grid have been _given_ _an_ _item_.", + "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", + "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", + "block.create.mechanical_crafter.tooltip.control1": "UNLOCALIZED: When Wrenched at Front", + "block.create.mechanical_crafter.tooltip.action1": "UNLOCALIZED: _Cycles_ _the_ _direction_ an individual crafter _moves_ _its_ _items_ towards. To form a working grid, _arrange_ _the_ _belts_ _in_ _a_ _flow_ which moves all items towards a final crafter. The final crafter must _point_ _away_ from the grid.", + "block.create.mechanical_crafter.tooltip.control2": "UNLOCALIZED: When Wrenched at back", + "block.create.mechanical_crafter.tooltip.action2": "UNLOCALIZED: _Connects_ the _input_ _inventory_ of adjacent crafters. Use this to _combine_ _slots_ in the crafting grid and _save_ _on_ _input_ _work_.", + + "block.create.furnace_engine.tooltip": "UNLOCALIZED: FURNACE ENGINE", + "block.create.furnace_engine.tooltip.summary": "UNLOCALIZED: A powerful source of _Rotational_ _Power_ that requires a _running_ _furnace_ to work.", + "block.create.furnace_engine.tooltip.condition1": "UNLOCALIZED: When Attached to Lit Furnace", + "block.create.furnace_engine.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _powering_ a _Flywheel_ placed in front of it (1m apart). Use a Blast Furnace for higher speeds.", + + "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", + "block.create.flywheel.tooltip.summary": "UNLOCALIZED: A large metal wheel to _harness_ _and_ _stabilize_ generated force by an _attached_ _Engine_. Flywheels connect to engines if they are _1m_ _apart_ and at a _90°_ _Angle_ from each other.", + "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Attached to Running Engine", + "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Provides _Rotational_ _Force_ to a connected contraption based on the generator's strength and speed.", + + "block.create.portable_storage_interface.tooltip": "UNLOCALIZED: PORTABLE STORAGE INTERFACE", + "block.create.portable_storage_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving_ _items_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley.", + "block.create.portable_storage_interface.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.portable_storage_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _transposers_ such that transposers _facing_ _away_ from the interface _pull_ _items_, and transposers targeting the interface will _insert_ _items_ from attached inventory. The contraption will briefly stall as items are exchanged.", + + "block.create.rotation_speed_controller.tooltip": "UNLOCALIZED: ROTATION SPEED CONTROLLER", + "block.create.rotation_speed_controller.tooltip.summary": "UNLOCALIZED: A _configurable_ _relay_ able to speed up or slow down the target component to any desired speed.", + "block.create.rotation_speed_controller.tooltip.condition1": "UNLOCALIZED: When Attached to Large Cogwheel", + "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", + + "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", + "block.create.mechanical_piston.tooltip.summary": "Более продвинутая версия _Поршня,_ использующая _силу_ _вращения_ для более точного перемещения присоединенных конструкций. _Удлинители_ _поршня_ сзади определяют _длину_ устройства. Без удлинителей поршень не будет двигаться. Используйте _Поступательную_ _раму_ для перемещения более чем одной линии блоков.", + "block.create.mechanical_piston.tooltip.condition1": "При вращении", + "block.create.mechanical_piston.tooltip.behaviour1": "Начинает перемещать прикрепленную конструкцию. Скорость и направление зависят от входящего вращения.", + + "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", + "block.create.sticky_mechanical_piston.tooltip.summary": "Более продвинутая версия _Липкого_ _поршня,_ использующая _силу_ _вращения_ для более точного перемещения присоединенных конструкций. _Удлинители_ _поршня_ сзади определяют _длину_ устройства. Без удлинителей поршень не будет двигаться. Используйте _Поступательную_ _раму_ для перемещения более чем одной линии блоков.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "При вращении", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Начинает перемещать прикрепленную конструкцию. Скорость и направление зависят от входящего вращения.", + + "block.create.piston_extension_pole.tooltip": "PISTON POLE", + "block.create.piston_extension_pole.tooltip.summary": "Используется для увеличения длины _Механического_ _поршня._", + "block.create.piston_extension_pole.tooltip.condition1": "При присоеденении к механическому поршню", + "block.create.piston_extension_pole.tooltip.behaviour1": "Увеличивает длину поршня на 1 блок", + + "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", + "block.create.mechanical_bearing.tooltip.summary": "Используется для вращения _больших_ конструкций_ или генерации _силы_ _вращения_ с помощью ветра.", + "block.create.mechanical_bearing.tooltip.condition1": "При вращении", + "block.create.mechanical_bearing.tooltip.behaviour1": "Начинает вращать присоединенную _Поворотную_ _раму_ и связанные с ним блоки.", + "block.create.mechanical_bearing.tooltip.condition2": "Когда запитан", + "block.create.mechanical_bearing.tooltip.behaviour2": "Начинает предоставлять _силу_ _вращения_ из вращения присоединенной конструкции. Структура должна включать подходящий _парус_ (в настоящее время любой блок шерсти).", + + "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", + "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", + "block.create.clockwork_bearing.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.clockwork_bearing.tooltip.behaviour1": "UNLOCALIZED: Starts rotating the attached Structure towards the _current_ _hour_. If an independent second structure exists in front of the first one, it will serve as the _minute_ _hand_.", + + "block.create.sequenced_gearshift.tooltip": "UNLOCALIZED: SEQUENCED GEARSHIFT", + "block.create.sequenced_gearshift.tooltip.summary": "UNLOCALIZED: A _programmable_ _utility_ _component,_ which can change its _rotational_ _through-put_ according to up to _5_ _consecutive_ _instructions._ Use this to power Mechanical Bearings, Pistons or Pulleys with more control over timing and speed. May become less precise at higher speeds.", + "block.create.sequenced_gearshift.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "UNLOCALIZED: _Starts_ _executing_ programmed instructions based on the input speed.", + "block.create.sequenced_gearshift.tooltip.condition2": "UNLOCALIZED: When R-Clicked", + "block.create.sequenced_gearshift.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface._", + + "block.create.cart_assembler.tooltip": "UNLOCALIZED: CART ASSEMBLER", + "block.create.cart_assembler.tooltip.summary": "UNLOCALIZED: When _placed_ _on_ a _Rail_, adopts functionality and _assembles/disassebles_ _structures_ on passing _carts_.", + "block.create.cart_assembler.tooltip.condition1": "UNLOCALIZED: When placed above Rail", + "block.create.cart_assembler.tooltip.behaviour1": "UNLOCALIZED: _Assembles_ onto passing _carts_ _when_ _powered_, _disassembles_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", + "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "UNLOCALIZED: ROPE PULLEY", + "block.create.rope_pulley.tooltip.summary": "UNLOCALIZED: Moves attached _blocks_ and _structures_ _vertically_. Use _Chassis_ or _Slime_ _Blocks_ to move more than a single block.", + "block.create.rope_pulley.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", + + "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", + "block.create.linear_chassis.tooltip.summary": "Настраиваемая основа для конструкций, перемещаемых _Механическим_ _поршнем._ Эти блоки должны формировать первый слой блоков перед поршнем.", + "block.create.linear_chassis.tooltip.condition1": "При движении механическим поршнем", + "block.create.linear_chassis.tooltip.behaviour1": "_Перемещает_ все _прикрепленные_ _рамы_ с одинаковой ориентацией, и блоки перед ним. При возврате поршня в исходное положение блоки будут втягиваться, только если лицевая сторона рамы _липкая_ (см. [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.linear_chassis.tooltip.control1": "ПКМ со сгустком слизи", + "block.create.linear_chassis.tooltip.action1": "Делает выбранную сторону _липкой._ При возвращении поршня, рама будет _втягивать_ все подсоединенные блоки в своей колонне и в пределах заданного диапазона.", + + "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", + "block.create.radial_chassis.tooltip.summary": "Требуется для вращающихся конструкций с _Механическим_ _подшипником._", + "block.create.radial_chassis.tooltip.condition1": "При вращении с помощью подшипника", + "block.create.radial_chassis.tooltip.behaviour1": "_Поворачивает_ все блоки, прикрепленные к _липким_ сторонам (см. [Ctrl]) в пределах заданного диапазона вокруг себя. _Передает_ вращение на присоединенные поворотные рамы.", + "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", + "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", + "block.create.radial_chassis.tooltip.control1": "ПКМ со сгустком слизи", + "block.create.radial_chassis.tooltip.action1": "Делает выбранную сторону _липкой._ При вращении, все присоединенные блоки в пределах заданного диапазона будут вращаться вместе с ней.", + + "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", + "block.create.mechanical_drill.tooltip.summary": "Механическое устройство, пригодное для _разрушения_ _блоков._", + "block.create.mechanical_drill.tooltip.condition1": "При вращении", + "block.create.mechanical_drill.tooltip.behaviour1": "Действует как _стационарный_ разрушитель блоков. Также _наносит_ _урон_ _существам_ в рабочей области.", + "block.create.mechanical_drill.tooltip.condition2": "При движении механическим поршнем", + "block.create.mechanical_drill.tooltip.behaviour2": "Разрушает блоки, на которые наталкивается.", + + "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", + "block.create.mechanical_harvester.tooltip.summary": "Механический резак для растений, подходящий для автоматизации выращивания средних растений", + "block.create.mechanical_harvester.tooltip.condition1": "При движении механическим поршнем", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Срезает_ все _зрелые_ _посевы_ и сбрасывает их в исходное состояние роста.", + + "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", + "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", + "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", + "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", + + "block.create.mechanical_saw.tooltip": "UNLOCALIZED: MECHANICAL SAW", + "block.create.mechanical_saw.tooltip.summary": "UNLOCALIZED: Suitable for _cutting_ _trees_ effectively and for _cutting_ _blocks_ into their carpentered counterparts. It is movable using _Mechanical_ _Pistons_ or _Bearings_.", + "block.create.mechanical_saw.tooltip.condition1": "UNLOCALIZED: When facing up", + "block.create.mechanical_saw.tooltip.behaviour1": "UNLOCALIZED: Applies _Sawing_ and _Stonecutting_ _Recipes_ to items dropped onto or inserted into it. When multiple outputs are possible, it cycles through them unless a _filter_ is assigned.", + "block.create.mechanical_saw.tooltip.condition2": "UNLOCALIZED: When facing horizontally", + "block.create.mechanical_saw.tooltip.behaviour2": "UNLOCALIZED: _Breaks_ _logs_ in front of it. If the log supported a tree on its own, the _tree_ _will_ _collapse_ away from the saw.", + "block.create.mechanical_saw.tooltip.condition3": "UNLOCALIZED: While Moving", + "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", + + "block.create.stockpile_switch.tooltip": "stockpile_switch", + "block.create.stockpile_switch.tooltip.summary": "Переключение сигнала на основе _предметов_ и _объёма_ _хранилища_ в прикрепленном контейнере.", + "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего порога", + "block.create.stockpile_switch.tooltip.behaviour1": "Перестаёт подавать сигнал", + "block.create.stockpile_switch.tooltip.condition2": "Когда выше верхнего порога", + "block.create.stockpile_switch.tooltip.behaviour2": "Начинает подавать _сигнал_ пока не будет достигнут нижний порог", + "block.create.stockpile_switch.tooltip.control1": "ПКМ", + "block.create.stockpile_switch.tooltip.action1": "Открывает _Меню_ _настройки_", + + "block.create.redstone_link.tooltip": "REDSTONE LINK", + "block.create.redstone_link.tooltip.summary": "Конечные точки для _беспроводных_ соединений. Можно выбрать _частоты_ с помощью любого предмета. Диапазон сигнала ограничен, но достаточно далёк.", + "block.create.redstone_link.tooltip.condition1": "Когда запитан", + "block.create.redstone_link.tooltip.behaviour1": "Получает сигнал на той же _частоте_ и выводит его.", + "block.create.redstone_link.tooltip.control1": "ПКМ с предметом", + "block.create.redstone_link.tooltip.action1": "Устанавливает _частоту_ для этого звена. Всего для определения частоты можно использовать _2_ _предмета._", + "block.create.redstone_link.tooltip.control2": "ПКМ крадясь", + "block.create.redstone_link.tooltip.action2": "Переключение между режимами _приёма_ и _передачи._", + + "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", + "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", + "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", + + "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", + "block.create.redstone_contact.tooltip.summary": "Простое устройство для продвинутых механизмов.", + "block.create.redstone_contact.tooltip.condition1": "Когда смотрит на другое контактное соединение", + "block.create.redstone_contact.tooltip.behaviour1": "Подаёт _сигнал_", + "block.create.redstone_contact.tooltip.condition2": "При движении механическим поршнем", + "block.create.redstone_contact.tooltip.behaviour2": "Включает все стационарные контактные соединения, через которые проходит.", + + "block.create.adjustable_crate.tooltip": "adjustable_crate", + "block.create.adjustable_crate.tooltip.summary": "Этот _контейнер_ позволяет контролировать его емкость. Он может содержать до _16_ _стаков_ любого предмета.", + "block.create.adjustable_crate.tooltip.control1": "ПКМ", + "block.create.adjustable_crate.tooltip.action1": "Открывает _Меню_", + + "block.create.creative_crate.tooltip": "CREATIVE CRATE", + "block.create.creative_crate.tooltip.summary": "Снабжает _Схемопушку_ бесконечным запасом блоков", + "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", + + "block.create.extractor.tooltip": "EXTRACTOR", + "block.create.extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентаря_ и бросает на землю. Не будет бросать предметы до тех пор, пока пространство не освободится. Может быть назначен _фильтр_ в виде стака предметов.", + "block.create.extractor.tooltip.condition1": "Когда запитан", + "block.create.extractor.tooltip.behaviour1": "_Приостанавливает_ экстрактор", + "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", + "block.create.extractor.tooltip.control1": "ПКМ по фильтру", + "block.create.extractor.tooltip.action1": "Устанавливает _стак_ _в_ _руке_ в качестве _фильтра._ Экстрактор будет извлекать _определённый_ _предмет_ в _определённом_ _количестве_ по фильтру.", + + "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", + "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.transposer.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", + "block.create.transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.transposer.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", + "block.create.transposer.tooltip.behaviour2": "UNLOCALIZED: Transposers can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the transposer is backed up, the _belt_ _will_ _stall_.", + "block.create.transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will pull the item _type_ and _count_ of the filter stack exclusively.", + + "block.create.deployer.tooltip": "UNLOCALIZED: DEPLOYER", + "block.create.deployer.tooltip.summary": "UNLOCALIZED: _Punches_, _Uses_, and _Activates_. This machine will try to _imitate_ a _player_ as a much as possible. Can _Take_ and _Deposit_ _items_ in adjacent _Inventory_. Can be assigned an item-stack as a _filter_.", + "block.create.deployer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.deployer.tooltip.behaviour1": "UNLOCALIZED: Extends its arm and _activates_ in the block space _2m_ _ahead_ of itself.", + "block.create.deployer.tooltip.condition2": "UNLOCALIZED: R-Clicked with Wrench", + "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", + + "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", + "block.create.linked_extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентаря_ и бросает на землю. Не будет бросать предметы до тех пор, пока пространство не освободится. Может быть назначен _фильтр_ в виде стака предметов. Может управляться дистанционно через _Передатчик_ _сигнала._", + "block.create.linked_extractor.tooltip.condition1": "Когда соединение активно", + "block.create.linked_extractor.tooltip.behaviour1": "_Приостанавливает_ экстрактор", + "block.create.linked_extractor.tooltip.control1": "ПКМ по фильтру", + "block.create.linked_extractor.tooltip.action1": "Устанавливает _стак_ _в_ _руке_ в качестве _фильтра._ Экстрактор будет извлекать _определённый_ _предмет_ в _определённом_ _количестве_ по фильтру.", + "block.create.linked_extractor.tooltip.control2": "ПКМ по частоте", + "block.create.linked_extractor.tooltip.action2": "Устанавливает _частоту_ для этого экстрактора. При передаче сигнала с передающего _Сигнального_ _соединения_ экстрактор будет приостановлен.", + + "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", + "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", + "block.create.linked_transposer.tooltip.condition1": "UNLOCALIZED: When Redstone Link Active", + "block.create.linked_transposer.tooltip.behaviour1": "UNLOCALIZED: _Pauses_ the Transposer.", + "block.create.linked_transposer.tooltip.control1": "UNLOCALIZED: R-Click on Filter Space", + "block.create.linked_transposer.tooltip.action1": "UNLOCALIZED: Assigns currently _held_ _stack_ as the _Filter_. The Transposer will only pull items that match the item _type_ and _count_ of the filter stack.", + "block.create.linked_transposer.tooltip.control2": "UNLOCALIZED: R-Click on Frequency Space", + "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", + + "block.create.funnel.tooltip": "BELT FUNNEL", + "block.create.funnel.tooltip.summary": "Собирает входящие предметы на _Механической_ _ленте_ и по возможности кладет их в прилагаемый _инвентарь._ Должен быть непосредственно _над_ лентой, с проёмом, смотрящим против направления ленты. Инвентарь должен быть на той же высоте, что и воронка.", + "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", + "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", + + "block.create.belt_tunnel.tooltip": "UNLOCALIZED: BELT TUNNEL", + "block.create.belt_tunnel.tooltip.summary": "UNLOCALIZED: An aesthetic option for running your _Mechanical_ _Belts_ through walls. Belts have to be reinforced with _Brass_ _Casing_. Tunnels can _synchronize_ with _their_ _neighbours_, only letting items pass if all tunnels in the group have one waiting. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "UNLOCALIZED: R-Click with Wrench on Front", + "block.create.belt_tunnel.tooltip.action1": "UNLOCALIZED: Toggles _synchronized_ _behaviour_. Synchronized tunnels hold items until their neighbours have an item as well.", + "block.create.belt_tunnel.tooltip.control2": "UNLOCALIZED: R-Click with Wrench on Side", + "block.create.belt_tunnel.tooltip.action2": "UNLOCALIZED: _Adjusts_ _window_ _shutters_ if the tunnel has a window on that face.", + + "block.create.brass_casing.tooltip": "UNLOCALIZED: BRASS CASING", + "block.create.brass_casing.tooltip.summary": "UNLOCALIZED: Sturdy machine casing with a variety of uses. Safe for decoration.", + "block.create.brass_casing.tooltip.condition1": "UNLOCALIZED: When used on Mechanical Belt", + "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", + + "block.create.belt_observer.tooltip": "BELT OBSERVER", + "block.create.belt_observer.tooltip.summary": "Сканирует предметы, проходящие по _Механической_ _ленте_ перед ним. Хорошо работает с _поршнем_ сверху, отталкивающим определенные предметы.", + "block.create.belt_observer.tooltip.condition1": "Когда предмет соответствует фильтру", + "block.create.belt_observer.tooltip.behaviour1": "Подаёт короткий _импульс_ со всех сторон. Пустой фильтр соответствует любому элементу.", + "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", + "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", + "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", + "block.create.belt_observer.tooltip.behaviour3": "UNLOCALIZED: _Ejects_ _matching_ _items_ off the side. If the target belt or space is _occupied_, the item will be _held_ _in_ _place_.", + "block.create.belt_observer.tooltip.condition4": "UNLOCALIZED: Split Mode", + "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", + + "block.create.pulse_repeater.tooltip": "PULSE REPEATER", + "block.create.pulse_repeater.tooltip.summary": "Простая схема для уменьшения времени проходящего сигнала до _1_ _тика._", + + "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", + "block.create.adjustable_repeater.tooltip.summary": "Продвинутый _Повторитель_ с _настраиваемой_ _задержкой_ вплоть до 30 минут.", + + "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", + "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", + + "block.create.analog_lever.tooltip": "UNLOCALIZED: ANALOG LEVER", + "block.create.analog_lever.tooltip.summary": "UNLOCALIZED: A lever with more _precise_ _control_ over its emitted _signal_ _strength_.", + + "block.create.powered_toggle_latch.tooltip": "UNLOCALIZED: POWERED TOGGLE LATCH", + "block.create.powered_toggle_latch.tooltip.summary": "UNLOCALIZED: A lever that can be toggled by a _Redstone_ _Pulse_.", + + "block.create.powered_latch.tooltip": "UNLOCALIZED: POWERED LATCH", + "block.create.powered_latch.tooltip.summary": "UNLOCALIZED: A lever that can be controlled by _Redstone_ _Signals_. A signal on the _back_ _enables_ it, a signal from the _side_ _will_ _reset_ it.", + + "block.create.speedometer.tooltip": "UNLOCALIZED: SPEEDOMETER", + "block.create.speedometer.tooltip.summary": "UNLOCALIZED: Measures and displays the _rotational_ _speed_ of attached kinetic components. Supports _Redstone_ _Comparators_.", + "block.create.speedometer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.speedometer.tooltip.behaviour1": "UNLOCALIZED: Indicates a color corresponding to the level of speed. _Green_ indicates Slow, _Blue_ Moderate and _Purple_ Fast rotation. Some mechanical components require a sufficient level of speed to work properly.", + + "block.create.stressometer.tooltip": "UNLOCALIZED: STRESSOMETER", + "block.create.stressometer.tooltip.summary": "UNLOCALIZED: Measures and displays the _overall_ _stress_ of the attached kinetic network. Supports _Redstone_ _Comparators_.", + "block.create.stressometer.tooltip.condition1": "UNLOCALIZED: When Rotated", + "block.create.stressometer.tooltip.behaviour1": "UNLOCALIZED: Indicates a color corresponding to the level of stress. _Over-stressed_ _networks_ will cease to move. Stress can be relieved by adding more _rotational_ _sources_ to the network.", + + "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", + "tool.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", + "tool.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking_ _at_ _them_", + + "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", + "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", + "item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked_ _face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged_ _along_ when moved by _mechanical_ _pistons_, _bearings_ and other controllers.", + "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", + "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", + + "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed_ _light_.", + + "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in_ _the_ _void_.", + + "item.create.crafter_slot_cover.tooltip": "UNLOCALIZED: SLOT COVER", + "item.create.crafter_slot_cover.tooltip.summary": "UNLOCALIZED: Used to mark a _Mechanical_ _Crafter_ as an empty slot in a recipe. Crafters do not necessarily have to form a full square grid. This is useful when there are recipes where _ingredients_ _are_ _diagonal_ to each other.", + + "create.tooltip.wip": "UNLOCALIZED: WIP", + "create.tooltip.workInProgress": "UNLOCALIZED: Work in progress!", + "create.tooltip.randomWipDescription0": "UNLOCALIZED: Please keep this item away from children.", + "create.tooltip.randomWipDescription1": "UNLOCALIZED: A baby panda dies every time you use this item. Every. Time.", + "create.tooltip.randomWipDescription2": "UNLOCALIZED: Use at your own risk.", + "create.tooltip.randomWipDescription3": "UNLOCALIZED: This is not the item you are looking for, *finger-wiggles* please disperse.", + "create.tooltip.randomWipDescription4": "UNLOCALIZED: This item will self-destruct in 10 seconds. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "UNLOCALIZED: Believe me, it's useless.", + "create.tooltip.randomWipDescription6": "UNLOCALIZED: By using this item, you hereby consent to our disclaimer and agree to its terms.", + "create.tooltip.randomWipDescription7": "UNLOCALIZED: This one maybe isn't for you. What about that one?", + "create.tooltip.randomWipDescription8": "UNLOCALIZED: Use it and regret your decision immediately.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json new file mode 100644 index 000000000..2e9bf9764 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -0,0 +1,1361 @@ +{ + "_": "Missing Localizations: 27" + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "金合欢窗户", + "block.create.acacia_window_pane": "金合欢窗户板", + "block.create.adjustable_crate": "可调节板条箱", + "block.create.adjustable_pulley": "可调节连携齿轮箱", + "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", + "block.create.adjustable_repeater": "可调节中继器", + "block.create.analog_lever": "可调节拉杆", + "block.create.andesite_bricks": "安山岩砖", + "block.create.andesite_bricks_slab": "安山岩砖台阶", + "block.create.andesite_bricks_stairs": "安山岩砖楼梯", + "block.create.andesite_bricks_wall": "安山岩砖墙", + "block.create.andesite_casing": "安山机壳", + "block.create.andesite_cobblestone": "安山岩圆石", + "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", + "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", + "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_pillar": "竖纹安山岩", + "block.create.basin": "工作盆", + "block.create.belt": "传送带", + "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", + "block.create.belt_observer": "传送带侦测器", + "block.create.belt_tunnel": "传送带隧道", + "block.create.birch_window": "白桦窗户", + "block.create.birch_window_pane": "白桦窗户板", + "block.create.brass_block": "黄铜块", + "block.create.brass_casing": "黄铜机壳", + "block.create.cart_assembler": "矿车装配站", + "block.create.chiseled_dark_scoria": "錾制深色熔渣", + "block.create.chiseled_dolomite": "錾制白云岩", + "block.create.chiseled_gabbro": "錾制辉长岩", + "block.create.chiseled_limestone": "錾制石灰岩", + "block.create.chiseled_scoria": "錾制熔渣", + "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", + "block.create.chute": "UNLOCALIZED: Chute", + "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", + "block.create.clockwork_bearing": "时钟轴承", + "block.create.clutch": "离合器", + "block.create.cogwheel": "齿轮", + "block.create.copper_block": "铜块", + "block.create.copper_casing": "铜机壳", + "block.create.copper_ore": "铜矿石", + "block.create.copper_shingles": "铜瓦", + "block.create.creative_crate": "创造板条箱", + "block.create.creative_motor": "创造马达", + "block.create.crushing_wheel": "粉碎轮", + "block.create.crushing_wheel_controller": "粉碎轮控制器", + "block.create.cuckoo_clock": "布谷鸟闹钟", + "block.create.dark_oak_window": "深色橡木窗户", + "block.create.dark_oak_window_pane": "深色橡木窗户板", + "block.create.dark_scoria": "深色熔渣", + "block.create.dark_scoria_bricks": "深色熔渣砖", + "block.create.dark_scoria_bricks_slab": "深色熔渣砖台阶", + "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", + "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", + "block.create.dark_scoria_cobblestone": "深色熔渣圆石", + "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石台阶", + "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", + "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", + "block.create.dark_scoria_pillar": "竖纹深色熔渣", + "block.create.deployer": "机械手", + "block.create.depot": "UNLOCALIZED: Depot", + "block.create.diorite_bricks": "闪长岩砖", + "block.create.diorite_bricks_slab": "闪长岩砖台阶", + "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", + "block.create.diorite_bricks_wall": "闪长岩砖墙", + "block.create.diorite_cobblestone": "闪长岩圆石", + "block.create.diorite_cobblestone_slab": "闪长岩圆石台阶", + "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", + "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", + "block.create.diorite_pillar": "竖纹闪长岩", + "block.create.dolomite": "白云岩", + "block.create.dolomite_bricks": "白云岩砖", + "block.create.dolomite_bricks_slab": "白云岩砖台阶", + "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", + "block.create.dolomite_bricks_wall": "白云岩砖墙", + "block.create.dolomite_cobblestone": "白云岩圆石", + "block.create.dolomite_cobblestone_slab": "白云岩圆石台阶", + "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", + "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", + "block.create.dolomite_pillar": "竖纹白云岩", + "block.create.encased_belt": "连携齿轮箱", + "block.create.encased_fan": "鼓风机", + "block.create.encased_shaft": "齿轮箱", + "block.create.extractor": "提取器", + "block.create.fancy_andesite_bricks": "方纹安山岩砖", + "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", + "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", + "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", + "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", + "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖台阶", + "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", + "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", + "block.create.fancy_diorite_bricks": "方纹闪长岩砖", + "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖台阶", + "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", + "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", + "block.create.fancy_dolomite_bricks": "方纹白云岩砖", + "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖台阶", + "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", + "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", + "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", + "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖台阶", + "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", + "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", + "block.create.fancy_granite_bricks": "方纹花岗岩砖", + "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖台阶", + "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", + "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", + "block.create.fancy_limestone_bricks": "方纹石灰岩砖", + "block.create.fancy_limestone_bricks_slab": "方纹石灰岩砖台阶", + "block.create.fancy_limestone_bricks_stairs": "方纹石灰岩砖楼梯", + "block.create.fancy_limestone_bricks_wall": "方纹石灰岩砖墙", + "block.create.fancy_scoria_bricks": "方纹熔渣砖", + "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖台阶", + "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", + "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", + "block.create.fancy_weathered_limestone_bricks": "方纹风化石灰岩砖", + "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石灰岩砖台阶", + "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石灰岩砖楼梯", + "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石灰岩砖墙", + "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", + "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", + "block.create.flywheel": "飞轮", + "block.create.framed_glass": "边框玻璃", + "block.create.framed_glass_pane": "边框玻璃板", + "block.create.funnel": "漏斗", + "block.create.furnace_engine": "熔炼引擎", + "block.create.gabbro": "辉长岩", + "block.create.gabbro_bricks": "辉长岩砖", + "block.create.gabbro_bricks_slab": "辉长岩砖台阶", + "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", + "block.create.gabbro_bricks_wall": "辉长岩砖墙", + "block.create.gabbro_cobblestone": "辉长岩圆石", + "block.create.gabbro_cobblestone_slab": "辉长岩圆石台阶", + "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", + "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", + "block.create.gabbro_pillar": "竖纹辉长岩", + "block.create.gearbox": "十字齿轮箱", + "block.create.gearshift": "红石齿轮箱", + "block.create.granite_bricks": "花岗岩砖", + "block.create.granite_bricks_slab": "花岗岩砖台阶", + "block.create.granite_bricks_stairs": "花岗岩砖楼梯", + "block.create.granite_bricks_wall": "花岗岩砖墙", + "block.create.granite_cobblestone": "花岗岩圆石", + "block.create.granite_cobblestone_slab": "花岗岩圆石台阶", + "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", + "block.create.granite_cobblestone_wall": "花岗岩圆石墙", + "block.create.granite_pillar": "竖纹花岗岩", + "block.create.hand_crank": "手摇曲柄", + "block.create.horizontal_framed_glass": "竖直边框玻璃", + "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", + "block.create.jungle_window": "丛林窗户", + "block.create.jungle_window_pane": "丛林窗户板", + "block.create.large_cogwheel": "大齿轮", + "block.create.layered_andesite": "层叠安山岩", + "block.create.layered_dark_scoria": "层叠深色熔渣", + "block.create.layered_diorite": "层叠闪长岩", + "block.create.layered_dolomite": "层叠白云岩", + "block.create.layered_gabbro": "层叠辉长岩", + "block.create.layered_granite": "层叠花岗岩", + "block.create.layered_limestone": "层叠石灰岩", + "block.create.layered_scoria": "层叠熔渣", + "block.create.layered_weathered_limestone": "层叠风化石灰岩", + "block.create.limesand": "石灰沙", + "block.create.limestone": "石灰岩", + "block.create.limestone_bricks": "石灰岩砖", + "block.create.limestone_bricks_slab": "石灰岩砖台阶", + "block.create.limestone_bricks_stairs": "石灰岩砖楼梯", + "block.create.limestone_bricks_wall": "石灰岩砖墙", + "block.create.limestone_cobblestone": "石灰岩圆石", + "block.create.limestone_cobblestone_slab": "石灰岩圆石台阶", + "block.create.limestone_cobblestone_stairs": "石灰岩圆石楼梯", + "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", + "block.create.limestone_pillar": "竖纹石灰岩", + "block.create.linear_chassis": "机壳底盘", + "block.create.linked_extractor": "无线提取器", + "block.create.linked_transposer": "无线传输器", + "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", + "block.create.mechanical_bearing": "动力轴承", + "block.create.mechanical_crafter": "动力制造器", + "block.create.mechanical_drill": "动力钻头", + "block.create.mechanical_harvester": "动力收割机", + "block.create.mechanical_mixer": "动力搅拌器", + "block.create.mechanical_piston": "动力活塞", + "block.create.mechanical_piston_head": "动力活塞头", + "block.create.mechanical_plough": "动力犁", + "block.create.mechanical_press": "动力辊压机", + "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", + "block.create.mechanical_saw": "动力切割机", + "block.create.millstone": "石磨", + "block.create.minecart_anchor": "矿车锚", + "block.create.mossy_andesite": "生苔安山岩", + "block.create.mossy_dark_scoria": "生苔深色熔渣", + "block.create.mossy_diorite": "生苔闪长岩", + "block.create.mossy_dolomite": "生苔白云岩", + "block.create.mossy_gabbro": "生苔辉长岩", + "block.create.mossy_granite": "生苔花岗岩", + "block.create.mossy_limestone": "生苔石灰岩", + "block.create.mossy_scoria": "生苔熔渣", + "block.create.mossy_weathered_limestone": "生苔风化石灰岩", + "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", + "block.create.natural_scoria": "天然熔渣", + "block.create.nixie_tube": "辉光管", + "block.create.nozzle": "分散网", + "block.create.oak_window": "橡木窗户", + "block.create.oak_window_pane": "橡木窗户板", + "block.create.ornate_iron_window": "华丽铁窗户", + "block.create.ornate_iron_window_pane": "华丽铁窗户板", + "block.create.overgrown_andesite": "生草安山岩", + "block.create.overgrown_dark_scoria": "生草深色熔渣", + "block.create.overgrown_diorite": "生草闪长岩", + "block.create.overgrown_dolomite": "生草白云岩", + "block.create.overgrown_gabbro": "生草辉长岩", + "block.create.overgrown_granite": "生草花岗岩", + "block.create.overgrown_limestone": "生草石灰岩", + "block.create.overgrown_scoria": "生草熔渣", + "block.create.overgrown_weathered_limestone": "生草风化石灰岩", + "block.create.packager": "UNLOCALIZED: Packager", + "block.create.paved_andesite": "安山岩铺路石", + "block.create.paved_andesite_slab": "安山岩铺路石台阶", + "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", + "block.create.paved_andesite_wall": "安山岩铺路石墙", + "block.create.paved_dark_scoria": "深色熔渣铺路石", + "block.create.paved_dark_scoria_slab": "深色熔渣铺路石台阶", + "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", + "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", + "block.create.paved_diorite": "闪长岩铺路石", + "block.create.paved_diorite_slab": "闪长岩铺路石台阶", + "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", + "block.create.paved_diorite_wall": "闪长岩铺路石墙", + "block.create.paved_dolomite": "白云岩铺路石", + "block.create.paved_dolomite_slab": "白云岩铺路石台阶", + "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", + "block.create.paved_dolomite_wall": "白云岩铺路石墙", + "block.create.paved_gabbro": "辉长岩铺路石", + "block.create.paved_gabbro_slab": "辉长岩铺路石台阶", + "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", + "block.create.paved_gabbro_wall": "辉长岩铺路石墙", + "block.create.paved_granite": "花岗岩铺路石", + "block.create.paved_granite_slab": "花岗岩铺路石台阶", + "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", + "block.create.paved_granite_wall": "花岗岩铺路石墙", + "block.create.paved_limestone": "石灰岩铺路石", + "block.create.paved_limestone_slab": "石灰岩铺路石台阶", + "block.create.paved_limestone_stairs": "石灰岩铺路石楼梯", + "block.create.paved_limestone_wall": "石灰岩铺路石墙", + "block.create.paved_scoria": "熔渣铺路石", + "block.create.paved_scoria_slab": "熔渣铺路石台阶", + "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", + "block.create.paved_scoria_wall": "熔渣铺路石墙", + "block.create.paved_weathered_limestone": "风化石灰岩铺路石", + "block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶", + "block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯", + "block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙", + "block.create.piston_extension_pole": "活塞杆", + "block.create.polished_dark_scoria": "磨制深色熔渣", + "block.create.polished_dark_scoria_slab": "磨制深色熔渣台阶", + "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", + "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", + "block.create.polished_dolomite": "磨制白云岩", + "block.create.polished_dolomite_slab": "磨制白云岩台阶", + "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", + "block.create.polished_dolomite_wall": "磨制白云岩墙", + "block.create.polished_gabbro": "磨制辉长岩", + "block.create.polished_gabbro_slab": "磨制辉长岩台阶", + "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", + "block.create.polished_gabbro_wall": "磨制辉长岩墙", + "block.create.polished_limestone": "磨制石灰岩", + "block.create.polished_limestone_slab": "磨制石灰岩台阶", + "block.create.polished_limestone_stairs": "磨制石灰岩楼梯", + "block.create.polished_limestone_wall": "磨制石灰岩墙", + "block.create.polished_scoria": "磨制熔渣", + "block.create.polished_scoria_slab": "磨制熔渣台阶", + "block.create.polished_scoria_stairs": "磨制熔渣楼梯", + "block.create.polished_scoria_wall": "磨制熔渣墙", + "block.create.polished_weathered_limestone": "磨制风化石灰岩", + "block.create.polished_weathered_limestone_slab": "磨制风化石灰岩台阶", + "block.create.polished_weathered_limestone_stairs": "磨制风化石灰岩楼梯", + "block.create.polished_weathered_limestone_wall": "磨制风化石灰岩墙", + "block.create.portable_storage_interface": "移动式存储接口", + "block.create.powered_latch": "锁存器", + "block.create.powered_toggle_latch": "T触发器", + "block.create.pulley_magnet": "传送带磁铁", + "block.create.pulse_repeater": "脉冲中继器", + "block.create.radial_chassis": "旋转底盘", + "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", + "block.create.redstone_contact": "信号检测器", + "block.create.redstone_link": "无限红石信号终端", + "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", + "block.create.rope": "绳索", + "block.create.rope_pulley": "绳索滑轮", + "block.create.rotation_speed_controller": "转速控制器", + "block.create.schematic_table": "蓝图桌", + "block.create.schematicannon": "蓝图加农炮", + "block.create.scoria": "熔渣", + "block.create.scoria_bricks": "熔渣砖", + "block.create.scoria_bricks_slab": "熔渣砖台阶", + "block.create.scoria_bricks_stairs": "熔渣砖楼梯", + "block.create.scoria_bricks_wall": "熔渣砖墙", + "block.create.scoria_cobblestone": "熔渣圆石", + "block.create.scoria_cobblestone_slab": "熔渣圆石台阶", + "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", + "block.create.scoria_cobblestone_wall": "熔渣圆石墙", + "block.create.scoria_pillar": "竖纹熔渣", + "block.create.secondary_linear_chassis": "机壳底盘2号", + "block.create.sequenced_gearshift": "可编程齿轮箱", + "block.create.shaft": "传动杆", + "block.create.speedometer": "速度表", + "block.create.spruce_window": "云杉窗户", + "block.create.spruce_window_pane": "云杉窗户板", + "block.create.sticky_mechanical_piston": "粘性动力活塞", + "block.create.stockpile_switch": "存储检测器", + "block.create.stressometer": "应力表", + "block.create.tiled_glass": "十字玻璃窗", + "block.create.tiled_glass_pane": "十字玻璃窗板", + "block.create.transposer": "传输器", + "block.create.turntable": "转盘", + "block.create.vertical_extractor": "竖直提取器", + "block.create.vertical_framed_glass": "竖直边框玻璃", + "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", + "block.create.vertical_funnel": "竖直漏斗", + "block.create.vertical_linked_extractor": "竖直无限提取器", + "block.create.vertical_linked_transposer": "竖直无线传输器", + "block.create.vertical_transposer": "竖直传输器", + "block.create.water_wheel": "水车", + "block.create.weathered_limestone": "风化石灰岩", + "block.create.weathered_limestone_bricks": "风化石灰岩砖", + "block.create.weathered_limestone_bricks_slab": "风化石灰岩砖台阶", + "block.create.weathered_limestone_bricks_stairs": "风化石灰岩砖楼梯", + "block.create.weathered_limestone_bricks_wall": "风化石灰岩砖墙", + "block.create.weathered_limestone_cobblestone": "风化石灰岩圆石", + "block.create.weathered_limestone_cobblestone_slab": "风化石灰岩圆石台阶", + "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", + "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", + "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", + "block.create.zinc_block": "锌块", + "block.create.zinc_ore": "锌矿石", + + "entity.create.contraption": "结构", + "entity.create.stationary_contraption": "固定结构", + "entity.create.super_glue": "强力胶", + + "item.create.andesite_alloy": "安山合金", + "item.create.attribute_filter": "属性过滤器", + "item.create.belt_connector": "传送带", + "item.create.brass_hand": "黄铜手部零件", + "item.create.brass_ingot": "黄铜锭", + "item.create.brass_nugget": "黄铜粒", + "item.create.brass_sheet": "黄铜板", + "item.create.chromatic_compound": "异彩化合物", + "item.create.copper_ingot": "铜锭", + "item.create.copper_nugget": "铜粒", + "item.create.copper_sheet": "铜板", + "item.create.crafter_slot_cover": "制造器盖板", + "item.create.crushed_brass": "粉碎黄铜", + "item.create.crushed_copper_ore": "粉碎铜矿石", + "item.create.crushed_gold_ore": "粉碎金矿石", + "item.create.crushed_iron_ore": "粉碎铁矿石", + "item.create.crushed_zinc_ore": "粉碎锌矿石", + "item.create.deforester": "树林毁灭者", + "item.create.dough": "面团", + "item.create.electron_tube": "电子管", + "item.create.empty_schematic": "空白蓝图", + "item.create.extendo_grip": "伸缩机械手", + "item.create.filter": "过滤器", + "item.create.furnace_minecart_contraption": "装配过的动力矿车", + "item.create.goggles": "工程师护目镜", + "item.create.golden_sheet": "金板", + "item.create.handheld_blockzapper": "手持式方块放置器", + "item.create.handheld_worldshaper": "手持式环境塑形器", + "item.create.integrated_circuit": "集成电路板", + "item.create.iron_sheet": "铁板", + "item.create.lapis_sheet": "青金石板", + "item.create.minecart_contraption": "装配过的矿车", + "item.create.polished_rose_quartz": "磨制玫瑰石英", + "item.create.powdered_obsidian": "黑曜石粉末", + "item.create.propeller": "扇叶", + "item.create.red_sand_paper": "红砂纸", + "item.create.refined_radiance": "光辉石", + "item.create.rose_quartz": "玫瑰石英", + "item.create.sand_paper": "砂纸", + "item.create.schematic": "蓝图", + "item.create.schematic_and_quill": "蓝图与笔", + "item.create.shadow_steel": "暗影金属", + "item.create.super_glue": "强力胶", + "item.create.tree_fertilizer": "树木肥料", + "item.create.vertical_gearbox": "竖直十字齿轮箱", + "item.create.wand_of_symmetry": "对称法杖", + "item.create.wheat_flour": "小麦粉", + "item.create.whisk": "搅拌器", + "item.create.wrench": "扳手", + "item.create.zinc_ingot": "锌锭", + "item.create.zinc_nugget": "锌粒", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "欢迎来到机械动力", + "advancement.create.root.desc": "是时候来制作一些超赞的机械结构了!", + "advancement.create.andesite_alloy": "原始人类的合金替代品", + "advancement.create.andesite_alloy.desc": "机械动力有着许多的材料和合金,但由于技术有限,原始的人类暂时们只能制作出安山合金", + "advancement.create.its_alive": "鲜活的机械生命", + "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转.", + "advancement.create.shifting_gears": "换挡,加速,起飞!", + "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上, 机械结构的转速将会翻倍", + "advancement.create.overstressed": "超载", + "advancement.create.overstressed.desc": "首次使能量网络超载.", + "advancement.create.belt": "大批流水作业", + "advancement.create.belt.desc": "用传送带连接两个传动杆", + "advancement.create.wrench": "细节调整", + "advancement.create.wrench.desc": "做出一个方便调整方块的扳手", + "advancement.create.goggles": "目力工程师", + "advancement.create.goggles.desc": "做出一个能看到机器动能信息的工程师护目镜", + "advancement.create.speedometer": "精密的速度控制", + "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜来读取速度数据", + "advancement.create.stressometer": "精密的应力控制", + "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜来读取应力数据", + "advancement.create.water_wheel": "治水", + "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", + "advancement.create.lava_wheel": "风火轮", + "advancement.create.lava_wheel.desc": "你确定岩浆能带动水车?", + "advancement.create.millstone": "便携式粉碎机", + "advancement.create.millstone.desc": "放置一个石磨并且为其供能", + "advancement.create.andesite_casing": "安山纪元", + "advancement.create.andesite_casing.desc": "使用安山合金和木头来合成一个安山机壳", + "advancement.create.mechanical_drill": "坚如磐石,势如破竹", + "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", + "advancement.create.press": "'Duang!'", + "advancement.create.press.desc": "使用辊压机来辊压一些板子", + "advancement.create.polished_rose_quartz": "粉丝钻石", + "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", + "advancement.create.electron_tube": "哔~~哔~~", + "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", + "advancement.create.mechanical_saw": "一刀两断", + "advancement.create.mechanical_saw.desc": "放置一个切割机并且为其供能", + "advancement.create.basin": "快到碗里来", + "advancement.create.basin.desc": "放置一个工作盆,并且往里面放些东西", + "advancement.create.mixer": "均匀搅拌", + "advancement.create.mixer.desc": "将搅拌机放在工作盆上方,并且使其搅拌盆内物品", + "advancement.create.compact": "快乐压缩", + "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物品", + "advancement.create.expert_lane_1": "安山岩专家", + "advancement.create.expert_lane_1.desc": "工作进行中", + "advancement.create.brass": "真正的合金", + "advancement.create.brass.desc": "使用碎锌和碎铜来制作碎黄铜", + "advancement.create.brass_casing": "黄铜纪元", + "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", + "advancement.create.copper_casing": "铜纪元", + "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", + "advancement.create.crafter": "自动化流水作业", + "advancement.create.crafter.desc": "放置一些机械合成台并且为其供能", + "advancement.create.deployer": "我就指着你了咋地?", + "advancement.create.deployer.desc": "放置并且功能一个机械手。这可是你右手的完美复制品", + "advancement.create.fist_bump": "来碰个拳,哥们~", + "advancement.create.fist_bump.desc": "使两个机械臂互相碰拳", + "advancement.create.crushing_wheel": "一对大家伙", + "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", + "advancement.create.chromatic_compound": "两极材料", + "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", + "advancement.create.shadow_steel": "虚空归来的宝石", + "advancement.create.shadow_steel.desc": "制作一些暗影金属", + "advancement.create.refined_radiance": "闪耀着洁白的圣光", + "advancement.create.refined_radiance.desc": "制作一个光辉石", + "advancement.create.zapper": "讲究的建筑师", + "advancement.create.zapper.desc": "制作一个非常方便的手持方块放置器", + "advancement.create.upgraded_zapper": "来自异世界的超频", + "advancement.create.upgraded_zapper.desc": "制作一个完全升级的手持方块放置器", + "advancement.create.wand_of_symmetry": "简单的镜面几何学", + "advancement.create.wand_of_symmetry.desc": "制作一个对称法杖", + "advancement.create.deforester": "超时空砍伐", + "advancement.create.deforester.desc": "制作一个森林毁灭者, 然后跟你后院的树林说再见吧", + "advancement.create.extendo_grip": "biu biu biu!", + "advancement.create.extendo_grip.desc": "拿到一个伸缩机械手", + "advancement.create.dual_extendo_grip": "biu——biu——biu——", + "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手加长距离", + "advancement.create.eob": "Beta版结束", + "advancement.create.eob.desc": "期待未来会有更多的内容. <3", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "机械动力", + "itemGroup.create.palettes": "机械动力建筑方块", + + "death.attack.create.crush": "%1$s 被压扁了", + "death.attack.create.fan_fire": "%1$s 试图接受热风的洗礼", + "death.attack.create.fan_lava": "%1$s 在接受热风的洗礼中欲火焚身", + "death.attack.create.mechanical_drill": "%1$s 被钻头钻的坏掉了", + "death.attack.create.mechanical_saw": "%1$s 被圆锯切成了两截", + "death.attack.create.cuckoo_clock_explosion": "%1$s 被布谷鸟钟炸得粉身碎骨", + + "create.block.deployer.damage_source_name": "二五仔机械臂", + "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", + + "create.recipe.crushing": "粉碎", + "create.recipe.milling": "研磨", + "create.recipe.splashing": "洗涤", + "create.recipe.splashing.fan": "在鼓风机前方倒水", + "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", + "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", + "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", + "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", + "create.recipe.pressing": "金属压片", + "create.recipe.mixing": "混合搅拌", + "create.recipe.packing": "压块塑形", + "create.recipe.mechanical_sawing": "木材切割", + "create.recipe.mechanical_crafting": "自动合成", + "create.recipe.block_cutting": "方块切割", + "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", + "create.recipe.sandpaper_polishing": "砂纸抛光", + "create.recipe.mystery_conversion": "化合物变异", + "create.recipe.processing.catalyst": "催化剂", + "create.recipe.processing.chance": "%1$s%% 概率", + "create.recipe.processing.chanceToReturn": "%1$s%% 概率返还", + + "create.generic.range": "范围", + "create.generic.radius": "半径", + "create.generic.width": "宽度", + "create.generic.height": "高度", + "create.generic.length": "长度", + "create.generic.speed": "速度", + "create.generic.delay": "延时", + "create.generic.unit.ticks": "Ticks", + "create.generic.unit.seconds": "秒", + "create.generic.unit.minutes": "分钟", + "create.generic.unit.rpm": "RPM", + "create.generic.unit.stress": "su", + "create.generic.unit.degrees": "°", + + "create.action.scroll": "滚轮", + "create.action.confirm": "确认", + "create.action.abort": "退出", + "create.action.saveToFile": "保存", + "create.action.discard": "丢弃", + + "create.keyinfo.toolmenu": "工具菜单", + "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", + "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", + + "create.gui.scrollInput.defaultTitle": "选择一个选项:", + "create.gui.scrollInput.scrollToModify": "滚动修改", + "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数量", + "create.gui.scrollInput.scrollToSelect": "滚动选择", + "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滚动更快", + "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", + "create.gui.toolmenu.cycle": "[SCROLL] 循环", + "create.gui.symmetryWand.mirrorType": "镜子类型", + "create.gui.symmetryWand.orientation": "方向", + + "create.symmetry.mirror.plane": "镜像", + "create.symmetry.mirror.doublePlane": "矩形", + "create.symmetry.mirror.triplePlane": "八角", + + "create.orientation.orthogonal": "垂直", + "create.orientation.diagonal": "对角线", + "create.orientation.horizontal": "水平", + "create.orientation.alongZ": "以z轴对齐", + "create.orientation.alongX": "以x轴对齐", + + "create.gui.blockzapper.title": "手持式方块放置机", + "create.gui.blockzapper.replaceMode": "替换模式", + "create.gui.blockzapper.searchDiagonal": "根据对角线", + "create.gui.blockzapper.searchFuzzy": "忽视边界", + "create.gui.blockzapper.range": "扩散范围", + "create.gui.blockzapper.needsUpgradedAmplifier": "需要升级扩散器", + "create.gui.blockzapper.patternSection": "模式", + "create.gui.blockzapper.pattern.solid": "实心", + "create.gui.blockzapper.pattern.checkered": "棋盘", + "create.gui.blockzapper.pattern.inversecheckered": "反转棋盘", + "create.gui.blockzapper.pattern.chance25": "25% ", + "create.gui.blockzapper.pattern.chance50": "50% ", + "create.gui.blockzapper.pattern.chance75": "75% ", + "create.gui.terrainzapper.title": "手持式环境塑形器", + "create.gui.terrainzapper.placement": "放置模式", + "create.gui.terrainzapper.placement.merged": "结合", + "create.gui.terrainzapper.placement.attached": "依附", + "create.gui.terrainzapper.placement.inserted": "插入", + "create.gui.terrainzapper.brush": "塑形类型", + "create.gui.terrainzapper.brush.cuboid": "矩形体", + "create.gui.terrainzapper.brush.sphere": "球体", + "create.gui.terrainzapper.brush.cylinder": "圆柱体", + "create.gui.terrainzapper.tool": "填充类型", + "create.gui.terrainzapper.tool.fill": "填充", + "create.gui.terrainzapper.tool.place": "复写", + "create.gui.terrainzapper.tool.replace": "替换", + "create.gui.terrainzapper.tool.clear": "清除", + "create.gui.terrainzapper.tool.overlay": "覆盖", + "create.gui.terrainzapper.tool.flatten": "平整", + + "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右键 以设置塑形类型", + + "create.blockzapper.usingBlock": "使用: %1$s", + "create.blockzapper.componentUpgrades": "组件升级:", + "create.blockzapper.component.body": "机体", + "create.blockzapper.component.amplifier": "增大", + "create.blockzapper.component.accelerator": "加速", + "create.blockzapper.component.retriever": "寻回", + "create.blockzapper.component.scope": "范围", + "create.blockzapper.componentTier.none": "无", + "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", + "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", + "create.blockzapper.leftClickToSet": "左键点击方块以设定方块", + "create.blockzapper.empty": "方块不足!", + + "create.contraptions.movement_mode": "运动模式", + "create.contraptions.movement_mode.move_place": "停止时总是实体化方块", + "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置实体化方块", + "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才实体化方块", + "create.contraptions.movement_mode.rotate_place": "停止时总是实体化方块", + "create.contraptions.movement_mode.rotate_place_returned": "停止时只在接近初始角度实体化方块", + "create.contraptions.movement_mode.rotate_never_place": "只有在旋转轴摧毁后才实体化方块", + "create.contraptions.cart_movement_mode": "矿车运动模式", + "create.contraptions.cart_movement_mode.rotate": "结构与矿车保持相同方向", + "create.contraptions.cart_movement_mode.rotate_paused": "矿车转向时机器停止工作", + "create.contraptions.cart_movement_mode.rotation_locked": "结构方向保持不变", + + "create.logistics.filter": "过滤器", + "create.logistics.firstFrequency": "频道. #1", + "create.logistics.secondFrequency": "频道. #2", + + "create.gui.goggles.generator_stats": "产能器状态:", + "create.gui.goggles.kinetic_stats": "动能状态:", + "create.gui.goggles.at_current_speed": "当前速度应力值", + "create.gui.goggles.base_value": "应力基础值", + "create.gui.gauge.info_header": "仪表信息:", + "create.gui.speedometer.title": "旋转速度", + "create.gui.stressometer.title": "网络应力", + "create.gui.stressometer.capacity": "剩余应力", + "create.gui.stressometer.overstressed": "超载", + "create.gui.stressometer.no_rotation": "无旋转", + "create.gui.contraptions.not_fast_enough": "显然 %1$s 没有足够的转速.", + "create.gui.contraptions.network_overstressed": "显然装置过载,减速高应力消耗的装置或者添加更多动力", + "create.gui.adjustable_crate.title": "板条箱", + "create.gui.adjustable_crate.storageSpace": "储存空间", + "create.gui.stockpile_switch.title": "储存开关", + "create.gui.stockpile_switch.lowerLimit": "阈值下限", + "create.gui.stockpile_switch.upperLimit": "阈值上限", + "create.gui.stockpile_switch.startAt": "启动信号", + "create.gui.stockpile_switch.startAbove": "给予红石信号当容量大于", + "create.gui.stockpile_switch.stopAt": "停止信号", + "create.gui.stockpile_switch.stopBelow": "停止红石信号当容量小于", + "create.gui.sequenced_gearshift.title": "可编程齿轮箱", + "create.gui.sequenced_gearshift.instruction": "指令", + "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距离", + "create.gui.sequenced_gearshift.instruction.wait": "等待", + "create.gui.sequenced_gearshift.instruction.wait.duration": "间隔", + "create.gui.sequenced_gearshift.instruction.end": "停止", + "create.gui.sequenced_gearshift.speed": "速度, 速度方向", + "create.gui.sequenced_gearshift.speed.forward": "一倍速, 正向", + "create.gui.sequenced_gearshift.speed.forward_fast": "两倍速, 正向", + "create.gui.sequenced_gearshift.speed.back": "一倍速, 反向", + "create.gui.sequenced_gearshift.speed.back_fast": "两倍速, 反向", + + "create.schematicAndQuill.dimensions": "蓝图尺寸: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "第一个位置.", + "create.schematicAndQuill.secondPos": "第二个位置.", + "create.schematicAndQuill.noTarget": "按住Ctrl选择空气方块.", + "create.schematicAndQuill.abort": "删除选择.", + "create.schematicAndQuill.prompt": "输入蓝图的名称:", + "create.schematicAndQuill.fallbackName": "我的蓝图", + "create.schematicAndQuill.saved": "另存为 %1$s", + + "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.position": "位置", + "create.schematic.rotation": "旋转", + "create.schematic.rotation.none": "无", + "create.schematic.rotation.cw90": "顺时针90", + "create.schematic.rotation.cw180": "顺时针180", + "create.schematic.rotation.cw270": "顺时针270", + "create.schematic.mirror": "镜像", + "create.schematic.mirror.none": "无", + "create.schematic.mirror.frontBack": "前后", + "create.schematic.mirror.leftRight": "左右", + "create.schematic.tool.deploy": "部署", + "create.schematic.tool.move": "移动 XZ", + "create.schematic.tool.movey": "移动 Y", + "create.schematic.tool.rotate": "旋转", + "create.schematic.tool.print": "打印", + "create.schematic.tool.flip": "翻转", + "create.schematic.tool.deploy.description.0": "将结构移到某个位置.", + "create.schematic.tool.deploy.description.1": "在地面上单击鼠标右键以放置.", + "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距离选择.", + "create.schematic.tool.deploy.description.3": "按住Ctrl鼠标滚动更改距离.", + "create.schematic.tool.move.description.0": "水平移动蓝图", + "create.schematic.tool.move.description.1": "选定蓝图,然后按住Ctrl鼠标滚动移动.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "垂直移动蓝图", + "create.schematic.tool.movey.description.1": "按住Ctrl鼠标滚动上下移动", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "围绕蓝图中心旋转蓝图.", + "create.schematic.tool.rotate.description.1": "按住Ctrl鼠标滚动旋转90度", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "立即将结构放置在世界上", + "create.schematic.tool.print.description.1": "右键单机确认当前位置.", + "create.schematic.tool.print.description.2": "该工具仅适用于创造模式.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "沿你选择的面翻转蓝图.", + "create.schematic.tool.flip.description.1": "指向蓝图,然后按住Ctrl鼠标滚动将其翻转.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "正在同步...", + "create.schematics.uploadTooLarge": "你的蓝图太大", + "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", + + "create.gui.schematicTable.title": "蓝图桌", + "create.gui.schematicTable.availableSchematics": "可用蓝图", + "create.gui.schematicTable.noSchematics": "没有保存的蓝图", + "create.gui.schematicTable.uploading": "正在上传...", + "create.gui.schematicTable.finished": "上传完成!", + "create.gui.schematicannon.title": "蓝图加农炮", + "create.gui.schematicannon.settingsTitle": "放置设置", + "create.gui.schematicannon.listPrinter": "物品清单打印机", + "create.gui.schematicannon.gunpowderLevel": "火药 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "发射进度: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "备份: %1$s", + "create.gui.schematicannon.optionEnabled": "当前启用", + "create.gui.schematicannon.optionDisabled": "当前禁用", + "create.gui.schematicannon.option.dontReplaceSolid": "不要替换方块", + "create.gui.schematicannon.option.replaceWithSolid": "用固体方块替换工作区域内的方块", + "create.gui.schematicannon.option.replaceWithAny": "用任何方块替换工作区域内的方块", + "create.gui.schematicannon.option.replaceWithEmpty": "用空气替换工作区域内的方块", + "create.gui.schematicannon.option.skipMissing": "绕过缺少的方块", + "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", + "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料, 蓝图大炮将忽略当前缺失材料并且使用其他已有材料继续工作", + "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块.", + "create.gui.schematicannon.option.replaceWithSolid.description": "蓝图加农炮会使用所提供的固体方块来替换工作区域内的其他固体方块", + "create.gui.schematicannon.option.replaceWithAny.description": "蓝图加农炮会使用任何所提供的方块来替换工作区域内的固体方块", + "create.gui.schematicannon.option.replaceWithEmpty.description": "蓝图加农炮将清理和替换工作区域内所有原本的方块.", + + "create.schematicannon.status.idle": "闲置", + "create.schematicannon.status.ready": "准备", + "create.schematicannon.status.running": "运行", + "create.schematicannon.status.finished": "完成", + "create.schematicannon.status.paused": "已暂停", + "create.schematicannon.status.stopped": "停止", + "create.schematicannon.status.noGunpowder": "火药消耗完毕", + "create.schematicannon.status.targetNotLoaded": "方块未加载", + "create.schematicannon.status.targetOutsideRange": "定位目标太远", + "create.schematicannon.status.searching": "搜索", + "create.schematicannon.status.skipping": "跳过", + "create.schematicannon.status.missingBlock": "缺少方块:", + "create.schematicannon.status.placing": "建筑中", + "create.schematicannon.status.clearing": "清除方块中", + "create.schematicannon.status.schematicInvalid": "蓝图无效", + "create.schematicannon.status.schematicNotPlaced": "蓝图未部署", + "create.schematicannon.status.schematicExpired": "蓝图文件已过期", + + "create.gui.filter.blacklist": "黑名单", + "create.gui.filter.blacklist.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", + "create.gui.filter.whitelist": "白名单", + "create.gui.filter.whitelist.description": "只通过在白名单中的物品,如果白名单为空,所有物品都无法通过", + "create.gui.filter.respect_data": "匹配物品属性", + "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他属性相同时才可以匹配", + "create.gui.filter.ignore_data": "忽视物品属性", + "create.gui.filter.ignore_data.description": "匹配时忽视物品的耐久、附魔等其他属性", + + "create.item_attributes.placeable": "可放置", + "create.item_attributes.consumable": "可食用", + "create.item_attributes.smeltable": "可被熔炉烧制", + "create.item_attributes.washable": "可被筛洗", + "create.item_attributes.smokable": "可被烟熏", + "create.item_attributes.blastable": "可被高炉冶炼", + "create.item_attributes.enchanted": "已被附魔", + "create.item_attributes.damaged": "已损坏", + "create.item_attributes.badly_damaged": "严重受损", + "create.item_attributes.not_stackable": "无法堆叠", + "create.item_attributes.equipable": "可装备", + "create.item_attributes.furnace_fuel": "是燃料", + "create.item_attributes.in_tag": "标签是%1$s", + "create.item_attributes.in_item_group": "属于 %1$s", + "create.item_attributes.added_by": "由%1$s添加", + + "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", + "create.gui.attribute_filter.selected_attributes": "已选择的属性:", + "create.gui.attribute_filter.whitelist_disjunctive": "任意匹配白名单 (任何)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "只要有其中一项属性符合,就可以通过", + "create.gui.attribute_filter.whitelist_conjunctive": "全匹配白名单 (所有)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "只有所有属性都匹配才可以通过", + "create.gui.attribute_filter.blacklist": "黑名单", + "create.gui.attribute_filter.blacklist.description": "只要没有上述属性,就可以通过", + "create.gui.attribute_filter.add_reference_item": "添加参考物品", + + "create.tooltip.holdKey": "按住 [%1$s]", + "create.tooltip.holdKeyOrKey": "按住 [%1$s] 或 [%2$s]", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "需求速度: %1$s", + "create.tooltip.speedRequirement.none": "无", + "create.tooltip.speedRequirement.medium": "适当的", + "create.tooltip.speedRequirement.high": "飞快的", + "create.tooltip.stressImpact": "应力消耗: %1$s", + "create.tooltip.stressImpact.low": "低", + "create.tooltip.stressImpact.medium": "中", + "create.tooltip.stressImpact.high": "高", + "create.tooltip.stressImpact.overstressed": "过载", + "create.tooltip.capacityProvided": "应力生产量: %1$s", + "create.tooltip.capacityProvided.low": "小", + "create.tooltip.capacityProvided.medium": "中", + "create.tooltip.capacityProvided.high": "大", + "create.tooltip.capacityProvided.asGenerator": "(作为产能器)", + "create.tooltip.generationSpeed": "产生 %1$s %2$s", + "create.tooltip.analogStrength": "调节强度: %1$s/15", + + "create.mechanical_mixer.min_ingredients": "最少物品种类数", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器每秒tick速被降低为 %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在每秒tick速被降低为 >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 服务器现在不卡了, TPS正常 :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 来让服务器的TPS速度变回正常", + "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器TPS速度", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.subtitle.schematicannon_launch_block": "蓝图大炮发射", + "create.subtitle.schematicannon_finish": "蓝图大炮完成任务", + "create.subtitle.slime_added": "粘液挤压", + "create.subtitle.mechanical_press_activation": "辊压机工作", + "create.subtitle.mechanical_press_item_break": "金属碰撞", + "create.subtitle.blockzapper_place": "放置方块", + "create.subtitle.blockzapper_confirm": "选择方块", + "create.subtitle.blockzapper_deny": "放置失败", + "create.subtitle.block_funnel_eat": "漏斗吞食", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", + "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", + "item.create.example_item.tooltip.condition1": "When this", + "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", + "item.create.example_item.tooltip.condition2": "And When this", + "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", + "item.create.example_item.tooltip.control1": "When Ctrl pressed", + "item.create.example_item.tooltip.action1": "These controls are displayed.", + + "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", + "item.create.wand_of_symmetry.tooltip.summary": "完美地镜面复制工作区域内的方块放置与破坏", + "item.create.wand_of_symmetry.tooltip.condition1": "当在热键栏时", + "item.create.wand_of_symmetry.tooltip.behaviour1": "持续进行镜面复制", + "item.create.wand_of_symmetry.tooltip.control1": "当右键地面时", + "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_镜子", + "item.create.wand_of_symmetry.tooltip.control2": "当右键空气时", + "item.create.wand_of_symmetry.tooltip.action2": "_删除_ 镜子", + "item.create.wand_of_symmetry.tooltip.control3": "当潜行右键时", + "item.create.wand_of_symmetry.tooltip.action3": "打开_gui界面_", + + "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", + "item.create.handheld_blockzapper.tooltip.summary": "新颖的小工具,可以远距离放置或更换方块.", + "item.create.handheld_blockzapper.tooltip.control1": "当左键方块时", + "item.create.handheld_blockzapper.tooltip.action1": "设定放置此方块.", + "item.create.handheld_blockzapper.tooltip.control2": "当右键方块时", + "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替换_ 目标方块.", + "item.create.handheld_blockzapper.tooltip.control3": "当潜行右键时", + "item.create.handheld_blockzapper.tooltip.action3": "打开_gui界面_", + + "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", + "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", + "item.create.handheld_worldshaper.tooltip.control1": "当左键方块时", + "item.create.handheld_worldshaper.tooltip.action1": "设定放置此方块", + "item.create.handheld_worldshaper.tooltip.control2": "当右键方块时", + "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替换_目标方块", + "item.create.handheld_worldshaper.tooltip.control3": "当潜行右键时", + "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_gui界面_", + + "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", + "item.create.tree_fertilizer.tooltip.summary": "适用于常见树木的快速肥料", + "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", + "item.create.tree_fertilizer.tooltip.behaviour1": "无论_生长时间_多少,直接长大", + + "item.create.deforester.tooltip": "DEFORESTER", + "item.create.deforester.tooltip.summary": "_树林毁灭者_,能够瞬间砍倒一棵树", + + "item.create.extendo_grip.tooltip": "EXTENDO GRIP", + "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_.", + "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", + "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的触碰距离,与_主手_的伸缩机械手携同使用,可进一步增加_触碰距离_.", + + "item.create.filter.tooltip": "FILTER", + "item.create.filter.tooltip.summary": "将物品更精确地进行_筛选分类_, 可以同时_筛选_多个物品或者将已标记的_过滤器_放在另一个_过滤器_里_嵌套_使用.", + "item.create.filter.tooltip.condition1": "当处于_过滤器_槽中", + "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,_控制_物品流经过滤器", + "item.create.filter.tooltip.condition2": "当右键时", + "item.create.filter.tooltip.behaviour2": "打开_配置面板_", + + "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", + "item.create.attribute_filter.tooltip.summary": "比起普通过滤器, _属性过滤器_可以根据不同物品的_属性_来进行过滤", + "item.create.attribute_filter.tooltip.condition1": "当处于_过滤器_槽中", + "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器的_配置,_控制_物品流经过滤器", + "item.create.attribute_filter.tooltip.condition2": "当右键时", + "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_", + + "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", + "item.create.empty_schematic.tooltip.summary": "可作为合成材料或在_蓝图桌_使用", + + "item.create.schematic.tooltip": "SCHEMATIC", + "item.create.schematic.tooltip.summary": "可以放置在世界中的结构,根据需要放置全息图,并使用_蓝图加农炮_进行构建.", + "item.create.schematic.tooltip.condition1": "当全息图存在时", + "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具定位", + "item.create.schematic.tooltip.control1": "当潜行右键时", + "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面.", + + "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", + "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到.nbt文件.", + "item.create.schematic_and_quill.tooltip.condition1": "第一步", + "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与右键旋转两个点", + "item.create.schematic_and_quill.tooltip.condition2": "第二步", + "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl鼠标滚轮选择选区大小,右键空白处保存.", + "item.create.schematic_and_quill.tooltip.control1": "右键", + "item.create.schematic_and_quill.tooltip.action1": "选取点/确认保存", + "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl鼠标滚轮", + "item.create.schematic_and_quill.tooltip.action2": "在_空中_选择点滚动以调整距离。", + "item.create.schematic_and_quill.tooltip.control3": "当潜行右键时", + "item.create.schematic_and_quill.tooltip.action3": "_重置_并删除选区.", + + "block.create.schematicannon.tooltip": "SCHEMATICANNON", + "block.create.schematicannon.tooltip.summary": "通过发射方块以在世界中重新构建已部署的_全息图_,使用相邻箱子中的物品及_火药_作为燃料.", + "block.create.schematicannon.tooltip.control1": "当右键时", + "block.create.schematicannon.tooltip.action1": "打开_gui界面_", + + "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", + "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", + "block.create.schematic_table.tooltip.condition1": "放入空白蓝图时", + "block.create.schematic_table.tooltip.behaviour1": "从Schematics文件夹上传所选文件", + + "block.create.shaft.tooltip": "SHAFT", + "block.create.shaft.tooltip.summary": "将_旋转动能_进行直线传递.", + + "block.create.cogwheel.tooltip": "COGWHEEL", + "block.create.cogwheel.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到邻近的_齿轮_上", + + "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", + "block.create.large_cogwheel.tooltip.summary": "大号齿轮传动结构,连接到_小号齿轮_时改变其_转速_.", + + "block.create.encased_shaft.tooltip": "ENCASED SHAFT", + "block.create.encased_shaft.tooltip.summary": "将_旋转动能_进行直线传递,其方块体积使其在穿过墙体时更加_美观_.", + + "block.create.gearbox.tooltip": "GEARBOX", + "block.create.gearbox.tooltip.summary": "十字传动旋转结构,同时将直线旋转方向_反转_.", + + "item.create.vertical_gearbox.tooltip": " VERTICAL GEARBOX", + "item.create.vertical_gearbox.tooltip.summary": "_竖直_版本的_十字传动_结构", + + "block.create.gearshift.tooltip": "GEARSHIFT", + "block.create.gearshift.tooltip.summary": "用于动能控制_旋转方向_的开关.", + "block.create.gearshift.tooltip.condition1": "当提供红石信号时", + "block.create.gearshift.tooltip.behaviour1": "_更改_旋转方向.", + + "block.create.clutch.tooltip": "CLUTCH", + "block.create.clutch.tooltip.summary": "传动开关装置.", + "block.create.clutch.tooltip.condition1": "当提供红石信号时", + "block.create.clutch.tooltip.behaviour1": "_停止_另一侧的旋转.", + + "block.create.encased_belt.tooltip": "ENCASED_BELT", + "block.create.encased_belt.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到临近的_连携齿轮箱_.", + "block.create.encased_belt.tooltip.condition1": "连接到其他传动或装置时", + "block.create.encased_belt.tooltip.behaviour1": "将具有完全相同的转速和方向.", + + "block.create.adjustable_pulley.tooltip": "ANALOG BELT PULLEY", + "block.create.adjustable_pulley.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到临近的_连携齿轮箱_.当方块接收到信号时旋转速度将会改变.", + "block.create.adjustable_pulley.tooltip.condition1": "当提供不同红石信号强度时", + "block.create.adjustable_pulley.tooltip.behaviour1": "如果没有红石信号_不会加速_,最强的红石信号将会提升至_两倍速_", + + "item.create.belt_connector.tooltip": "BELT CONNECTOR", + "item.create.belt_connector.tooltip.summary": "用_传送带_连接两个_传动杆_,连接的传动杆将具有完全相同的转速和方向.传送带可以_传输实体_和_物品_.", + "item.create.belt_connector.tooltip.control1": "当右键传动杆时", + "item.create.belt_connector.tooltip.action1": "选择传动杆作为传送带的传输点,选定的两个传动杆都必须相互_垂直_,_水平_或_对角平齐_.", + "item.create.belt_connector.tooltip.control2": "当潜行右键时", + "item.create.belt_connector.tooltip.action2": "_重置_传送带的第一个选定位置", + + "item.create.goggles.tooltip": "GOGGLES", + "item.create.goggles.tooltip.summary": "一副特殊的眼镜,能够让你看见 _动能_ 的信息.", + "item.create.goggles.tooltip.condition1": "当装备时", + "item.create.goggles.tooltip.behaviour1": "将会展示单个动能元件的_速度_、_应力_等信息", + "item.create.goggles.tooltip.condition2": "当看向仪表时", + "item.create.goggles.tooltip.behaviour2": "将会展示仪表连接网络的_速度_、_应力_等信息.", + + "item.create.wrench.tooltip": "WRENCH", + "item.create.wrench.tooltip.summary": "一种有用的工具,能够调整_动能_的_方向_、_配置_等.", + "item.create.wrench.tooltip.control1": "当右键点击_动能元件_时", + "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", + "item.create.wrench.tooltip.control2": "当潜行右键时", + "item.create.wrench.tooltip.action2": "将物品_取下_并移动到你的背包中.", + + "block.create.creative_motor.tooltip": "CREATIVE MOTOR", + "block.create.creative_motor.tooltip.summary": "可以配置的_无限动力_来源", + + "block.create.water_wheel.tooltip": "WATER WHEEL", + "block.create.water_wheel.tooltip.summary": "从相邻的流水中获得动力", + + "block.create.encased_fan.tooltip": "ENCASED FAN", + "block.create.encased_fan.tooltip.summary": "有多种用途,主要可以将_动力_和_风力_进行互相转换.", + "block.create.encased_fan.tooltip.condition1": "当被红石信号激活后", + "block.create.encased_fan.tooltip.behaviour1": "可将鼓风机下方的_热能_(火, 岩浆等)转化成_动能_, 需要将鼓风机向下摆放", + "block.create.encased_fan.tooltip.condition2": "当旋转时", + "block.create.encased_fan.tooltip.behaviour2": "根据旋转方向_推动_或者_吸引_实体,强度和速度取决于给予的动力.", + "block.create.encased_fan.tooltip.condition3": "当气流通过火,水,岩浆时", + "block.create.encased_fan.tooltip.behaviour3": "在_被吹出_的水,火,岩浆粒子中放置物品会获得相应产物(_建议配合jei查看_).", + + "block.create.nozzle.tooltip": "NOZZLE", + "block.create.nozzle.tooltip.summary": "依附在鼓风机上,能够将鼓风机的风到_分散_各个方向.", + + "block.create.hand_crank.tooltip": "HAND CRANK", + "block.create.hand_crank.tooltip.summary": "一种简单的旋转能源,需要_人工转动_.", + "block.create.hand_crank.tooltip.condition1": "当使用时", + "block.create.hand_crank.tooltip.behaviour1": "向依附的结构提供动力,_潜行_时将会提供_反向_的旋转动力", + + "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", + "block.create.cuckoo_clock.tooltip.summary": "精致的工艺品,能够记录时间", + "block.create.cuckoo_clock.tooltip.condition1": "当旋转时", + "block.create.cuckoo_clock.tooltip.behaviour1": "显示 _当前时间_ 并且一天会咕咕_两次_.中午咕咕一次, 黄昏可以睡觉的时候咕咕一次 ", + + "block.create.turntable.tooltip": "TURNTABLE", + "block.create.turntable.tooltip.summary": "让旋转动力给你带来一场刺激的旋转风车体验.", + + "block.create.millstone.tooltip": "MILLSTONE", + "block.create.millstone.tooltip.summary": "一个能_研磨物品_的动能装置, 可以被临近的_齿轮_供能, 或者可以在底部用传动杆供能, 成品必须被提取出石磨", + "block.create.millstone.tooltip.condition1": "当旋转运作时", + "block.create.millstone.tooltip.behaviour1": "开始根据 _研磨配方_ 来处理物品.", + "block.create.millstone.tooltip.condition2": "当右键时", + "block.create.millstone.tooltip.behaviour2": "手动取出研磨后的成品.", + + "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", + "block.create.crushing_wheel.tooltip.summary": "一对能够粉碎一切的粉碎轮。向两个粉碎轮提供向内且相反的转速来工作", + "block.create.crushing_wheel.tooltip.condition1": "当两个粉碎轮一起运作时", + "block.create.crushing_wheel.tooltip.behaviour1": "粉碎物品并获得相应产物(建议配合jei查看)", + + "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", + "block.create.mechanical_press.tooltip.summary": "一个强力的活塞式机器,用于压制其下方的物品.", + "block.create.mechanical_press.tooltip.condition1": "当提供红石信号时", + "block.create.mechanical_press.tooltip.behaviour1": "_压制_其下方的物品.", + "block.create.mechanical_press.tooltip.condition2": "在传送带上方时", + "block.create.mechanical_press.tooltip.behaviour2": "_自动压缩_经过传送带的物品.", + "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", + "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", + + "block.create.basin.tooltip": "BASIN", + "block.create.basin.tooltip.summary": "一种方便的_物品容器_,常常用于_辊压机_和_搅拌机_,可以被_红石比较器_检测", + + "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", + "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", + + "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", + "block.create.mechanical_mixer.tooltip.summary": "一种能够动态进行搅拌的机器,需要恒定且够快的速度,并且下方需要放置_工作盆_(中间需要一格高)", + "block.create.mechanical_mixer.tooltip.condition1": "当位于工作盆上方", + "block.create.mechanical_mixer.tooltip.behaviour1": "只要_工作盆_中有必要的物品,就会将物品进行搅拌", + "block.create.mechanical_mixer.tooltip.condition2": "当使用扳手时", + "block.create.mechanical_mixer.tooltip.behaviour2": "_配置_配方中物品合成所需的最小数目,通过这个配置能够_避免不需要_的、相似的配方", + + "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", + "block.create.mechanical_crafter.tooltip.summary": "一种依靠_动能_的_自动_合成台。根据想要合成物品的_合成表_来摆放_相应数量_的机械制造机,并且用扳手调整物品在制造机里的_传动方向_以让他们合在一起后被输出", + "block.create.mechanical_crafter.tooltip.condition1": "当旋转时", + "block.create.mechanical_crafter.tooltip.behaviour1": "当机器中_所有_的物品槽有物品时,将会启动所有的制造机来工作.", + "block.create.mechanical_crafter.tooltip.condition2": "被红石激活时", + "block.create.mechanical_crafter.tooltip.behaviour2": "强制启动当前网格中所有给定的_材料_的_合成_", + "block.create.mechanical_crafter.tooltip.control1": "当在机器前方使用扳手时", + "block.create.mechanical_crafter.tooltip.action1": "将会改变物品移动的方向. 要合成一个物品,所有原料必须被_移动到一起_,并且在阵列的_外缘_被弹出机器", + "block.create.mechanical_crafter.tooltip.control2": "当侧方或者后方使用扳手时", + "block.create.mechanical_crafter.tooltip.action2": "连接相邻的制造机的物品栏,这样_相同_的物品就会自动进入所有相互连接的制造机", + + "block.create.furnace_engine.tooltip": "FURNACE ENGINE", + "block.create.furnace_engine.tooltip.summary": "一种强力的_旋转动能_的来源,但是需要_正在工作_的_熔炉_(三种熔炉都可以)", + "block.create.furnace_engine.tooltip.condition1": "当连接正在燃烧的熔炉", + "block.create.furnace_engine.tooltip.behaviour1": "将会带动_相连_的_飞轮_(需要间隔一格),用高炉速度更快", + + "block.create.flywheel.tooltip": "FLYWHEEL", + "block.create.flywheel.tooltip.summary": "一种大型的金属轮, 能将_熔炉引擎_提供的动能稳定化输出, 需要与_熔炉引擎_间隔一个方块", + "block.create.flywheel.tooltip.condition1": "当连接正在输出的_熔炉引擎_", + "block.create.flywheel.tooltip.behaviour1": "将会提供相应的_旋转动能_.", + + "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", + "block.create.portable_storage_interface.tooltip.summary": "一种便携的_物品接口_,能够将移动的结构中的物品进行交互移动", + "block.create.portable_storage_interface.tooltip.condition1": "当处于移动时", + "block.create.portable_storage_interface.tooltip.behaviour1": "与固定的_传输器_交互. 会根据传输器的方向进行输出或者输入物品。 移动结构在传输物品的时候会短暂地停下", + + "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", + "block.create.rotation_speed_controller.tooltip.summary": "一个可以变换所连接齿轮旋转速度的元件", + "block.create.rotation_speed_controller.tooltip.condition1": "当连接大齿轮时", + "block.create.rotation_speed_controller.tooltip.behaviour1": "将输入的旋转动能改变速度后,传递给连接的大齿轮,连接的大齿轮要放在上方.", + + "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", + "block.create.mechanical_piston.tooltip.summary": "活塞的高级版本,使用_旋转动能_精确地移动其连接的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块.", + "block.create.mechanical_piston.tooltip.condition1": "推拉活塞时", + "block.create.mechanical_piston.tooltip.behaviour1": "活塞的速度和方向与所接受转速的大小以及方向相关.", + + "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", + "block.create.sticky_mechanical_piston.tooltip.summary": "粘性活塞的高级版本,使用_旋转动能_精确移动其粘贴的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "推拉活塞时", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "活塞的速度和方向与所接受转速的大小以及方向相关.", + + "block.create.piston_extension_pole.tooltip": "PISTON POLE", + "block.create.piston_extension_pole.tooltip.summary": "用于增加_动力活塞_的移动范围", + "block.create.piston_extension_pole.tooltip.condition1": "当连接到动力活塞时", + "block.create.piston_extension_pole.tooltip.behaviour1": "活塞的移动范围将扩大", + + "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", + "block.create.mechanical_bearing.tooltip.summary": "用于建造大型的旋转结构,或者反之转换_风能_为_旋转能_.", + "block.create.mechanical_bearing.tooltip.condition1": "当旋转时", + "block.create.mechanical_bearing.tooltip.behaviour1": "使用_粘液块_或者_底盘_来驱动更多方块", + "block.create.mechanical_bearing.tooltip.condition2": "给予红石信号时", + "block.create.mechanical_bearing.tooltip.behaviour2": "开始旋转并为连接的传动方块提供动力(此结构需使用_羊毛_建造).", + + "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", + "block.create.clockwork_bearing.tooltip.summary": "一种高级的机械轴承,可以根据当前游戏内时间旋转两个不同的指针", + "block.create.clockwork_bearing.tooltip.condition1": "当旋转时", + "block.create.clockwork_bearing.tooltip.behaviour1": "旋转第一个连接的结构作为时针,第二个连接的结构作为分针", + + "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", + "block.create.sequenced_gearshift.tooltip.summary": "一种可编程的组件,可以根据内部的指令改变旋转的_方向_,_速度_,以及_距离_。 此组件可以有效配合活塞和轴承等使用。最高可让其按_顺序_执行_5条指令_。条高速旋转时可能会变得不精确。", + "block.create.sequenced_gearshift.tooltip.condition1": "当给予红石信号时", + "block.create.sequenced_gearshift.tooltip.behaviour1": "在输入旋转动能的情况下,执行指令.", + "block.create.sequenced_gearshift.tooltip.condition2": "当右键时", + "block.create.sequenced_gearshift.tooltip.behaviour2": "将打开配置_配置界面_", + + "block.create.cart_assembler.tooltip": "CART ASSEMBLER", + "block.create.cart_assembler.tooltip.summary": "将连接当前方块的结构连接在_矿车_上", + "block.create.cart_assembler.tooltip.condition1": "当被红石信号激活时", + "block.create.cart_assembler.tooltip.behaviour1": "将装配站上连接的结构组装到矿车上,并送矿车上路", + "block.create.cart_assembler.tooltip.condition2": "没有红石信号时", + "block.create.cart_assembler.tooltip.behaviour2": "将经过的矿车上的结构_实体化_,并停住矿车.", + "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", + "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", + "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", + "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", + + "block.create.rope_pulley.tooltip": "ROPE PULLEY", + "block.create.rope_pulley.tooltip.summary": "移动绳索相连的结构. 使用_底盘_或者_粘液块_来移动多行方块", + "block.create.rope_pulley.tooltip.condition1": "当旋转时", + "block.create.rope_pulley.tooltip.behaviour1": "根据输入的转速的大小以及方向,移动链接的结构.", + + "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", + "block.create.linear_chassis.tooltip.summary": "一种可配置的_底盘_。这种底盘可以将多个方块连接起来组合成_大型结构_", + "block.create.linear_chassis.tooltip.condition1": "被移动时", + "block.create.linear_chassis.tooltip.behaviour1": "移动所有_并排_的_机壳底盘_。如果底盘上涂了_粘液球_,那么其范围内一条直线的方块都会被_黏附移动_(详情见Ctrl).", + "block.create.linear_chassis.tooltip.condition2": "当使用扳手时", + "block.create.linear_chassis.tooltip.behaviour2": "通过_鼠标滚轮_来配置连接的方块的范围.按住_Ctrl_时滚动滚轮可以同时配置相连的其他底盘.", + "block.create.linear_chassis.tooltip.control1": "当用粘液球右键时", + "block.create.linear_chassis.tooltip.action1": "变为_粘性机壳底盘_. 所有工作范围内与其相连的方块会与其_一同移动_", + + "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", + "block.create.radial_chassis.tooltip.summary": "一种可配置的底盘。这种底盘可以将多个方块连接起来组合成_大型结构_", + "block.create.radial_chassis.tooltip.condition1": "当旋转时", + "block.create.radial_chassis.tooltip.behaviour1": "所有_竖排_的_旋转底盘_会互相粘连移动,并且每个涂了_粘液球_的底盘都会带动其工作半径内的方块(详情见Ctrl).", + "block.create.radial_chassis.tooltip.condition2": "当使用扳手时", + "block.create.radial_chassis.tooltip.behaviour2": "配置连接的方块的半径.按住_Ctrl_可以同时配置相连的其他底盘.", + "block.create.radial_chassis.tooltip.control1": "当用粘液球右键时", + "block.create.radial_chassis.tooltip.action1": "变为_粘性旋转底盘_.所有工作范围内与其相连的方块会与其_一同移动_.", + + "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", + "block.create.mechanical_drill.tooltip.summary": "用于_破坏方块_的装置,可以被_动力活塞_和_动力轴承_等带动", + "block.create.mechanical_drill.tooltip.condition1": "被供能时", + "block.create.mechanical_drill.tooltip.behaviour1": "_原地_破坏正前方的方块,且_伤害_在一定范围内生物及玩家.", + "block.create.mechanical_drill.tooltip.condition2": "当移动时", + "block.create.mechanical_drill.tooltip.behaviour2": "横向或纵向破坏其所_碰到_的方块.", + + "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", + "block.create.mechanical_harvester.tooltip.summary": "适用于中型作物自动化的收割机,可以被_动力活塞_和_动力轴承_等带动.", + "block.create.mechanical_harvester.tooltip.condition1": "当移动时", + "block.create.mechanical_harvester.tooltip.behaviour1": "收割机移动至成熟作物,收割作物并将作物变为初始生长状态.", + + "block.create.mechanical_plough.tooltip": "MECHANICAL mechanical_plough", + "block.create.mechanical_plough.tooltip.summary": "犁是一个非常有用的多功能方块, 它可以被 _动力活塞_ 和 _动力轴承_ 等带动", + "block.create.mechanical_plough.tooltip.condition1": "当移动时", + "block.create.mechanical_plough.tooltip.behaviour1": "可以打掉无碰撞体积的一些_附着方块_,比如火把和雪等. 可以在不伤害实体的情况下移动它们. 能像_锄头_一样翻土耕田.", + + "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", + "block.create.mechanical_saw.tooltip.summary": "可以用于砍树,也可以用于切割方块,可以被_动力活塞_和_动力轴承_等带动", + "block.create.mechanical_saw.tooltip.condition1": "当向上放置时", + "block.create.mechanical_saw.tooltip.behaviour1": "可以切割各种物品(建议配合jei查看)", + "block.create.mechanical_saw.tooltip.condition2": "当方向在水平面时", + "block.create.mechanical_saw.tooltip.behaviour2": "可以砍倒面前的树木", + "block.create.mechanical_saw.tooltip.condition3": "当移动时", + "block.create.mechanical_saw.tooltip.behaviour3": "将会砍倒碰撞到的树木", + + "block.create.stockpile_switch.tooltip": "stockpile_switch", + "block.create.stockpile_switch.tooltip.summary": "根据连接的容器_存储空间_的占用情况切换红石信号强度.", + "block.create.stockpile_switch.tooltip.condition1": "低于下限时", + "block.create.stockpile_switch.tooltip.behaviour1": "停止提供红石信号", + "block.create.stockpile_switch.tooltip.condition2": "超过上限时", + "block.create.stockpile_switch.tooltip.behaviour2": "开始提供红石信号,直到再次到达下限.", + "block.create.stockpile_switch.tooltip.control1": "当右键方块时", + "block.create.stockpile_switch.tooltip.action1": "打开配置面板", + + "block.create.redstone_link.tooltip": "REDSTONE LINK", + "block.create.redstone_link.tooltip.summary": "无线红石信号终端,可以使用任何物品编辑终端频道. 虽然距离有限,但是也挺远的.", + "block.create.redstone_link.tooltip.condition1": "当启用时", + "block.create.redstone_link.tooltip.behaviour1": "接收相同频道提供的红石信号.", + "block.create.redstone_link.tooltip.control1": "当手持方块右键方块时", + "block.create.redstone_link.tooltip.action1": "手持任意物品为其设置频道,可以组合两个物品.", + "block.create.redstone_link.tooltip.control2": "当潜行右键时", + "block.create.redstone_link.tooltip.action2": "在终端模式和接收模式之间切换.", + + "block.create.nixie_tube.tooltip": "NIXIE TUBE", + "block.create.nixie_tube.tooltip.summary": "一个花里胡哨的红石强度显示器,范围:0到15。", + "block.create.nixie_tube.tooltip.condition1": "被红石激活时", + "block.create.nixie_tube.tooltip.behaviour1": "直观的显示当前红石型号的强度", + + "block.create.redstone_contact.tooltip": "REDSTONE CONTACT", + "block.create.redstone_contact.tooltip.summary": "一种用于高级红石装置的设备. 只能两两工作. 可以被_动力活塞_和_动力轴承_等带动", + "block.create.redstone_contact.tooltip.condition1": "当正对面放置也放置_相互朝向_的接触信号发生器时", + "block.create.redstone_contact.tooltip.behaviour1": "提供_红石信号_.", + "block.create.redstone_contact.tooltip.condition2": "当移动时", + "block.create.redstone_contact.tooltip.behaviour2": "如果接触到其他信号发生器,使其发出红石信号.", + + "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", + "block.create.adjustable_crate.tooltip.summary": "该箱子允许对其容量进行调整,最大可以容纳_16组_物品.", + "block.create.adjustable_crate.tooltip.control1": "当右键方块时", + "block.create.adjustable_crate.tooltip.action1": "打开箱子", + + "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", + "block.create.creative_crate.tooltip.summary": "这个容器可以给临近的 _蓝图大炮_ 提供无限物品以及燃料 (创造专用物品)", + "block.create.creative_crate.tooltip.condition1": "当标记了物品时", + "block.create.creative_crate.tooltip.behaviour1": "容器将会从虚空中提供_无限量_的标记物品,并且任何放置到容器中的物品都会被_送入虚空_", + + "block.create.extractor.tooltip": "EXTRACTOR", + "block.create.extractor.tooltip.summary": "从连接的_容器_里自动将物品_输出_到外面,如果前方已经有物品,则在物品被移动前不会继续输出. 可以设置_白名单过滤_.", + "block.create.extractor.tooltip.condition1": "当提供红石信号时", + "block.create.extractor.tooltip.behaviour1": "_暂停_自动输出", + "block.create.extractor.tooltip.condition2": "放置在传送带上时", + "block.create.extractor.tooltip.behaviour2": "当传送带被_黄铜机壳_加固时,使用提取器可以将传送带上的物品_提取_出来. 当提取器堵塞时,传送带将会停下.", + "block.create.extractor.tooltip.control1": "当右键过滤框时", + "block.create.extractor.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + + "block.create.transposer.tooltip": "TRANSPOSER", + "block.create.transposer.tooltip.summary": "将过滤框_白名单_中的物品_传输_到指定的容器.", + "block.create.transposer.tooltip.condition1": "当给予红石信号时", + "block.create.transposer.tooltip.behaviour1": "_暂停_传输.", + "block.create.transposer.tooltip.condition2": "放置在传送带上时", + "block.create.transposer.tooltip.behaviour2": "当传送带被_黄铜机壳_加固时,使用_传输器_可以将传送带上的物品_提取_出来. 当传输器堵塞时,传送带将会停下.", + "block.create.transposer.tooltip.control1": "当右键过滤框时", + "block.create.transposer.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + + "block.create.deployer.tooltip": "DEPLOYER", + "block.create.deployer.tooltip.summary": "它是一个_机械手_,将尽可能_模仿玩家_的行为,也能将方块从容器中取出并_放置_. 可以设置_白名单_.", + "block.create.deployer.tooltip.condition1": "被供能时", + "block.create.deployer.tooltip.behaviour1": "机械手可以最多伸长_两个方块_的距离", + "block.create.deployer.tooltip.condition2": "当使用扳手时", + "block.create.deployer.tooltip.behaviour2": "将会启用拳头模式,在拳头模式之下,机械臂将会试图使用手中的物品_破坏方块_,或者_攻击实体_.", + + "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", + "block.create.linked_extractor.tooltip.summary": "从连接的_容器_里自动将物品_输出_到外面,如果前方已经有物品,则在物品被移动前不会继续输出. 可以设置_白名单过滤_.可以使用_无线红石信号终端_控制.", + "block.create.linked_extractor.tooltip.condition1": "当无线红石信号激活时", + "block.create.linked_extractor.tooltip.behaviour1": "_暂停_输出物品", + "block.create.linked_extractor.tooltip.control1": "右键过滤框时", + "block.create.linked_extractor.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + "block.create.linked_extractor.tooltip.control2": "当右键提取器侧面的频道框时", + "block.create.linked_extractor.tooltip.action2": "手持任意物品为其设置_频道_,将接收_无线红石终端_相应频道,可以用两个物品来组合标记频道.", + + "block.create.linked_transposer.tooltip": "LINKED TRANSPOSER", + "block.create.linked_transposer.tooltip.summary": "将过滤框_白名单_中的物品_传输_到指定的容器.能够使用_无线红石信号终端_控制", + "block.create.linked_transposer.tooltip.condition1": "当无线红石信号触发时", + "block.create.linked_transposer.tooltip.behaviour1": "暂停传输", + "block.create.linked_transposer.tooltip.control1": "当右键过滤框时", + "block.create.linked_transposer.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + "block.create.linked_transposer.tooltip.control2": "当右键传输器侧面的频道框时", + "block.create.linked_transposer.tooltip.action2": "手持任意物品为其设置_频道_,将接收_无线红石终端_相应频道,可以用两个物品来组合标记频道.", + + "block.create.funnel.tooltip": "FUNNEL", + "block.create.funnel.tooltip.summary": "接收传送带上的物品到_连接的容器_,必须放置在_正对_传送带的_方向_及_高度_.", + "block.create.funnel.tooltip.condition1": "提取传送带物品", + "block.create.funnel.tooltip.behaviour1": "位于黄铜机壳加固的传送带_边上_或者_末端_时,传送带漏斗可以将物品从传送带上_拿出_. 传动带漏斗阻塞时_不会阻塞_传送带.", + + "block.create.belt_tunnel.tooltip": "BELT TUNNEL", + "block.create.belt_tunnel.tooltip.summary": "这是一种美观的方块,能够让_传送带_穿过墙壁时更美观, 但是传送带必须被黄铜机壳包装才能在上方放置此方块. 如果启动了_同步模式_,且旁边有_传送带隧道_时, 将会等待其他所有传送带隧道的物品_一起通过_. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "当使用扳手右键前面时", + "block.create.belt_tunnel.tooltip.action1": "启动_同步模式_, 同步模式下,只有临近的_所有_同步模式的传送带隧道都有物品时才会_一齐通过_", + "block.create.belt_tunnel.tooltip.control2": "当使用扳手右键侧面时", + "block.create.belt_tunnel.tooltip.action2": "如果传送带隧道有_小窗口_,调整其窗口内的_遮帘高度_", + + "block.create.brass_casing.tooltip": "BRASS CASING", + "block.create.brass_casing.tooltip.summary": "一种坚固的机壳,有多种用处.", + "block.create.brass_casing.tooltip.condition1": "当被使用在传送带上时", + "block.create.brass_casing.tooltip.behaviour1": "当传送带上装配有黄铜机壳时,可以在传送带上安装_传送带隧道_、_提取器_、_传输器_、_传送带漏斗_等物品", + + "block.create.belt_observer.tooltip": "BELT OBSERVER", + "block.create.belt_observer.tooltip.summary": "检测_传送带_上经过侦测器的物品、实体. 使用_扳手_将可以修改它的模式. 非物品实体总会以观测模式经行侦测. 可进行物品标记", + "block.create.belt_observer.tooltip.condition1": "观测模式", + "block.create.belt_observer.tooltip.behaviour1": "当观测到传送带上有_匹配的物品_或者实体时,将会提供_红石信号_", + "block.create.belt_observer.tooltip.condition2": "脉冲模式", + "block.create.belt_observer.tooltip.behaviour2": "当侦测器中心线_匹配_到物品时,将会发出_红石脉冲_", + "block.create.belt_observer.tooltip.condition3": "转移模式", + "block.create.belt_observer.tooltip.behaviour3": "将_匹配的物品_转移至侦测器前方的传送带. 如果目标位置被堵塞,物品将会_停下_等待转移.", + "block.create.belt_observer.tooltip.condition4": "均分模式", + "block.create.belt_observer.tooltip.behaviour4": "将匹配的物品_分成两部分_,一半的物品被传送到前方的传送带.", + + "block.create.pulse_repeater.tooltip": "PULSE REPEATER", + "block.create.pulse_repeater.tooltip.summary": "一个简单的电路元件,将通过的红石信号变为1tick.", + + "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", + "block.create.adjustable_repeater.tooltip.summary": "高级中继器,最大可设置30分钟延迟", + + "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", + "block.create.adjustable_pulse_repeater.tooltip.summary": "一种单次1tick的红石脉冲器,可以调节延时至30min", + + "block.create.analog_lever.tooltip": "ANALOG LEVER", + "block.create.analog_lever.tooltip.summary": "一种可以调节任意信号强度的推杆.", + + "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", + "block.create.powered_toggle_latch.tooltip.summary": "一种拉杆,在红石电路中可以用作t触发器.", + + "block.create.powered_latch.tooltip": "POWERED LATCH", + "block.create.powered_latch.tooltip.summary": "一种拉杆,在红石电路中用作锁存器,从后方输入将会启用这个拉杆,从侧边输入将会重置这个拉杆.", + + "block.create.speedometer.tooltip": "SPEEDOMETER", + "block.create.speedometer.tooltip.summary": "测量并展示连接网络的旋转速度,支持使用红石比较器", + "block.create.speedometer.tooltip.condition1": "接入动力时", + "block.create.speedometer.tooltip.behaviour1": "将会用颜色展示速度的大小,绿-慢、蓝-中、紫-快.", + + "block.create.stressometer.tooltip": "STRESSOMETER", + "block.create.stressometer.tooltip.summary": "测量并展示连接网络的应力值,支持红石比较器", + "block.create.stressometer.tooltip.condition1": "接入动力时", + "block.create.stressometer.tooltip.behaviour1": "将会用颜色展示承受的应力. 如果网络过载则会瘫痪,必须减少机器或者增加动力", + + "tool.create.sand_paper.tooltip": "SAND PAPER", + "tool.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸, 可以用机械臂来实现自动化.", + "tool.create.sand_paper.tooltip.condition1": "当使用时", + "tool.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物品", + + "item.create.super_glue.tooltip": "SUPER GLUE", + "item.create.super_glue.tooltip.summary": "让两个方块互相_粘黏_,他们会一直因此相爱到永远", + "item.create.super_glue.tooltip.condition1": "右键使用时", + "item.create.super_glue.tooltip.behaviour1": "有强力胶的方块的_那一面_会变得有粘性。和此面相邻的方块在被_动力活塞_或者_动力轴承_等方块驱动的时候会被一同带动", + "item.create.super_glue.tooltip.condition2": "在副手上时", + "item.create.super_glue.tooltip.behaviour2": "主手放置的方块会被_直接_黏在所放置的方块上", + + "item.create.refined_radiance.tooltip": "REFINED RADIANCE", + "item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料.", + + "item.create.shadow_steel.tooltip": "SHADOW STEEL", + "item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料.", + + "item.create.crafter_slot_cover.tooltip": "SLOT COVER", + "item.create.crafter_slot_cover.tooltip.summary": "用来标记_机械制造机_以不放入物品. 在制造与桶类似的斜向合成表时非常有用.", + + "create.tooltip.wip": "WIP", + "create.tooltip.workInProgress": "工作进行中!", + "create.tooltip.randomWipDescription0": "别把这玩意给熊孩子", + "create.tooltip.randomWipDescription1": "每一次使用这个物品都会伤害一只无辜的小猫, 所以没有使用就没有伤害。别!用!", + "create.tooltip.randomWipDescription2": "使用后果自负", + "create.tooltip.randomWipDescription3": "(摇手指)这可不是你在找的物品, 走开吧", + "create.tooltip.randomWipDescription4": "自爆模式已启动,10,9,8...", + "create.tooltip.randomWipDescription5": "这玩意真的没用, 我骗你干嘛", + "create.tooltip.randomWipDescription6": "如果你使用这个东西, 那么本作者与它造成的任何后果没有责任.", + "create.tooltip.randomWipDescription7": "这玩意不是给你用的, 换个吧", + "create.tooltip.randomWipDescription8": "试试就逝世", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/data/LangMerger.java b/src/main/java/com/simibubi/create/foundation/data/LangMerger.java index 7a24ac4c8..c8dac6003 100644 --- a/src/main/java/com/simibubi/create/foundation/data/LangMerger.java +++ b/src/main/java/com/simibubi/create/foundation/data/LangMerger.java @@ -3,14 +3,20 @@ package com.simibubi.create.foundation.data; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.Objects; +import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableObject; -import org.apache.commons.lang3.text.translate.JavaUnicodeEscaper; +import org.apache.commons.lang3.tuple.Pair; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -25,7 +31,6 @@ import net.minecraft.data.DirectoryCache; import net.minecraft.data.IDataProvider; import net.minecraft.util.JSONUtils; -@SuppressWarnings("deprecation") public class LangMerger implements IDataProvider { private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting() @@ -34,11 +39,18 @@ public class LangMerger implements IDataProvider { static final String CATEGORY_HEADER = "\t\"_\": \"->------------------------] %s [------------------------<-\","; private DataGenerator gen; - private List data; + + private List mergedLangData; + private Map> populatedLangData; + private Map> allLocalizedEntries; + private Map missingTranslationTally; public LangMerger(DataGenerator gen) { this.gen = gen; - this.data = new ArrayList<>(); + this.mergedLangData = new ArrayList<>(); + this.allLocalizedEntries = new HashMap<>(); + this.populatedLangData = new HashMap<>(); + this.missingTranslationTally = new HashMap<>(); } @Override @@ -50,11 +62,43 @@ public class LangMerger implements IDataProvider { public void act(DirectoryCache cache) throws IOException { Path path = this.gen.getOutputFolder() .resolve("assets/" + Create.ID + "/lang/" + "en_us.json"); + + for (Pair pair : getAllLocalizationFiles()) { + if (!pair.getRight() + .isJsonObject()) + continue; + Map localizedEntries = new HashMap<>(); + JsonObject jsonobject = pair.getRight() + .getAsJsonObject(); + jsonobject.entrySet() + .stream() + .forEachOrdered(entry -> { + String key = entry.getKey(); + if (key.startsWith("_")) + return; + String value = entry.getValue() + .getAsString(); + localizedEntries.put(key, value); + }); + String key = pair.getKey(); + allLocalizedEntries.put(key, localizedEntries); + populatedLangData.put(key, new ArrayList<>()); + missingTranslationTally.put(key, new MutableInt(0)); + } + collectExistingEntries(path); collectEntries(); - if (data.isEmpty()) + if (mergedLangData.isEmpty()) return; - save(cache, path); + + save(cache, mergedLangData, -1, path, "Merging en_us.json with hand-written lang entries..."); + for (Entry> localization : populatedLangData.entrySet()) { + String key = localization.getKey(); + Path populatedLangPath = this.gen.getOutputFolder() + .resolve("assets/" + Create.ID + "/lang/unfinished/" + key); + save(cache, localization.getValue(), missingTranslationTally.get(key) + .intValue(), populatedLangPath, "Populating " + key + " with missing entries..."); + } } private void collectExistingEntries(Path path) throws IOException { @@ -75,9 +119,9 @@ public class LangMerger implements IDataProvider { return; header = String.format(CATEGORY_HEADER, header); - data.add("\n"); - data.add(header); - data.add("\n\n"); + writeData("\n"); + writeData(header); + writeData("\n\n"); MutableObject previousKey = new MutableObject<>(""); jsonobject.entrySet() @@ -88,12 +132,29 @@ public class LangMerger implements IDataProvider { .getAsString(); if (!previousKey.getValue() .isEmpty() && shouldAddLineBreak(key, previousKey.getValue())) - data.add("\n"); - data.add(new LangEntry(key, value)); + writeData("\n"); + writeEntry(key, value); previousKey.setValue(key); }); - data.add("\n"); + writeData("\n"); + } + + private void writeData(String data) { + mergedLangData.add(data); + populatedLangData.values() + .forEach(l -> l.add(data)); + } + + private void writeEntry(String key, String value) { + mergedLangData.add(new LangEntry(key, value)); + populatedLangData.forEach((k, l) -> { + ForeignLangEntry entry = new ForeignLangEntry(key, value, allLocalizedEntries.get(k)); + if (entry.isMissing()) + missingTranslationTally.get(k) + .increment(); + l.add(entry); + }); } protected boolean shouldAddLineBreak(String key, String previousKey) { @@ -108,11 +169,37 @@ public class LangMerger implements IDataProvider { String[] split2 = previousKey.split("\\."); if (split.length == 0 || split2.length == 0) return false; - + // Start new paragraph if keys before second point do not match return !split[0].equals(split2[0]); } + private List> getAllLocalizationFiles() { + ArrayList> list = new ArrayList<>(); + + String filepath = "assets/" + Create.ID + "/lang/"; + try { + InputStream resourceAsStream = Create.class.getClassLoader() + .getResourceAsStream(filepath); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resourceAsStream)); + while (true) { + String readLine = bufferedReader.readLine(); + if (readLine == null) + break; + if (!readLine.endsWith(".json")) + continue; + if (readLine.startsWith("en_us") || readLine.startsWith("en_ud")) + continue; + list.add(Pair.of(readLine, FilesHelper.loadJsonResource(filepath + "/" + readLine))); + } + resourceAsStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + return list; + } + private void collectEntries() { for (AllLangPartials partial : AllLangPartials.values()) { String fileName = Lang.asId(partial.name()); @@ -124,16 +211,18 @@ public class LangMerger implements IDataProvider { } } - private void save(DirectoryCache cache, Path target) throws IOException { - String data = createString(); - data = JavaUnicodeEscaper.outsideOf(0, 0x7f) - .translate(data); + private void save(DirectoryCache cache, List dataIn, int missingKeys, Path target, String message) + throws IOException { + String data = createString(dataIn, missingKeys); +// data = JavaUnicodeEscaper.outsideOf(0, 0x7f) +// .translate(data); String hash = IDataProvider.HASH_FUNCTION.hashUnencodedChars(data) .toString(); if (!Objects.equals(cache.getPreviousHash(target), hash) || !Files.exists(target)) { Files.createDirectories(target.getParent()); try (BufferedWriter bufferedwriter = Files.newBufferedWriter(target)) { + Create.logger.info(message); bufferedwriter.write(data); bufferedwriter.close(); } @@ -142,9 +231,11 @@ public class LangMerger implements IDataProvider { cache.recordHash(target, hash); } - protected String createString() { + protected String createString(List data, int missingKeys) { StringBuilder builder = new StringBuilder(); builder.append("{\n"); + if (missingKeys != -1) + builder.append("\t\"_\": \"Missing Localizations: " + missingKeys + "\"\n"); data.forEach(builder::append); builder.append("\t\"_\": \"Thank you for translating Create!\"\n\n"); builder.append("}"); @@ -169,4 +260,19 @@ public class LangMerger implements IDataProvider { } + private class ForeignLangEntry extends LangEntry { + + private boolean missing; + + ForeignLangEntry(String key, String value, Map localizationMap) { + super(key, localizationMap.getOrDefault(key, "UNLOCALIZED: " + value)); + missing = !localizationMap.containsKey(key); + } + + public boolean isMissing() { + return missing; + } + + } + } diff --git a/src/main/resources/assets/create/lang/Localization Readme.txt b/src/main/resources/assets/create/lang/Localization Readme.txt index 83027e56e..eeb95b6a7 100644 --- a/src/main/resources/assets/create/lang/Localization Readme.txt +++ b/src/main/resources/assets/create/lang/Localization Readme.txt @@ -1,4 +1,10 @@ Hi there! Looking to contribute with a localization? Wonderful. -You will find the english lang file here: -https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/generated/resources/assets/create/lang/en_us.json \ No newline at end of file + +You will find the full english lang file here: +https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/generated/resources/assets/create/lang/en_us.json + +If you want to complete an outdated lang file, check out +https://github.com/Creators-of-Create/Create/blob/mc1.15/dev/src/generated/resources/assets/create/lang/unfinished +Missing entries have been added to these templates, marked with "UNLOCALIZED". +These files are only there to help you, finished langs still belong in the folder this readme is in. Best of luck! \ No newline at end of file From 69dd19cd581eb285820ee8a30c51ec2e7e5e686e Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 26 Jun 2020 12:35:24 +0200 Subject: [PATCH 18/47] Filtered Funneling - Added filtering behaviour and in-world slots to new funnel blocks - Filtering behaviour now supports slots active on multiple sides - Funnels no longer wipe their TE when changing state - Fixed VoxelShape for extended belt funnels --- .../java/com/simibubi/create/AllShapes.java | 6 +- .../com/simibubi/create/AllTileEntities.java | 11 ++- .../DirectionalExtenderScrollOptionSlot.java | 2 +- .../FunnelFilterSlotPositioning.java | 96 +++++++++++++++++++ .../HorizontalInteractionFunnelBlock.java | 22 +++++ .../realityFunnel/RealityFunnelBlock.java | 39 ++++++++ .../RealityFunnelTileEntity.java | 36 +++++++ .../behaviour/ValueBoxTransform.java | 16 ++-- .../behaviour/filtering/FilteringHandler.java | 15 ++- .../filtering/FilteringRenderer.java | 28 +++++- 10 files changed, 253 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index cb9a26925..787f245af 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -75,9 +75,9 @@ public class AllShapes { .forDirectional(UP), BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), - BELT_FUNNEL_DEFAULT = shape(3, -5, 12, 13, 13, 17).add(0, -5, 6, 16, 16, 12) - .forHorizontal(NORTH), - BELT_FUNNEL_EXTENDED = shape(3, -5, 6, 13, 13, 17).add(0, -5, 0, 16, 16, 6) + BELT_FUNNEL_EXTENDED = shape(3, -4, 6, 13, 13, 17).add(2, -4, 10, 14, 14, 14) + .add(1, -4, 6, 15, 15, 10) + .add(0, -5, 0, 16, 16, 6) .forHorizontal(NORTH), PUMP = shape(2, 0, 2, 14, 5, 14).add(4, 0, 4, 12, 16, 12) .add(3, 12, 3, 13, 16, 13) diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index b418708d8..3dc452168 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -84,6 +84,7 @@ import com.simibubi.create.content.logistics.block.mechanicalArm.ArmRenderer; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; import com.simibubi.create.content.logistics.block.packager.PackagerRenderer; import com.simibubi.create.content.logistics.block.packager.PackagerTileEntity; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelTileEntity; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverRenderer; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; @@ -217,11 +218,12 @@ public class AllTileEntities { register("adjustable_crate", AdjustableCrateTileEntity::new, AllBlocks.ADJUSTABLE_CRATE); public static final TileEntityEntry CREATIVE_CRATE = register("creative_crate", CreativeCrateTileEntity::new, AllBlocks.CREATIVE_CRATE); - + + public static final TileEntityEntry REALITY_FUNNEL = register("reality_funnel", + RealityFunnelTileEntity::new, AllBlocks.REALITY_FUNNEL, AllBlocks.BELT_FUNNEL, AllBlocks.CHUTE_FUNNEL); public static final TileEntityEntry PACKAGER = register("packager", PackagerTileEntity::new, AllBlocks.PACKAGER); - - + public static final TileEntityEntry EXTRACTOR = register("extractor", ExtractorTileEntity::new, AllBlocks.EXTRACTOR, AllBlocks.VERTICAL_EXTRACTOR); public static final TileEntityEntry LINKED_EXTRACTOR = register("linked_extractor", @@ -270,7 +272,7 @@ public class AllTileEntities { bind(HAND_CRANK, HandCrankRenderer::new); bind(CUCKOO_CLOCK, CuckooClockRenderer::new); bind(ANALOG_LEVER, AnalogLeverRenderer::new); - + bind(MECHANICAL_PUMP, PumpRenderer::new); bind(FLUID_TANK, FluidTankRenderer::new); @@ -302,6 +304,7 @@ public class AllTileEntities { bind(TRANSPOSER, SmartTileEntityRenderer::new); bind(LINKED_TRANSPOSER, SmartTileEntityRenderer::new); bind(FUNNEL, SmartTileEntityRenderer::new); + bind(REALITY_FUNNEL, SmartTileEntityRenderer::new); bind(BELT_TUNNEL, BeltTunnelRenderer::new); bind(MECHANICAL_ARM, ArmRenderer::new); bind(BELT_OBSERVER, BeltObserverRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java index 874833491..b8892c6cd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java @@ -26,7 +26,7 @@ public class DirectionalExtenderScrollOptionSlot extends CenteredSideValueBoxTra @Override protected void rotate(BlockState state, MatrixStack ms) { - if (!direction.getAxis().isHorizontal()) + if (!getSide().getAxis().isHorizontal()) MatrixStacker.of(ms).rotateY(AngleHelper.horizontalAngle(state.get(BlockStateProperties.FACING)) - 90); super.rotate(state, ms); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java new file mode 100644 index 000000000..fcf0af437 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java @@ -0,0 +1,96 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock.Shape; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.DirectionHelper; +import com.simibubi.create.foundation.utility.MatrixStacker; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Direction.AxisDirection; +import net.minecraft.util.math.Vec3d; + +public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { + + @Override + protected Vec3d getLocalOffset(BlockState state) { + if (AllBlocks.BELT_FUNNEL.has(state)) + if (state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED) + return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 13, 7.5f), + AngleHelper.horizontalAngle(getSide()), Axis.Y); + + Vec3d localOffset = + getSide() == Direction.UP ? VecHelper.voxelSpace(8, 14.5f, 8) : VecHelper.voxelSpace(8, 1.5f, 8); + + if (getSide().getAxis() + .isHorizontal()) { + Vec3d southLocation = VecHelper.voxelSpace(8, 8, 14.5f); + localOffset = VecHelper.rotateCentered(southLocation, AngleHelper.horizontalAngle(getSide()), Axis.Y); + } + + if (AllBlocks.CHUTE_FUNNEL.has(state)) { + Direction facing = state.get(ChuteFunnelBlock.HORIZONTAL_FACING); + localOffset = localOffset.subtract(new Vec3d(facing.getDirectionVec()).scale(2 / 16f)); + } + + return localOffset; + } + + @Override + protected void rotate(BlockState state, MatrixStack ms) { + Direction facing = RealityFunnelBlock.getFunnelFacing(state); + + if (!facing.getAxis() + .isVertical() + && !(AllBlocks.BELT_FUNNEL.has(state) && state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED)) { + Direction verticalDirection = DirectionHelper.rotateAround(getSide(), facing.rotateY() + .getAxis()); + if (facing.getAxis() == Axis.Z) + verticalDirection = verticalDirection.getOpposite(); + + boolean reverse = state.getBlock() instanceof HorizontalInteractionFunnelBlock + && !state.get(HorizontalInteractionFunnelBlock.PUSHING); + + float yRot = -AngleHelper.horizontalAngle(verticalDirection) + 180; + float xRot = -90; + boolean alongX = facing.getAxis() == Axis.X; + float zRotLast = alongX ^ facing.getAxisDirection() == AxisDirection.POSITIVE ? 180 : 0; + if (reverse) + zRotLast += 180; + + MatrixStacker.of(ms) + .rotateZ(alongX ? xRot : 0) + .rotateX(alongX ? 0 : xRot) + .rotateY(yRot) + .rotateZ(zRotLast); + return; + } + + super.rotate(state, ms); + } + + @Override + protected boolean isSideActive(BlockState state, Direction direction) { + Direction facing = RealityFunnelBlock.getFunnelFacing(state); + + if (facing == null) + return false; + + if (AllBlocks.BELT_FUNNEL.has(state)) + return state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED ? direction == facing + : direction != Direction.DOWN && direction.getAxis() != facing.getAxis(); + + return direction.getAxis() != facing.getAxis(); + } + + @Override + protected Vec3d getSouthLocation() { + return Vec3d.ZERO; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java index 57774d5c7..dd53e51d2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.logistics.block.realityFunnel; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import net.minecraft.block.Block; @@ -13,6 +14,7 @@ import net.minecraft.item.ItemUseContext; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; @@ -33,6 +35,16 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i .with(POWERED, false)); } + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.REALITY_FUNNEL.create(); + } + @Override protected void fillStateContainer(Builder p_206840_1_) { super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, POWERED, PUSHING)); @@ -44,6 +56,16 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i .isBlockPowered(ctx.getPos())); } + @Override + public void onReplaced(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, + boolean p_196243_5_) { + if (p_196243_1_.hasTileEntity() + && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !RealityFunnelBlock.isFunnel(p_196243_4_) + || !p_196243_4_.hasTileEntity())) { + p_196243_2_.removeTileEntity(p_196243_3_); + } + } + @Override public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, PlayerEntity player) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index 54db37f47..69cc5eb62 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -1,7 +1,10 @@ package com.simibubi.create.content.logistics.block.realityFunnel; +import javax.annotation.Nullable; + import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.foundation.block.ProperDirectionalBlock; @@ -11,6 +14,7 @@ import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; @@ -44,6 +48,16 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { .isBlockPowered(context.getPos())); } + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.REALITY_FUNNEL.create(); + } + @Override protected void fillStateContainer(Builder builder) { super.fillStateContainer(builder.add(POWERED)); @@ -105,4 +119,29 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { return !(block instanceof RealityFunnelBlock) && !(block instanceof HorizontalInteractionFunnelBlock); } + @Nullable + public static Direction getFunnelFacing(BlockState state) { + if (state.has(FACING)) + return state.get(FACING); + if (state.has(BlockStateProperties.HORIZONTAL_FACING)) + return state.get(BlockStateProperties.HORIZONTAL_FACING); + return null; + } + + @Override + public void onReplaced(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, + boolean p_196243_5_) { + if (p_196243_1_.hasTileEntity() + && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !isFunnel(p_196243_4_) + || !p_196243_4_.hasTileEntity())) { + p_196243_2_.removeTileEntity(p_196243_3_); + } + } + + @Nullable + public static boolean isFunnel(BlockState state) { + return state.getBlock() instanceof RealityFunnelBlock + || state.getBlock() instanceof HorizontalInteractionFunnelBlock; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java new file mode 100644 index 000000000..39283c24a --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java @@ -0,0 +1,36 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import java.util.List; + +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InventoryManagementBehaviour.Attachments; + +import net.minecraft.tileentity.TileEntityType; + +public class RealityFunnelTileEntity extends SmartTileEntity { + + private FilteringBehaviour filtering; + private InsertingBehaviour inserting; + + public RealityFunnelTileEntity(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + } + + @Override + public void addBehaviours(List behaviours) { + filtering = new FilteringBehaviour(this, new FunnelFilterSlotPositioning()); + behaviours.add(filtering); + inserting = + new InsertingBehaviour(this, Attachments.toward(() -> RealityFunnelBlock.getFunnelFacing(getBlockState()))); + behaviours.add(inserting); + } + + @Override + public double getMaxRenderDistanceSquared() { + return 64; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java index b9047e1ed..ad6efc0b1 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java @@ -98,8 +98,8 @@ public abstract class ValueBoxTransform { @Override protected Vec3d getLocalOffset(BlockState state) { Vec3d location = getSouthLocation(); - location = VecHelper.rotateCentered(location, AngleHelper.horizontalAngle(direction), Axis.Y); - location = VecHelper.rotateCentered(location, AngleHelper.verticalAngle(direction), Axis.Z); + location = VecHelper.rotateCentered(location, AngleHelper.horizontalAngle(getSide()), Axis.Y); + location = VecHelper.rotateCentered(location, AngleHelper.verticalAngle(getSide()), Axis.Z); return location; } @@ -107,8 +107,8 @@ public abstract class ValueBoxTransform { @Override protected void rotate(BlockState state, MatrixStack ms) { - float yRot = AngleHelper.horizontalAngle(direction) + 180; - float xRot = direction == Direction.UP ? 90 : direction == Direction.DOWN ? 270 : 0; + float yRot = AngleHelper.horizontalAngle(getSide()) + 180; + float xRot = getSide() == Direction.UP ? 90 : getSide() == Direction.DOWN ? 270 : 0; MatrixStacker.of(ms) .rotateY(yRot) .rotateX(xRot); @@ -116,18 +116,22 @@ public abstract class ValueBoxTransform { @Override public boolean shouldRender(BlockState state) { - return super.shouldRender(state) && isSideActive(state, direction); + return super.shouldRender(state) && isSideActive(state, getSide()); } @Override public boolean testHit(BlockState state, Vec3d localHit) { - return isSideActive(state, direction) && super.testHit(state, localHit); + return isSideActive(state, getSide()) && super.testHit(state, localHit); } protected boolean isSideActive(BlockState state, Direction direction) { return true; } + public Direction getSide() { + return direction; + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java index b464b7eb9..4fa82b5e0 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java @@ -3,6 +3,8 @@ package com.simibubi.create.foundation.tileEntity.behaviour.filtering; import com.simibubi.create.AllKeys; import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; import com.simibubi.create.foundation.utility.RaycastHelper; import net.minecraft.client.Minecraft; @@ -47,15 +49,20 @@ public class FilteringHandler { BlockRayTraceResult ray = RaycastHelper.rayTraceRange(world, player, 10); if (ray == null) return; + if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) + ((Sided) behaviour.slotPositioning).fromSide(ray.getFace()); if (behaviour.testHit(ray.getHitVec())) { if (event.getSide() != LogicalSide.CLIENT) { - ItemStack heldItem = player.getHeldItem(hand).copy(); + ItemStack heldItem = player.getHeldItem(hand) + .copy(); if (!player.isCreative()) { - if (behaviour.getFilter().getItem() instanceof FilterItem) + if (behaviour.getFilter() + .getItem() instanceof FilterItem) player.inventory.placeItemBackInInventory(world, behaviour.getFilter()); if (heldItem.getItem() instanceof FilterItem) - player.getHeldItem(hand).shrink(1); + player.getHeldItem(hand) + .shrink(1); } if (heldItem.getItem() instanceof FilterItem) heldItem.setCount(1); @@ -87,6 +94,8 @@ public class FilteringHandler { return false; if (!filtering.isCountVisible()) return false; + if (filtering.slotPositioning instanceof ValueBoxTransform.Sided) + ((Sided) filtering.slotPositioning).fromSide(result.getFace()); if (!filtering.testHit(objectMouseOver.getHitVec())) return false; ItemStack filterItem = filtering.getFilter(); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index a1032566d..fdafeb1d3 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -9,6 +9,9 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.ItemValueBox; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxRenderer; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; +import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.BlockState; @@ -16,6 +19,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.world.ClientWorld; import net.minecraft.item.ItemStack; +import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; @@ -42,6 +46,8 @@ public class FilteringRenderer { return; if (mc.player.isSneaking()) return; + if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) + ((Sided) behaviour.slotPositioning).fromSide(result.getFace()); if (!behaviour.slotPositioning.shouldRender(state)) return; @@ -83,8 +89,28 @@ public class FilteringRenderer { .isEmpty()) return; + ValueBoxTransform slotPositioning = behaviour.slotPositioning; + BlockState blockState = tileEntityIn.getBlockState(); + + if (slotPositioning instanceof ValueBoxTransform.Sided) { + ValueBoxTransform.Sided sided = (ValueBoxTransform.Sided) slotPositioning; + Direction side = sided.getSide(); + for (Direction d : Iterate.directions) { + sided.fromSide(d); + if (!slotPositioning.shouldRender(blockState)) + continue; + + ms.push(); + slotPositioning.transform(blockState, ms); + ValueBoxRenderer.renderItemIntoValueBox(behaviour.getFilter(), ms, buffer, light, overlay); + ms.pop(); + } + sided.fromSide(side); + return; + } + ms.push(); - behaviour.slotPositioning.transform(tileEntityIn.getBlockState(), ms); + slotPositioning.transform(blockState, ms); ValueBoxRenderer.renderItemIntoValueBox(behaviour.getFilter(), ms, buffer, light, overlay); ms.pop(); } From 9fe1d85199c4af0eafc6ae392866c8d8c833d120 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 26 Jun 2020 21:38:10 +0200 Subject: [PATCH 19/47] Reworked belt processing and interfacing - Removed the IBeltAttachment system - Item processing on belts is now a TE behaviour - Added TE behaviour for allowing belts (and similar) to directly insert items - Massive refactor to the Belts' inventory - Fixed fast moving items missing their processing step - Saws, Basins, Crushing Wheels, Belts and Crafters now interact through the new behaviour rather than hard-coded interactions - Fixed items (visually) disappearing on saws while queueing up - Items on belts now back up a little further away from the end of the belt --- .../crafter/MechanicalCrafterTileEntity.java | 47 +- .../CrushingWheelControllerTileEntity.java | 55 ++- .../press/BeltPressingCallbacks.java | 59 +++ .../press/MechanicalPressBlock.java | 104 +--- .../press/MechanicalPressTileEntity.java | 54 ++- .../components/saw/SawRenderer.java | 31 +- .../components/saw/SawTileEntity.java | 135 +++--- .../processing/BasinTileEntity.java | 14 +- .../relays/belt/AllBeltAttachments.java | 202 -------- .../contraptions/relays/belt/BeltBlock.java | 3 - .../relays/belt/BeltRenderer.java | 2 +- .../relays/belt/BeltTileEntity.java | 66 +-- .../relays/belt/transport/BeltInventory.java | 445 ++++++++---------- .../belt/transport/BeltMovementHandler.java | 11 - .../BeltTunnelInteractionHandler.java | 100 ++++ .../belts/BeltAttachableLogisticalBlock.java | 70 +-- .../belts/observer/BeltObserverBlock.java | 142 +----- .../block/extractor/ExtractorTileEntity.java | 2 +- .../logistics/block/funnel/FunnelBlock.java | 48 +- .../tileEntity/SmartTileEntity.java | 8 +- .../tileEntity/TileEntityBehaviour.java | 10 +- ...IBehaviourType.java => BehaviourType.java} | 2 +- .../belt/BeltProcessingBehaviour.java | 59 +++ .../belt/DirectBeltInputBehaviour.java | 76 +++ .../EdgeInteractionBehaviour.java | 7 +- .../filtering/FilteringBehaviour.java | 7 +- .../inventory/AutoExtractingBehaviour.java | 7 +- .../inventory/ExtractingBehaviour.java | 7 +- .../inventory/InsertingBehaviour.java | 7 +- .../InventoryManagementBehaviour.java | 7 +- .../SingleTargetAutoExtractingBehaviour.java | 13 +- .../behaviour/linked/LinkBehaviour.java | 7 +- .../scrollvalue/ScrollValueBehaviour.java | 7 +- .../behaviour/simple/DeferralBehaviour.java | 7 +- 34 files changed, 753 insertions(+), 1068 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java delete mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/belt/AllBeltAttachments.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java rename src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/{IBehaviourType.java => BehaviourType.java} (67%) create mode 100644 src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java create mode 100644 src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java index 93d44a928..8bace4b11 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java @@ -5,6 +5,7 @@ import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlo import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.Map.Entry; import org.apache.commons.lang3.tuple.Pair; @@ -13,8 +14,8 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler.ConnectedInput; import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction.EdgeInteractionBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InventoryManagementBehaviour.Attachments; @@ -27,7 +28,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.particles.ItemParticleData; import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; @@ -91,9 +91,9 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { setLazyTickRate(20); phase = Phase.IDLE; groupedItemsBeforeCraft = new GroupedItems(); - + // Does not get serialized due to active checking in tick - wasPoweredBefore = true; + wasPoweredBefore = true; } @Override @@ -337,13 +337,13 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { } protected boolean isTargetingBelt() { + DirectBeltInputBehaviour behaviour = getTargetingBelt(); + return behaviour != null && behaviour.canInsertFromSide(getTargetFacing()); + } + + protected DirectBeltInputBehaviour getTargetingBelt() { BlockPos targetPos = pos.offset(getTargetFacing()); - if (!AllBlocks.BELT.has(world.getBlockState(targetPos))) - return false; - TileEntity te = world.getTileEntity(targetPos); - if (!(te instanceof BeltTileEntity)) - return false; - return ((KineticTileEntity) te).getSpeed() != 0; + return TileEntityBehaviour.get(world, targetPos, DirectBeltInputBehaviour.TYPE); } public void tryInsert() { @@ -355,22 +355,21 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { boolean chagedPhase = phase != Phase.INSERTING; final List> inserted = new LinkedList<>(); - groupedItems.grid.forEach((pair, stack) -> { - if (isTargetingBelt()) { - Direction facing = getTargetFacing(); - BlockPos targetPos = pos.offset(facing); - BeltTileEntity te = (BeltTileEntity) world.getTileEntity(targetPos); - if (te.tryInsertingFromSide(facing, stack, false)) - inserted.add(pair); - return; - } + DirectBeltInputBehaviour behaviour = getTargetingBelt(); + for (Entry, ItemStack> entry : groupedItems.grid.entrySet()) { + Pair pair = entry.getKey(); + ItemStack stack = entry.getValue(); + Direction facing = getTargetFacing(); - ItemStack remainder = inserting.insert(stack.copy(), false); - if (!remainder.isEmpty()) + ItemStack remainder = behaviour == null ? inserting.insert(stack.copy(), false) + : behaviour.handleInsertion(stack, facing, false); + if (!remainder.isEmpty()) { stack.setCount(remainder.getCount()); - else - inserted.add(pair); - }); + continue; + } + + inserted.add(pair); + } inserted.forEach(groupedItems.grid::remove); if (groupedItems.grid.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java index ad8179594..8141fcf36 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java @@ -11,7 +11,9 @@ import com.simibubi.create.content.contraptions.processing.ProcessingInventory; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.entity.Entity; @@ -24,7 +26,6 @@ import net.minecraft.particles.BlockParticleData; import net.minecraft.particles.IParticleData; import net.minecraft.particles.ItemParticleData; import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; @@ -36,7 +37,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.RecipeWrapper; -public class CrushingWheelControllerTileEntity extends SyncedTileEntity implements ITickableTileEntity { +public class CrushingWheelControllerTileEntity extends SmartTileEntity { public Entity processingEntity; private UUID entityUUID; @@ -60,14 +61,20 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen wrapper = new RecipeWrapper(inventory); } + @Override + public void addBehaviours(List behaviours) { + behaviours.add(new DirectBeltInputBehaviour(this)); + } + @Override public void tick() { + super.tick(); if (isFrozen()) return; if (searchForEntity) { searchForEntity = false; List search = world.getEntitiesInAABBexcluding(null, new AxisAlignedBB(getPos()), - e -> entityUUID.equals(e.getUniqueID())); + e -> entityUUID.equals(e.getUniqueID())); if (search.isEmpty()) clear(); else @@ -84,9 +91,9 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen if (!hasEntity()) { - float processingSpeed = MathHelper.clamp( - (speed) / (!inventory.appliedRecipe ? MathHelper.log2(inventory.getStackInSlot(0).getCount()) : 1), - .25f, 20); + float processingSpeed = + MathHelper.clamp((speed) / (!inventory.appliedRecipe ? MathHelper.log2(inventory.getStackInSlot(0) + .getCount()) : 1), .25f, 20); inventory.remainingTime -= processingSpeed; spawnParticles(inventory.getStackInSlot(0)); @@ -107,7 +114,8 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen continue; ItemEntity entityIn = new ItemEntity(world, outPos.x, outPos.y, outPos.z, stack); entityIn.setMotion(Vec3d.ZERO); - entityIn.getPersistentData().put("BypassCrushingWheel", NBTUtil.writeBlockPos(pos)); + entityIn.getPersistentData() + .put("BypassCrushingWheel", NBTUtil.writeBlockPos(pos)); world.addEntity(entityIn); } inventory.clear(); @@ -118,8 +126,8 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen return; } - if (!processingEntity.isAlive() - || !processingEntity.getBoundingBox().intersects(new AxisAlignedBB(pos).grow(.5f))) { + if (!processingEntity.isAlive() || !processingEntity.getBoundingBox() + .intersects(new AxisAlignedBB(pos).grow(.5f))) { clear(); return; } @@ -136,7 +144,7 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen if (!(processingEntity instanceof ItemEntity)) { processingEntity.attackEntityFrom(CrushingWheelTileEntity.damageSource, - AllConfigs.SERVER.kinetics.crushingDamage.get()); + AllConfigs.SERVER.kinetics.crushingDamage.get()); if (!processingEntity.isAlive()) { processingEntity.setPosition(outPos.x, outPos.y - .75f, outPos.z); } @@ -147,7 +155,8 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen itemEntity.setPickupDelay(20); if (processingEntity.getY() < pos.getY() + .25f) { inventory.clear(); - inventory.setStackInSlot(0, itemEntity.getItem().copy()); + inventory.setStackInSlot(0, itemEntity.getItem() + .copy()); itemInserted(inventory.getStackInSlot(0)); itemEntity.remove(); world.notifyBlockUpdate(pos, getBlockState(), getBlockState(), 2 | 16); @@ -161,15 +170,15 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen IParticleData particleData = null; if (stack.getItem() instanceof BlockItem) - particleData = - new BlockParticleData(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock().getDefaultState()); + particleData = new BlockParticleData(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() + .getDefaultState()); else particleData = new ItemParticleData(ParticleTypes.ITEM, stack); Random r = world.rand; for (int i = 0; i < 4; i++) world.addParticle(particleData, pos.getX() + r.nextFloat(), pos.getY() + r.nextFloat(), - pos.getZ() + r.nextFloat(), 0, 0, 0); + pos.getZ() + r.nextFloat(), 0, 0, 0); } private void applyRecipe() { @@ -177,10 +186,12 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen List list = new ArrayList<>(); if (recipe.isPresent()) { - int rolls = inventory.getStackInSlot(0).getCount(); + int rolls = inventory.getStackInSlot(0) + .getCount(); inventory.clear(); for (int roll = 0; roll < rolls; roll++) { - List rolledResults = recipe.get().rollResults(); + List rolledResults = recipe.get() + .rollResults(); for (int i = 0; i < rolledResults.size(); i++) { ItemStack stack = rolledResults.get(i); ItemHelper.addToList(stack, list); @@ -195,10 +206,11 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen } public Optional> findRecipe() { - Optional> crushingRecipe = - world.getRecipeManager().getRecipe(AllRecipeTypes.CRUSHING.getType(), wrapper, world); + Optional> crushingRecipe = world.getRecipeManager() + .getRecipe(AllRecipeTypes.CRUSHING.getType(), wrapper, world); if (!crushingRecipe.isPresent()) - crushingRecipe = world.getRecipeManager().getRecipe(AllRecipeTypes.MILLING.getType(), wrapper, world); + crushingRecipe = world.getRecipeManager() + .getRecipe(AllRecipeTypes.MILLING.getType(), wrapper, world); return crushingRecipe; } @@ -231,7 +243,8 @@ public class CrushingWheelControllerTileEntity extends SyncedTileEntity implemen private void itemInserted(ItemStack stack) { Optional> recipe = findRecipe(); - inventory.remainingTime = recipe.isPresent() ? recipe.get().getProcessingDuration() : 100; + inventory.remainingTime = recipe.isPresent() ? recipe.get() + .getProcessingDuration() : 100; inventory.appliedRecipe = false; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java new file mode 100644 index 000000000..da9f3f539 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java @@ -0,0 +1,59 @@ +package com.simibubi.create.content.contraptions.components.press; + +import static com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult.HOLD; +import static com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult.PASS; + +import java.util.List; +import java.util.Optional; + +import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode; +import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; + +import net.minecraft.item.ItemStack; + +public class BeltPressingCallbacks { + + static ProcessingResult onItemReceived(TransportedItemStack transported, BeltInventory beltInventory, + MechanicalPressTileEntity press) { + if (press.getSpeed() == 0 || press.running) + return PASS; + if (!press.getRecipe(transported.stack) + .isPresent()) + return PASS; + + press.start(Mode.BELT); + return HOLD; + } + + static ProcessingResult whenItemHeld(TransportedItemStack transportedStack, BeltInventory beltInventory, + MechanicalPressTileEntity pressTe) { + + if (pressTe.getSpeed() == 0) + return PASS; + if (!pressTe.running) + return PASS; + if (pressTe.runningTicks != 30) + return HOLD; + + Optional recipe = pressTe.getRecipe(transportedStack.stack); + pressTe.pressedItems.clear(); + pressTe.pressedItems.add(transportedStack.stack); + + if (!recipe.isPresent()) + return PASS; + + ItemStack out = recipe.get() + .getRecipeOutput() + .copy(); + List multipliedOutput = ItemHelper.multipliedOutput(transportedStack.stack, out); + if (multipliedOutput.isEmpty()) + transportedStack.stack = ItemStack.EMPTY; + transportedStack.stack = multipliedOutput.get(0); + pressTe.sendData(); + return HOLD; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java index dfba5cc3b..d5cc08418 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java @@ -1,28 +1,16 @@ package com.simibubi.create.content.contraptions.components.press; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; - import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.BeltAttachmentState; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.IBeltAttachment; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.item.ItemHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; @@ -30,12 +18,11 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; public class MechanicalPressBlock extends HorizontalKineticBlock - implements ITE, IBeltAttachment { + implements ITE { public MechanicalPressBlock(Properties properties) { super(properties); @@ -93,95 +80,6 @@ public class MechanicalPressBlock extends HorizontalKineticBlock return face.getAxis() == state.get(HORIZONTAL_FACING).getAxis(); } - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - onAttachmentPlaced(worldIn, pos, state); - } - - @Override - public List getPotentialAttachmentPositions(IWorld world, BlockPos pos, BlockState beltState) { - return Arrays.asList(pos.up(2)); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - onAttachmentRemoved(worldIn, pos, state); - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - worldIn.removeTileEntity(pos); - } - } - - @Override - public BlockPos getBeltPositionForAttachment(IWorld world, BlockPos pos, BlockState state) { - return pos.down(2); - } - - @Override - public boolean isAttachedCorrectly(IWorld world, BlockPos attachmentPos, BlockPos beltPos, - BlockState attachmentState, BlockState beltState) { - return AllBlocks.BELT.has(beltState) && beltState.get(BeltBlock.SLOPE) == Slope.HORIZONTAL; - } - - @Override - public boolean startProcessingItem(BeltTileEntity belt, TransportedItemStack transported, - BeltAttachmentState state) { - try { - MechanicalPressTileEntity pressTe = getTileEntity(belt.getWorld(), state.attachmentPos); - if (pressTe.getSpeed() == 0) - return false; - if (pressTe.running) - return false; - if (!pressTe.getRecipe(transported.stack).isPresent()) - return false; - - state.processingDuration = 1; - pressTe.start(Mode.BELT); - return true; - - } catch (TileEntityException e) {} - return false; - } - - @Override - public boolean processItem(BeltTileEntity belt, TransportedItemStack transportedStack, BeltAttachmentState state) { - try { - MechanicalPressTileEntity pressTe = getTileEntity(belt.getWorld(), state.attachmentPos); - - // Not powered - if (pressTe.getSpeed() == 0) - return false; - - // Running - if (!pressTe.running) - return false; - if (pressTe.runningTicks != 30) - return true; - - Optional recipe = pressTe.getRecipe(transportedStack.stack); - - pressTe.pressedItems.clear(); - pressTe.pressedItems.add(transportedStack.stack); - - if (!recipe.isPresent()) - return false; - - ItemStack out = recipe.get().getRecipeOutput().copy(); - List multipliedOutput = ItemHelper.multipliedOutput(transportedStack.stack, out); - if (multipliedOutput.isEmpty()) - transportedStack.stack = ItemStack.EMPTY; - transportedStack.stack = multipliedOutput.get(0); - - BeltTileEntity controllerTE = belt.getControllerTE(); - if (controllerTE != null) - controllerTE.sendData(); - pressTe.sendData(); - return true; - - } catch (TileEntityException e) {} - - return false; - } - @Override public Class getTileEntityClass() { return MechanicalPressTileEntity.class; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index f74f9e725..ef4ce6845 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -11,6 +11,8 @@ import com.simibubi.create.content.contraptions.processing.BasinTileEntity.Basin import com.simibubi.create.content.logistics.InWorldProcessing; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.entity.Entity; @@ -59,6 +61,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } private static PressingInv pressingInv = new PressingInv(); + public BeltProcessingBehaviour processingBehaviour; + public int runningTicks; public boolean running; public Mode mode; @@ -69,6 +73,15 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { mode = Mode.WORLD; } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + processingBehaviour = + new BeltProcessingBehaviour(this).whenItemEnters((s, i) -> BeltPressingCallbacks.onItemReceived(s, i, this)) + .whileItemHeld((s, i) -> BeltPressingCallbacks.whenItemHeld(s, i, this)); + behaviours.add(processingBehaviour); + } + @Override public void read(CompoundNBT compound) { running = compound.getBoolean("Running"); @@ -105,7 +118,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { @Override public AxisAlignedBB getRenderBoundingBox() { - return new AxisAlignedBB(pos).expand(0, -1.5, 0).expand(0, 1, 0); + return new AxisAlignedBB(pos).expand(0, -1.5, 0) + .expand(0, 1, 0); } public float getRenderedHeadOffset(float partialTicks) { @@ -116,7 +130,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } if (runningTicks >= 40) { return MathHelper.clamp(((60 - runningTicks) + 1 - partialTicks) / 20f * mode.headOffset, 0, - mode.headOffset); + mode.headOffset); } } return 0; @@ -180,7 +194,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { if (basinInv.isPresent() && orElse instanceof BasinInventory) { BasinInventory inv = (BasinInventory) orElse; - for (int slot = 0; slot < inv.getInputHandler().getSlots(); slot++) { + for (int slot = 0; slot < inv.getInputHandler() + .getSlots(); slot++) { ItemStack stackInSlot = inv.getStackInSlot(slot); if (stackInSlot.isEmpty()) continue; @@ -194,9 +209,9 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { if (!world.isRemote) { world.playSound(null, getPos(), AllSoundEvents.MECHANICAL_PRESS_ITEM_BREAK.get(), SoundCategory.BLOCKS, - .5f, 1f); + .5f, 1f); world.playSound(null, getPos(), AllSoundEvents.MECHANICAL_PRESS_ACTIVATION.get(), SoundCategory.BLOCKS, - .125f, 1f); + .125f, 1f); } } @@ -229,12 +244,12 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { pressedItems.forEach(stack -> makeCompactingParticleEffect(VecHelper.getCenterOf(pos.down(2)), stack)); } if (mode == Mode.BELT) { - pressedItems.forEach( - stack -> makePressingParticleEffect(VecHelper.getCenterOf(pos.down(2)).add(0, 8 / 16f, 0), stack)); + pressedItems.forEach(stack -> makePressingParticleEffect(VecHelper.getCenterOf(pos.down(2)) + .add(0, 8 / 16f, 0), stack)); } if (mode == Mode.WORLD) { - pressedItems.forEach( - stack -> makePressingParticleEffect(VecHelper.getCenterOf(pos.down(1)).add(0, -1 / 4f, 0), stack)); + pressedItems.forEach(stack -> makePressingParticleEffect(VecHelper.getCenterOf(pos.down(1)) + .add(0, -1 / 4f, 0), stack)); } pressedItems.clear(); @@ -243,9 +258,10 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { public void makePressingParticleEffect(Vec3d pos, ItemStack stack) { if (world.isRemote) { for (int i = 0; i < 20; i++) { - Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .125f).mul(1, 0, 1); + Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .125f) + .mul(1, 0, 1); world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), pos.x, pos.y - .25f, pos.z, motion.x, - motion.y + .125f, motion.z); + motion.y + .125f, motion.z); } } } @@ -253,23 +269,24 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { public void makeCompactingParticleEffect(Vec3d pos, ItemStack stack) { if (world.isRemote) { for (int i = 0; i < 20; i++) { - Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .175f).mul(1, 0, 1); + Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .175f) + .mul(1, 0, 1); world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), pos.x, pos.y, pos.z, motion.x, - motion.y + .25f, motion.z); + motion.y + .25f, motion.z); } } } public Optional getRecipe(ItemStack item) { pressingInv.setInventorySlotContents(0, item); - Optional recipe = - world.getRecipeManager().getRecipe(AllRecipeTypes.PRESSING.getType(), pressingInv, world); + Optional recipe = world.getRecipeManager() + .getRecipe(AllRecipeTypes.PRESSING.getType(), pressingInv, world); return recipe; } public static boolean canCompress(NonNullList ingredients) { - return (ingredients.size() == 4 || ingredients.size() == 9) - && ItemHelper.condenseIngredients(ingredients).size() == 1; + return (ingredients.size() == 4 || ingredients.size() == 9) && ItemHelper.condenseIngredients(ingredients) + .size() == 1; } @Override @@ -283,7 +300,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { return false; NonNullList ingredients = recipe.getIngredients(); - if (!ingredients.stream().allMatch(Ingredient::isSimple)) + if (!ingredients.stream() + .allMatch(Ingredient::isSimple)) return false; List remaining = new ArrayList<>(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java index 705fb5c6c..a8e1197ad 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java @@ -61,18 +61,25 @@ public class SawRenderer extends SafeTileEntityRenderer { if (te.getSpeed() < 0 ^ alongZ) offset = 1 - offset; - ItemStack stack = te.inventory.getStackInSlot(0); - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - IBakedModel modelWithOverrides = itemRenderer.getItemModelWithOverrides(stack, te.getWorld(), null); - boolean blockItem = modelWithOverrides.isGui3d(); - - ms.translate(alongZ ? offset : .5, blockItem ? .925f : 13f / 16f, alongZ ? .5 : offset); - - ms.scale(.5f, .5f, .5f); - if (alongZ) - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(90)); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(90)); - itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.FIXED, light, overlay, ms, buffer); + for (int i = 0; i < te.inventory.getSlots(); i++) { + ItemStack stack = te.inventory.getStackInSlot(i); + if (stack.isEmpty()) + continue; + + ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); + IBakedModel modelWithOverrides = itemRenderer.getItemModelWithOverrides(stack, te.getWorld(), null); + boolean blockItem = modelWithOverrides.isGui3d(); + + ms.translate(alongZ ? offset : .5, blockItem ? .925f : 13f / 16f, alongZ ? .5 : offset); + + ms.scale(.5f, .5f, .5f); + if (alongZ) + ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(90)); + ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(90)); + itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.FIXED, light, overlay, ms, buffer); + break; + } + ms.pop(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java index 07539ab22..9fd313749 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java @@ -8,13 +8,12 @@ import java.util.List; import java.util.Random; import java.util.stream.Collectors; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity; import com.simibubi.create.content.contraptions.processing.ProcessingInventory; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.TreeCutter; @@ -44,7 +43,6 @@ import net.minecraft.particles.IParticleData; import net.minecraft.particles.ItemParticleData; import net.minecraft.particles.ParticleTypes; import net.minecraft.tags.BlockTags; -import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; @@ -78,6 +76,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { super.addBehaviours(behaviours); filtering = new FilteringBehaviour(this, new SawFilterSlot()); behaviours.add(filtering); + behaviours.add(new DirectBeltInputBehaviour(this)); } @Override @@ -142,81 +141,51 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { Vec3d itemMovement = getItemMovementVec(); Direction itemMovementFacing = Direction.getFacingFromVector(itemMovement.x, itemMovement.y, itemMovement.z); - Vec3d outPos = VecHelper.getCenterOf(pos).add(itemMovement.scale(.5f).add(0, .5, 0)); - Vec3d outMotion = itemMovement.scale(.0625).add(0, .125, 0); + if (inventory.remainingTime > 0) + return; + inventory.remainingTime = 0; - if (inventory.remainingTime <= 0) { - - // Try moving items onto the belt - BlockPos nextPos = pos.add(itemMovement.x, itemMovement.y, itemMovement.z); - if (AllBlocks.BELT.has(world.getBlockState(nextPos))) { - TileEntity te = world.getTileEntity(nextPos); - if (te != null && te instanceof BeltTileEntity) { - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - - if (((BeltTileEntity) te).tryInsertingFromSide(itemMovementFacing, stack, false)) - inventory.setStackInSlot(slot, ItemStack.EMPTY); - else { - inventory.remainingTime = 0; - return; - } - } - inventory.clear(); - inventory.remainingTime = -1; - sendData(); - } - } - - // Try moving items onto next saw - if (AllBlocks.MECHANICAL_SAW.has(world.getBlockState(nextPos))) { - TileEntity te = world.getTileEntity(nextPos); - if (te != null && te instanceof SawTileEntity) { - SawTileEntity sawTileEntity = (SawTileEntity) te; - Vec3d otherMovement = sawTileEntity.getItemMovementVec(); - if (Direction.getFacingFromVector(otherMovement.x, otherMovement.y, - otherMovement.z) != itemMovementFacing.getOpposite()) { - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - - ProcessingInventory sawInv = sawTileEntity.inventory; - if (sawInv.isEmpty()) { - sawInv.insertItem(0, stack, false); - inventory.setStackInSlot(slot, ItemStack.EMPTY); - - } else { - inventory.remainingTime = 0; - return; - } - } - inventory.clear(); - inventory.remainingTime = -1; - sendData(); - } - } - } - - // Eject Items + BlockPos nextPos = pos.add(itemMovement.x, itemMovement.y, itemMovement.z); + DirectBeltInputBehaviour behaviour = TileEntityBehaviour.get(world, nextPos, DirectBeltInputBehaviour.TYPE); + if (behaviour != null) { + boolean changed = false; + if (!behaviour.canInsertFromSide(itemMovementFacing)) + return; for (int slot = 0; slot < inventory.getSlots(); slot++) { ItemStack stack = inventory.getStackInSlot(slot); if (stack.isEmpty()) continue; - ItemEntity entityIn = new ItemEntity(world, outPos.x, outPos.y, outPos.z, stack); - entityIn.setMotion(outMotion); - world.addEntity(entityIn); + ItemStack remainder = behaviour.handleInsertion(stack, itemMovementFacing, false); + if (remainder.equals(stack, false)) + continue; + inventory.setStackInSlot(slot, remainder); + changed = true; + } + if (changed) { + markDirty(); + sendData(); } - inventory.clear(); - world.updateComparatorOutputLevel(pos, getBlockState().getBlock()); - inventory.remainingTime = -1; - sendData(); return; } - return; + // Eject Items + Vec3d outPos = VecHelper.getCenterOf(pos) + .add(itemMovement.scale(.5f) + .add(0, .5, 0)); + Vec3d outMotion = itemMovement.scale(.0625) + .add(0, .125, 0); + for (int slot = 0; slot < inventory.getSlots(); slot++) { + ItemStack stack = inventory.getStackInSlot(slot); + if (stack.isEmpty()) + continue; + ItemEntity entityIn = new ItemEntity(world, outPos.x, outPos.y, outPos.z, stack); + entityIn.setMotion(outMotion); + world.addEntity(entityIn); + } + inventory.clear(); + world.updateComparatorOutputLevel(pos, getBlockState().getBlock()); + inventory.remainingTime = -1; + sendData(); } @Override @@ -240,8 +209,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { IParticleData particleData = null; float speed = 1; if (stack.getItem() instanceof BlockItem) - particleData = - new BlockParticleData(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock().getDefaultState()); + particleData = new BlockParticleData(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() + .getDefaultState()); else { particleData = new ItemParticleData(ParticleTypes.ITEM, stack); speed = .125f; @@ -253,7 +222,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { float offset = inventory.recipeDuration != 0 ? (float) (inventory.remainingTime) / inventory.recipeDuration : 0; offset -= .5f; world.addParticle(particleData, pos.getX() + -vec.x * offset, pos.getY() + .45f, pos.getZ() + -vec.z * offset, - -vec.x * speed, r.nextFloat() * speed, -vec.z * speed); + -vec.x * speed, r.nextFloat() * speed, -vec.z * speed); } public Vec3d getItemMovementVec() { @@ -271,7 +240,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { IRecipe recipe = recipes.get(recipeIndex); - int rolls = inventory.getStackInSlot(0).getCount(); + int rolls = inventory.getStackInSlot(0) + .getCount(); inventory.clear(); List list = new ArrayList<>(); @@ -280,7 +250,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { if (recipe instanceof CuttingRecipe) results = ((CuttingRecipe) recipe).rollResults(); else if (recipe instanceof StonecuttingRecipe) - results.add(recipe.getRecipeOutput().copy()); + results.add(recipe.getRecipeOutput() + .copy()); for (int i = 0; i < results.size(); i++) { ItemStack stack = results.get(i); @@ -294,10 +265,11 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { private List> getRecipes() { List> startedSearch = RecipeFinder.get(cuttingRecipesKey, world, - RecipeConditions.isOfType(IRecipeType.STONECUTTING, AllRecipeTypes.CUTTING.getType())); - return startedSearch.stream().filter(RecipeConditions.outputMatchesFilter(filtering)) - .filter(RecipeConditions.firstIngredientMatches(inventory.getStackInSlot(0))) - .collect(Collectors.toList()); + RecipeConditions.isOfType(IRecipeType.STONECUTTING, AllRecipeTypes.CUTTING.getType())); + return startedSearch.stream() + .filter(RecipeConditions.outputMatchesFilter(filtering)) + .filter(RecipeConditions.firstIngredientMatches(inventory.getStackInSlot(0))) + .collect(Collectors.toList()); } public void insertItem(ItemEntity entity) { @@ -309,7 +281,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { return; inventory.clear(); - inventory.insertItem(0, entity.getItem().copy(), false); + inventory.insertItem(0, entity.getItem() + .copy(), false); entity.remove(); } @@ -357,7 +330,9 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity { @Override protected boolean shouldRun() { - return getBlockState().get(SawBlock.FACING).getAxis().isHorizontal(); + return getBlockState().get(SawBlock.FACING) + .getAxis() + .isHorizontal(); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 0c9c8febf..7632d8a11 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -1,8 +1,11 @@ package com.simibubi.create.content.contraptions.processing; +import java.util.List; import java.util.Optional; -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -19,7 +22,7 @@ import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import net.minecraftforge.items.wrapper.RecipeWrapper; -public class BasinTileEntity extends SyncedTileEntity implements ITickableTileEntity { +public class BasinTileEntity extends SmartTileEntity implements ITickableTileEntity { public boolean contentsChanged; @@ -96,7 +99,12 @@ public class BasinTileEntity extends SyncedTileEntity implements ITickableTileEn contentsChanged = true; recipeInventory = new BasinInputInventory(); } - + + @Override + public void addBehaviours(List behaviours) { + behaviours.add(new DirectBeltInputBehaviour(this)); + } + @Override public void read(CompoundNBT compound) { super.read(compound); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/AllBeltAttachments.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/AllBeltAttachments.java deleted file mode 100644 index 7f01d12e6..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/AllBeltAttachments.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import java.util.LinkedList; -import java.util.List; -import java.util.function.Consumer; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; - -public enum AllBeltAttachments { //TODO rework this nonsense - - BELT_FUNNEL(AllBlocks.FUNNEL.get()), - BELT_OBSERVER(AllBlocks.BELT_OBSERVER.get()), - MECHANICAL_PRESS(AllBlocks.MECHANICAL_PRESS.get()), - LOGISTICAL_ATTACHABLES(AllBlocks.EXTRACTOR.get()), - - ; - - IBeltAttachment attachment; - - private AllBeltAttachments(Block attachment) { - this.attachment = (IBeltAttachment) attachment; - } - - public interface IBeltAttachment { - - public List getPotentialAttachmentPositions(IWorld world, BlockPos pos, BlockState beltState); - - public BlockPos getBeltPositionForAttachment(IWorld world, BlockPos pos, BlockState state); - - default boolean isAttachedCorrectly(IWorld world, BlockPos attachmentPos, BlockPos beltPos, - BlockState attachmentState, BlockState beltState) { - return true; - } - - default boolean processEntity(BeltTileEntity te, Entity entity, BeltAttachmentState state) { - return false; - } - - default boolean startProcessingItem(BeltTileEntity te, TransportedItemStack transported, - BeltAttachmentState state) { - return false; - } - - default boolean processItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - return false; - } - - default void onAttachmentPlaced(IWorld world, BlockPos pos, BlockState state) { - BlockPos beltPos = getBeltPositionForAttachment(world, pos, state); - BeltTileEntity belt = BeltHelper.getSegmentTE(world, beltPos); - - if (belt == null) - return; - if (!isAttachedCorrectly(world, pos, beltPos, state, world.getBlockState(beltPos))) - return; - - belt.attachmentTracker.addAttachment(world, pos); - belt.markDirty(); - belt.sendData(); - } - - default void onAttachmentRemoved(IWorld world, BlockPos pos, BlockState state) { - BlockPos beltPos = getBeltPositionForAttachment(world, pos, state); - BeltTileEntity belt = BeltHelper.getSegmentTE(world, beltPos); - - if (belt == null) - return; - if (!isAttachedCorrectly(world, pos, beltPos, state, world.getBlockState(beltPos))) - return; - - belt.attachmentTracker.removeAttachment(pos); - belt.markDirty(); - belt.sendData(); - } - - } - - public static class BeltAttachmentState { - public IBeltAttachment attachment; - public BlockPos attachmentPos; - public int processingDuration; - public Entity processingEntity; - public TransportedItemStack processingStack; - - public BeltAttachmentState(IBeltAttachment attachment, BlockPos attachmentPos) { - this.attachment = attachment; - this.attachmentPos = attachmentPos; - } - - } - - public static class Tracker { - public List attachments; - private BeltTileEntity te; - - public Tracker(BeltTileEntity te) { - attachments = new LinkedList<>(); - this.te = te; - } - - public void findAttachments(BeltTileEntity belt) { - for (AllBeltAttachments ba : AllBeltAttachments.values()) { - World world = belt.getWorld(); - BlockPos beltPos = belt.getPos(); - BlockState beltState = belt.getBlockState(); - List attachmentPositions = - ba.attachment.getPotentialAttachmentPositions(world, beltPos, beltState); - - for (BlockPos potentialPos : attachmentPositions) { - if (!world.isBlockPresent(potentialPos)) - continue; - BlockState state = world.getBlockState(potentialPos); - if (!(state.getBlock() instanceof IBeltAttachment)) - continue; - IBeltAttachment attachment = (IBeltAttachment) state.getBlock(); - if (!attachment.getBeltPositionForAttachment(world, potentialPos, state).equals(beltPos)) - continue; - if (!attachment.isAttachedCorrectly(world, potentialPos, beltPos, state, beltState)) - continue; - - addAttachment(world, potentialPos); - } - } - } - - public BeltAttachmentState addAttachment(IWorld world, BlockPos pos) { - BlockState state = world.getBlockState(pos); - removeAttachment(pos); - if (!(state.getBlock() instanceof IBeltAttachment)) { - Create.logger.warn("Missing belt attachment for Belt at " + pos.toString()); - return null; - } - BeltAttachmentState newAttachmentState = new BeltAttachmentState((IBeltAttachment) state.getBlock(), pos); - attachments.add(newAttachmentState); - te.markDirty(); - return newAttachmentState; - } - - public void removeAttachment(BlockPos pos) { - BeltAttachmentState toRemove = null; - for (BeltAttachmentState atState : attachments) - if (atState.attachmentPos.equals(pos)) - toRemove = atState; - if (toRemove != null) - attachments.remove(toRemove); - te.markDirty(); - } - - public void forEachAttachment(Consumer consumer) { - attachments.forEach(consumer::accept); - } - - public void readAndSearch(CompoundNBT nbt, BeltTileEntity belt) { - attachments.clear(); - if (!nbt.contains("HasAttachments")) { - findAttachments(belt); - return; - } - if (nbt.contains("AttachmentData")) { - ListNBT list = (ListNBT) nbt.get("AttachmentData"); - for (INBT data : list) { - CompoundNBT stateNBT = (CompoundNBT) data; - BlockPos attachmentPos = NBTUtil.readBlockPos(stateNBT.getCompound("Position")); - BeltAttachmentState atState = addAttachment(belt.getWorld(), attachmentPos); - if (atState == null) - continue; - atState.processingDuration = stateNBT.getInt("Duration"); - } - } - } - - public void write(CompoundNBT nbt) { - if (!attachments.isEmpty()) { - nbt.putBoolean("HasAttachments", true); - ListNBT list = new ListNBT(); - forEachAttachment(atState -> { - CompoundNBT stateNBT = new CompoundNBT(); - stateNBT.put("Position", NBTUtil.writeBlockPos(atState.attachmentPos)); - stateNBT.putInt("Duration", atState.processingDuration); - list.add(stateNBT); - }); - nbt.put("AttachmentData", list); - } - - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index a85c22e84..a34721af3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -210,9 +210,6 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { - te.attachmentTracker.findAttachments(te); - }); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index dca55c139..e041321be 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -109,7 +109,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { int verticality = slope == Slope.DOWNWARD ? -1 : slope == Slope.UPWARD ? 1 : 0; boolean slopeAlongX = te.getBeltFacing().getAxis() == Axis.X; - for (TransportedItemStack transported : te.getInventory().getItems()) { + for (TransportedItemStack transported : te.getInventory().getTransportedItems()) { ms.push(); MatrixStacker.of(ms).nudge(transported.angle); float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 6d2bb7392..0c2690f91 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -15,13 +15,15 @@ import java.util.Map; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.Tracker; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; +import com.simibubi.create.content.contraptions.relays.belt.transport.ItemHandlerBeltSegment; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.ColorHelper; import net.minecraft.block.BlockState; @@ -46,7 +48,6 @@ import net.minecraftforge.items.IItemHandler; public class BeltTileEntity extends KineticTileEntity { public Map passengers; - public AllBeltAttachments.Tracker attachmentTracker; public int color; public int beltLength; public int index; @@ -61,11 +62,18 @@ public class BeltTileEntity extends KineticTileEntity { public BeltTileEntity(TileEntityType type) { super(type); controller = BlockPos.ZERO; - attachmentTracker = new Tracker(this); itemHandler = LazyOptional.empty(); color = -1; } + @Override + public void addBehaviours(List behaviours) { + super.addBehaviours(behaviours); + behaviours.add(new DirectBeltInputBehaviour(this) + .onlyInsertWhen(d -> getSpeed() != 0 && getMovementFacing() != d.getOpposite()) + .setInsertionHandler(this::tryInsertingFromSide)); + } + @Override public void tick() { super.tick(); @@ -75,12 +83,6 @@ public class BeltTileEntity extends KineticTileEntity { BeltBlock.initBelt(world, pos); if (!AllBlocks.BELT.has(world.getBlockState(pos))) return; - - // Initialize Belt Attachments - if (world != null && trackerUpdateTag != null) { - attachmentTracker.readAndSearch(trackerUpdateTag, this); - trackerUpdateTag = null; - } if (getSpeed() == 0) return; @@ -136,7 +138,7 @@ public class BeltTileEntity extends KineticTileEntity { BeltInventory inventory = ((BeltTileEntity) te).getInventory(); if (inventory == null) return; - IItemHandler handler = inventory.createHandlerForSegment(index); + IItemHandler handler = new ItemHandlerBeltSegment(inventory, index); itemHandler = LazyOptional.of(() -> handler); } @@ -163,8 +165,6 @@ public class BeltTileEntity extends KineticTileEntity { @Override public CompoundNBT write(CompoundNBT compound) { - attachmentTracker.write(compound); - if (controller != null) compound.put("Controller", NBTUtil.writeBlockPos(controller)); compound.putBoolean("IsController", isController()); @@ -246,7 +246,8 @@ public class BeltTileEntity extends KineticTileEntity { } public float getDirectionAwareBeltMovementSpeed() { - int offset = getBeltFacing().getAxisDirection().getOffset(); + int offset = getBeltFacing().getAxisDirection() + .getOffset(); if (getBeltFacing().getAxis() == Axis.X) offset *= -1; return getBeltMovementSpeed() * offset; @@ -270,8 +271,8 @@ public class BeltTileEntity extends KineticTileEntity { if (part == MIDDLE) return false; - boolean movingPositively = - (getSpeed() > 0 == (direction.getAxisDirection().getOffset() == 1)) ^ direction.getAxis() == Axis.X; + boolean movingPositively = (getSpeed() > 0 == (direction.getAxisDirection() + .getOffset() == 1)) ^ direction.getAxis() == Axis.X; return part == Part.START ^ movingPositively; } @@ -311,8 +312,8 @@ public class BeltTileEntity extends KineticTileEntity { public Direction getMovementFacing() { Axis axis = getBeltFacing().getAxis(); - return Direction - .getFacingFromAxisDirection(axis, getBeltMovementSpeed() < 0 ^ axis == Axis.X ? NEGATIVE : POSITIVE); + return Direction.getFacingFromAxisDirection(axis, + getBeltMovementSpeed() < 0 ^ axis == Axis.X ? NEGATIVE : POSITIVE); } protected Direction getBeltFacing() { @@ -332,29 +333,39 @@ public class BeltTileEntity extends KineticTileEntity { return inventory; } + /** + * always target a DirectBeltInsertionBehaviour + */ + @Deprecated public boolean tryInsertingFromSide(Direction side, ItemStack stack, boolean simulate) { - return tryInsertingFromSide(side, new TransportedItemStack(stack), simulate); + return tryInsertingFromSide(new TransportedItemStack(stack), side, simulate).isEmpty(); } - public boolean tryInsertingFromSide(Direction side, TransportedItemStack transportedStack, boolean simulate) { + private ItemStack tryInsertingFromSide(TransportedItemStack transportedStack, Direction side, boolean simulate) { BeltTileEntity nextBeltController = getControllerTE(); + ItemStack inserted = transportedStack.stack; + ItemStack empty = ItemStack.EMPTY; + if (nextBeltController == null) - return false; + return inserted; BeltInventory nextInventory = nextBeltController.getInventory(); if (getSpeed() == 0) - return false; - if (!nextInventory.canInsertFrom(index, side)) - return false; + return inserted; + if (!nextInventory.canInsertAtFromSide(index, side)) + return inserted; if (simulate) - return true; + return empty; + transportedStack = transportedStack.copy(); transportedStack.beltPosition = index + .5f - Math.signum(getDirectionAwareBeltMovementSpeed()) / 16f; Direction movementFacing = getMovementFacing(); - if (!side.getAxis().isVertical()) { + if (!side.getAxis() + .isVertical()) { if (movementFacing != side) { - transportedStack.sideOffset = side.getAxisDirection().getOffset() * .35f; + transportedStack.sideOffset = side.getAxisDirection() + .getOffset() * .35f; if (side.getAxis() == Axis.X) transportedStack.sideOffset *= -1; } else @@ -368,8 +379,7 @@ public class BeltTileEntity extends KineticTileEntity { nextInventory.addItem(transportedStack); nextBeltController.markDirty(); nextBeltController.sendData(); - - return true; + return empty; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index d362f6672..915586ed7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; +import static com.simibubi.create.content.contraptions.relays.belt.transport.BeltTunnelInteractionHandler.flapTunnel; + import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -8,32 +10,26 @@ import java.util.List; import java.util.function.Function; import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.BeltAttachmentState; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import net.minecraft.block.Block; -import net.minecraft.block.BlockState; import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; public class BeltInventory { @@ -52,9 +48,9 @@ public class BeltInventory { public void tick() { // Reverse item collection if belt just reversed - if (beltMovementPositive != movingPositive()) { - beltMovementPositive = movingPositive(); - Collections.reverse(getItems()); + if (beltMovementPositive != belt.getDirectionAwareBeltMovementSpeed() > 0) { + beltMovementPositive = !beltMovementPositive; + Collections.reverse(items); belt.markDirty(); belt.sendData(); } @@ -69,23 +65,31 @@ public class BeltInventory { // Assuming the first entry is furthest on the belt TransportedItemStack stackInFront = null; - TransportedItemStack current = null; - Iterator iterator = getItems().iterator(); + TransportedItemStack currentItem = null; + Iterator iterator = items.iterator(); + // Useful stuff float beltSpeed = belt.getDirectionAwareBeltMovementSpeed(); Direction movementFacing = belt.getMovementFacing(); + boolean horizontal = belt.getBlockState() + .get(BeltBlock.SLOPE) == Slope.HORIZONTAL; float spacing = 1; - boolean onClient = belt.getWorld().isRemote; + World world = belt.getWorld(); + boolean onClient = world.isRemote; - Items: while (iterator.hasNext()) { - stackInFront = current; - current = iterator.next(); - current.prevBeltPosition = current.beltPosition; - current.prevSideOffset = current.sideOffset; + // resolve ending only when items will reach it this tick + Ending ending = Ending.UNRESOLVED; - if (current.stack.isEmpty()) { + // Loop over items + while (iterator.hasNext()) { + stackInFront = currentItem; + currentItem = iterator.next(); + currentItem.prevBeltPosition = currentItem.beltPosition; + currentItem.prevSideOffset = currentItem.sideOffset; + + if (currentItem.stack.isEmpty()) { iterator.remove(); - current = null; + currentItem = null; continue; } @@ -93,12 +97,12 @@ public class BeltInventory { if (onClient) movement *= ServerSpeedProvider.get(); - // Don't move if locked - if (onClient && current.locked) + // Don't move if held by processing (client) + if (onClient && currentItem.locked) continue; // Don't move if other items are waiting in front - float currentPos = current.beltPosition; + float currentPos = currentItem.beltPosition; if (stackInFront != null) { float diff = stackInFront.beltPosition - currentPos; if (Math.abs(diff) <= spacing) @@ -107,236 +111,182 @@ public class BeltInventory { beltMovementPositive ? Math.min(movement, diff - spacing) : Math.max(movement, diff + spacing); } - // Determine current segment - int segmentBefore = (int) currentPos; - float min = segmentBefore + .5f - (SEGMENT_WINDOW / 2); - float max = segmentBefore + .5f + (SEGMENT_WINDOW / 2); - if (currentPos < min || currentPos > max) - segmentBefore = -1; - // Don't move beyond the edge float diffToEnd = beltMovementPositive ? belt.beltLength - currentPos : -currentPos; + if (Math.abs(diffToEnd) < Math.abs(movement) + 1) { + if (ending == Ending.UNRESOLVED) + ending = resolveEnding(); + diffToEnd += beltMovementPositive ? -ending.margin : ending.margin; + } float limitedMovement = beltMovementPositive ? Math.min(movement, diffToEnd) : Math.max(movement, diffToEnd); - float nextOffset = current.beltPosition + limitedMovement; + float nextOffset = currentItem.beltPosition + limitedMovement; - if (!onClient && segmentBefore != -1) { - // Don't move if belt attachments want to continue processing - if (current.locked) { - BeltTileEntity beltSegment = BeltHelper.getBeltAtSegment(belt, segmentBefore); - if (beltSegment != null) { - - // wait in case belt isnt initialized yet - if (current.locked && beltSegment.trackerUpdateTag != null) - continue; - - current.locked = false; - List attachments = beltSegment.attachmentTracker.attachments; - for (BeltAttachmentState attachmentState : attachments) { - if (attachmentState.attachment.processItem(beltSegment, current, attachmentState)) - current.locked = true; - } - if (!current.locked || current.stack.isEmpty()) { - if (!attachments.isEmpty()) - attachments.add(attachments.remove(0)); - belt.sendData(); - } - continue; - } - } - - // See if any new belt processing catches the item - if (current.beltPosition > .5f || beltMovementPositive) { - int firstUpcomingSegment = (int) (current.beltPosition + (beltMovementPositive ? .5f : -.5f)); - for (int segment = firstUpcomingSegment; beltMovementPositive ? segment + .5f <= nextOffset - : segment + .5f >= nextOffset; segment += beltMovementPositive ? 1 : -1) { - BeltTileEntity beltSegment = BeltHelper.getBeltAtSegment(belt, segment); - if (beltSegment == null) - break; - for (BeltAttachmentState attachmentState : beltSegment.attachmentTracker.attachments) { - ItemStack stackBefore = current.stack.copy(); - if (attachmentState.attachment.startProcessingItem(beltSegment, current, attachmentState)) { - current.beltPosition = segment + .5f + (beltMovementPositive ? 1 / 64f : -1 / 64f); - current.locked = true; - belt.sendData(); - continue Items; - } - if (!stackBefore.equals(current.stack, true)) - belt.sendData(); - } - } + // Belt item processing + if (!onClient && horizontal) { + ItemStack item = currentItem.stack; + if (handleBeltProcessingAndCheckIfRemoved(currentItem, nextOffset)) { + iterator.remove(); + belt.sendData(); + continue; } + if (item != currentItem.stack) + belt.sendData(); + if (currentItem.locked) + continue; } - // Belt tunnels - { - int seg1 = (int) current.beltPosition; - int seg2 = (int) nextOffset; - if (!beltMovementPositive && nextOffset == 0) - seg2 = -1; - if (seg1 != seg2) { - if (stuckAtTunnel(seg2, current.stack, movementFacing)) { - continue; - } - if (!onClient) { - flapTunnel(seg1, movementFacing, false); - flapTunnel(seg2, movementFacing.getOpposite(), true); - } - } - } + // Belt Tunnels + BeltTunnelInteractionHandler.flapTunnelsAndCheckIfStuck(this, currentItem, nextOffset); // Apply Movement - current.beltPosition += limitedMovement; - current.sideOffset += (current.getTargetSideOffset() - current.sideOffset) * Math.abs(limitedMovement) * 2f; - currentPos = current.beltPosition; + currentItem.beltPosition += limitedMovement; + currentItem.sideOffset += + (currentItem.getTargetSideOffset() - currentItem.sideOffset) * Math.abs(limitedMovement) * 2f; + currentPos = currentItem.beltPosition; - // Determine segment after movement - int segmentAfter = (int) currentPos; - min = segmentAfter + .5f - (SEGMENT_WINDOW / 2); - max = segmentAfter + .5f + (SEGMENT_WINDOW / 2); - if (currentPos < min || currentPos > max) - segmentAfter = -1; - - // Item changed segments - World world = belt.getWorld(); - if (segmentBefore != segmentAfter) { - for (int segment : new int[] { segmentBefore, segmentAfter }) { - if (segment == -1) - continue; - if (!world.isRemote) - world - .updateComparatorOutputLevel(BeltHelper.getPositionForOffset(belt, segment), - belt.getBlockState().getBlock()); - } - } + // Movement successful + if (limitedMovement == movement || onClient) + continue; // End reached - if (limitedMovement != movement) { - if (world.isRemote) - continue; - - int lastOffset = beltMovementPositive ? belt.beltLength - 1 : 0; - BlockPos nextPosition = - BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); - BlockState state = world.getBlockState(nextPosition); - - // next block is a basin or a saw - if (AllBlocks.BASIN.has(state) || AllBlocks.MECHANICAL_SAW.has(state) - || AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(state)) { - TileEntity te = world.getTileEntity(nextPosition); - if (te != null) { - LazyOptional optional = - te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.UP); - if (optional.isPresent()) { - IItemHandler itemHandler = optional.orElse(null); - ItemStack remainder = - ItemHandlerHelper.insertItemStacked(itemHandler, current.stack.copy(), false); - if (remainder.equals(current.stack, false)) - continue; - - current.stack = remainder; - if (remainder.isEmpty()) { - iterator.remove(); - current = null; - flapTunnel(lastOffset, movementFacing, false); - } - - belt.sendData(); - } - } - continue; - } - - // next block is not a belt - if (!AllBlocks.BELT.has(state) || state.get(BeltBlock.SLOPE) == Slope.VERTICAL) { - if (!Block.hasSolidSide(state, world, nextPosition, movementFacing.getOpposite())) { - eject(current); - iterator.remove(); - current = null; - flapTunnel(lastOffset, movementFacing, false); - belt.sendData(); - } - continue; - } - - // Next block is a belt - TileEntity te = world.getTileEntity(nextPosition); - if (te == null || !(te instanceof BeltTileEntity)) - continue; - BeltTileEntity nextBelt = (BeltTileEntity) te; - Direction nextMovementFacing = nextBelt.getMovementFacing(); - - // next belt goes the opposite way - if (nextMovementFacing == movementFacing.getOpposite()) - continue; - - // Inserting into other belt - if (nextBelt.tryInsertingFromSide(movementFacing, current, false)) { - iterator.remove(); - current = null; - flapTunnel(lastOffset, movementFacing, false); - belt.sendData(); - } + int lastOffset = beltMovementPositive ? belt.beltLength - 1 : 0; + BlockPos nextPosition = BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); + if (ending == Ending.FUNNEL) { + // TODO + continue; } - } + if (ending == Ending.INSERT) { + DirectBeltInputBehaviour inputBehaviour = + TileEntityBehaviour.get(world, nextPosition, DirectBeltInputBehaviour.TYPE); + if (inputBehaviour == null) + continue; + if (!inputBehaviour.canInsertFromSide(movementFacing)) + continue; + + ItemStack remainder = inputBehaviour.handleInsertion(currentItem, movementFacing, false); + if (remainder.equals(currentItem.stack, false)) + continue; + currentItem.stack = remainder; + if (remainder.isEmpty()) + iterator.remove(); + + flapTunnel(this, lastOffset, movementFacing, false); + belt.sendData(); + continue; + } + + if (ending == Ending.BLOCKED) + continue; + + if (ending == Ending.EJECT) { + eject(currentItem); + iterator.remove(); + flapTunnel(this, lastOffset, movementFacing, false); + belt.sendData(); + continue; + } + } } - private boolean stuckAtTunnel(int offset, ItemStack stack, Direction movementDirection) { - BlockPos pos = BeltHelper.getPositionForOffset(belt, offset).up(); - if (!AllBlocks.BELT_TUNNEL.has(belt.getWorld().getBlockState(pos))) - return false; - TileEntity te = belt.getWorld().getTileEntity(pos); - if (te == null || !(te instanceof BeltTunnelTileEntity)) - return false; + protected boolean handleBeltProcessingAndCheckIfRemoved(TransportedItemStack currentItem, float nextOffset) { + int currentSegment = (int) currentItem.beltPosition; - Direction flapFacing = movementDirection.getOpposite(); + // Continue processing if held + if (currentItem.locked) { + BeltProcessingBehaviour processingBehaviour = getBeltProcessingAtSegment(currentSegment); - BeltTunnelTileEntity tunnel = (BeltTunnelTileEntity) te; - if (!tunnel.flaps.containsKey(flapFacing)) - return false; - if (!tunnel.syncedFlaps.containsKey(flapFacing)) - return false; - ItemStack heldItem = tunnel.syncedFlaps.get(flapFacing); - if (heldItem == null) { - tunnel.syncedFlaps.put(flapFacing, ItemStack.EMPTY); + if (processingBehaviour == null) { + currentItem.locked = false; + belt.sendData(); + return false; + } + + ProcessingResult result = processingBehaviour.handleHeldItem(currentItem, this); + if (result == ProcessingResult.REMOVE) + return true; + if (result == ProcessingResult.HOLD) + return false; + + currentItem.locked = false; belt.sendData(); return false; } - if (heldItem == ItemStack.EMPTY) { - tunnel.syncedFlaps.put(flapFacing, stack); - return true; + + // See if any new belt processing catches the item + if (currentItem.beltPosition > .5f || beltMovementPositive) { + int firstUpcomingSegment = (int) (currentItem.beltPosition + (beltMovementPositive ? .5f : -.5f)); + int step = beltMovementPositive ? 1 : -1; + + for (int segment = firstUpcomingSegment; beltMovementPositive ? segment + .5f <= nextOffset + : segment + .5f >= nextOffset; segment += step) { + + BeltProcessingBehaviour processingBehaviour = getBeltProcessingAtSegment(segment); + if (processingBehaviour == null) + continue; + + ProcessingResult result = processingBehaviour.handleReceivedItem(currentItem, this); + if (result == ProcessingResult.REMOVE) + return true; + + if (result == ProcessingResult.HOLD) { + currentItem.beltPosition = segment + .5f + (beltMovementPositive ? 1 / 64f : -1 / 64f); + currentItem.locked = true; + belt.sendData(); + return false; + } + } } - List group = BeltTunnelBlock.getSynchronizedGroup(belt.getWorld(), pos, flapFacing); - for (BeltTunnelTileEntity otherTunnel : group) - if (otherTunnel.syncedFlaps.get(flapFacing) == ItemStack.EMPTY) - return true; - for (BeltTunnelTileEntity otherTunnel : group) - otherTunnel.syncedFlaps.put(flapFacing, null); - - return true; + return false; } - private void flapTunnel(int offset, Direction side, boolean inward) { - if (belt.getBlockState().get(BeltBlock.SLOPE) != Slope.HORIZONTAL) - return; - BlockPos pos = BeltHelper.getPositionForOffset(belt, offset).up(); - if (!AllBlocks.BELT_TUNNEL.has(belt.getWorld().getBlockState(pos))) - return; - TileEntity te = belt.getWorld().getTileEntity(pos); - if (te == null || !(te instanceof BeltTunnelTileEntity)) - return; - ((BeltTunnelTileEntity) te).flap(side, inward ^ side.getAxis() == Axis.Z); + protected BeltProcessingBehaviour getBeltProcessingAtSegment(int segment) { + return TileEntityBehaviour.get(belt.getWorld(), BeltHelper.getPositionForOffset(belt, segment) + .up(2), BeltProcessingBehaviour.TYPE); } + private enum Ending { + UNRESOLVED(0), EJECT(0), INSERT(.25f), FUNNEL(.35f), BLOCKED(.45f); + + private float margin; + + Ending(float f) { + this.margin = f; + } + } + + private Ending resolveEnding() { + int lastOffset = beltMovementPositive ? belt.beltLength - 1 : 0; + World world = belt.getWorld(); + BlockPos lastPosition = BeltHelper.getPositionForOffset(belt, lastOffset); + BlockPos nextPosition = BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); + + if (AllBlocks.BELT_FUNNEL.has(world.getBlockState(lastPosition.up()))) + return Ending.FUNNEL; + + DirectBeltInputBehaviour inputBehaviour = + TileEntityBehaviour.get(world, nextPosition, DirectBeltInputBehaviour.TYPE); + if (inputBehaviour != null) + return Ending.INSERT; + + if (Block.hasSolidSide(world.getBlockState(nextPosition), world, nextPosition, belt.getMovementFacing() + .getOpposite())) + return Ending.BLOCKED; + + return Ending.EJECT; + } + + // + public boolean canInsertAt(int segment) { - return canInsertFrom(segment, Direction.UP); + return canInsertAtFromSide(segment, Direction.UP); } - public boolean canInsertFrom(int segment, Direction side) { + public boolean canInsertAtFromSide(int segment, Direction side) { float segmentPos = segment; if (belt.getMovementFacing() == side.getOpposite()) return false; @@ -345,7 +295,7 @@ public class BeltInventory { else if (!beltMovementPositive) segmentPos += 1f; - for (TransportedItemStack stack : getItems()) + for (TransportedItemStack stack : items) if (isBlocking(segment, side, segmentPos, stack)) return false; for (TransportedItemStack stack : toInsert) @@ -358,7 +308,7 @@ public class BeltInventory { private boolean isBlocking(int segment, Direction side, float segmentPos, TransportedItemStack stack) { float currentPos = stack.beltPosition; if (stack.insertedAt == segment && stack.insertedFrom == side - && (beltMovementPositive ? currentPos <= segmentPos + 1 : currentPos >= segmentPos - 1)) + && (beltMovementPositive ? currentPos <= segmentPos + 1 : currentPos >= segmentPos - 1)) return true; return false; } @@ -368,23 +318,23 @@ public class BeltInventory { } private void insert(TransportedItemStack newStack) { - if (getItems().isEmpty()) - getItems().add(newStack); + if (items.isEmpty()) + items.add(newStack); else { int index = 0; - for (TransportedItemStack stack : getItems()) { + for (TransportedItemStack stack : items) { if (stack.compareTo(newStack) > 0 == beltMovementPositive) break; index++; } - getItems().add(index, newStack); + items.add(index, newStack); } } public TransportedItemStack getStackAtOffset(int offset) { float min = offset + .5f - (SEGMENT_WINDOW / 2); float max = offset + .5f + (SEGMENT_WINDOW / 2); - for (TransportedItemStack stack : getItems()) { + for (TransportedItemStack stack : items) { if (stack.beltPosition > max) continue; if (stack.beltPosition > min) @@ -394,17 +344,16 @@ public class BeltInventory { } public void read(CompoundNBT nbt) { - getItems().clear(); - nbt - .getList("Items", NBT.TAG_COMPOUND) - .forEach(inbt -> getItems().add(TransportedItemStack.read((CompoundNBT) inbt))); + items.clear(); + nbt.getList("Items", NBT.TAG_COMPOUND) + .forEach(inbt -> items.add(TransportedItemStack.read((CompoundNBT) inbt))); beltMovementPositive = nbt.getBoolean("PositiveOrder"); } public CompoundNBT write() { CompoundNBT nbt = new CompoundNBT(); ListNBT itemsNBT = new ListNBT(); - getItems().forEach(stack -> itemsNBT.add(stack.serializeNBT())); + items.forEach(stack -> itemsNBT.add(stack.serializeNBT())); nbt.put("Items", itemsNBT); nbt.putBoolean("PositiveOrder", beltMovementPositive); return nbt; @@ -414,33 +363,27 @@ public class BeltInventory { ItemStack ejected = stack.stack; Vec3d outPos = BeltHelper.getVectorForOffset(belt, stack.beltPosition); float movementSpeed = Math.max(Math.abs(belt.getBeltMovementSpeed()), 1 / 8f); - Vec3d outMotion = new Vec3d(belt.getBeltChainDirection()).scale(movementSpeed).add(0, 1 / 8f, 0); + Vec3d outMotion = new Vec3d(belt.getBeltChainDirection()).scale(movementSpeed) + .add(0, 1 / 8f, 0); outPos.add(outMotion.normalize()); ItemEntity entity = new ItemEntity(belt.getWorld(), outPos.x, outPos.y + 6 / 16f, outPos.z, ejected); entity.setMotion(outMotion); entity.setDefaultPickupDelay(); entity.velocityChanged = true; - belt.getWorld().addEntity(entity); + belt.getWorld() + .addEntity(entity); } - + public void ejectAll() { - getItems().forEach(this::eject); - getItems().clear(); - } - - private boolean movingPositive() { - return belt.getDirectionAwareBeltMovementSpeed() > 0; - } - - public IItemHandler createHandlerForSegment(int segment) { - return new ItemHandlerBeltSegment(this, segment); + items.forEach(this::eject); + items.clear(); } public void forEachWithin(float position, float distance, - Function> callback) { + Function> callback) { List toBeAdded = new ArrayList<>(); boolean dirty = false; - for (Iterator iterator = getItems().iterator(); iterator.hasNext();) { + for (Iterator iterator = items.iterator(); iterator.hasNext();) { TransportedItemStack transportedItemStack = iterator.next(); if (Math.abs(position - transportedItemStack.beltPosition) < distance) { List apply = callback.apply(transportedItemStack); @@ -458,7 +401,7 @@ public class BeltInventory { } } - public List getItems() { + public List getTransportedItems() { return items; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java index e93ab65b9..e41aa44ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java @@ -8,7 +8,6 @@ import java.util.List; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionEntity; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.BeltAttachmentState; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; @@ -99,16 +98,6 @@ public class BeltMovementHandler { ((LivingEntity) entityIn).addPotionEffect(new EffectInstance(Effects.SLOWNESS, 10, 1, false, false)); } - BeltTileEntity belt = (BeltTileEntity) te; - - // Attachment pauses movement - for (BeltAttachmentState state : belt.attachmentTracker.attachments) { - if (state.attachment.processEntity(belt, entityIn, state)) { - info.ticksSinceLastCollision--; - return; - } - } - final Direction beltFacing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); final Slope slope = blockState.get(BeltBlock.SLOPE); final Axis axis = beltFacing.getAxis(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java new file mode 100644 index 000000000..7f7d69a75 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -0,0 +1,100 @@ +package com.simibubi.create.content.contraptions.relays.belt.transport; + +import java.util.List; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; +import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; +import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; + +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.math.BlockPos; + +public class BeltTunnelInteractionHandler { + + public static boolean flapTunnelsAndCheckIfStuck(BeltInventory beltInventory, TransportedItemStack current, + float nextOffset) { + + int currentSegment = (int) current.beltPosition; + int upcomingSegment = (int) nextOffset; + + Direction movementFacing = beltInventory.belt.getMovementFacing(); + if (!beltInventory.beltMovementPositive && nextOffset == 0) + upcomingSegment = -1; + if (currentSegment != upcomingSegment) { + if (stuckAtTunnel(beltInventory, upcomingSegment, current.stack, movementFacing)) + return true; + if (!beltInventory.belt.getWorld().isRemote) { + flapTunnel(beltInventory, currentSegment, movementFacing, false); + flapTunnel(beltInventory, upcomingSegment, movementFacing.getOpposite(), true); + } + } + + return false; + } + + public static boolean stuckAtTunnel(BeltInventory beltInventory, int offset, ItemStack stack, + Direction movementDirection) { + BeltTileEntity belt = beltInventory.belt; + BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) + .up(); + if (!AllBlocks.BELT_TUNNEL.has(belt.getWorld() + .getBlockState(pos))) + return false; + TileEntity te = belt.getWorld() + .getTileEntity(pos); + if (te == null || !(te instanceof BeltTunnelTileEntity)) + return false; + + Direction flapFacing = movementDirection.getOpposite(); + + BeltTunnelTileEntity tunnel = (BeltTunnelTileEntity) te; + if (!tunnel.flaps.containsKey(flapFacing)) + return false; + if (!tunnel.syncedFlaps.containsKey(flapFacing)) + return false; + ItemStack heldItem = tunnel.syncedFlaps.get(flapFacing); + if (heldItem == null) { + tunnel.syncedFlaps.put(flapFacing, ItemStack.EMPTY); + belt.sendData(); + return false; + } + if (heldItem == ItemStack.EMPTY) { + tunnel.syncedFlaps.put(flapFacing, stack); + return true; + } + + List group = BeltTunnelBlock.getSynchronizedGroup(belt.getWorld(), pos, flapFacing); + for (BeltTunnelTileEntity otherTunnel : group) + if (otherTunnel.syncedFlaps.get(flapFacing) == ItemStack.EMPTY) + return true; + for (BeltTunnelTileEntity otherTunnel : group) + otherTunnel.syncedFlaps.put(flapFacing, null); + + return true; + } + + public static void flapTunnel(BeltInventory beltInventory, int offset, Direction side, boolean inward) { + BeltTileEntity belt = beltInventory.belt; + if (belt.getBlockState() + .get(BeltBlock.SLOPE) != Slope.HORIZONTAL) + return; + BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) + .up(); + if (!AllBlocks.BELT_TUNNEL.has(belt.getWorld() + .getBlockState(pos))) + return; + TileEntity te = belt.getWorld() + .getTileEntity(pos); + if (te == null || !(te instanceof BeltTunnelTileEntity)) + return; + ((BeltTunnelTileEntity) te).flap(side, inward ^ side.getAxis() == Axis.Z); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/BeltAttachableLogisticalBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/BeltAttachableLogisticalBlock.java index 314cf7c67..7f5da2547 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/BeltAttachableLogisticalBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/BeltAttachableLogisticalBlock.java @@ -1,93 +1,25 @@ package com.simibubi.create.content.logistics.block.belts; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.BeltAttachmentState; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.IBeltAttachment; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.inventory.SingleTargetAutoExtractingBehaviour; import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; import net.minecraft.world.World; -public abstract class BeltAttachableLogisticalBlock extends AttachedLogisticalBlock implements IBeltAttachment { +public abstract class BeltAttachableLogisticalBlock extends AttachedLogisticalBlock { public BeltAttachableLogisticalBlock(Properties properties) { super(properties); } - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - onAttachmentPlaced(worldIn, pos, state); - } - @Override public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - onAttachmentRemoved(worldIn, pos, state); if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); worldIn.removeTileEntity(pos); } } - @Override - public BlockPos getBeltPositionForAttachment(IWorld world, BlockPos pos, BlockState state) { - return pos.offset(getBlockFacing(state)); - } - - @Override - public List getPotentialAttachmentPositions(IWorld world, BlockPos pos, BlockState beltState) { - return Arrays.asList(Direction.values()).stream().filter(d -> d != Direction.UP).map(pos::offset) - .collect(Collectors.toList()); - } - - public boolean startProcessingItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - BlockPos pos = state.attachmentPos; - World world = te.getWorld(); - ItemStack stack = transported.stack; - - FilteringBehaviour filtering = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); - SingleTargetAutoExtractingBehaviour extracting = TileEntityBehaviour.get(world, pos, - SingleTargetAutoExtractingBehaviour.TYPE); - - if (extracting == null) - return false; - if (filtering != null && (!filtering.test(stack) || stack.getCount() < filtering.getAmount())) - return false; - - return true; - } - - public boolean processItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - BlockPos pos = state.attachmentPos; - World world = te.getWorld(); - ItemStack stack = transported.stack; - - SingleTargetAutoExtractingBehaviour extracting = TileEntityBehaviour.get(world, pos, - SingleTargetAutoExtractingBehaviour.TYPE); - - if (extracting == null) - return false; - if (extracting.getShouldPause().get()) - return false; - - FilteringBehaviour filtering = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); - if (filtering != null && (!filtering.test(stack) || stack.getCount() < filtering.getAmount())) - return false; - if (!extracting.getShouldExtract().get()) - return true; - - return !extracting.extractFromInventory(); - } - } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java index bbf38ec79..3ca73f773 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java @@ -1,33 +1,21 @@ package com.simibubi.create.content.logistics.block.belts.observer; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.BeltAttachmentState; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.IBeltAttachment; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.HorizontalBlock; import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; import net.minecraft.state.BooleanProperty; import net.minecraft.state.EnumProperty; @@ -37,18 +25,13 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.IStringSerializable; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; public class BeltObserverBlock extends HorizontalBlock - implements ITE, IBeltAttachment, IWrenchable { + implements ITE, IWrenchable { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty BELT = BooleanProperty.create("belt"); @@ -138,23 +121,6 @@ public class BeltObserverBlock extends HorizontalBlock return state; } - @Override - public List getPotentialAttachmentPositions(IWorld world, BlockPos pos, BlockState beltState) { - Direction side = beltState.get(BeltBlock.HORIZONTAL_FACING).rotateY(); - return Arrays.asList(pos.offset(side), pos.offset(side.getOpposite())); - } - - @Override - public BlockPos getBeltPositionForAttachment(IWorld world, BlockPos pos, BlockState state) { - return pos.offset(state.get(HORIZONTAL_FACING)); - } - - @Override - public boolean isAttachedCorrectly(IWorld world, BlockPos attachmentPos, BlockPos beltPos, - BlockState attachmentState, BlockState beltState) { - return attachmentState.get(BELT); - } - @Override public boolean canProvidePower(BlockState state) { return state.get(POWERED); @@ -172,118 +138,12 @@ public class BeltObserverBlock extends HorizontalBlock @Override public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (newState.getBlock() != this || newState.with(POWERED, false) != state.with(POWERED, false)) - onAttachmentRemoved(worldIn, pos, state); if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); worldIn.removeTileEntity(pos); } } - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - if (oldState.getBlock() != this || oldState.with(POWERED, false) != state.with(POWERED, false)) - onAttachmentPlaced(worldIn, pos, state); - } - - @Override - public boolean startProcessingItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - World world = te.getWorld(); - BlockState blockState = world.getBlockState(state.attachmentPos); - if (blockState.get(MODE) == Mode.DETECT) - return false; - - FilteringBehaviour behaviour = - TileEntityBehaviour.get(te.getWorld(), state.attachmentPos, FilteringBehaviour.TYPE); - if (behaviour != null && !behaviour.test(transported.stack)) - return false; - - world.setBlockState(state.attachmentPos, blockState.with(POWERED, true)); - world.notifyNeighborsOfStateChange(state.attachmentPos, this); - withTileEntityDo(world, state.attachmentPos, BeltObserverTileEntity::resetTurnOffCooldown); - - Mode mode = blockState.get(MODE); - if (mode == Mode.EJECT || mode == Mode.SPLIT) { - ItemStack copy = transported.stack.copy(); - ItemStack toEject = mode == Mode.EJECT ? transported.stack : copy.split(transported.stack.getCount() / 2); - - if (!toEject.isEmpty()) { - if (!eject(world, toEject, state.attachmentPos, blockState.get(HORIZONTAL_FACING))) - return true; - transported.stack = mode == Mode.EJECT ? ItemStack.EMPTY : copy; - } - } - - return false; - } - - @Override - public boolean processItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - World world = te.getWorld(); - BlockState blockState = world.getBlockState(state.attachmentPos); - withTileEntityDo(world, state.attachmentPos, BeltObserverTileEntity::resetTurnOffCooldown); - - Mode mode = blockState.get(MODE); - if (mode == Mode.EJECT || mode == Mode.SPLIT) { - ItemStack copy = transported.stack.copy(); - ItemStack toEject = mode == Mode.EJECT ? transported.stack : copy.split(transported.stack.getCount() / 2); - - if (!eject(world, toEject, state.attachmentPos, blockState.get(HORIZONTAL_FACING))) - return true; - transported.stack = mode == Mode.EJECT ? ItemStack.EMPTY : copy; - } - - return false; - } - - private boolean eject(World world, ItemStack stack, BlockPos observerPos, Direction facing) { - BlockPos potentialBeltPos = observerPos.offset(facing, 2); - TileEntity tileEntity = world.getTileEntity(potentialBeltPos); - if (tileEntity instanceof BeltTileEntity) { - BeltTileEntity belt = (BeltTileEntity) tileEntity; - return belt.tryInsertingFromSide(facing, stack, false); - } - - boolean empty = world.getBlockState(potentialBeltPos).getCollisionShape(world, potentialBeltPos).isEmpty(); - float yOffset = empty ? 0 : .5f; - AxisAlignedBB bb = new AxisAlignedBB(empty ? potentialBeltPos : potentialBeltPos.up()); - if (!world.getEntitiesWithinAABBExcludingEntity(null, bb).isEmpty()) - return false; - - Vec3d motion = new Vec3d(facing.getDirectionVec()).scale(1 / 16f); - Vec3d entityPos = VecHelper.getCenterOf(potentialBeltPos).add(0, yOffset + .25f, 0).subtract(motion); - ItemEntity entity = new ItemEntity(world, entityPos.x, entityPos.y, entityPos.z, stack); - entity.setMotion(motion); - entity.setPickupDelay(5); - world.playSound(null, observerPos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.BLOCKS, .125f, .1f); - world.addEntity(entity); - return true; - } - - @Override - public boolean processEntity(BeltTileEntity te, Entity entity, BeltAttachmentState state) { - if (te.getWorld().isRemote) - return false; - if (entity.getPositionVec().distanceTo(VecHelper.getCenterOf(te.getPos())) > .5f) - return false; - - World world = te.getWorld(); - BlockState blockState = world.getBlockState(state.attachmentPos); - if (blockState.get(POWERED)) - return false; - - world.setBlockState(state.attachmentPos, blockState.with(POWERED, true)); - world.notifyNeighborsOfStateChange(state.attachmentPos, this); - withTileEntityDo(te.getWorld(), state.attachmentPos, BeltObserverTileEntity::resetTurnOffCooldown); - return false; - } - - @Override - public void scheduledTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random random) { - worldIn.setBlockState(pos, state.with(POWERED, false), 2); - worldIn.notifyNeighborsOfStateChange(pos, this); - } - @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { World world = context.getWorld(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/extractor/ExtractorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/extractor/ExtractorTileEntity.java index 3ba3e231d..2cdb2e2b6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/extractor/ExtractorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/extractor/ExtractorTileEntity.java @@ -106,7 +106,7 @@ public class ExtractorTileEntity extends SmartTileEntity { BeltInventory inventory = controller.getInventory(); if (inventory == null) return false; - if (!inventory.canInsertFrom(belt.index, Direction.UP)) + if (!inventory.canInsertAtFromSide(belt.index, Direction.UP)) return false; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index 62e929c6e..e6088f5b9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -1,19 +1,14 @@ package com.simibubi.create.content.logistics.block.funnel; -import java.util.Arrays; import java.util.Collections; -import java.util.List; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.components.structureMovement.IPortableBlock; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.BeltAttachmentState; -import com.simibubi.create.content.contraptions.relays.belt.AllBeltAttachments.IBeltAttachment; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -41,7 +36,7 @@ import net.minecraft.world.IWorld; import net.minecraft.world.World; public class FunnelBlock extends AttachedLogisticalBlock - implements IBeltAttachment, ITE, IPortableBlock { + implements ITE, IPortableBlock { public static final BooleanProperty BELT = BooleanProperty.create("belt"); public static final MovementBehaviour MOVEMENT = new FunnelMovementBehaviour(); @@ -131,7 +126,6 @@ public class FunnelBlock extends AttachedLogisticalBlock @Override public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - onAttachmentPlaced(worldIn, pos, state); if (worldIn.isRemote) return; @@ -153,42 +147,12 @@ public class FunnelBlock extends AttachedLogisticalBlock @Override public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - onAttachmentRemoved(worldIn, pos, state); if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); worldIn.removeTileEntity(pos); } } - @Override - public List getPotentialAttachmentPositions(IWorld world, BlockPos pos, BlockState beltState) { - return Arrays.asList(pos.up()); - } - - @Override - public BlockPos getBeltPositionForAttachment(IWorld world, BlockPos pos, BlockState state) { - return pos.down(); - } - - @Override - public boolean startProcessingItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - return process(te, transported, state); - } - - @Override - public boolean isAttachedCorrectly(IWorld world, BlockPos attachmentPos, BlockPos beltPos, - BlockState attachmentState, BlockState beltState) { - return !isVertical(attachmentState); - } - - @Override - public boolean processItem(BeltTileEntity te, TransportedItemStack transported, BeltAttachmentState state) { - Direction movementFacing = te.getMovementFacing(); - if (movementFacing != te.getWorld().getBlockState(state.attachmentPos).get(HORIZONTAL_FACING)) - return false; - return process(te, transported, state); - } - @Override public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { @@ -207,16 +171,6 @@ public class FunnelBlock extends AttachedLogisticalBlock return ActionResultType.PASS; } - public boolean process(BeltTileEntity belt, TransportedItemStack transported, BeltAttachmentState state) { - TileEntity te = belt.getWorld().getTileEntity(state.attachmentPos); - if (!(te instanceof FunnelTileEntity)) - return false; - FunnelTileEntity funnel = (FunnelTileEntity) te; - ItemStack stack = funnel.tryToInsert(transported.stack); - transported.stack = stack; - return true; - } - public static class Vertical extends FunnelBlock { public Vertical(Properties properties) { super(properties); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java index af552df79..eeb6663ce 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.ITickableTileEntity; @@ -14,7 +14,7 @@ import net.minecraft.tileentity.TileEntityType; public abstract class SmartTileEntity extends SyncedTileEntity implements ITickableTileEntity { - private Map, TileEntityBehaviour> behaviours; + private Map, TileEntityBehaviour> behaviours; private boolean initialized; private boolean firstNbtRead; private int lazyTickRate; @@ -120,14 +120,14 @@ public abstract class SmartTileEntity extends SyncedTileEntity implements ITicka behaviour.initialize(); } - protected void removeBehaviour(IBehaviourType type) { + protected void removeBehaviour(BehaviourType type) { TileEntityBehaviour remove = behaviours.remove(type); if (remove != null) remove.remove(); } @SuppressWarnings("unchecked") - protected T getBehaviour(IBehaviourType type) { + protected T getBehaviour(BehaviourType type) { if (behaviours.containsKey(type)) return (T) behaviours.get(type); return null; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java index 84712ba6b..481e064f6 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.tileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundNBT; @@ -23,7 +23,7 @@ public abstract class TileEntityBehaviour { setLazyTickRate(10); } - public abstract IBehaviourType getType(); + public abstract BehaviourType getType(); public void initialize() { @@ -91,18 +91,18 @@ public abstract class TileEntityBehaviour { } public static T get(ILightReader reader, BlockPos pos, - IBehaviourType type) { + BehaviourType type) { return get(reader.getTileEntity(pos), type); } public static void destroy(ILightReader reader, BlockPos pos, - IBehaviourType type) { + BehaviourType type) { T behaviour = get(reader.getTileEntity(pos), type); if (behaviour != null) behaviour.destroy(); } - public static T get(TileEntity te, IBehaviourType type) { + public static T get(TileEntity te, BehaviourType type) { if (te == null) return null; if (!(te instanceof SmartTileEntity)) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/IBehaviourType.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/BehaviourType.java similarity index 67% rename from src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/IBehaviourType.java rename to src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/BehaviourType.java index bc3ff8758..0942955f5 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/IBehaviourType.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/BehaviourType.java @@ -2,6 +2,6 @@ package com.simibubi.create.foundation.tileEntity.behaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -public interface IBehaviourType { +public class BehaviourType { } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java new file mode 100644 index 000000000..2b64f01d9 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java @@ -0,0 +1,59 @@ +package com.simibubi.create.foundation.tileEntity.behaviour.belt; + +import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; + +/** + * Behaviour for TileEntities which can process items on belts or depots beneath them. + * Currently only supports placement location 2 spaces above the belt block. + * Example use: Mechanical Press + */ +public class BeltProcessingBehaviour extends TileEntityBehaviour { + + public static BehaviourType TYPE = new BehaviourType<>(); + + public static enum ProcessingResult { + PASS, HOLD, REMOVE; + } + + private ProcessingCallback onItemEnter; + private ProcessingCallback continueProcessing; + + public BeltProcessingBehaviour(SmartTileEntity te) { + super(te); + onItemEnter = (s, i) -> ProcessingResult.PASS; + continueProcessing = (s, i) -> ProcessingResult.PASS; + } + + public BeltProcessingBehaviour whenItemEnters(ProcessingCallback callback) { + onItemEnter = callback; + return this; + } + + public BeltProcessingBehaviour whileItemHeld(ProcessingCallback callback) { + continueProcessing = callback; + return this; + } + + @Override + public BehaviourType getType() { + return TYPE; + } + + public ProcessingResult handleReceivedItem(TransportedItemStack stack, BeltInventory inventory) { + return onItemEnter.apply(stack, inventory); + } + + public ProcessingResult handleHeldItem(TransportedItemStack stack, BeltInventory inventory) { + return continueProcessing.apply(stack, inventory); + } + + @FunctionalInterface + public interface ProcessingCallback { + public ProcessingResult apply(TransportedItemStack stack, BeltInventory inventory); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java new file mode 100644 index 000000000..9aa32a05b --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java @@ -0,0 +1,76 @@ +package com.simibubi.create.foundation.tileEntity.behaviour.belt; + +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.Direction; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; + +/** + * Behaviour for TileEntities to which belts can transfer items directly in a + * backup-friendly manner. Example uses: Basin, Saw, Depot + */ +public class DirectBeltInputBehaviour extends TileEntityBehaviour { + + public static BehaviourType TYPE = new BehaviourType<>(); + + private InsertionCallback tryInsert; + private AvailabilityPredicate canInsert; + + public DirectBeltInputBehaviour(SmartTileEntity te) { + super(te); + tryInsert = this::defaultInsertionCallback; + canInsert = d -> true; + } + + public DirectBeltInputBehaviour onlyInsertWhen(AvailabilityPredicate pred) { + canInsert = pred; + return this; + } + + public DirectBeltInputBehaviour setInsertionHandler(InsertionCallback callback) { + tryInsert = callback; + return this; + } + + private ItemStack defaultInsertionCallback(TransportedItemStack inserted, Direction side, boolean simulate) { + LazyOptional lazy = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side); + if (!lazy.isPresent()) + return inserted.stack; + return ItemHandlerHelper.insertItemStacked(lazy.orElse(null), inserted.stack.copy(), simulate); + } + + public boolean canInsertFromSide(Direction side) { + return canInsert.test(side); + } + + public ItemStack handleInsertion(ItemStack stack, Direction side, boolean simulate) { + return handleInsertion(new TransportedItemStack(stack), side, simulate); + } + + public ItemStack handleInsertion(TransportedItemStack stack, Direction side, boolean simulate) { + return tryInsert.apply(stack, side, simulate); + } + + @Override + public BehaviourType getType() { + return TYPE; + } + + @FunctionalInterface + public interface InsertionCallback { + public ItemStack apply(TransportedItemStack stack, Direction side, boolean simulate); + } + + @FunctionalInterface + public interface AvailabilityPredicate { + public boolean test(Direction side); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java index acc3eb9ef..e4ca847e1 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java @@ -4,7 +4,7 @@ import java.util.Optional; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.item.Item; import net.minecraft.util.Direction; @@ -13,8 +13,7 @@ import net.minecraft.world.World; public class EdgeInteractionBehaviour extends TileEntityBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); ConnectionCallback connectionCallback; ConnectivityPredicate connectivityPredicate; @@ -38,7 +37,7 @@ public class EdgeInteractionBehaviour extends TileEntityBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java index 0c18968c2..e47b2cb6b 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.VecHelper; @@ -20,8 +20,7 @@ import net.minecraft.world.World; public class FilteringBehaviour extends TileEntityBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); ValueBoxTransform slotPositioning; boolean showCount; @@ -152,7 +151,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/AutoExtractingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/AutoExtractingBehaviour.java index 4660656b2..ee95b4a82 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/AutoExtractingBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/AutoExtractingBehaviour.java @@ -7,7 +7,7 @@ import java.util.function.Supplier; import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; @@ -15,8 +15,7 @@ import net.minecraft.util.math.BlockPos; public class AutoExtractingBehaviour extends ExtractingBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); private int delay; private int timer; @@ -85,7 +84,7 @@ public class AutoExtractingBehaviour extends ExtractingBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java index c1bdbcf09..a7ed96207 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java @@ -11,7 +11,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import net.minecraft.item.ItemStack; @@ -21,8 +21,7 @@ import net.minecraftforge.items.IItemHandler; public class ExtractingBehaviour extends InventoryManagementBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); private Function customAmountFilter; private Predicate customFilter; @@ -90,7 +89,7 @@ public class ExtractingBehaviour extends InventoryManagementBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InsertingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InsertingBehaviour.java index e865065dc..4b18aad01 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InsertingBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InsertingBehaviour.java @@ -6,7 +6,7 @@ import java.util.function.Supplier; import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; @@ -16,8 +16,7 @@ import net.minecraftforge.items.ItemHandlerHelper; public class InsertingBehaviour extends InventoryManagementBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); public InsertingBehaviour(SmartTileEntity te, Supplier>> attachments) { super(te, attachments); @@ -33,7 +32,7 @@ public class InsertingBehaviour extends InventoryManagementBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InventoryManagementBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InventoryManagementBehaviour.java index b44a390c5..0318f0375 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InventoryManagementBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InventoryManagementBehaviour.java @@ -11,7 +11,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.google.common.collect.ImmutableList; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.block.BlockState; import net.minecraft.tileentity.TileEntity; @@ -28,8 +28,7 @@ public class InventoryManagementBehaviour extends TileEntityBehaviour { private Supplier>> attachments; private List activeHandlers; - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); public InventoryManagementBehaviour(SmartTileEntity te, Supplier>> attachments) { super(te); @@ -98,7 +97,7 @@ public class InventoryManagementBehaviour extends TileEntityBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/SingleTargetAutoExtractingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/SingleTargetAutoExtractingBehaviour.java index be0c8a8e3..763b83034 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/SingleTargetAutoExtractingBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/SingleTargetAutoExtractingBehaviour.java @@ -4,7 +4,7 @@ import java.util.function.Consumer; import java.util.function.Supplier; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -13,16 +13,14 @@ import net.minecraft.util.math.BlockPos; public class SingleTargetAutoExtractingBehaviour extends AutoExtractingBehaviour { - public static IBehaviourType TYPE = - new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); private Supplier attachmentDirection; boolean synced; boolean advantageOnNextSync; public SingleTargetAutoExtractingBehaviour(SmartTileEntity te, Supplier attachmentDirection, - Consumer onExtract, int delay) { + Consumer onExtract, int delay) { super(te, Attachments.toward(attachmentDirection), onExtract, delay); this.attachmentDirection = attachmentDirection; synced = true; @@ -49,7 +47,8 @@ public class SingleTargetAutoExtractingBehaviour extends AutoExtractingBehaviour @Override public boolean extract() { if (synced) { - BlockPos invPos = tileEntity.getPos().offset(attachmentDirection.get()); + BlockPos invPos = tileEntity.getPos() + .offset(attachmentDirection.get()); return SynchronizedExtraction.extractSynchronized(getWorld(), invPos); } else return extractFromInventory(); @@ -60,7 +59,7 @@ public class SingleTargetAutoExtractingBehaviour extends AutoExtractingBehaviour } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java index 9bfb26ab5..6d96d6a9b 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler; import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import net.minecraft.block.BlockState; @@ -21,8 +21,7 @@ import net.minecraft.util.math.Vec3d; public class LinkBehaviour extends TileEntityBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); enum Mode { TRANSMIT, RECEIVE @@ -162,7 +161,7 @@ public class LinkBehaviour extends TileEntityBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java index 59be89235..a9585d883 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java @@ -6,7 +6,7 @@ import java.util.function.Function; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import net.minecraft.block.BlockState; @@ -16,8 +16,7 @@ import net.minecraft.util.math.Vec3d; public class ScrollValueBehaviour extends TileEntityBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); ValueBoxTransform slotPositioning; Vec3d textShift; @@ -162,7 +161,7 @@ public class ScrollValueBehaviour extends TileEntityBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java index 9650fbe92..b9a195aa7 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java @@ -4,14 +4,13 @@ import java.util.function.Supplier; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.IBehaviourType; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; import net.minecraft.nbt.CompoundNBT; public class DeferralBehaviour extends TileEntityBehaviour { - public static IBehaviourType TYPE = new IBehaviourType() { - }; + public static BehaviourType TYPE = new BehaviourType<>(); private boolean needsUpdate; private Supplier callback; @@ -45,7 +44,7 @@ public class DeferralBehaviour extends TileEntityBehaviour { } @Override - public IBehaviourType getType() { + public BehaviourType getType() { return TYPE; } From f7ad748a0980692d5de4907572b4c5f7764d91cb Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 27 Jun 2020 15:20:22 +0200 Subject: [PATCH 20/47] Depot Implementation and Interaction - Depots can now hold on to items similarly to belts - Item processing such as the press and bulk smelting now targets a Processing TE behaviour, rather than the belt only - The press and similar processing can no longer commence whenever there is a block with a collision shape between item and machine - Implemented item processing for Depots - Items can seamlessly traverse from belts to depots --- .../com/simibubi/create/AllTileEntities.java | 5 + .../components/fan/AirCurrent.java | 115 +++++----- .../press/BeltPressingCallbacks.java | 20 +- .../contraptions/relays/belt/BeltBlock.java | 2 +- .../relays/belt/BeltTileEntity.java | 19 ++ .../relays/belt/transport/BeltInventory.java | 36 +++- .../belt/transport/TransportedItemStack.java | 1 + .../content/logistics/InWorldProcessing.java | 57 ++--- .../observer/BeltObserverTileEntity.java | 2 +- .../logistics/block/depot/DepotBlock.java | 112 +++++++++- .../block/depot/DepotItemHandler.java | 74 +++++++ .../logistics/block/depot/DepotRenderer.java | 107 +++++++++ .../block/depot/DepotTileEntity.java | 203 ++++++++++++++++++ .../logistics/block/funnel/FunnelBlock.java | 2 +- .../tileEntity/TileEntityBehaviour.java | 6 +- .../belt/BeltProcessingBehaviour.java | 29 ++- .../TransportedItemStackHandlerBehaviour.java | 54 +++++ .../create/foundation/utility/Iterate.java | 2 +- 18 files changed, 723 insertions(+), 123 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/depot/DepotItemHandler.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java create mode 100644 src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 3dc452168..7c86504d4 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -72,6 +72,8 @@ import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverRe import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelRenderer; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; +import com.simibubi.create.content.logistics.block.depot.DepotRenderer; +import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; import com.simibubi.create.content.logistics.block.diodes.AdjustablePulseRepeaterTileEntity; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterRenderer; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterTileEntity; @@ -219,6 +221,8 @@ public class AllTileEntities { public static final TileEntityEntry CREATIVE_CRATE = register("creative_crate", CreativeCrateTileEntity::new, AllBlocks.CREATIVE_CRATE); + public static final TileEntityEntry DEPOT = + register("depot", DepotTileEntity::new, AllBlocks.DEPOT); public static final TileEntityEntry REALITY_FUNNEL = register("reality_funnel", RealityFunnelTileEntity::new, AllBlocks.REALITY_FUNNEL, AllBlocks.BELT_FUNNEL, AllBlocks.CHUTE_FUNNEL); public static final TileEntityEntry PACKAGER = @@ -295,6 +299,7 @@ public class AllTileEntities { bind(FURNACE_ENGINE, EngineRenderer::new); bind(ROTATION_SPEED_CONTROLLER, SpeedControllerRenderer::new); bind(PACKAGER, PackagerRenderer::new); + bind(DEPOT, DepotRenderer::new); bind(CREATIVE_CRATE, SmartTileEntityRenderer::new); bind(REDSTONE_LINK, SmartTileEntityRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java index 4d159e624..d9bf3a889 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java @@ -7,11 +7,12 @@ import java.util.List; import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.content.contraptions.particle.AirFlowParticleData; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.logistics.InWorldProcessing; import com.simibubi.create.content.logistics.InWorldProcessing.Type; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; +import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.block.BlockState; @@ -21,9 +22,7 @@ import net.minecraft.entity.EntityType; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.monster.EndermanEntity; import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.nbt.CompoundNBT; import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.DamageSource; import net.minecraft.util.Direction; import net.minecraft.util.SoundCategory; @@ -42,10 +41,10 @@ import net.minecraftforge.common.Tags; public class AirCurrent { - private static DamageSource damageSourceFire = - new DamageSource("create.fan_fire").setDifficultyScaled().setFireDamage(); - private static DamageSource damageSourceLava = - new DamageSource("create.fan_lava").setDifficultyScaled().setFireDamage(); + private static DamageSource damageSourceFire = new DamageSource("create.fan_fire").setDifficultyScaled() + .setFireDamage(); + private static DamageSource damageSourceLava = new DamageSource("create.fan_lava").setDifficultyScaled() + .setFireDamage(); public final EncasedFanTileEntity source; public AxisAlignedBB bounds = new AxisAlignedBB(0, 0, 0, 0, 0, 0); @@ -54,7 +53,8 @@ public class AirCurrent { public boolean pushing; public float maxDistance; - protected List> affectedBelts = new ArrayList<>(); + protected List> affectedItemHandlers = + new ArrayList<>(); protected List caughtEntities = new ArrayList<>(); public AirCurrent(EncasedFanTileEntity source) { @@ -66,14 +66,16 @@ public class AirCurrent { Direction facing = direction; if (world.isRemote) { float offset = pushing ? 0.5f : maxDistance + .5f; - Vec3d pos = VecHelper.getCenterOf(source.getPos()).add(new Vec3d(facing.getDirectionVec()).scale(offset)); + Vec3d pos = VecHelper.getCenterOf(source.getPos()) + .add(new Vec3d(facing.getDirectionVec()).scale(offset)); if (world.rand.nextFloat() < AllConfigs.CLIENT.fanParticleDensity.get()) world.addParticle(new AirFlowParticleData(source.getPos()), pos.x, pos.y, pos.z, 0, 0, 0); } for (Iterator iterator = caughtEntities.iterator(); iterator.hasNext();) { Entity entity = iterator.next(); - if (!entity.getBoundingBox().intersects(bounds)) { + if (!entity.getBoundingBox() + .intersects(bounds)) { iterator.remove(); continue; } @@ -83,7 +85,8 @@ public class AirCurrent { float sneakModifier = entity.isSneaking() ? 4096f : 512f; float speed = Math.abs(source.getSpeed()); - double entityDistance = entity.getPositionVec().distanceTo(center); + double entityDistance = entity.getPositionVec() + .distanceTo(center); float acceleration = (float) (speed / sneakModifier / (entityDistance / maxDistance)); Vec3d previousMotion = entity.getMotion(); float maxAcceleration = 5; @@ -127,15 +130,16 @@ public class AirCurrent { } break; case SPLASHING: - if (entity instanceof EndermanEntity || entity.getType() == EntityType.SNOW_GOLEM || entity.getType() == EntityType.BLAZE) { + if (entity instanceof EndermanEntity || entity.getType() == EntityType.SNOW_GOLEM + || entity.getType() == EntityType.BLAZE) { entity.attackEntityFrom(DamageSource.DROWN, 2); } if (!entity.isBurning()) break; entity.extinguish(); world.playSound(null, entity.getPosition(), SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, - SoundCategory.NEUTRAL, 0.7F, - 1.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.4F); + SoundCategory.NEUTRAL, 0.7F, + 1.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.4F); break; default: break; @@ -145,7 +149,7 @@ public class AirCurrent { } - tickBelts(); + tickAffectedHandlers(); } public void rebuild() { @@ -158,7 +162,8 @@ public class AirCurrent { World world = source.getWorld(); BlockPos start = source.getPos(); - direction = source.getBlockState().get(BlockStateProperties.FACING); + direction = source.getBlockState() + .get(BlockStateProperties.FACING); pushing = source.getAirFlowDirection() == direction; Vec3d directionVec = new Vec3d(direction.getDirectionVec()); Vec3d planeVec = VecHelper.planeByNormal(directionVec); @@ -166,9 +171,9 @@ public class AirCurrent { // 4 Rays test for holes in the shapes blocking the flow float offsetDistance = .25f; Vec3d[] offsets = new Vec3d[] { planeVec.mul(offsetDistance, offsetDistance, offsetDistance), - planeVec.mul(-offsetDistance, -offsetDistance, offsetDistance), - planeVec.mul(offsetDistance, -offsetDistance, -offsetDistance), - planeVec.mul(-offsetDistance, offsetDistance, -offsetDistance), }; + planeVec.mul(-offsetDistance, -offsetDistance, offsetDistance), + planeVec.mul(offsetDistance, -offsetDistance, -offsetDistance), + planeVec.mul(-offsetDistance, offsetDistance, -offsetDistance), }; maxDistance = source.getMaxDistance(); float limitedDistance = 0; @@ -190,15 +195,17 @@ public class AirCurrent { } for (Vec3d offset : offsets) { - Vec3d rayStart = - VecHelper.getCenterOf(currentPos).subtract(directionVec.scale(.5f + 1 / 32f)).add(offset); + Vec3d rayStart = VecHelper.getCenterOf(currentPos) + .subtract(directionVec.scale(.5f + 1 / 32f)) + .add(offset); Vec3d rayEnd = rayStart.add(directionVec.scale(1 + 1 / 32f)); BlockRayTraceResult blockraytraceresult = world.rayTraceBlocks(rayStart, rayEnd, currentPos, voxelshape, state); if (blockraytraceresult == null) continue Outer; - double distance = i - 1 + blockraytraceresult.getHitVec().distanceTo(rayStart); + double distance = i - 1 + blockraytraceresult.getHitVec() + .distanceTo(rayStart); if (limitedDistance < distance) limitedDistance = (float) distance; } @@ -244,68 +251,58 @@ public class AirCurrent { if (factor > 0) bounds = new AxisAlignedBB(start.offset(direction)).expand(scale); else { - bounds = new AxisAlignedBB(start.offset(direction)).contract(scale.x, scale.y, scale.z).offset(scale); + bounds = new AxisAlignedBB(start.offset(direction)).contract(scale.x, scale.y, scale.z) + .offset(scale); } } - findAffectedBelts(); + findAffectedHandlers(); } public void findEntities() { caughtEntities.clear(); - caughtEntities = source.getWorld().getEntitiesWithinAABBExcludingEntity(null, bounds); + caughtEntities = source.getWorld() + .getEntitiesWithinAABBExcludingEntity(null, bounds); } - public void findAffectedBelts() { + public void findAffectedHandlers() { World world = source.getWorld(); BlockPos start = source.getPos(); - affectedBelts.clear(); + affectedItemHandlers.clear(); for (int i = 0; i < maxDistance + 1; i++) { Type type = getSegmentAt(i); if (type == null) continue; - BlockPos pos = start.offset(direction, i); - TileEntity te = world.getTileEntity(pos); - if (te != null && (te instanceof BeltTileEntity)) - affectedBelts.add(Pair.of((BeltTileEntity) te, type)); - if (direction.getAxis().isVertical()) - continue; - pos = pos.down(); - te = world.getTileEntity(pos); - if (te == null || !(te instanceof BeltTileEntity)) - continue; - affectedBelts.add(Pair.of((BeltTileEntity) te, type)); + for (int offset : Iterate.zeroAndOne) { + BlockPos pos = start.offset(direction, i) + .down(offset); + TransportedItemStackHandlerBehaviour behaviour = + TileEntityBehaviour.get(world, pos, TransportedItemStackHandlerBehaviour.TYPE); + if (behaviour != null) + affectedItemHandlers.add(Pair.of(behaviour, type)); + if (direction.getAxis() + .isVertical()) + break; + } } } - public void tickBelts() { - for (Pair pair : affectedBelts) { - BeltTileEntity belt = pair.getKey(); - World world = belt.getWorld(); + public void tickAffectedHandlers() { + for (Pair pair : affectedItemHandlers) { + TransportedItemStackHandlerBehaviour handler = pair.getKey(); + World world = handler.getWorld(); InWorldProcessing.Type processingType = pair.getRight(); - BeltTileEntity controller = belt.getControllerTE(); - if (controller == null) - continue; - - controller.getInventory().forEachWithin(belt.index + .5f, .51f, (transported) -> { - InWorldProcessing.spawnParticlesForProcessing(world, - BeltHelper.getVectorForOffset(controller, transported.beltPosition), processingType); + handler.handleProcessingOnAllItems((transported) -> { + InWorldProcessing.spawnParticlesForProcessing(world, handler.getWorldPositionOf(transported), + processingType); if (world.isRemote) return null; - return InWorldProcessing.applyProcessing(transported, belt, processingType); + return InWorldProcessing.applyProcessing(transported, world, processingType); }); } } - public void writeToNBT(CompoundNBT nbt) { - - } - - public void readFromNBT(CompoundNBT nbt) { - - } - private static boolean shouldAlwaysPass(BlockState state) { if (state.isIn(Tags.Blocks.FENCES)) return true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java index da9f3f539..2c86155b3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java @@ -7,17 +7,17 @@ import java.util.List; import java.util.Optional; import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import net.minecraft.item.ItemStack; public class BeltPressingCallbacks { - static ProcessingResult onItemReceived(TransportedItemStack transported, BeltInventory beltInventory, - MechanicalPressTileEntity press) { + static ProcessingResult onItemReceived(TransportedItemStack transported, + TransportedItemStackHandlerBehaviour handler, MechanicalPressTileEntity press) { if (press.getSpeed() == 0 || press.running) return PASS; if (!press.getRecipe(transported.stack) @@ -28,9 +28,9 @@ public class BeltPressingCallbacks { return HOLD; } - static ProcessingResult whenItemHeld(TransportedItemStack transportedStack, BeltInventory beltInventory, + static ProcessingResult whenItemHeld(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler, MechanicalPressTileEntity pressTe) { - + if (pressTe.getSpeed() == 0) return PASS; if (!pressTe.running) @@ -38,9 +38,9 @@ public class BeltPressingCallbacks { if (pressTe.runningTicks != 30) return HOLD; - Optional recipe = pressTe.getRecipe(transportedStack.stack); + Optional recipe = pressTe.getRecipe(transported.stack); pressTe.pressedItems.clear(); - pressTe.pressedItems.add(transportedStack.stack); + pressTe.pressedItems.add(transported.stack); if (!recipe.isPresent()) return PASS; @@ -48,10 +48,10 @@ public class BeltPressingCallbacks { ItemStack out = recipe.get() .getRecipeOutput() .copy(); - List multipliedOutput = ItemHelper.multipliedOutput(transportedStack.stack, out); + List multipliedOutput = ItemHelper.multipliedOutput(transported.stack, out); if (multipliedOutput.isEmpty()) - transportedStack.stack = ItemStack.EMPTY; - transportedStack.stack = multipliedOutput.get(0); + transported.stack = ItemStack.EMPTY; + transported.stack = multipliedOutput.get(0); pressTe.sendData(); return HOLD; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index a34721af3..ccd5995bd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -250,7 +250,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { + .applyToEachWithin(belt.index + .5f, .55f, (transportedItemStack) -> { player.inventory.placeItemBackInInventory(worldIn, transportedItemStack.stack); return Collections.emptyList(); }); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 0c2690f91..90d9dba00 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Function; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -24,6 +25,7 @@ import com.simibubi.create.content.contraptions.relays.belt.transport.ItemHandle import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.utility.ColorHelper; import net.minecraft.block.BlockState; @@ -39,6 +41,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; @@ -72,6 +75,8 @@ public class BeltTileEntity extends KineticTileEntity { behaviours.add(new DirectBeltInputBehaviour(this) .onlyInsertWhen(d -> getSpeed() != 0 && getMovementFacing() != d.getOpposite()) .setInsertionHandler(this::tryInsertingFromSide)); + behaviours.add(new TransportedItemStackHandlerBehaviour(this, this::applyToAllItems) + .withStackPlacement(this::getWorldPositionOf)); } @Override @@ -333,6 +338,20 @@ public class BeltTileEntity extends KineticTileEntity { return inventory; } + private void applyToAllItems(Function> processFunction) { + BeltTileEntity controller = getControllerTE(); + if (controller != null) + controller.getInventory() + .applyToEachWithin(index + .5f, .51f, processFunction); + } + + private Vec3d getWorldPositionOf(TransportedItemStack transported) { + BeltTileEntity controllerTE = getControllerTE(); + if (controllerTE == null) + return Vec3d.ZERO; + return BeltHelper.getVectorForOffset(controllerTE, transported.beltPosition); + } + /** * always target a DirectBeltInsertionBehaviour */ diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index 915586ed7..2106571e9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import net.minecraft.block.Block; @@ -165,7 +166,7 @@ public class BeltInventory { continue; if (!inputBehaviour.canInsertFromSide(movementFacing)) continue; - + ItemStack remainder = inputBehaviour.handleInsertion(currentItem, movementFacing, false); if (remainder.equals(currentItem.stack, false)) continue; @@ -198,14 +199,18 @@ public class BeltInventory { // Continue processing if held if (currentItem.locked) { BeltProcessingBehaviour processingBehaviour = getBeltProcessingAtSegment(currentSegment); + TransportedItemStackHandlerBehaviour stackHandlerBehaviour = + getTransportedItemStackHandlerAtSegment(currentSegment); + if (stackHandlerBehaviour == null) + return false; if (processingBehaviour == null) { currentItem.locked = false; belt.sendData(); return false; } - ProcessingResult result = processingBehaviour.handleHeldItem(currentItem, this); + ProcessingResult result = processingBehaviour.handleHeldItem(currentItem, stackHandlerBehaviour); if (result == ProcessingResult.REMOVE) return true; if (result == ProcessingResult.HOLD) @@ -225,10 +230,17 @@ public class BeltInventory { : segment + .5f >= nextOffset; segment += step) { BeltProcessingBehaviour processingBehaviour = getBeltProcessingAtSegment(segment); + TransportedItemStackHandlerBehaviour stackHandlerBehaviour = + getTransportedItemStackHandlerAtSegment(segment); + if (processingBehaviour == null) continue; + if (stackHandlerBehaviour == null) + continue; + if (BeltProcessingBehaviour.isBlocked(belt.getWorld(), BeltHelper.getPositionForOffset(belt, segment))) + continue; - ProcessingResult result = processingBehaviour.handleReceivedItem(currentItem, this); + ProcessingResult result = processingBehaviour.handleReceivedItem(currentItem, stackHandlerBehaviour); if (result == ProcessingResult.REMOVE) return true; @@ -249,6 +261,11 @@ public class BeltInventory { .up(2), BeltProcessingBehaviour.TYPE); } + protected TransportedItemStackHandlerBehaviour getTransportedItemStackHandlerAtSegment(int segment) { + return TileEntityBehaviour.get(belt.getWorld(), BeltHelper.getPositionForOffset(belt, segment), + TransportedItemStackHandlerBehaviour.TYPE); + } + private enum Ending { UNRESOLVED(0), EJECT(0), INSERT(.25f), FUNNEL(.35f), BLOCKED(.45f); @@ -373,22 +390,25 @@ public class BeltInventory { belt.getWorld() .addEntity(entity); } - + public void ejectAll() { items.forEach(this::eject); items.clear(); } - public void forEachWithin(float position, float distance, - Function> callback) { + public void applyToEachWithin(float position, float maxDistanceToPosition, + Function> processFunction) { List toBeAdded = new ArrayList<>(); boolean dirty = false; for (Iterator iterator = items.iterator(); iterator.hasNext();) { TransportedItemStack transportedItemStack = iterator.next(); - if (Math.abs(position - transportedItemStack.beltPosition) < distance) { - List apply = callback.apply(transportedItemStack); + ItemStack stackBefore = transportedItemStack.stack.copy(); + if (Math.abs(position - transportedItemStack.beltPosition) < maxDistanceToPosition) { + List apply = processFunction.apply(transportedItemStack); if (apply == null) continue; + if (apply.size() == 1 && apply.get(0).stack.equals(stackBefore, false)) + continue; dirty = true; toBeAdded.addAll(apply); iterator.remove(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java index 3b5f91c4c..e057d7ef4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java @@ -54,6 +54,7 @@ public class TransportedItemStack implements Comparable { public TransportedItemStack copy() { TransportedItemStack copy = getSimilar(); copy.angle = angle; + copy.sideOffset = sideOffset; return copy; } diff --git a/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java b/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java index 88739c43a..b2765dd7d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java +++ b/src/main/java/com/simibubi/create/content/logistics/InWorldProcessing.java @@ -8,7 +8,6 @@ import java.util.Optional; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.ItemHelper; @@ -61,7 +60,7 @@ public class InWorldProcessing { if (fluidState.getFluid() == Fluids.WATER || fluidState.getFluid() == Fluids.FLOWING_WATER) return Type.SPLASHING; if (blockState.getBlock() == Blocks.FIRE - || (blockState.getBlock() == Blocks.CAMPFIRE && blockState.get(CampfireBlock.LIT))) + || (blockState.getBlock() == Blocks.CAMPFIRE && blockState.get(CampfireBlock.LIT))) return Type.SMOKING; if (blockState.getBlock() == Blocks.LAVA) return Type.BLASTING; @@ -70,8 +69,10 @@ public class InWorldProcessing { } public static boolean canProcess(ItemEntity entity, Type type) { - if (entity.getPersistentData().contains("CreateData")) { - CompoundNBT compound = entity.getPersistentData().getCompound("CreateData"); + if (entity.getPersistentData() + .contains("CreateData")) { + CompoundNBT compound = entity.getPersistentData() + .getCompound("CreateData"); if (compound.contains("Processing")) { CompoundNBT processing = compound.getCompound("Processing"); @@ -100,7 +101,8 @@ public class InWorldProcessing { SmokerTileEntity smoker = new SmokerTileEntity(); smoker.setLocation(world, BlockPos.ZERO); smoker.setInventorySlotContents(0, stack); - Optional recipe = world.getRecipeManager().getRecipe(IRecipeType.SMOKING, smoker, world); + Optional recipe = world.getRecipeManager() + .getRecipe(IRecipeType.SMOKING, smoker, world); return recipe.isPresent(); } @@ -112,8 +114,8 @@ public class InWorldProcessing { public static boolean isWashable(ItemStack stack, World world) { splashingInv.setInventorySlotContents(0, stack); - Optional recipe = - world.getRecipeManager().getRecipe(AllRecipeTypes.SPLASHING.getType(), splashingInv, world); + Optional recipe = world.getRecipeManager() + .getRecipe(AllRecipeTypes.SPLASHING.getType(), splashingInv, world); return recipe.isPresent(); } @@ -135,15 +137,15 @@ public class InWorldProcessing { } } - public static List applyProcessing(TransportedItemStack transported, BeltTileEntity belt, - Type type) { + public static List applyProcessing(TransportedItemStack transported, + World world, Type type) { if (transported.processedBy != type) { transported.processedBy = type; int timeModifierForStackSize = ((transported.stack.getCount() - 1) / 16) + 1; int processingTime = (int) (AllConfigs.SERVER.kinetics.inWorldProcessingTime.get() * timeModifierForStackSize) + 1; transported.processingTime = processingTime; - if (!canProcess(transported.stack, type, belt.getWorld())) + if (!canProcess(transported.stack, type, world)) transported.processingTime = -1; return null; } @@ -152,15 +154,13 @@ public class InWorldProcessing { if (transported.processingTime-- > 0) return null; - List stacks = process(transported.stack, type, belt.getWorld()); + List stacks = process(transported.stack, type, world); if (stacks == null) return null; - + List transportedStacks = new ArrayList<>(); for (ItemStack additional : stacks) { TransportedItemStack newTransported = transported.getSimilar(); - newTransported.beltPosition -= Math.signum(belt.getDirectionAwareBeltMovementSpeed()) * 1/32f; - newTransported.prevBeltPosition = newTransported.beltPosition; newTransported.stack = additional.copy(); transportedStacks.add(newTransported); } @@ -170,8 +170,8 @@ public class InWorldProcessing { private static List process(ItemStack stack, Type type, World world) { if (type == Type.SPLASHING) { splashingInv.setInventorySlotContents(0, stack); - Optional recipe = - world.getRecipeManager().getRecipe(AllRecipeTypes.SPLASHING.getType(), splashingInv, world); + Optional recipe = world.getRecipeManager() + .getRecipe(AllRecipeTypes.SPLASHING.getType(), splashingInv, world); if (recipe.isPresent()) return applyRecipeOn(stack, recipe.get()); return null; @@ -181,15 +181,16 @@ public class InWorldProcessing { SmokerTileEntity smoker = new SmokerTileEntity(); smoker.setLocation(world, BlockPos.ZERO); smoker.setInventorySlotContents(0, stack); - Optional smokingRecipe = world.getRecipeManager().getRecipe(IRecipeType.SMOKING, smoker, world); + Optional smokingRecipe = world.getRecipeManager() + .getRecipe(IRecipeType.SMOKING, smoker, world); if (type == Type.BLASTING) { // FIXME this does not need to be a TE FurnaceTileEntity furnace = new FurnaceTileEntity(); furnace.setLocation(world, BlockPos.ZERO); furnace.setInventorySlotContents(0, stack); - Optional smeltingRecipe = - world.getRecipeManager().getRecipe(IRecipeType.SMELTING, furnace, world); + Optional smeltingRecipe = world.getRecipeManager() + .getRecipe(IRecipeType.SMELTING, furnace, world); if (!smokingRecipe.isPresent()) { if (smeltingRecipe.isPresent()) @@ -199,8 +200,8 @@ public class InWorldProcessing { BlastFurnaceTileEntity blastFurnace = new BlastFurnaceTileEntity(); blastFurnace.setLocation(world, BlockPos.ZERO); blastFurnace.setInventorySlotContents(0, stack); - Optional blastingRecipe = - world.getRecipeManager().getRecipe(IRecipeType.BLASTING, blastFurnace, world); + Optional blastingRecipe = world.getRecipeManager() + .getRecipe(IRecipeType.BLASTING, blastFurnace, world); if (blastingRecipe.isPresent()) return applyRecipeOn(stack, blastingRecipe.get()); @@ -228,7 +229,8 @@ public class InWorldProcessing { if (!processing.contains("Type") || Type.valueOf(processing.getString("Type")) != type) { processing.putString("Type", type.name()); - int timeModifierForStackSize = ((entity.getItem().getCount() - 1) / 16) + 1; + int timeModifierForStackSize = ((entity.getItem() + .getCount() - 1) / 16) + 1; int processingTime = (int) (AllConfigs.SERVER.kinetics.inWorldProcessingTime.get() * timeModifierForStackSize) + 1; processing.putInt("Time", processingTime); @@ -269,7 +271,7 @@ public class InWorldProcessing { if (!ItemHandlerHelper.canItemStacksStack(stack, previouslyRolled)) continue; int amount = Math.min(previouslyRolled.getMaxStackSize() - previouslyRolled.getCount(), - stack.getCount()); + stack.getCount()); previouslyRolled.grow(amount); stack.shrink(amount); } @@ -281,7 +283,8 @@ public class InWorldProcessing { } } } else { - ItemStack out = recipe.getRecipeOutput().copy(); + ItemStack out = recipe.getRecipeOutput() + .copy(); stacks = ItemHelper.multipliedOutput(stackIn, out); } @@ -304,10 +307,10 @@ public class InWorldProcessing { case SPLASHING: Vec3d color = ColorHelper.getRGB(0x0055FF); world.addParticle(new RedstoneParticleData((float) color.x, (float) color.y, (float) color.z, 1), - vec.x + (world.rand.nextFloat() - .5f) * .5f, vec.y + .5f, - vec.z + (world.rand.nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); + vec.x + (world.rand.nextFloat() - .5f) * .5f, vec.y + .5f, vec.z + (world.rand.nextFloat() - .5f) * .5f, + 0, 1 / 8f, 0); world.addParticle(ParticleTypes.SPIT, vec.x + (world.rand.nextFloat() - .5f) * .5f, vec.y + .5f, - vec.z + (world.rand.nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); + vec.z + (world.rand.nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); break; default: break; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverTileEntity.java index f56148779..b423dadfa 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverTileEntity.java @@ -53,7 +53,7 @@ public class BeltObserverTileEntity extends SmartTileEntity { if (controllerTE == null) return; - controllerTE.getInventory().forEachWithin(beltTE.index + .5f, .45f, stack -> { + controllerTE.getInventory().applyToEachWithin(beltTE.index + .5f, .45f, stack -> { if (filtering.test(stack.stack) && turnOffTicks != 6) { world.setBlockState(pos, getBlockState().with(BeltObserverBlock.POWERED, true)); world.notifyNeighborsOfStateChange(pos, getBlockState().getBlock()); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java index 280e2eb3c..a5aa60646 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java @@ -1,24 +1,132 @@ package com.simibubi.create.content.logistics.block.depot; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.items.ItemStackHandler; -public class DepotBlock extends Block { +public class DepotBlock extends Block implements ITE { public DepotBlock(Properties p_i48440_1_) { super(p_i48440_1_); } - + @Override public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { return AllShapes.DEPOT; } + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.DEPOT.create(); + } + + @Override + public Class getTileEntityClass() { + return DepotTileEntity.class; + } + + @Override + public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, + BlockRayTraceResult ray) { + if (ray.getFace() != Direction.UP) + return ActionResultType.PASS; + if (world.isRemote) + return ActionResultType.SUCCESS; + + withTileEntityDo(world, pos, te -> { + boolean wasEmptyHanded = player.getHeldItem(hand) + .isEmpty(); + + ItemStack mainItemStack = te.getHeldItemStack(); + if (!mainItemStack.isEmpty()) { + player.inventory.placeItemBackInInventory(world, mainItemStack); + te.setHeldItem(null); + } + ItemStackHandler outputs = te.processingOutputBuffer; + for (int i = 0; i < outputs.getSlots(); i++) + player.inventory.placeItemBackInInventory(world, outputs.extractItem(i, 64, false)); + + if (!wasEmptyHanded) { + TransportedItemStack heldItem = new TransportedItemStack(player.getHeldItem(hand)); + heldItem.insertedFrom = player.getHorizontalFacing(); + heldItem.prevBeltPosition = .25f; + heldItem.beltPosition = .25f; + te.setHeldItem(heldItem); + player.setHeldItem(hand, ItemStack.EMPTY); + } + + te.markDirty(); + te.sendData(); + }); + + return ActionResultType.SUCCESS; + } + + @Override + public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { + if (!state.hasTileEntity() || state.getBlock() == newState.getBlock()) { + return; + } + + withTileEntityDo(worldIn, pos, te -> { + ItemHelper.dropContents(worldIn, pos, te.processingOutputBuffer); + if (!te.getHeldItemStack() + .isEmpty()) + InventoryHelper.spawnItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), te.getHeldItemStack()); + }); + worldIn.removeTileEntity(pos); + } + + @Override + public void onLanded(IBlockReader worldIn, Entity entityIn) { + super.onLanded(worldIn, entityIn); + if (!AllBlocks.DEPOT.has(worldIn.getBlockState(entityIn.getPosition()))) + return; + if (!(entityIn instanceof ItemEntity)) + return; + if (!entityIn.isAlive()) + return; + if (entityIn.world.isRemote) + return; + ItemEntity itemEntity = (ItemEntity) entityIn; + DirectBeltInputBehaviour inputBehaviour = + TileEntityBehaviour.get(worldIn, entityIn.getPosition(), DirectBeltInputBehaviour.TYPE); + if (inputBehaviour == null) + return; + ItemStack remainder = inputBehaviour.handleInsertion(itemEntity.getItem(), Direction.DOWN, false); + itemEntity.setItem(remainder); + if (remainder.isEmpty()) + itemEntity.remove(); + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotItemHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotItemHandler.java new file mode 100644 index 000000000..c67813496 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotItemHandler.java @@ -0,0 +1,74 @@ +package com.simibubi.create.content.logistics.block.depot; + +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; + +public class DepotItemHandler implements IItemHandler { + + private static final int MAIN_SLOT = 0; + private DepotTileEntity te; + + public DepotItemHandler(DepotTileEntity te) { + this.te = te; + } + + @Override + public int getSlots() { + return 9; + } + + @Override + public ItemStack getStackInSlot(int slot) { + return slot == MAIN_SLOT ? te.getHeldItemStack() : te.processingOutputBuffer.getStackInSlot(slot - 1); + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + if (slot != MAIN_SLOT) + return stack; + if (!te.getHeldItemStack() + .isEmpty()) + return stack; + if (!te.isOutputEmpty()) + return stack; + if (!simulate) { + te.setHeldItem(new TransportedItemStack(stack)); + te.markDirty(); + te.sendData(); + } + return ItemStack.EMPTY; + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + if (slot != MAIN_SLOT) + return te.processingOutputBuffer.extractItem(slot - 1, amount, simulate); + + TransportedItemStack held = te.heldItem; + if (held == null) + return ItemStack.EMPTY; + ItemStack stack = held.stack.copy(); + ItemStack extracted = stack.split(amount); + if (!simulate) { + te.heldItem.stack = stack; + if (stack.isEmpty()) + te.heldItem = null; + te.markDirty(); + te.sendData(); + } + return extracted; + } + + @Override + public int getSlotLimit(int slot) { + return 64; + } + + @Override + public boolean isItemValid(int slot, ItemStack stack) { + return slot == MAIN_SLOT; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java new file mode 100644 index 000000000..85100bbe6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java @@ -0,0 +1,107 @@ +package com.simibubi.create.content.logistics.block.depot; + +import java.util.Random; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; +import com.simibubi.create.foundation.utility.MatrixStacker; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; + +public class DepotRenderer extends SafeTileEntityRenderer { + + public DepotRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + @Override + protected void renderSafe(DepotTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, + int light, int overlay) { + + TransportedItemStack transported = te.heldItem; + MatrixStacker msr = MatrixStacker.of(ms); + + ms.push(); + ms.translate(.5f, 15 / 16f, .5f); + + // Render main item + if (transported != null) { + ms.push(); + msr.nudge(0); + float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); + float sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset); + Vec3d offsetVec = new Vec3d(transported.insertedFrom.getOpposite() + .getDirectionVec()).scale(.5f - offset); + ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); + + if (transported.insertedFrom.getAxis() + .isHorizontal()) { + boolean alongX = transported.insertedFrom.rotateY() + .getAxis() == Axis.X; + if (!alongX) + sideOffset *= -1; + ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); + } + + ItemStack itemStack = transported.stack; + int angle = transported.angle; + Random r = new Random(0); + renderItem(ms, buffer, light, overlay, itemStack, angle, r); + ms.pop(); + } + + // Render output items + for (int i = 0; i < te.processingOutputBuffer.getSlots(); i++) { + ItemStack stack = te.processingOutputBuffer.getStackInSlot(i); + if (stack.isEmpty()) + continue; + ms.push(); + msr.nudge(i); + msr.rotateY(360 / 8f * i); + ms.translate(.35f, 0, 0); + Random r = new Random(i + 1); + int angle = (int) (360 * r.nextFloat()); + renderItem(ms, buffer, light, overlay, stack, angle, r); + ms.pop(); + } + + ms.pop(); + } + + protected void renderItem(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay, ItemStack itemStack, + int angle, Random r) { + ItemRenderer itemRenderer = Minecraft.getInstance() + .getItemRenderer(); + MatrixStacker msr = MatrixStacker.of(ms); + int count = (int) (MathHelper.log2((int) (itemStack.getCount()))) / 2; + boolean blockItem = itemRenderer.getItemModelWithOverrides(itemStack, null, null) + .isGui3d(); + for (int i = 0; i <= count; i++) { + ms.push(); + msr.rotateY(angle); + if (!blockItem) { + ms.translate(0, -.09375, 0); + msr.rotateX(90); + } + if (blockItem) + ms.translate(r.nextFloat() * .0625f * i, 0, r.nextFloat() * .0625f * i); + ms.scale(.5f, .5f, .5f); + itemRenderer.renderItem(itemStack, TransformType.FIXED, light, overlay, ms, buffer); + ms.pop(); + + if (!blockItem) + msr.rotateY(10); + ms.translate(0, blockItem ? 1 / 64d : 1 / 16d, 0); + } + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java new file mode 100644 index 000000000..414a6083b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java @@ -0,0 +1,203 @@ +package com.simibubi.create.content.logistics.block.depot; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.ItemStackHandler; + +public class DepotTileEntity extends SmartTileEntity { + + TransportedItemStack heldItem; + ItemStackHandler processingOutputBuffer; + + DepotItemHandler itemHandler; + LazyOptional lazyItemHandler; + + public DepotTileEntity(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + itemHandler = new DepotItemHandler(this); + lazyItemHandler = LazyOptional.of(() -> itemHandler); + processingOutputBuffer = new ItemStackHandler(8) { + protected void onContentsChanged(int slot) { + markDirty(); + sendData(); + }; + }; + } + + @Override + public void tick() { + super.tick(); + if (heldItem == null) + return; + + heldItem.prevBeltPosition = heldItem.beltPosition; + heldItem.prevSideOffset = heldItem.sideOffset; + float diff = .5f - heldItem.beltPosition; + if (diff > 1 / 512f) { + if (diff > 1 / 32f) + heldItem.angle += 1; + heldItem.beltPosition += diff / 4f; + } + + if (diff > 1 / 16f) + return; + if (world.isRemote) + return; + + BeltProcessingBehaviour processingBehaviour = + TileEntityBehaviour.get(world, pos.up(2), BeltProcessingBehaviour.TYPE); + if (processingBehaviour == null) + return; + if (!heldItem.locked && BeltProcessingBehaviour.isBlocked(world, pos)) + return; + + boolean wasLocked = heldItem.locked; + ItemStack previousItem = heldItem.stack; + TransportedItemStackHandlerBehaviour handler = getBehaviour(TransportedItemStackHandlerBehaviour.TYPE); + ProcessingResult result = wasLocked ? processingBehaviour.handleHeldItem(heldItem, handler) + : processingBehaviour.handleReceivedItem(heldItem, handler); + if (result == ProcessingResult.REMOVE) { + heldItem = null; + sendData(); + return; + } + + heldItem.locked = result == ProcessingResult.HOLD; + if (heldItem.locked != wasLocked || !previousItem.equals(heldItem.stack, false)) + sendData(); + } + + @Override + public CompoundNBT write(CompoundNBT compound) { + if (heldItem != null) + compound.put("HeldItem", heldItem.serializeNBT()); + compound.put("OutputBuffer", processingOutputBuffer.serializeNBT()); + return super.write(compound); + } + + @Override + public void read(CompoundNBT compound) { + heldItem = null; + if (compound.contains("HeldItem")) + heldItem = TransportedItemStack.read(compound.getCompound("HeldItem")); + processingOutputBuffer.deserializeNBT(compound.getCompound("OutputBuffer")); + super.read(compound); + } + + @Override + public void addBehaviours(List behaviours) { + behaviours.add(new DirectBeltInputBehaviour(this).setInsertionHandler(this::tryInsertingFromSide)); + behaviours.add(new TransportedItemStackHandlerBehaviour(this, this::applyToAllItems) + .withStackPlacement(this::getWorldPositionOf)); + } + + public ItemStack getHeldItemStack() { + return heldItem == null ? ItemStack.EMPTY : heldItem.stack; + } + + public void setHeldItem(TransportedItemStack heldItem) { + this.heldItem = heldItem; + } + + @Override + public LazyOptional getCapability(Capability cap, Direction side) { + if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + return lazyItemHandler.cast(); + return super.getCapability(cap, side); + } + + private ItemStack tryInsertingFromSide(TransportedItemStack transportedStack, Direction side, boolean simulate) { + ItemStack inserted = transportedStack.stack; + ItemStack empty = ItemStack.EMPTY; + + if (!getHeldItemStack().isEmpty()) + return inserted; + if (!isOutputEmpty()) + return inserted; + if (simulate) + return empty; + + transportedStack = transportedStack.copy(); + transportedStack.beltPosition = side.getAxis() + .isVertical() ? .5f : 0; + transportedStack.insertedFrom = side; + transportedStack.prevSideOffset = transportedStack.sideOffset; + transportedStack.prevBeltPosition = transportedStack.beltPosition; + setHeldItem(transportedStack); + markDirty(); + sendData(); + + return empty; + } + + private void applyToAllItems(Function> processFunction) { + if (heldItem == null) + return; + + boolean dirty = false; + List toBeAdded = new ArrayList<>(); + TransportedItemStack transportedItemStack = heldItem; + ItemStack stackBefore = transportedItemStack.stack.copy(); + List apply = processFunction.apply(transportedItemStack); + + if (apply == null) + return; + if (apply.size() == 1 && apply.get(0).stack.equals(stackBefore, false)) + return; + + dirty = true; + heldItem = null; + toBeAdded.addAll(apply); + for (TransportedItemStack added : toBeAdded) { + if (heldItem == null) { + heldItem = added; + heldItem.beltPosition = 0.5f; + heldItem.prevBeltPosition = 0.5f; + continue; + } + for (int i = 0; i < processingOutputBuffer.getSlots(); i++) { + ItemStack stackInSlot = processingOutputBuffer.getStackInSlot(i); + if (!stackInSlot.isEmpty()) + continue; + processingOutputBuffer.setStackInSlot(i, added.stack); + break; + } + } + + if (dirty) { + markDirty(); + sendData(); + } + } + + public boolean isOutputEmpty() { + for (int i = 0; i < processingOutputBuffer.getSlots(); i++) + if (!processingOutputBuffer.getStackInSlot(i).isEmpty()) + return false; + return true; + } + + private Vec3d getWorldPositionOf(TransportedItemStack transported) { + Vec3d offsetVec = new Vec3d(.5f, 14 / 16f, .5f); + return offsetVec.add(new Vec3d(pos)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index e6088f5b9..b99794025 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -138,7 +138,7 @@ public class FunnelBlock extends AttachedLogisticalBlock if (controllerBelt == null) return; - controllerBelt.getInventory().forEachWithin(belt.index + .5f, .55f, (transportedItemStack) -> { + controllerBelt.getInventory().applyToEachWithin(belt.index + .5f, .55f, (transportedItemStack) -> { controllerBelt.getInventory().eject(transportedItemStack); return Collections.emptyList(); }); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java index 481e064f6..c6aa76d99 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java @@ -7,7 +7,7 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; public abstract class TileEntityBehaviour { @@ -90,12 +90,12 @@ public abstract class TileEntityBehaviour { return tileEntity.getWorld(); } - public static T get(ILightReader reader, BlockPos pos, + public static T get(IBlockReader reader, BlockPos pos, BehaviourType type) { return get(reader.getTileEntity(pos), type); } - public static void destroy(ILightReader reader, BlockPos pos, + public static void destroy(IBlockReader reader, BlockPos pos, BehaviourType type) { T behaviour = get(reader.getTileEntity(pos), type); if (behaviour != null) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java index 2b64f01d9..2cb4f867a 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java @@ -1,15 +1,17 @@ package com.simibubi.create.foundation.tileEntity.behaviour.belt; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; + /** - * Behaviour for TileEntities which can process items on belts or depots beneath them. - * Currently only supports placement location 2 spaces above the belt block. - * Example use: Mechanical Press + * Behaviour for TileEntities which can process items on belts or depots beneath + * them. Currently only supports placement location 2 spaces above the belt + * block. Example use: Mechanical Press */ public class BeltProcessingBehaviour extends TileEntityBehaviour { @@ -18,7 +20,7 @@ public class BeltProcessingBehaviour extends TileEntityBehaviour { public static enum ProcessingResult { PASS, HOLD, REMOVE; } - + private ProcessingCallback onItemEnter; private ProcessingCallback continueProcessing; @@ -27,33 +29,40 @@ public class BeltProcessingBehaviour extends TileEntityBehaviour { onItemEnter = (s, i) -> ProcessingResult.PASS; continueProcessing = (s, i) -> ProcessingResult.PASS; } - + public BeltProcessingBehaviour whenItemEnters(ProcessingCallback callback) { onItemEnter = callback; return this; } - + public BeltProcessingBehaviour whileItemHeld(ProcessingCallback callback) { continueProcessing = callback; return this; } + public static boolean isBlocked(IBlockReader world, BlockPos processingSpace) { + return !world.getBlockState(processingSpace.up()) + .getCollisionShape(world, processingSpace.up()) + .isEmpty(); + } + @Override public BehaviourType getType() { return TYPE; } - public ProcessingResult handleReceivedItem(TransportedItemStack stack, BeltInventory inventory) { + public ProcessingResult handleReceivedItem(TransportedItemStack stack, + TransportedItemStackHandlerBehaviour inventory) { return onItemEnter.apply(stack, inventory); } - public ProcessingResult handleHeldItem(TransportedItemStack stack, BeltInventory inventory) { + public ProcessingResult handleHeldItem(TransportedItemStack stack, TransportedItemStackHandlerBehaviour inventory) { return continueProcessing.apply(stack, inventory); } @FunctionalInterface public interface ProcessingCallback { - public ProcessingResult apply(TransportedItemStack stack, BeltInventory inventory); + public ProcessingResult apply(TransportedItemStack stack, TransportedItemStackHandlerBehaviour inventory); } } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java new file mode 100644 index 000000000..d6484749c --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java @@ -0,0 +1,54 @@ +package com.simibubi.create.foundation.tileEntity.behaviour.belt; + +import java.util.List; +import java.util.function.Function; + +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.util.math.Vec3d; + +public class TransportedItemStackHandlerBehaviour extends TileEntityBehaviour { + + public static BehaviourType TYPE = new BehaviourType<>(); + private ProcessingCallback processingCallback; + private PositionGetter positionGetter; + + public TransportedItemStackHandlerBehaviour(SmartTileEntity te, ProcessingCallback processingCallback) { + super(te); + this.processingCallback = processingCallback; + positionGetter = t -> VecHelper.getCenterOf(te.getPos()); + } + + public TransportedItemStackHandlerBehaviour withStackPlacement(PositionGetter function) { + this.positionGetter = function; + return this; + } + + public void handleProcessingOnAllItems(Function> processFunction) { + this.processingCallback.applyToAllItems(processFunction); + } + + public Vec3d getWorldPositionOf(TransportedItemStack transported) { + return positionGetter.getWorldPositionVector(transported); + } + + @Override + public BehaviourType getType() { + return TYPE; + } + + @FunctionalInterface + public interface ProcessingCallback { + public void applyToAllItems(Function> processFunction); + } + + @FunctionalInterface + public interface PositionGetter { + public Vec3d getWorldPositionVector(TransportedItemStack transported); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Iterate.java b/src/main/java/com/simibubi/create/foundation/utility/Iterate.java index 86a15ee16..bf6fe0122 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Iterate.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Iterate.java @@ -10,7 +10,7 @@ import net.minecraft.util.math.BlockPos; public class Iterate { public static final boolean[] trueAndFalse = { true, false }; - public static final int[] zeroAndOne = { 1, -1 }; + public static final int[] zeroAndOne = { 0, 1 }; public static final int[] positiveAndNegative = { 1, -1 }; public static final Direction[] directions = Direction.values(); public static final Direction[] horizontalDirections = getHorizontals(); From ce1c5d86975843d9a568f78ae3a2fe20e0a4ffef Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sun, 28 Jun 2020 13:31:11 +0200 Subject: [PATCH 21/47] Belt funnel & World funnel implementation - Funnels on belts can now extract and insert items according to their setting and filter - Funnels can now push/pull items to/from a depot - Fixed creative crates not marking their inventory as removed when destroyed - Funnels can now pick up items colliding with their front face - When holding a funnel the game will now always prefer placement over block interaction - Fixed items not able to be held in place by tunnels --- .../java/com/simibubi/create/AllShapes.java | 4 + .../relays/belt/BeltTileEntity.java | 5 +- .../BeltFunnelInteractionHandler.java | 63 +++++++++++ .../relays/belt/transport/BeltInventory.java | 13 ++- .../BeltTunnelInteractionHandler.java | 4 +- .../block/depot/DepotTileEntity.java | 12 +- .../inventories/CreativeCrateTileEntity.java | 14 ++- .../block/realityFunnel/BeltFunnelBlock.java | 25 +++++ .../block/realityFunnel/FunnelItem.java | 12 ++ .../realityFunnel/RealityFunnelBlock.java | 65 ++++++++++- .../RealityFunnelTileEntity.java | 105 +++++++++++++++++- .../TransportedItemStackHandlerBehaviour.java | 14 ++- .../inventory/ExtractingBehaviour.java | 7 +- 13 files changed, 314 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 787f245af..daddda735 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -69,6 +69,10 @@ public class AllShapes { .add(1, 6, 1, 15, 10, 15) .add(0, 10, 0, 16, 16, 16) .forDirectional(UP), + REALITY_FUNNEL_COLLISION = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) + .add(1, 6, 1, 15, 10, 15) + .add(0, 10, 0, 16, 13, 16) + .forDirectional(UP), CHUTE_FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) .add(1, 5, 1, 15, 16, 15) .add(0, 8, 0, 16, 14, 16) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 90d9dba00..d04364db7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -338,11 +338,12 @@ public class BeltTileEntity extends KineticTileEntity { return inventory; } - private void applyToAllItems(Function> processFunction) { + private void applyToAllItems(float maxDistanceFromCenter, + Function> processFunction) { BeltTileEntity controller = getControllerTE(); if (controller != null) controller.getInventory() - .applyToEachWithin(index + .5f, .51f, processFunction); + .applyToEachWithin(index + .5f, maxDistanceFromCenter, processFunction); } private Vec3d getWorldPositionOf(TransportedItemStack transported) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java new file mode 100644 index 000000000..b15b3d2f6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java @@ -0,0 +1,63 @@ +package com.simibubi.create.content.contraptions.relays.belt.transport; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; +import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; + +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; + +public class BeltFunnelInteractionHandler { + + public static boolean checkForFunnels(BeltInventory beltInventory, TransportedItemStack currentItem, + float nextOffset) { + boolean beltMovementPositive = beltInventory.beltMovementPositive; + int firstUpcomingSegment = (int) (currentItem.beltPosition + (beltMovementPositive ? .5f : -.5f)); + int step = beltMovementPositive ? 1 : -1; + firstUpcomingSegment = MathHelper.clamp(firstUpcomingSegment, 0, beltInventory.belt.beltLength - 1); + + for (int segment = firstUpcomingSegment; beltMovementPositive ? segment + .5f <= nextOffset + : segment + .5f >= nextOffset; segment += step) { + BlockPos funnelPos = BeltHelper.getPositionForOffset(beltInventory.belt, segment) + .up(); + World world = beltInventory.belt.getWorld(); + BlockState funnelState = world.getBlockState(funnelPos); + if (!AllBlocks.BELT_FUNNEL.has(funnelState)) + continue; + if (funnelState.get(BeltFunnelBlock.HORIZONTAL_FACING) != beltInventory.belt.getMovementFacing() + .getOpposite()) + continue; + + currentItem.beltPosition = segment + .5f; + + if (funnelState.get(BeltFunnelBlock.PUSHING)) + return true; + if (funnelState.get(BeltFunnelBlock.POWERED)) + return true; + InsertingBehaviour behaviour = TileEntityBehaviour.get(world, funnelPos, InsertingBehaviour.TYPE); + FilteringBehaviour filtering = TileEntityBehaviour.get(world, funnelPos, FilteringBehaviour.TYPE); + if (behaviour == null || world.isRemote) + return true; + if (filtering != null && !filtering.test(currentItem.stack)) + return true; + + ItemStack before = currentItem.stack.copy(); + ItemStack remainder = behaviour.insert(before, false); + if (before.equals(remainder, false)) + return true; + + currentItem.stack = remainder; + beltInventory.belt.sendData(); + return true; + } + + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index 2106571e9..eeccc7c90 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -138,7 +138,12 @@ public class BeltInventory { } // Belt Tunnels - BeltTunnelInteractionHandler.flapTunnelsAndCheckIfStuck(this, currentItem, nextOffset); + if (BeltTunnelInteractionHandler.flapTunnelsAndCheckIfStuck(this, currentItem, nextOffset)) + continue; + + // Belt Funnels + if (BeltFunnelInteractionHandler.checkForFunnels(this, currentItem, nextOffset)) + continue; // Apply Movement currentItem.beltPosition += limitedMovement; @@ -154,10 +159,8 @@ public class BeltInventory { int lastOffset = beltMovementPositive ? belt.beltLength - 1 : 0; BlockPos nextPosition = BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); - if (ending == Ending.FUNNEL) { - // TODO + if (ending == Ending.FUNNEL) continue; - } if (ending == Ending.INSERT) { DirectBeltInputBehaviour inputBehaviour = @@ -267,7 +270,7 @@ public class BeltInventory { } private enum Ending { - UNRESOLVED(0), EJECT(0), INSERT(.25f), FUNNEL(.35f), BLOCKED(.45f); + UNRESOLVED(0), EJECT(0), INSERT(.25f), FUNNEL(.5f), BLOCKED(.45f); private float margin; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java index 7f7d69a75..de2a8bb91 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -28,8 +28,10 @@ public class BeltTunnelInteractionHandler { if (!beltInventory.beltMovementPositive && nextOffset == 0) upcomingSegment = -1; if (currentSegment != upcomingSegment) { - if (stuckAtTunnel(beltInventory, upcomingSegment, current.stack, movementFacing)) + if (stuckAtTunnel(beltInventory, upcomingSegment, current.stack, movementFacing)) { + current.beltPosition = currentSegment + (beltInventory.beltMovementPositive ? .99f : -.01f); return true; + } if (!beltInventory.belt.getWorld().isRemote) { flapTunnel(beltInventory, currentSegment, movementFacing, false); flapTunnel(beltInventory, upcomingSegment, movementFacing.getOpposite(), true); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java index 414a6083b..343ab0567 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java @@ -148,9 +148,12 @@ public class DepotTileEntity extends SmartTileEntity { return empty; } - private void applyToAllItems(Function> processFunction) { + private void applyToAllItems(float maxDistanceFromCentre, + Function> processFunction) { if (heldItem == null) return; + if (.5f - heldItem.beltPosition > maxDistanceFromCentre) + return; boolean dirty = false; List toBeAdded = new ArrayList<>(); @@ -187,10 +190,11 @@ public class DepotTileEntity extends SmartTileEntity { sendData(); } } - + public boolean isOutputEmpty() { - for (int i = 0; i < processingOutputBuffer.getSlots(); i++) - if (!processingOutputBuffer.getStackInSlot(i).isEmpty()) + for (int i = 0; i < processingOutputBuffer.getSlots(); i++) + if (!processingOutputBuffer.getStackInSlot(i) + .isEmpty()) return false; return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java index a98bee4e5..af0fba545 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateTileEntity.java @@ -57,6 +57,12 @@ public class CreativeCrateTileEntity extends CrateTileEntity { otherCrate.filter.setFilter(filter); } + @Override + public void remove() { + if (itemHandler != null) + itemHandler.invalidate(); + } + private CreativeCrateTileEntity getOtherCrate() { if (!AllBlocks.CREATIVE_CRATE.has(getBlockState())) return null; @@ -72,8 +78,9 @@ public class CreativeCrateTileEntity extends CrateTileEntity { CreativeCrateTileEntity otherCrate = getOtherCrate(); if (otherCrate == null) return; - - filter.withCallback($ -> {}); + + filter.withCallback($ -> { + }); filter.setFilter(otherCrate.filter.getFilter()); filter.withCallback(this::filterChanged); } @@ -90,7 +97,8 @@ public class CreativeCrateTileEntity extends CrateTileEntity { @Override protected void rotate(BlockState state, MatrixStack ms) { - MatrixStacker.of(ms).rotateX(90); + MatrixStacker.of(ms) + .rotateX(90); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index 14feeab13..7d1b7857d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -1,8 +1,10 @@ package com.simibubi.create.content.logistics.block.realityFunnel; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.foundation.utility.Lang; @@ -10,9 +12,11 @@ import com.simibubi.create.foundation.utility.VoxelShaper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.EnumProperty; import net.minecraft.state.IProperty; import net.minecraft.state.StateContainer.Builder; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; @@ -22,6 +26,7 @@ import net.minecraft.world.IBlockReader; import net.minecraft.world.ILightReader; import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { @@ -47,6 +52,26 @@ public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED)); } + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + BlockState state = super.getStateForPlacement(ctx); + World world = ctx.getWorld(); + BlockPos posBelow = ctx.getPos() + .down(); + BlockState stateBelow = world.getBlockState(posBelow); + if (!AllBlocks.BELT.has(stateBelow)) + return state; + TileEntity teBelow = world.getTileEntity(posBelow); + if (teBelow == null || !(teBelow instanceof BeltTileEntity)) + return state; + BeltTileEntity beltTileEntity = (BeltTileEntity) teBelow; + if (beltTileEntity.getSpeed() == 0) + return state; + Direction movementFacing = beltTileEntity.getMovementFacing(); + Direction funnelFacing = ctx.getFace(); + return state.with(PUSHING, movementFacing == funnelFacing); + } + @Override protected void fillStateContainer(Builder p_206840_1_) { super.fillStateContainer(p_206840_1_.add(SHAPE)); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java index 5dd0d6ed8..da693fe5b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java @@ -10,13 +10,25 @@ import net.minecraft.util.Direction; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.eventbus.api.Event.Result; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +@EventBusSubscriber public class FunnelItem extends BlockItem { public FunnelItem(Block p_i48527_1_, Properties p_i48527_2_) { super(p_i48527_1_, p_i48527_2_); } + @SubscribeEvent + public static void funnelItemAlwaysPlacesWhenUsed(PlayerInteractEvent.RightClickBlock event) { + if (event.getItemStack() + .getItem() instanceof FunnelItem) + event.setUseBlock(Result.DENY); + } + @Override protected BlockState getStateForPlacement(BlockItemUseContext ctx) { BlockState state = super.getStateForPlacement(ctx); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index 69cc5eb62..b0985465a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -6,17 +6,27 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; +import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ProperDirectionalBlock; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; +import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; +import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; @@ -24,7 +34,7 @@ import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public class RealityFunnelBlock extends ProperDirectionalBlock { +public class RealityFunnelBlock extends ProperDirectionalBlock implements ITE { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; @@ -48,6 +58,39 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { .isBlockPowered(context.getPos())); } + @Override + public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { + if (worldIn.isRemote) + return; + if (!(entityIn instanceof ItemEntity)) + return; + if (state.get(POWERED)) + return; + ItemEntity itemEntity = (ItemEntity) entityIn; + + Direction direction = state.get(FACING); + Vec3d diff = entityIn.getPositionVec() + .subtract(VecHelper.getCenterOf(pos)); + double projectedDiff = direction.getAxis() + .getCoordinate(diff.x, diff.y, diff.z); + if (projectedDiff < 0 == (direction.getAxisDirection() == AxisDirection.POSITIVE)) + return; + + FilteringBehaviour filter = TileEntityBehaviour.get(worldIn, pos, FilteringBehaviour.TYPE); + InsertingBehaviour inserter = TileEntityBehaviour.get(worldIn, pos, InsertingBehaviour.TYPE); + if (inserter == null) + return; + ItemStack toInsert = itemEntity.getItem(); + if (filter != null && !filter.test(toInsert)) + return; + + ItemStack remainder = inserter.insert(toInsert, false); + if (remainder.isEmpty()) + itemEntity.remove(); + if (remainder.getCount() < toInsert.getCount()) + itemEntity.setItem(remainder); + } + @Override public boolean hasTileEntity(BlockState state) { return true; @@ -64,11 +107,17 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { } @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { return AllShapes.REALITY_FUNNEL.get(state.get(FACING)); } + @Override + public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { + if (context.getEntity() instanceof ItemEntity) + return AllShapes.REALITY_FUNNEL_COLLISION.get(state.get(FACING)); + return getShape(state, world, pos, context); + } + @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world, BlockPos pos, BlockPos p_196271_6_) { @@ -131,9 +180,8 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public void onReplaced(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, boolean p_196243_5_) { - if (p_196243_1_.hasTileEntity() - && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !isFunnel(p_196243_4_) - || !p_196243_4_.hasTileEntity())) { + if (p_196243_1_.hasTileEntity() && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !isFunnel(p_196243_4_) + || !p_196243_4_.hasTileEntity())) { p_196243_2_.removeTileEntity(p_196243_3_); } } @@ -144,4 +192,9 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { || state.getBlock() instanceof HorizontalInteractionFunnelBlock; } + @Override + public Class getTileEntityClass() { + return RealityFunnelTileEntity.class; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java index 39283c24a..4e13c7819 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java @@ -1,36 +1,135 @@ package com.simibubi.create.content.logistics.block.realityFunnel; +import java.util.ArrayList; import java.util.List; +import java.util.function.Supplier; +import org.apache.commons.lang3.tuple.Pair; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.inventory.ExtractingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InventoryManagementBehaviour.Attachments; +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; public class RealityFunnelTileEntity extends SmartTileEntity { private FilteringBehaviour filtering; private InsertingBehaviour inserting; + private ExtractingBehaviour extracting; + + static enum Mode { + INVALID, PAUSED, COLLECT, BELT, CHUTE_SIDE, CHUTE_END + } public RealityFunnelTileEntity(TileEntityType tileEntityTypeIn) { super(tileEntityTypeIn); } + public Mode determineCurrentMode() { + BlockState state = getBlockState(); + if (!RealityFunnelBlock.isFunnel(state)) + return Mode.INVALID; + if (state.get(BlockStateProperties.POWERED)) + return Mode.PAUSED; + if (AllBlocks.BELT_FUNNEL.has(state)) + return Mode.BELT; + if (AllBlocks.CHUTE_FUNNEL.has(state)) + return Mode.CHUTE_SIDE; + + Direction facing = RealityFunnelBlock.getFunnelFacing(state); + BlockState input = world.getBlockState(pos.offset(facing)); + + if (AllBlocks.CHUTE.has(input)) + return Mode.CHUTE_END; + return Mode.COLLECT; + } + + @Override + public void tick() { + super.tick(); + Mode mode = determineCurrentMode(); + if (mode == Mode.BELT) + tickAsBeltFunnel(); + } + + public void tickAsBeltFunnel() { + BlockState blockState = getBlockState(); + Direction facing = blockState.get(BeltFunnelBlock.HORIZONTAL_FACING); + if (world.isRemote) + return; + + if (!blockState.get(BeltFunnelBlock.PUSHING)) { + // Belts handle insertion from their side + if (AllBlocks.BELT.has(world.getBlockState(pos.down()))) + return; + TransportedItemStackHandlerBehaviour handler = + TileEntityBehaviour.get(world, pos.down(), TransportedItemStackHandlerBehaviour.TYPE); + if (handler == null) + return; + handler.handleCenteredProcessingOnAllItems(1 / 32f, this::collectFromHandler); + return; + } + + DirectBeltInputBehaviour inputBehaviour = + TileEntityBehaviour.get(world, pos.down(), DirectBeltInputBehaviour.TYPE); + if (inputBehaviour == null) + return; + if (!inputBehaviour.canInsertFromSide(facing)) + return; + + extracting.setCallback(stack -> inputBehaviour.handleInsertion(stack, facing, false)); + extracting.withAdditionalFilter(stack -> inputBehaviour.handleInsertion(stack, facing, true) + .isEmpty()); + extracting.extract(); + } + + private List collectFromHandler(TransportedItemStack stack) { + ItemStack toInsert = stack.stack.copy(); + if (!filtering.test(toInsert)) + return null; + ItemStack remainder = inserting.insert(toInsert, false); + if (remainder.equals(stack.stack, false)) + return null; + List list = new ArrayList<>(); + if (remainder.isEmpty()) + return list; + TransportedItemStack changed = stack.copy(); + changed.stack = remainder; + list.add(changed); + return list; + } + @Override public void addBehaviours(List behaviours) { + Supplier>> direction = + Attachments.toward(() -> RealityFunnelBlock.getFunnelFacing(getBlockState()) + .getOpposite()); + + inserting = new InsertingBehaviour(this, direction); + extracting = new ExtractingBehaviour(this, direction); filtering = new FilteringBehaviour(this, new FunnelFilterSlotPositioning()); + behaviours.add(filtering); - inserting = - new InsertingBehaviour(this, Attachments.toward(() -> RealityFunnelBlock.getFunnelFacing(getBlockState()))); behaviours.add(inserting); + behaviours.add(extracting); } @Override public double getMaxRenderDistanceSquared() { return 64; } - + } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java index d6484749c..4e667247a 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java @@ -22,20 +22,25 @@ public class TransportedItemStackHandlerBehaviour extends TileEntityBehaviour { this.processingCallback = processingCallback; positionGetter = t -> VecHelper.getCenterOf(te.getPos()); } - + public TransportedItemStackHandlerBehaviour withStackPlacement(PositionGetter function) { this.positionGetter = function; return this; } public void handleProcessingOnAllItems(Function> processFunction) { - this.processingCallback.applyToAllItems(processFunction); + handleCenteredProcessingOnAllItems(.51f, processFunction); + } + + public void handleCenteredProcessingOnAllItems(float maxDistanceFromCenter, + Function> processFunction) { + this.processingCallback.applyToAllItems(maxDistanceFromCenter, processFunction); } public Vec3d getWorldPositionOf(TransportedItemStack transported) { return positionGetter.getWorldPositionVector(transported); } - + @Override public BehaviourType getType() { return TYPE; @@ -43,7 +48,8 @@ public class TransportedItemStackHandlerBehaviour extends TileEntityBehaviour { @FunctionalInterface public interface ProcessingCallback { - public void applyToAllItems(Function> processFunction); + public void applyToAllItems(float maxDistanceFromCenter, + Function> processFunction); } @FunctionalInterface diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java index a7ed96207..aff1a79e1 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/ExtractingBehaviour.java @@ -27,8 +27,13 @@ public class ExtractingBehaviour extends InventoryManagementBehaviour { private Predicate customFilter; private Consumer callback; + public ExtractingBehaviour(SmartTileEntity te, Supplier>> attachments) { + this(te, attachments, item -> { + }); + } + public ExtractingBehaviour(SmartTileEntity te, Supplier>> attachments, - Consumer onExtract) { + Consumer onExtract) { super(te, attachments); customAmountFilter = stack -> 64; customFilter = stack -> true; From 5411bc356539fd7711f503a44a6220e231b3efc8 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sun, 28 Jun 2020 18:16:46 +0200 Subject: [PATCH 22/47] Dangle Flap Reflappified - Belt funnels now render with animated flaps - Extracting funnels can now be given a stack size - Filtering now supports setting the extraction count for empty filter slots (wildcard) --- .../com/simibubi/create/AllBlockPartials.java | 1 + .../com/simibubi/create/AllTileEntities.java | 3 +- .../BeltFunnelInteractionHandler.java | 20 ++++- .../realityFunnel/RealityFunnelRenderer.java | 68 ++++++++++++++ .../RealityFunnelTileEntity.java | 53 ++++++++++- .../tileEntity/behaviour/ValueBox.java | 11 ++- .../filtering/FilteringBehaviour.java | 16 +++- .../behaviour/filtering/FilteringHandler.java | 3 - .../block/belt_funnel/block_extended.json | 88 +++--------------- .../block/belt_funnel/block_retracted.json | 89 +++---------------- .../create/models/block/belt_funnel/flap.json | 21 +++++ 11 files changed, 202 insertions(+), 171 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java create mode 100644 src/main/resources/assets/create/models/block/belt_funnel/flap.json diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index ccd9cd3bc..f707e021b 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -58,6 +58,7 @@ public class AllBlockPartials { DEPLOYER_HAND_HOLDING = get("deployer/hand_holding"), ANALOG_LEVER_HANDLE = get("analog_lever/handle"), ANALOG_LEVER_INDICATOR = get("analog_lever/indicator"), + BELT_FUNNEL_FLAP = get("belt_funnel/flap"), BELT_TUNNEL_FLAP = get("belt_tunnel/flap"), BELT_TUNNEL_INDICATOR = get("belt_tunnel/indicator"), FLEXPEATER_INDICATOR = get("diodes/indicator"), diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 7c86504d4..141699d12 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -86,6 +86,7 @@ import com.simibubi.create.content.logistics.block.mechanicalArm.ArmRenderer; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; import com.simibubi.create.content.logistics.block.packager.PackagerRenderer; import com.simibubi.create.content.logistics.block.packager.PackagerTileEntity; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelRenderer; import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelTileEntity; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverRenderer; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; @@ -309,7 +310,7 @@ public class AllTileEntities { bind(TRANSPOSER, SmartTileEntityRenderer::new); bind(LINKED_TRANSPOSER, SmartTileEntityRenderer::new); bind(FUNNEL, SmartTileEntityRenderer::new); - bind(REALITY_FUNNEL, SmartTileEntityRenderer::new); + bind(REALITY_FUNNEL, RealityFunnelRenderer::new); bind(BELT_TUNNEL, BeltTunnelRenderer::new); bind(MECHANICAL_ARM, ArmRenderer::new); bind(BELT_OBSERVER, BeltObserverRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java index b15b3d2f6..909d7760d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java @@ -3,12 +3,14 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; @@ -36,22 +38,32 @@ public class BeltFunnelInteractionHandler { currentItem.beltPosition = segment + .5f; + if (world.isRemote) + return true; if (funnelState.get(BeltFunnelBlock.PUSHING)) return true; if (funnelState.get(BeltFunnelBlock.POWERED)) return true; - InsertingBehaviour behaviour = TileEntityBehaviour.get(world, funnelPos, InsertingBehaviour.TYPE); - FilteringBehaviour filtering = TileEntityBehaviour.get(world, funnelPos, FilteringBehaviour.TYPE); - if (behaviour == null || world.isRemote) + + TileEntity te = world.getTileEntity(funnelPos); + if (!(te instanceof RealityFunnelTileEntity)) + return true; + + RealityFunnelTileEntity funnelTE = (RealityFunnelTileEntity) te; + InsertingBehaviour inserting = TileEntityBehaviour.get(funnelTE, InsertingBehaviour.TYPE); + FilteringBehaviour filtering = TileEntityBehaviour.get(funnelTE, FilteringBehaviour.TYPE); + + if (inserting == null) return true; if (filtering != null && !filtering.test(currentItem.stack)) return true; ItemStack before = currentItem.stack.copy(); - ItemStack remainder = behaviour.insert(before, false); + ItemStack remainder = inserting.insert(before, false); if (before.equals(remainder, false)) return true; + funnelTE.flap(true); currentItem.stack = remainder; beltInventory.belt.sendData(); return true; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java new file mode 100644 index 000000000..49955aeaf --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java @@ -0,0 +1,68 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.MatrixStacker; +import com.simibubi.create.foundation.utility.SuperByteBuffer; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; + +public class RealityFunnelRenderer extends SmartTileEntityRenderer { + + public RealityFunnelRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + @Override + protected void renderSafe(RealityFunnelTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, + int light, int overlay) { + super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + + if (!te.hasFlap()) + return; + + IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); + SuperByteBuffer flapBuffer = AllBlockPartials.BELT_FUNNEL_FLAP.renderOn(te.getBlockState()); + Vec3d pivot = VecHelper.voxelSpace(0, 10, 9.5f); + MatrixStacker msr = MatrixStacker.of(ms); + + float horizontalAngle = AngleHelper.horizontalAngle(RealityFunnelBlock.getFunnelFacing(te.getBlockState()) + .getOpposite()); + float f = te.flap.get(partialTicks); + + ms.push(); + msr.centre() + .rotateY(horizontalAngle) + .unCentre(); + + for (int segment = 0; segment <= 3; segment++) { + ms.push(); + + float intensity = segment == 3 ? 1.5f : segment + 1; + float abs = Math.abs(f); + float flapAngle = MathHelper.sin((float) ((1 - abs) * Math.PI * intensity)) * 30 * -f; + if (f > 0) + flapAngle *= .5f; + + msr.translate(pivot) + .rotateX(flapAngle) + .translateBack(pivot); + + flapBuffer.light(light) + .renderInto(ms, vb); + + ms.pop(); + ms.translate(-3 / 16f, 0, 0); + } + ms.pop(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java index 4e13c7819..1f28ccc85 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelTileEntity.java @@ -8,6 +8,8 @@ import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock.Shape; +import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; @@ -19,6 +21,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InventoryMa import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; @@ -30,12 +33,18 @@ public class RealityFunnelTileEntity extends SmartTileEntity { private InsertingBehaviour inserting; private ExtractingBehaviour extracting; + int sendFlap; + InterpolatedChasingValue flap; + static enum Mode { INVALID, PAUSED, COLLECT, BELT, CHUTE_SIDE, CHUTE_END } public RealityFunnelTileEntity(TileEntityType tileEntityTypeIn) { super(tileEntityTypeIn); + flap = new InterpolatedChasingValue().start(.25f) + .target(0) + .withSpeed(.05f); } public Mode determineCurrentMode() { @@ -68,6 +77,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { public void tickAsBeltFunnel() { BlockState blockState = getBlockState(); Direction facing = blockState.get(BeltFunnelBlock.HORIZONTAL_FACING); + flap.tick(); if (world.isRemote) return; @@ -90,7 +100,11 @@ public class RealityFunnelTileEntity extends SmartTileEntity { if (!inputBehaviour.canInsertFromSide(facing)) return; - extracting.setCallback(stack -> inputBehaviour.handleInsertion(stack, facing, false)); + extracting.setCallback(stack -> { + flap(false); + inputBehaviour.handleInsertion(stack, facing, false); + }); + extracting.withAdditionalFilter(stack -> inputBehaviour.handleInsertion(stack, facing, true) .isEmpty()); extracting.extract(); @@ -104,6 +118,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { if (remainder.equals(stack.stack, false)) return null; List list = new ArrayList<>(); + flap(true); if (remainder.isEmpty()) return list; TransportedItemStack changed = stack.copy(); @@ -120,16 +135,48 @@ public class RealityFunnelTileEntity extends SmartTileEntity { inserting = new InsertingBehaviour(this, direction); extracting = new ExtractingBehaviour(this, direction); - filtering = new FilteringBehaviour(this, new FunnelFilterSlotPositioning()); + filtering = new FilteringBehaviour(this, new FunnelFilterSlotPositioning()).showCountWhen(() -> { + BlockState blockState = getBlockState(); + return blockState.getBlock() instanceof HorizontalInteractionFunnelBlock + && blockState.get(HorizontalInteractionFunnelBlock.PUSHING); + }); behaviours.add(filtering); behaviours.add(inserting); behaviours.add(extracting); } + public void flap(boolean inward) { + sendFlap = inward ? 1 : -1; + sendData(); + } + + public boolean hasFlap() { + return AllBlocks.BELT_FUNNEL.has(getBlockState()) + && getBlockState().get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED; + } + + @Override + public CompoundNBT writeToClient(CompoundNBT compound) { + if (sendFlap != 0) { + compound.putInt("Flap", sendFlap); + sendFlap = 0; + } + return super.writeToClient(compound); + } + + @Override + public void readClientUpdate(CompoundNBT tag) { + if (tag.contains("Flap")) { + int direction = tag.getInt("Flap"); + flap.set(direction); + } + super.readClientUpdate(tag); + } + @Override public double getMaxRenderDistanceSquared() { - return 64; + return hasFlap() ? super.getMaxRenderDistanceSquared() : 64; } } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java index 630ed13b3..3bda767f3 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java @@ -138,12 +138,19 @@ public class ValueBox extends ChasingAABBOutline { ms.translate(17.5f, -5f, 7f); boolean isFilter = stack.getItem() instanceof FilterItem; + boolean isEmpty = stack.isEmpty(); + float scale = 1.5f; + ms.translate(-font.getStringWidth(countString), 0, 0); + if (isFilter) ms.translate(3, 8, 7.25f); + else if (isEmpty) { + ms.translate(-17, -2, 3f); + scale = 2f; + } else - ms.translate(-7 - font.getStringWidth(countString), 10, 10 + 1 / 4f); + ms.translate(-7, 10, 10 + 1 / 4f); - float scale = 1.5f; ms.scale(scale, scale, scale); drawString(ms, buffer, countString, 0, 0, isFilter ? 0xFFFFFF : 0xEDEDED); ms.translate(0, 0, -1 / 16f); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java index e47b2cb6b..1f4fc520a 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java @@ -30,6 +30,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { public int count; private Consumer callback; private Supplier isActive; + private Supplier showCountPredicate; int scrollableValue; int ticksUntilScrollPacket; @@ -40,11 +41,13 @@ public class FilteringBehaviour extends TileEntityBehaviour { filter = ItemStack.EMPTY; slotPositioning = slot; showCount = false; - callback = stack -> {}; + callback = stack -> { + }; isActive = () -> true; textShift = Vec3d.ZERO; count = 0; ticksUntilScrollPacket = -1; + showCountPredicate = () -> showCount; } @Override @@ -95,12 +98,17 @@ public class FilteringBehaviour extends TileEntityBehaviour { callback = filterCallback; return this; } - + public FilteringBehaviour onlyActiveWhen(Supplier condition) { isActive = condition; return this; } + public FilteringBehaviour showCountWhen(Supplier condition) { + showCountPredicate = condition; + return this; + } + public FilteringBehaviour showCount() { showCount = true; return this; @@ -143,7 +151,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { } public boolean isCountVisible() { - return showCount && !getFilter().isEmpty(); + return showCountPredicate.get(); } public boolean test(ItemStack stack) { @@ -168,7 +176,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { public boolean anyAmount() { return count == 0; } - + public boolean isActive() { return isActive.get(); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java index 4fa82b5e0..1128431b9 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java @@ -99,9 +99,6 @@ public class FilteringHandler { if (!filtering.testHit(objectMouseOver.getHitVec())) return false; ItemStack filterItem = filtering.getFilter(); - if (filterItem.isEmpty()) - return false; - filtering.ticksUntilScrollPacket = 10; int maxAmount = (filterItem.getItem() instanceof FilterItem) ? 64 : filterItem.getMaxStackSize(); filtering.scrollableValue = diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index bbdb5514d..06b398e96 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -41,7 +41,7 @@ "north": {"uv": [8, 5.5, 9, 13.5], "texture": "#4"}, "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, "south": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, "up": {"uv": [14, 0, 16, 6], "texture": "#2"} } }, @@ -52,7 +52,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, "faces": { "north": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"}, - "east": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, "south": {"uv": [16, 5.5, 15, 13.5], "texture": "#4"}, "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, "up": {"uv": [16, 0, 14, 6], "texture": "#2"} @@ -119,20 +119,21 @@ }, { "name": "BackBottom", - "from": [4, -3, 16], - "to": [12, 7, 31], + "from": [3.9, -3, 16], + "to": [12.1, 7, 26], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]}, "faces": { - "east": {"uv": [0, 0, 5, 7.5], "rotation": 270, "texture": "#4"}, - "west": {"uv": [0, 0, 5, 7.5], "rotation": 90, "texture": "#4"}, - "up": {"uv": [0, 10, 7.5, 14], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 10, 7.5, 14], "rotation": 270, "texture": "#4"} + "east": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"}, + "south": {"uv": [1.5, 10, 6.5, 14], "rotation": 90, "texture": "#4"}, + "west": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"}, + "up": {"uv": [2.5, 10, 7.5, 14], "rotation": 270, "texture": "#4"}, + "down": {"uv": [0, 10, 5, 14], "rotation": 270, "texture": "#4"} } }, { "name": "Back", - "from": [3, -4, 14], - "to": [13, 13, 17], + "from": [2.9, -4.1, 14], + "to": [13.1, 13.1, 17], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "east": {"uv": [5, 0, 6.5, 8.5], "texture": "#4"}, @@ -174,62 +175,6 @@ "west": {"uv": [5, 14.5, 0, 16], "texture": "#4"}, "up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#4"} } - }, - { - "name": "F4", - "from": [11, -3, 1], - "to": [14, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 1]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F5", - "from": [5, -3, 1], - "to": [8, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 1]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F5", - "from": [8, -3, 1], - "to": [11, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 1]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F6", - "from": [2, -3, 1], - "to": [5, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 1]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } } ], "display": { @@ -290,17 +235,6 @@ "children": [9, 10, 11, 12, 13] } ] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [ - { - "name": "Flap", - "origin": [8, 8, 8], - "children": [14, 15, 16, 17] - } - ] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 336419898..7da170c36 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -41,7 +41,7 @@ "north": {"uv": [8, 5.5, 9, 13.5], "texture": "#4"}, "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, "south": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, + "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, "up": {"uv": [14, 0, 16, 6], "texture": "#2"} } }, @@ -52,7 +52,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, "faces": { "north": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"}, - "east": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, + "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, "south": {"uv": [16, 5.5, 15, 13.5], "texture": "#4"}, "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, "up": {"uv": [16, 0, 14, 6], "texture": "#2"} @@ -119,20 +119,22 @@ }, { "name": "BackBottom", - "from": [4, -5, 16], - "to": [12, 5, 31], + "from": [3.9, -5, 16], + "to": [12.1, 5, 26], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]}, "faces": { - "east": {"uv": [0, 0, 5, 7.5], "rotation": 270, "texture": "#4"}, - "west": {"uv": [0, 0, 5, 7.5], "rotation": 90, "texture": "#4"}, - "up": {"uv": [0, 10, 7.5, 14], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 10, 7.5, 14], "rotation": 270, "texture": "#4"} + "north": {"uv": [1.5, 10, 6.5, 14], "rotation": 90, "texture": "#4"}, + "east": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"}, + "south": {"uv": [1.5, 10, 6.5, 14], "rotation": 90, "texture": "#4"}, + "west": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"}, + "up": {"uv": [2.5, 10, 7.5, 14], "rotation": 270, "texture": "#4"}, + "down": {"uv": [1, 10, 6, 14], "rotation": 270, "texture": "#4"} } }, { "name": "Back", - "from": [3, -4, 16], - "to": [13, 13, 19], + "from": [2.9, -4.1, 16], + "to": [13.1, 13.1, 19], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, "faces": { "east": {"uv": [5, 0, 6.5, 8.5], "texture": "#4"}, @@ -174,62 +176,6 @@ "west": {"uv": [1, 14.5, 0, 16], "texture": "#4"}, "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#4"} } - }, - { - "name": "F4", - "from": [11, -3, 9], - "to": [14, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F5", - "from": [5, -3, 9], - "to": [8, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 9]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F5", - "from": [8, -3, 9], - "to": [11, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F6", - "from": [2, -3, 9], - "to": [5, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 9]}, - "faces": { - "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, - "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, - "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, - "up": {"uv": [6.5, 0, 8, 0.5], "texture": "#4"}, - "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} - } } ], "display": { @@ -290,17 +236,6 @@ "children": [9, 10, 11, 12, 13] } ] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [ - { - "name": "Flap", - "origin": [8, 8, 8], - "children": [14, 15, 16, 17] - } - ] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/flap.json b/src/main/resources/assets/create/models/block/belt_funnel/flap.json new file mode 100644 index 000000000..f00cc83a2 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_funnel/flap.json @@ -0,0 +1,21 @@ +{ + "textures": { + "4": "create:block/funnel_plating" + }, + "elements": [ + { + "name": "F4", + "from": [11, -3, 9], + "to": [14, 10, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, + "east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"}, + "south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"}, + "west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"}, + "up": {"uv": [6.5, 0, 8, 0.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"} + } + } + ] +} \ No newline at end of file From 480dcdebedcde1ce39382091a52e656ed69406d6 Mon Sep 17 00:00:00 2001 From: Zelophed Date: Mon, 29 Jun 2020 01:07:21 +0200 Subject: [PATCH 23/47] Goggle overlay offset -added two config entries to offset the goggle overlay on x/y axis -added a command (/create overlay [reset]) to allow editing the overlay position ingame --- src/generated/resources/.cache/cache | 2 +- .../resources/assets/create/lang/en_us.json | 9 ++ .../goggles/GoggleConfigScreen.java | 86 +++++++++++++++++++ .../goggles/GoggleOverlayRenderer.java | 18 ++-- .../command/ConfigureConfigPacket.java | 51 +++++++++-- .../foundation/command/CreateCommand.java | 1 + .../command/OverlayConfigCommand.java | 46 ++++++++++ .../command/ToggleDebugCommand.java | 5 +- .../create/foundation/config/CClient.java | 3 + .../assets/create/lang/default/messages.json | 9 ++ 10 files changed, 213 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java create mode 100644 src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index e07ce1129..c7bd920cf 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -336,7 +336,7 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json 5753bc985f4c202fe16387c32fb8ad80c631c933 assets\create\lang\en_ud.json -0640b1b64ac1a1e337178f932f22b0b2aea61d46 assets\create\lang\en_us.json +21f721489c30a85337d5007895a54ff1db9e5f6c assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index fcc292fd4..0ddd73a31 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -815,6 +815,15 @@ "create.mechanical_mixer.min_ingredients": "Min. Ingredients", + "create.gui.config.overlay1": "Hi :)", + "create.gui.config.overlay2": "This is a sample overlay", + "create.gui.config.overlay3": "Click or drag with your mouse", + "create.gui.config.overlay4": "to move this preview", + "create.gui.config.overlay5": "Press ESC to exit this screen", + "create.gui.config.overlay6": "and save the new position", + "create.gui.config.overlay7": "Run /create overlay reset", + "create.gui.config.overlay8": "to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java new file mode 100644 index 000000000..edb006233 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java @@ -0,0 +1,86 @@ +package com.simibubi.create.content.contraptions.goggles; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.gui.AbstractSimiScreen; +import com.simibubi.create.foundation.gui.GuiGameElement; +import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; + +import java.util.ArrayList; +import java.util.List; + +public class GoggleConfigScreen extends AbstractSimiScreen { + + private int offsetX; + private int offsetY; + private final List tooltip; + + public GoggleConfigScreen() { + String spacing = " "; + tooltip = new ArrayList<>(); + tooltip.add(spacing + Lang.translate("gui.config.overlay1")); + tooltip.add(spacing + TextFormatting.GRAY + Lang.translate("gui.config.overlay2")); + tooltip.add(""); + tooltip.add(spacing + Lang.translate("gui.config.overlay3")); + tooltip.add(spacing + Lang.translate("gui.config.overlay4")); + tooltip.add(""); + tooltip.add(spacing + TextFormatting.GRAY + Lang.translate("gui.config.overlay5")); + tooltip.add(spacing + TextFormatting.GRAY + Lang.translate("gui.config.overlay6")); + tooltip.add(""); + tooltip.add(spacing + Lang.translate("gui.config.overlay7")); + tooltip.add(spacing + Lang.translate("gui.config.overlay8")); + } + + @Override + protected void init() { + Minecraft mc = Minecraft.getInstance(); + this.width = mc.getWindow().getScaledWidth(); + this.height = mc.getWindow().getScaledHeight(); + + offsetX = AllConfigs.CLIENT.overlayOffsetX.get(); + offsetY = AllConfigs.CLIENT.overlayOffsetY.get(); + } + + @Override + public void removed() { + AllConfigs.CLIENT.overlayOffsetX.set(offsetX); + AllConfigs.CLIENT.overlayOffsetY.set(offsetY); + } + + @Override + public boolean mouseClicked(double x, double y, int button) { + updateOffset(x, y); + + return true; + } + + @Override + public boolean mouseDragged(double p_mouseDragged_1_, double p_mouseDragged_3_, int p_mouseDragged_5_, double p_mouseDragged_6_, double p_mouseDragged_8_) { + updateOffset(p_mouseDragged_1_, p_mouseDragged_3_); + + return true; + } + + private void updateOffset(double windowX, double windowY) { + offsetX = (int) (windowX - (this.width / 2)); + offsetY = (int) (windowY - (this.height / 2)); + } + + @Override + protected void renderWindow(int mouseX, int mouseY, float partialTicks) { + RenderSystem.pushMatrix(); + int posX = this.width / 2 + offsetX; + int posY = this.height / 2 + offsetY; + //tooltipScreen.renderTooltip(tooltip, tooltipScreen.width / 2, tooltipScreen.height / 2); + renderTooltip(tooltip, posX, posY); + + ItemStack item = AllItems.GOGGLES.asStack(); + //GuiGameElement.of(item).at(tooltipScreen.width / 2 + 10, tooltipScreen.height / 2 - 16).render(); + GuiGameElement.of(item).at(posX + 10, posY - 16).render(); + RenderSystem.popMatrix(); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index 710c76388..2e728d649 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -1,12 +1,9 @@ package com.simibubi.create.content.contraptions.goggles; -import java.util.ArrayList; -import java.util.List; - import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.GuiGameElement; - import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.world.ClientWorld; @@ -23,6 +20,9 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import java.util.ArrayList; +import java.util.List; + @EventBusSubscriber(value = Dist.CLIENT) public class GoggleOverlayRenderer { @@ -76,10 +76,14 @@ public class GoggleOverlayRenderer { RenderSystem.pushMatrix(); Screen tooltipScreen = new TooltipScreen(null); tooltipScreen.init(mc, mc.getWindow().getScaledWidth(), mc.getWindow().getScaledHeight()); - tooltipScreen.renderTooltip(tooltip, tooltipScreen.width / 2, tooltipScreen.height / 2); - + int posX = tooltipScreen.width / 2 + AllConfigs.CLIENT.overlayOffsetX.get(); + int posY = tooltipScreen.height / 2 + AllConfigs.CLIENT.overlayOffsetY.get(); + //tooltipScreen.renderTooltip(tooltip, tooltipScreen.width / 2, tooltipScreen.height / 2); + tooltipScreen.renderTooltip(tooltip, posX, posY); + ItemStack item = AllItems.GOGGLES.asStack(); - GuiGameElement.of(item).at(tooltipScreen.width / 2 + 10, tooltipScreen.height / 2 - 16).render(); + //GuiGameElement.of(item).at(tooltipScreen.width / 2 + 10, tooltipScreen.height / 2 - 16).render(); + GuiGameElement.of(item).at(posX + 10, posY - 16).render(); RenderSystem.popMatrix(); } diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java index 354405087..45d17d4b4 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java +++ b/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigPacket.java @@ -1,19 +1,23 @@ package com.simibubi.create.foundation.command; -import java.util.function.Supplier; - +import com.simibubi.create.content.contraptions.goggles.GoggleConfigScreen; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.networking.SimplePacketBase; - import net.minecraft.network.PacketBuffer; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.network.NetworkEvent; +import org.apache.logging.log4j.LogManager; + +import java.util.function.Consumer; +import java.util.function.Supplier; public class ConfigureConfigPacket extends SimplePacketBase { - private String option; - private String value; + private final String option; + private final String value; public ConfigureConfigPacket(String option, String value) { this.option = option; @@ -34,11 +38,44 @@ public class ConfigureConfigPacket extends SimplePacketBase { @Override public void handle(Supplier ctx) { ctx.get().enqueueWork(() -> DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> { - if (option.equals("rainbowDebug")) { - AllConfigs.CLIENT.rainbowDebug.set(Boolean.parseBoolean(value)); + try { + Actions.valueOf(option).performAction(value); + } catch (IllegalArgumentException e) { + LogManager.getLogger().warn("Received ConfigureConfigPacket with invalid Option: " + option); } })); ctx.get().setPacketHandled(true); } + + enum Actions { + rainbowDebug((value) -> { + AllConfigs.CLIENT.rainbowDebug.set(Boolean.parseBoolean(value)); + }), + overlayScreen((value) -> { + overlayScreenAction(); + }), + overlayReset((value) -> { + AllConfigs.CLIENT.overlayOffsetX.set(0); + AllConfigs.CLIENT.overlayOffsetY.set(0); + }), + + ; + + private final Consumer consumer; + + Actions(Consumer action) { + this.consumer = action; + } + + void performAction(String value){ + consumer.accept(value); + } + + @OnlyIn(Dist.CLIENT) + private static void overlayScreenAction(){ + //this doesn't work if i move it into the enum constructor like the other two. if there's a proper way to do this, please let me know + ScreenOpener.open(new GoggleConfigScreen()); + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java b/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java index 27de9b3b2..9126dedba 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CreateCommand.java @@ -10,6 +10,7 @@ public class CreateCommand { public CreateCommand(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("create") .then(ToggleDebugCommand.register()) + .then(OverlayConfigCommand.register()) .then(ClearBufferCacheCommand.register()) //.then(KillTPSCommand.register()) //Commented out for release ); diff --git a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java new file mode 100644 index 000000000..632782c06 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java @@ -0,0 +1,46 @@ +package com.simibubi.create.foundation.command; + +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.simibubi.create.foundation.networking.AllPackets; +import net.minecraft.command.CommandSource; +import net.minecraft.command.Commands; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.util.text.StringTextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.network.PacketDistributor; + +public class OverlayConfigCommand { + + public static ArgumentBuilder register() { + return Commands.literal("overlay") + .requires(cs -> cs.hasPermissionLevel(0)) + .then(Commands.literal("reset") + .executes(ctx -> { + DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> ConfigureConfigPacket.Actions.overlayReset.performAction("")); + + DistExecutor.runWhenOn(Dist.DEDICATED_SERVER, () -> () -> + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), + new ConfigureConfigPacket(ConfigureConfigPacket.Actions.overlayReset.name(), ""))); + + ctx.getSource().sendFeedback(new StringTextComponent("reset overlay offset"), true); + + return 1; + }) + ) + .executes(ctx -> { + DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> ConfigureConfigPacket.Actions.overlayScreen.performAction("")); + + DistExecutor.runWhenOn(Dist.DEDICATED_SERVER, () -> () -> + AllPackets.channel.send( + PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), + new ConfigureConfigPacket(ConfigureConfigPacket.Actions.overlayScreen.name(), ""))); + + ctx.getSource().sendFeedback(new StringTextComponent("window opened"), true); + + return 1; + }); + + } +} diff --git a/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java b/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java index a59870fa6..984164449 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java @@ -21,12 +21,13 @@ public class ToggleDebugCommand { .then(Commands.argument("value", BoolArgumentType.bool()) .executes(ctx -> { boolean value = BoolArgumentType.getBool(ctx, "value"); - DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> AllConfigs.CLIENT.rainbowDebug.set(value)); + //DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> AllConfigs.CLIENT.rainbowDebug.set(value)); + DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> ConfigureConfigPacket.Actions.rainbowDebug.performAction(String.valueOf(value))); DistExecutor.runWhenOn(Dist.DEDICATED_SERVER, () -> () -> AllPackets.channel.send( PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), - new ConfigureConfigPacket("rainbowDebug", String.valueOf(value)))); + new ConfigureConfigPacket(ConfigureConfigPacket.Actions.rainbowDebug.name(), String.valueOf(value)))); ctx.getSource().sendFeedback(new StringTextComponent((value ? "enabled" : "disabled") + " rainbow debug"), true); diff --git a/src/main/java/com/simibubi/create/foundation/config/CClient.java b/src/main/java/com/simibubi/create/foundation/config/CClient.java index ee189517a..0bd1eb895 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CClient.java +++ b/src/main/java/com/simibubi/create/foundation/config/CClient.java @@ -13,6 +13,9 @@ public class CClient extends ConfigBase { public ConfigBool rainbowDebug = b(true, "enableRainbowDebug", "Show colourful debug information while the F3-Menu is open."); + public ConfigInt overlayOffsetX = i(0, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetX", "Offset the overlay from goggle- and hover- information by this many pixels on the X axis; Use /create overlay"); + public ConfigInt overlayOffsetY = i(0, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetY", "Offset the overlay from goggle- and hover- information by this many pixels on the Y axis; Use /create overlay"); + @Override public String getName() { return "client"; diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json index 2eb783b07..04933d1bf 100644 --- a/src/main/resources/assets/create/lang/default/messages.json +++ b/src/main/resources/assets/create/lang/default/messages.json @@ -343,6 +343,15 @@ "create.tooltip.analogStrength": "Analog Strength: %1$s/15", "create.mechanical_mixer.min_ingredients": "Min. Ingredients", + "create.gui.config.overlay1": "Hi :)", + "create.gui.config.overlay2": "This is a sample overlay", + "create.gui.config.overlay3": "Click or drag with your mouse", + "create.gui.config.overlay4": "to move this preview", + "create.gui.config.overlay5": "Press ESC to exit this screen", + "create.gui.config.overlay6": "and save the new position", + "create.gui.config.overlay7": "Run /create overlay reset", + "create.gui.config.overlay8": "to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", From f820e2be273bfc2949e70ae740e4506bad61edae Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 1 Jul 2020 22:02:00 +0200 Subject: [PATCH 24/47] Mechanical Arm Implementation - The arm blockitem can now be used to select inputs & outputs - Arms now transfer items between inputs and outputs - Arm support for Belts, Depots and Funnels - Some safety checks in net code - Minor refactor to NBTHelper --- .../com/simibubi/create/AllBlockPartials.java | 7 +- .../java/com/simibubi/create/AllBlocks.java | 3 +- .../com/simibubi/create/ClientEvents.java | 1 - .../com/simibubi/create/CreateClient.java | 2 + .../components/clock/CuckooClockRenderer.java | 2 +- .../clock/CuckooClockTileEntity.java | 19 +- .../deployer/DeployerMovementBehaviour.java | 2 +- .../components/deployer/DeployerRenderer.java | 2 +- .../deployer/DeployerTileEntity.java | 8 +- .../CancelPlayerFallPacket.java | 2 + .../bearing/ClockworkContraption.java | 4 +- .../mounted/MountedContraption.java | 4 +- .../advanced/sequencer/Instruction.java | 8 +- .../relays/belt/transport/BeltInventory.java | 4 +- .../tools/ExtendoGripInteractionPacket.java | 2 + .../zapper/blockzapper/BlockzapperItem.java | 7 +- .../zapper/terrainzapper/WorldshaperItem.java | 8 +- .../WorldshaperRenderHandler.java | 4 +- .../terrainzapper/WorldshaperScreen.java | 55 ++-- .../logistics/block/depot/DepotRenderer.java | 6 +- .../block/depot/DepotTileEntity.java | 7 + .../block/mechanicalArm/ArmAngleTarget.java | 77 +++++ .../block/mechanicalArm/ArmBlock.java | 13 - .../mechanicalArm/ArmInteractionPoint.java | 234 ++++++++++++++ .../ArmInteractionPointHandler.java | 115 +++++++ .../block/mechanicalArm/ArmItem.java | 45 +++ .../mechanicalArm/ArmPlacementPacket.java | 70 +++++ .../block/mechanicalArm/ArmRenderer.java | 66 ++-- .../block/mechanicalArm/ArmTileEntity.java | 290 ++++++++++++++++-- .../item/filter/FilterScreenPacket.java | 4 +- .../packet/ConfigureSchematicannonPacket.java | 2 + .../packet/SchematicPlacePacket.java | 2 + .../packet/SchematicUploadPacket.java | 2 + .../gui/widgets/InterpolatedAngle.java | 11 + .../gui/widgets/InterpolatedChasingAngle.java | 4 + .../foundation/networking/AllPackets.java | 2 + .../foundation/networking/NbtPacket.java | 2 + .../TileEntityConfigurationPacket.java | 2 + .../create/foundation/utility/NBTHelper.java | 11 +- .../block/mechanical_arm/flag/long_in.json | 31 ++ .../block/mechanical_arm/flag/long_out.json | 31 ++ .../block/mechanical_arm/flag/short_in.json | 31 ++ .../block/mechanical_arm/flag/short_out.json | 31 ++ .../create/textures/block/marker_flag.png | Bin 0 -> 324 bytes 44 files changed, 1104 insertions(+), 129 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java create mode 100644 src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java create mode 100644 src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json create mode 100644 src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json create mode 100644 src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json create mode 100644 src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json create mode 100644 src/main/resources/assets/create/textures/block/marker_flag.png diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index f707e021b..b2ad31f85 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -29,7 +29,7 @@ public class AllBlockPartials { private static List all = new ArrayList<>(); public static final AllBlockPartials - SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), + SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), SCHEMATICANNON_PIPE = get("schematicannon/pipe"), SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), @@ -92,6 +92,11 @@ public class AllBlockPartials { ARM_CLAW_BASE = get("mechanical_arm/claw_base"), ARM_CLAW_GRIP = get("mechanical_arm/claw_grip"), + FLAG_SHORT_IN = get("mechanical_arm/flag/short_in"), + FLAG_SHORT_OUT = get("mechanical_arm/flag/short_out"), + FLAG_LONG_IN = get("mechanical_arm/flag/long_in"), + FLAG_LONG_OUT = get("mechanical_arm/flag/long_out"), + MECHANICAL_PUMP_ARROW = get("mechanical_pump/arrow"), MECHANICAL_PUMP_COG = get("mechanical_pump/cog"), FLUID_PIPE_CASING = get("fluid_pipe/casing"); diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index cbfd936ee..b21f000bd 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -96,6 +96,7 @@ import com.simibubi.create.content.logistics.block.funnel.VerticalFunnelGenerato import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmItem; import com.simibubi.create.content.logistics.block.packager.PackagerBlock; import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelGenerator; @@ -781,7 +782,7 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .transform(StressConfigDefaults.setImpact(8.0)) - .item() + .item(ArmItem::new) .transform(customItemModel()) .register(); diff --git a/src/main/java/com/simibubi/create/ClientEvents.java b/src/main/java/com/simibubi/create/ClientEvents.java index cd986dc09..28fa9c9bf 100644 --- a/src/main/java/com/simibubi/create/ClientEvents.java +++ b/src/main/java/com/simibubi/create/ClientEvents.java @@ -109,7 +109,6 @@ public class ClientEvents { return; double delta = event.getScrollDelta(); - boolean cancelled = CreateClient.schematicHandler.mouseScrolled(delta) || CreateClient.schematicAndQuillHandler.mouseScrolled(delta) || FilteringHandler.onScroll(delta) || ScrollValueHandler.onScroll(delta); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 54a9d8b36..514e75015 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler; import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler; import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperRenderHandler; import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperRenderHandler; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPointHandler; import com.simibubi.create.content.schematics.ClientSchematicLoader; import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler; import com.simibubi.create.content.schematics.client.SchematicHandler; @@ -109,6 +110,7 @@ public class CreateClient { KineticDebugger.tick(); ZapperRenderHandler.tick(); ExtendoGripRenderHandler.tick(); + ArmInteractionPointHandler.tick(); outliner.tickOutlines(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java index e440cb32d..b99b6d784 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java @@ -76,7 +76,7 @@ public class CuckooClockRenderer extends KineticTileEntityRenderer { .renderInto(ms, vb); // Figure - if (clock.animationType != null) { + if (clock.animationType != Animation.NONE) { offset = -(angle / 135) * 1 / 2f + 10 / 16f; SuperByteBuffer figure = (clock.animationType == Animation.PIG ? AllBlockPartials.CUCKOO_PIG : AllBlockPartials.CUCKOO_CREEPER) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java index e2cd4fb51..e67a32739 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java @@ -32,17 +32,18 @@ public class CuckooClockTileEntity extends KineticTileEntity { private boolean sendAnimationUpdate; enum Animation { - PIG, CREEPER, SURPRISE; + PIG, CREEPER, SURPRISE, NONE; } public CuckooClockTileEntity(TileEntityType type) { super(type); + animationType = Animation.NONE; } @Override public CompoundNBT writeToClient(CompoundNBT compound) { if (sendAnimationUpdate) - compound.putString("Animation", animationType == null ? "none" : NBTHelper.writeEnum(animationType)); + NBTHelper.writeEnum(compound, "Animation", animationType); sendAnimationUpdate = false; return super.writeToClient(compound); } @@ -50,11 +51,7 @@ public class CuckooClockTileEntity extends KineticTileEntity { @Override public void readClientUpdate(CompoundNBT tag) { if (tag.contains("Animation")) { - String string = tag.getString("Animation"); - if ("none".equals(string)) - animationType = null; - else - animationType = NBTHelper.readEnum(string, Animation.class); + animationType = NBTHelper.readEnum(tag, "Animation", Animation.class); animationProgress.lastValue = 0; animationProgress.value = 0; } @@ -72,7 +69,7 @@ public class CuckooClockTileEntity extends KineticTileEntity { int minutes = (dayTime % 1000) * 60 / 1000; if (!world.isRemote) { - if (animationType == null) { + if (animationType == Animation.NONE) { if (hours == 12 && minutes < 5) startAnimation(Animation.PIG); if (hours == 18 && minutes < 36 && minutes > 31) @@ -81,13 +78,13 @@ public class CuckooClockTileEntity extends KineticTileEntity { float value = animationProgress.value; animationProgress.set(value + 1); if (value > 100) - animationType = null; + animationType = Animation.NONE; if (animationType == Animation.SURPRISE && animationProgress.value == 50) { Vec3d center = VecHelper.getCenterOf(pos); world.destroyBlock(pos, false); world.createExplosion(null, CUCKOO_SURPRISE, center.x, center.y, center.z, 3, false, - Explosion.Mode.BREAK); + Explosion.Mode.BREAK); } } @@ -96,7 +93,7 @@ public class CuckooClockTileEntity extends KineticTileEntity { if (world.isRemote) { moveHands(hours, minutes); - if (animationType == null) { + if (animationType == Animation.NONE) { if (AnimationTickHolder.ticks % 32 == 0) playSound(SoundEvents.BLOCK_NOTE_BLOCK_HAT, 1 / 16f, 2f); else if (AnimationTickHolder.ticks % 16 == 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java index 7f315c3bb..11a175391 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java @@ -162,7 +162,7 @@ public class DeployerMovementBehaviour extends MovementBehaviour { } private Mode getMode(MovementContext context) { - return NBTHelper.readEnum(context.tileData.getString("Mode"), Mode.class); + return NBTHelper.readEnum(context.tileData, "Mode", Mode.class); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java index c9cf85bec..8482b8529 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java @@ -160,7 +160,7 @@ public class DeployerRenderer extends SafeTileEntityRenderer IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); BlockState blockState = context.state; BlockPos pos = BlockPos.ZERO; - Mode mode = NBTHelper.readEnum(context.tileData.getString("Mode"), Mode.class); + Mode mode = NBTHelper.readEnum(context.tileData, "Mode", Mode.class); World world = context.world; AllBlockPartials handPose = mode == Mode.PUNCH ? AllBlockPartials.DEPLOYER_HAND_PUNCHING : AllBlockPartials.DEPLOYER_HAND_POINTING; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 05a1002f5..825b15add 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -333,8 +333,8 @@ public class DeployerTileEntity extends KineticTileEntity { @Override public void read(CompoundNBT compound) { - state = NBTHelper.readEnum(compound.getString("State"), State.class); - mode = NBTHelper.readEnum(compound.getString("Mode"), Mode.class); + state = NBTHelper.readEnum(compound, "State", State.class); + mode = NBTHelper.readEnum(compound, "Mode", Mode.class); timer = compound.getInt("Timer"); deferredInventoryList = compound.getList("Inventory", NBT.TAG_COMPOUND); overflowItems = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); @@ -345,8 +345,8 @@ public class DeployerTileEntity extends KineticTileEntity { @Override public CompoundNBT write(CompoundNBT compound) { - compound.putString("Mode", NBTHelper.writeEnum(mode)); - compound.putString("State", NBTHelper.writeEnum(state)); + NBTHelper.writeEnum(compound, "Mode", mode); + NBTHelper.writeEnum(compound, "State", state); compound.putInt("Timer", timer); if (player != null) { compound.put("HeldItem", player.getHeldItemMainhand().serializeNBT()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/CancelPlayerFallPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/CancelPlayerFallPacket.java index 71cac0863..f26e99bff 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/CancelPlayerFallPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/CancelPlayerFallPacket.java @@ -24,6 +24,8 @@ public class CancelPlayerFallPacket extends SimplePacketBase { public void handle(Supplier context) { context.get().enqueueWork(() -> { ServerPlayerEntity sender = context.get().getSender(); + if (sender == null) + return; sender.handleFallDamage(sender.fallDistance, 1.0F); sender.fallDistance = 0; sender.onGround = true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java index 833a51d42..97abf1372 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java @@ -98,14 +98,14 @@ public class ClockworkContraption extends Contraption { CompoundNBT tag = super.writeNBT(); tag.putInt("facing", facing.getIndex()); tag.putInt("offset", offset); - tag.putString("HandType", NBTHelper.writeEnum(handType)); + NBTHelper.writeEnum(tag, "HandType", handType); return tag; } @Override public void readNBT(World world, CompoundNBT tag) { facing = Direction.byIndex(tag.getInt("Facing")); - handType = NBTHelper.readEnum(tag.getString("HandType"), HandType.class); + handType = NBTHelper.readEnum(tag, "HandType", HandType.class); offset = tag.getInt("offset"); super.readNBT(world, tag); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java index 6aa84ae26..4f7b006c8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java @@ -80,13 +80,13 @@ public class MountedContraption extends Contraption { @Override public CompoundNBT writeNBT() { CompoundNBT writeNBT = super.writeNBT(); - writeNBT.putString("RotationMode", NBTHelper.writeEnum(rotationMode)); + NBTHelper.writeEnum(writeNBT, "RotationMode", rotationMode); return writeNBT; } @Override public void readNBT(World world, CompoundNBT nbt) { - rotationMode = NBTHelper.readEnum(nbt.getString("RotationMode"), CartMovementMode.class); + rotationMode = NBTHelper.readEnum(nbt, "RotationMode", CartMovementMode.class); super.readNBT(world, nbt); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java index 5a50fffc1..b28c352f2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java @@ -88,16 +88,16 @@ public class Instruction { CompoundNBT serialize() { CompoundNBT tag = new CompoundNBT(); - tag.putString("Type", NBTHelper.writeEnum(instruction)); - tag.putString("Modifier", NBTHelper.writeEnum(speedModifier)); + NBTHelper.writeEnum(tag, "Type", instruction); + NBTHelper.writeEnum(tag, "Modifier", speedModifier); tag.putInt("Value", value); return tag; } static Instruction deserialize(CompoundNBT tag) { Instruction instruction = - new Instruction(NBTHelper.readEnum(tag.getString("Type"), SequencerInstructions.class)); - instruction.speedModifier = NBTHelper.readEnum(tag.getString("Modifier"), InstructionSpeedModifiers.class); + new Instruction(NBTHelper.readEnum(tag, "Type", SequencerInstructions.class)); + instruction.speedModifier = NBTHelper.readEnum(tag, "Modifier", InstructionSpeedModifiers.class); instruction.value = tag.getInt("Value"); return instruction; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index eeccc7c90..a839edc5d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -352,8 +352,8 @@ public class BeltInventory { } public TransportedItemStack getStackAtOffset(int offset) { - float min = offset + .5f - (SEGMENT_WINDOW / 2); - float max = offset + .5f + (SEGMENT_WINDOW / 2); + float min = offset; + float max = offset + 1; for (TransportedItemStack stack : items) { if (stack.beltPosition > max) continue; diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java index e0f545027..63739b632 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java @@ -57,6 +57,8 @@ public class ExtendoGripInteractionPacket extends SimplePacketBase { .enqueueWork(() -> { ServerPlayerEntity sender = context.get() .getSender(); + if (sender == null) + return; Entity entityByID = sender.getServerWorld() .getEntityByID(target); if (entityByID != null && ExtendoGripItem.isHoldingExtendoGrip(sender)) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java index b2d43c796..b06e9864f 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItem.java @@ -351,17 +351,16 @@ public class BlockzapperItem extends ZapperItem { .contains(component.name())) stack.getOrCreateTag() .putString(component.name(), ComponentTier.None.name()); - return NBTHelper.readEnum(stack.getTag() - .getString(component.name()), ComponentTier.class); + return NBTHelper.readEnum(stack.getTag(), component.name(), ComponentTier.class); } public static void setTier(Components component, ComponentTier tier, ItemStack stack) { - stack.getOrCreateTag() - .putString(component.name(), NBTHelper.writeEnum(tier)); + NBTHelper.writeEnum(stack.getOrCreateTag(), component.name(), tier); } public static enum ComponentTier { None(TextFormatting.DARK_GRAY), Brass(TextFormatting.GOLD), Chromatic(TextFormatting.LIGHT_PURPLE); + public TextFormatting color; private ComponentTier(TextFormatting color) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java index c3b375f8f..5a2117eb0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java @@ -53,7 +53,7 @@ public class WorldshaperItem extends ZapperItem { @Override protected boolean canActivateWithoutSelectedBlock(ItemStack stack) { CompoundNBT tag = stack.getOrCreateTag(); - TerrainTools tool = NBTHelper.readEnum(tag.getString("Tool"), TerrainTools.class); + TerrainTools tool = NBTHelper.readEnum(tag, "Tool", TerrainTools.class); return !tool.requiresSelectedBlock(); } @@ -65,11 +65,11 @@ public class WorldshaperItem extends ZapperItem { List affectedPositions = new ArrayList<>(); CompoundNBT tag = stack.getOrCreateTag(); - Brush brush = NBTHelper.readEnum(tag.getString("Brush"), TerrainBrushes.class) + Brush brush = NBTHelper.readEnum(tag, "Brush", TerrainBrushes.class) .get(); BlockPos params = NBTUtil.readBlockPos(tag.getCompound("BrushParams")); - PlacementOptions option = NBTHelper.readEnum(tag.getString("Placement"), PlacementOptions.class); - TerrainTools tool = NBTHelper.readEnum(tag.getString("Tool"), TerrainTools.class); + PlacementOptions option = NBTHelper.readEnum(tag, "Placement", PlacementOptions.class); + TerrainTools tool = NBTHelper.readEnum(tag, "Tool", TerrainTools.class); brush.set(params.getX(), params.getY(), params.getZ()); targetPos = targetPos.add(brush.getOffset(player.getLookVec(), raytrace.getFace(), option)); diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java index ca8522bb4..aa1c55b60 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java @@ -69,9 +69,9 @@ public class WorldshaperRenderHandler { return; } - Brush brush = NBTHelper.readEnum(tag.getString("Brush"), TerrainBrushes.class) + Brush brush = NBTHelper.readEnum(tag, "Brush", TerrainBrushes.class) .get(); - PlacementOptions placement = NBTHelper.readEnum(tag.getString("Placement"), PlacementOptions.class); + PlacementOptions placement = NBTHelper.readEnum(tag, "Placement", PlacementOptions.class); BlockPos params = NBTUtil.readBlockPos(tag.getCompound("BrushParams")); brush.set(params.getX(), params.getY(), params.getZ()); renderedShape = brush.getIncludedPositions(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java index 351ee6dfe..f9d6ec474 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java @@ -53,9 +53,12 @@ public class WorldshaperScreen extends ZapperScreen { brushLabel = new Label(i + 58, j + 28, "").withShadow(); brushInput = new SelectionScrollInput(i + 55, j + 25, 78, 14).forOptions(brushOptions) - .titled(Lang.translate("gui.terrainzapper.brush")).writingTo(brushLabel).calling(this::brushChanged); + .titled(Lang.translate("gui.terrainzapper.brush")) + .writingTo(brushLabel) + .calling(this::brushChanged); if (nbt.contains("Brush")) - brushInput.setState(NBTHelper.readEnum(nbt.getString("Brush"), TerrainBrushes.class).ordinal()); + brushInput.setState(NBTHelper.readEnum(nbt, "Brush", TerrainBrushes.class) + .ordinal()); widgets.add(brushLabel); widgets.add(brushInput); @@ -66,11 +69,13 @@ public class WorldshaperScreen extends ZapperScreen { for (int id = 0; id < toolValues.length; id++) { TerrainTools tool = toolValues[id]; toolButtons.add(new IconButton(i + 8 + id * 18, j + 76, tool.icon)); - toolButtons.get(id).setToolTip(Lang.translate("gui.terrainzapper.tool." + tool.translationKey)); + toolButtons.get(id) + .setToolTip(Lang.translate("gui.terrainzapper.tool." + tool.translationKey)); } if (nbt.contains("Tool")) - toolButtons.get(NBTHelper.readEnum(nbt.getString("Tool"), TerrainTools.class).ordinal()).active = false; + toolButtons.get(NBTHelper.readEnum(nbt, "Tool", TerrainTools.class) + .ordinal()).active = false; widgets.addAll(toolButtons); placementButtons = new Vector<>(3); @@ -78,21 +83,25 @@ public class WorldshaperScreen extends ZapperScreen { for (int id = 0; id < placementValues.length; id++) { PlacementOptions option = placementValues[id]; placementButtons.add(new IconButton(i + 147 + id * 18, j + 76, option.icon)); - placementButtons.get(id).setToolTip(Lang.translate("gui.terrainzapper.placement." + option.translationKey)); + placementButtons.get(id) + .setToolTip(Lang.translate("gui.terrainzapper.placement." + option.translationKey)); } if (nbt.contains("Placement")) - placementButtons - .get(NBTHelper.readEnum(nbt.getString("Placement"), PlacementOptions.class).ordinal()).active = - false; + placementButtons.get(NBTHelper.readEnum(nbt, "Placement", PlacementOptions.class) + .ordinal()).active = false; widgets.addAll(placementButtons); } public void initBrushParams() { if (brushParams != null) { - nbt.put("BrushParams", NBTUtil.writeBlockPos(new BlockPos(brushParams.get(0).getState(), - brushParams.get(1).getState(), brushParams.get(2).getState()))); + nbt.put("BrushParams", NBTUtil.writeBlockPos(new BlockPos(brushParams.get(0) + .getState(), + brushParams.get(1) + .getState(), + brushParams.get(2) + .getState()))); widgets.removeAll(brushParamLabels); widgets.removeAll(brushParams); @@ -109,10 +118,12 @@ public class WorldshaperScreen extends ZapperScreen { brushParamLabels.add(label); int indexFinal = index; ScrollInput input = new ScrollInput(i + 55 + 18 * index, j + 43, 14, 14) - .withRange(currentBrush.getMin(index), currentBrush.getMax(index) + 1).writingTo(label) - .titled(currentBrush.getParamLabel(index)).calling(state -> { - label.x = i + 62 + 18 * indexFinal - font.getStringWidth(label.text) / 2; - }); + .withRange(currentBrush.getMin(index), currentBrush.getMax(index) + 1) + .writingTo(label) + .titled(currentBrush.getParamLabel(index)) + .calling(state -> { + label.x = i + 62 + 18 * indexFinal - font.getStringWidth(label.text) / 2; + }); input.setState(params[index]); input.onChanged(); if (index >= currentBrush.amtParams) { @@ -140,7 +151,8 @@ public class WorldshaperScreen extends ZapperScreen { if (placementButton.isHovered()) { placementButtons.forEach(b -> b.active = true); placementButton.active = false; - placementButton.playDownSound(Minecraft.getInstance().getSoundHandler()); + placementButton.playDownSound(Minecraft.getInstance() + .getSoundHandler()); nbt.putString("Placement", PlacementOptions.values()[placementButtons.indexOf(placementButton)].name()); } } @@ -149,7 +161,8 @@ public class WorldshaperScreen extends ZapperScreen { if (toolButton.isHovered()) { toolButtons.forEach(b -> b.active = true); toolButton.active = false; - toolButton.playDownSound(Minecraft.getInstance().getSoundHandler()); + toolButton.playDownSound(Minecraft.getInstance() + .getSoundHandler()); nbt.putString("Tool", TerrainTools.values()[toolButtons.indexOf(toolButton)].name()); } } @@ -173,9 +186,13 @@ public class WorldshaperScreen extends ZapperScreen { @Override protected void writeAdditionalOptions(CompoundNBT nbt) { super.writeAdditionalOptions(nbt); - nbt.putString("Brush", NBTHelper.writeEnum(TerrainBrushes.values()[brushInput.getState()])); - nbt.put("BrushParams", NBTUtil.writeBlockPos(new BlockPos(brushParams.get(0).getState(), - brushParams.get(1).getState(), brushParams.get(2).getState()))); + NBTHelper.writeEnum(nbt, "Brush", TerrainBrushes.values()[brushInput.getState()]); + nbt.put("BrushParams", NBTUtil.writeBlockPos(new BlockPos(brushParams.get(0) + .getState(), + brushParams.get(1) + .getState(), + brushParams.get(2) + .getState()))); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java index 85100bbe6..4d428f935 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotRenderer.java @@ -39,12 +39,12 @@ public class DepotRenderer extends SafeTileEntityRenderer { msr.nudge(0); float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); float sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset); - Vec3d offsetVec = new Vec3d(transported.insertedFrom.getOpposite() - .getDirectionVec()).scale(.5f - offset); - ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); if (transported.insertedFrom.getAxis() .isHorizontal()) { + Vec3d offsetVec = new Vec3d(transported.insertedFrom.getOpposite() + .getDirectionVec()).scale(.5f - offset); + ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); boolean alongX = transported.insertedFrom.rotateY() .getAxis() == Axis.X; if (!alongX) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java index 343ab0567..c813c00c9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotTileEntity.java @@ -84,6 +84,13 @@ public class DepotTileEntity extends SmartTileEntity { if (heldItem.locked != wasLocked || !previousItem.equals(heldItem.stack, false)) sendData(); } + + @Override + public void remove() { + super.remove(); + if (lazyItemHandler != null) + lazyItemHandler.invalidate(); + } @Override public CompoundNBT write(CompoundNBT compound) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java new file mode 100644 index 000000000..fd1b94216 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java @@ -0,0 +1,77 @@ +package com.simibubi.create.content.logistics.block.mechanicalArm; + +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; + +public class ArmAngleTarget { + + static ArmAngleTarget NO_TARGET = new ArmAngleTarget(); + + float baseAngle; + float lowerArmAngle; + float upperArmAngle; + float headAngle; + + private ArmAngleTarget() { + lowerArmAngle = 155; + upperArmAngle = 60; + headAngle = -15; + } + + public ArmAngleTarget(BlockPos armPos, Vec3d pointTarget, Direction clawFacing) { + Vec3d target = pointTarget; + Vec3d origin = VecHelper.getCenterOf(armPos) + .add(0, 4 / 16f, 0); + Vec3d clawTarget = target; + target = target.add(new Vec3d(clawFacing.getOpposite() + .getDirectionVec()).scale(.5f)); + + Vec3d diff = target.subtract(origin); + float horizontalDistance = (float) diff.mul(1, 0, 1) + .length(); + + float baseAngle = AngleHelper.deg(MathHelper.atan2(diff.x, diff.z)) + 180; + float alphaOffset = AngleHelper.deg(MathHelper.atan2(diff.y, horizontalDistance)); + + float a = 18 / 16f; // lower arm length + float a2 = a * a; + float b = 17 / 16f; // upper arm length + float b2 = b * b; + float diffLength = + MathHelper.clamp(MathHelper.sqrt(diff.y * diff.y + horizontalDistance * horizontalDistance), 1 / 8f, a + b); + float diffLength2 = diffLength * diffLength; + + float alphaRatio = (-b2 + a2 + diffLength2) / (2 * a * diffLength); + float alpha = AngleHelper.deg(Math.acos(alphaRatio)) + alphaOffset; + float betaRatio = (-diffLength2 + a2 + b2) / (2 * b * a); + float beta = AngleHelper.deg(Math.acos(betaRatio)); + + if (Float.isNaN(alpha)) + alpha = 0; + if (Float.isNaN(beta)) + beta = 0; + + Vec3d headPos = new Vec3d(0, 0, 0); + headPos = VecHelper.rotate(headPos.add(0, b, 0), beta + 180, Axis.X); + headPos = VecHelper.rotate(headPos.add(0, a, 0), alpha - 90, Axis.X); + headPos = VecHelper.rotate(headPos, baseAngle, Axis.Y); + headPos = headPos.add(origin); + Vec3d headDiff = clawTarget.subtract(headPos); + float horizontalHeadDistance = (float) headDiff.mul(1, 0, 1) + .length(); + float headAngle = + (float) (alpha + beta + 135 - AngleHelper.deg(MathHelper.atan2(headDiff.y, horizontalHeadDistance))); + + this.lowerArmAngle = alpha; + this.upperArmAngle = beta; + this.headAngle = -headAngle; + this.baseAngle = baseAngle; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java index 2f840700c..a266435e3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java @@ -6,18 +6,13 @@ import com.simibubi.create.content.contraptions.base.KineticBlock; import com.simibubi.create.foundation.block.ITE; import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; public class ArmBlock extends KineticBlock implements ITE { @@ -30,14 +25,6 @@ public class ArmBlock extends KineticBlock implements ITE { return true; } - @Override - public ActionResultType onUse(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, - PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - withTileEntityDo(p_225533_2_, p_225533_3_, ArmTileEntity::toggleRave); - return ActionResultType.SUCCESS; - } - - @Override public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java new file mode 100644 index 000000000..1d844ec5c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -0,0 +1,234 @@ +package com.simibubi.create.content.logistics.block.mechanicalArm; + +import javax.annotation.Nullable; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; +import com.simibubi.create.foundation.utility.NBTHelper; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.NBTUtil; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; + +public abstract class ArmInteractionPoint { + + static enum Mode { + DEPOSIT, TAKE + } + + BlockPos pos; + BlockState state; + Mode mode; + + private LazyOptional cachedHandler; + private ArmAngleTarget cachedAngles; + + public ArmInteractionPoint() { + cachedHandler = LazyOptional.empty(); + } + + @OnlyIn(Dist.CLIENT) + void transformFlag(MatrixStack stack) {} + + AllBlockPartials getFlagType() { + return mode == Mode.TAKE ? AllBlockPartials.FLAG_LONG_OUT : AllBlockPartials.FLAG_LONG_IN; + } + + void cycleMode() { + mode = mode == Mode.DEPOSIT ? Mode.TAKE : Mode.DEPOSIT; + } + + Vec3d getInteractionPositionVector() { + return VecHelper.getCenterOf(pos); + } + + Direction getInteractionDirection() { + return Direction.DOWN; + } + + abstract boolean isValid(BlockState state); + + static boolean isInteractable(BlockState state) { + return AllBlocks.DEPOT.has(state) || AllBlocks.BELT.has(state) || AllBlocks.CHUTE.has(state) + || AllBlocks.REALITY_FUNNEL.has(state); + } + + ArmAngleTarget getTargetAngles(BlockPos armPos) { + if (cachedAngles == null) + cachedAngles = new ArmAngleTarget(armPos, getInteractionPositionVector(), getInteractionDirection()); + return cachedAngles; + } + + @Nullable + IItemHandler getHandler(World world) { + if (!cachedHandler.isPresent()) { + TileEntity te = world.getTileEntity(pos); + if (te == null) + return null; + cachedHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, Direction.UP); + } + return cachedHandler.orElse(null); + } + + ItemStack insert(World world, ItemStack stack, boolean simulate) { + IItemHandler handler = getHandler(world); + if (handler == null) + return stack; + return ItemHandlerHelper.insertItem(handler, stack, simulate); + } + + ItemStack extract(World world, int slot, int amount, boolean simulate) { + IItemHandler handler = getHandler(world); + if (handler == null) + return ItemStack.EMPTY; + return handler.extractItem(slot, amount, simulate); + } + + ItemStack extract(World world, int slot, boolean simulate) { + return extract(world, slot, 64, simulate); + } + + int getSlotCount(World world) { + IItemHandler handler = getHandler(world); + if (handler == null) + return 0; + return handler.getSlots(); + } + + @Nullable + static ArmInteractionPoint createAt(IBlockReader world, BlockPos pos) { + BlockState state = world.getBlockState(pos); + ArmInteractionPoint point = null; + + if (AllBlocks.DEPOT.has(state)) + point = new Depot(); + if (AllBlocks.BELT.has(state)) + point = new Belt(); + if (AllBlocks.CHUTE.has(state)) + point = new Chute(); + if (AllBlocks.REALITY_FUNNEL.has(state)) + point = new Funnel(); + + if (point != null) { + point.state = state; + point.pos = pos; + point.mode = Mode.DEPOSIT; + } + + return point; + } + + CompoundNBT serialize() { + CompoundNBT nbt = new CompoundNBT(); + nbt.put("Pos", NBTUtil.writeBlockPos(pos)); + NBTHelper.writeEnum(nbt, "Mode", mode); + return nbt; + } + + static ArmInteractionPoint deserialize(IBlockReader world, CompoundNBT nbt) { + BlockPos pos = NBTUtil.readBlockPos(nbt.getCompound("Pos")); + ArmInteractionPoint interactionPoint = createAt(world, pos); + interactionPoint.mode = NBTHelper.readEnum(nbt, "Mode", Mode.class); + return interactionPoint; + } + + static class Depot extends ArmInteractionPoint { + + @Override + Vec3d getInteractionPositionVector() { + return new Vec3d(pos).add(.5f, 14 / 16f, .5f); + } + + @Override + boolean isValid(BlockState state) { + return AllBlocks.DEPOT.has(state); + } + + } + + static class Belt extends Depot { + + @Override + boolean isValid(BlockState state) { + return AllBlocks.BELT.has(state); + } + } + + static class Chute extends ArmInteractionPoint { + + @Override + Vec3d getInteractionPositionVector() { + return new Vec3d(pos).add(.5f, 1, .5f); + } + + @Override + boolean isValid(BlockState state) { + return AllBlocks.CHUTE.has(state); + } + } + + static class Funnel extends ArmInteractionPoint { + + @Override + Vec3d getInteractionPositionVector() { + return VecHelper.getCenterOf(pos) + .add(new Vec3d(RealityFunnelBlock.getFunnelFacing(state) + .getDirectionVec()).scale(.5f)); + } + + @Override + int getSlotCount(World world) { + return 0; + } + + @Override + ItemStack extract(World world, int slot, int amount, boolean simulate) { + return ItemStack.EMPTY; + } + + @Override + Direction getInteractionDirection() { + return RealityFunnelBlock.getFunnelFacing(state).getOpposite(); + } + + @Override + ItemStack insert(World world, ItemStack stack, boolean simulate) { + FilteringBehaviour filtering = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); + InsertingBehaviour inserter = TileEntityBehaviour.get(world, pos, InsertingBehaviour.TYPE); + if (inserter == null) + return stack; + if (filtering != null && !filtering.test(stack)) + return stack; + return inserter.insert(stack, simulate); + } + + @Override + boolean isValid(BlockState state) { + return AllBlocks.REALITY_FUNNEL.has(state); + } + + @Override + void cycleMode() {} + + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java new file mode 100644 index 000000000..16dc97a97 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java @@ -0,0 +1,115 @@ +package com.simibubi.create.content.logistics.block.mechanicalArm; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.CreateClient; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPoint.Mode; +import com.simibubi.create.foundation.networking.AllPackets; + +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +@EventBusSubscriber(value = Dist.CLIENT) +public class ArmInteractionPointHandler { + + static Map currentSelection = new HashMap<>(); + static ItemStack currentItem; + + @SubscribeEvent + public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClickBlock event) { + if (currentItem == null) + return; + BlockPos pos = event.getPos(); + World world = event.getWorld(); + if (!world.isRemote) + return; + + if (!currentSelection.containsKey(pos)) { + ArmInteractionPoint point = ArmInteractionPoint.createAt(world, pos); + if (point == null) + return; + currentSelection.put(pos, point); + } + + currentSelection.get(pos) + .cycleMode(); + event.setCanceled(true); + event.setCancellationResult(ActionResultType.SUCCESS); + } + + @SubscribeEvent + public static void leftClickingBlocksDeselectsThem(PlayerInteractEvent.LeftClickBlock event) { + if (currentItem == null) + return; + if (!event.getWorld().isRemote) + return; + BlockPos pos = event.getPos(); + if (currentSelection.remove(pos) != null) { + event.setCanceled(true); + event.setCancellationResult(ActionResultType.SUCCESS); + } + } + + public static void flushSettings(BlockPos pos) { + if (currentItem == null) + return; + AllPackets.channel.sendToServer(new ArmPlacementPacket(currentSelection.values(), pos)); + currentSelection.clear(); + currentItem = null; + } + + public static void tick() { + PlayerEntity player = Minecraft.getInstance().player; + World world = Minecraft.getInstance().world; + if (player == null) + return; + + ItemStack heldItemMainhand = player.getHeldItemMainhand(); + if (!AllBlocks.MECHANICAL_ARM.isIn(heldItemMainhand)) { + currentItem = null; + return; + } + if (heldItemMainhand != currentItem) { + currentSelection.clear(); + currentItem = heldItemMainhand; + } + + for (Iterator> iterator = currentSelection.entrySet() + .iterator(); iterator.hasNext();) { + Entry entry = iterator.next(); + BlockPos pos = entry.getKey(); + BlockState state = world.getBlockState(pos); + ArmInteractionPoint point = entry.getValue(); + + if (!point.isValid(state)) { + iterator.remove(); + continue; + } + + VoxelShape shape = state.getShape(world, pos); + if (shape.isEmpty()) + continue; + + int color = point.mode == Mode.DEPOSIT ? 0xffcb74 : 0x4f8a8b; + CreateClient.outliner.showAABB(point, shape.getBoundingBox() + .offset(pos)) + .colored(color) + .lineWidth(1 / 16f); + } + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java new file mode 100644 index 000000000..a459fea8c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java @@ -0,0 +1,45 @@ +package com.simibubi.create.content.logistics.block.mechanicalArm; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +@EventBusSubscriber +public class ArmItem extends BlockItem { + + public ArmItem(Block p_i48527_1_, Properties p_i48527_2_) { + super(p_i48527_1_, p_i48527_2_); + } + + @Override + public ActionResultType onItemUse(ItemUseContext ctx) { + if (ArmInteractionPoint.isInteractable(ctx.getWorld() + .getBlockState(ctx.getPos()))) + return ActionResultType.SUCCESS; + return super.onItemUse(ctx); + } + + @Override + protected boolean onBlockPlaced(BlockPos pos, World world, PlayerEntity p_195943_3_, ItemStack p_195943_4_, + BlockState p_195943_5_) { + if (world.isRemote) + DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> ArmInteractionPointHandler.flushSettings(pos)); + return super.onBlockPlaced(pos, world, p_195943_3_, p_195943_4_, p_195943_5_); + } + + @Override + public boolean canPlayerBreakBlockWhileHolding(BlockState state, World p_195938_2_, BlockPos p_195938_3_, + PlayerEntity p_195938_4_) { + return !ArmInteractionPoint.isInteractable(state); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java new file mode 100644 index 000000000..dcc51b7f7 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmPlacementPacket.java @@ -0,0 +1,70 @@ +package com.simibubi.create.content.logistics.block.mechanicalArm; + +import java.util.Collection; +import java.util.function.Supplier; + +import com.simibubi.create.foundation.networking.SimplePacketBase; + +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.ListNBT; +import net.minecraft.network.PacketBuffer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.fml.network.NetworkEvent.Context; + +public class ArmPlacementPacket extends SimplePacketBase { + + private Collection points; + private ListNBT receivedTag; + private BlockPos pos; + + public ArmPlacementPacket(Collection points, BlockPos pos) { + this.points = points; + this.pos = pos; + } + + public ArmPlacementPacket(PacketBuffer buffer) { + CompoundNBT nbt = buffer.readCompoundTag(); + receivedTag = nbt.getList("Points", NBT.TAG_COMPOUND); + pos = buffer.readBlockPos(); + } + + @Override + public void write(PacketBuffer buffer) { + CompoundNBT nbt = new CompoundNBT(); + ListNBT pointsNBT = new ListNBT(); + points.stream() + .map(ArmInteractionPoint::serialize) + .forEach(pointsNBT::add); + nbt.put("Points", pointsNBT); + buffer.writeCompoundTag(nbt); + buffer.writeBlockPos(pos); + } + + @Override + public void handle(Supplier context) { + context.get() + .enqueueWork(() -> { + ServerPlayerEntity player = context.get() + .getSender(); + if (player == null) + return; + World world = player.world; + if (world == null) + return; + TileEntity tileEntity = world.getTileEntity(pos); + if (tileEntity == null || !(tileEntity instanceof ArmTileEntity)) + return; + + ArmTileEntity arm = (ArmTileEntity) tileEntity; + arm.interactionPointTag = receivedTag; + }); + context.get() + .setPacketHandled(true); + + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java index dd281191a..e9fc9ad50 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java @@ -5,17 +5,19 @@ import com.mojang.blaze3d.vertex.IVertexBuilder; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.MatrixStacker; import com.simibubi.create.foundation.utility.SuperByteBuffer; import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.math.MathHelper; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; public class ArmRenderer extends KineticTileEntityRenderer { @@ -24,25 +26,15 @@ public class ArmRenderer extends KineticTileEntityRenderer { } @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); + protected void renderSafe(KineticTileEntity te, float pt, MatrixStack ms, IRenderTypeBuffer buffer, int light, + int overlay) { + super.renderSafe(te, pt, ms, buffer, light, overlay); + ArmTileEntity arm = (ArmTileEntity) te; IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); BlockState blockState = te.getBlockState(); MatrixStacker msr = MatrixStacker.of(ms); - - float angle = 0; - float clawAngle = -25; - float otherAngle = 0; int color = 0xFFFFFF; - - boolean rave = te instanceof ArmTileEntity && ((ArmTileEntity) te).debugRave; - if (rave) { - clawAngle = angle = MathHelper.lerp((MathHelper.sin(AnimationTickHolder.getRenderTick() / 2) + 1) / 2, -45, 15); - otherAngle = MathHelper.lerp((MathHelper.sin(AnimationTickHolder.getRenderTick() / 4) + 1) / 2, -95, 95); - color = ColorHelper.rainbowColor(AnimationTickHolder.ticks * 100); - } - + ms.push(); SuperByteBuffer base = AllBlockPartials.ARM_BASE.renderOn(blockState); @@ -55,33 +47,51 @@ public class ArmRenderer extends KineticTileEntityRenderer { msr.centre(); ms.translate(0, 4 / 16d, 0); - msr.rotateY(rave ? AnimationTickHolder.getRenderTick() * 10 : 0); + msr.rotateY(arm.baseAngle.get(pt)); base.renderInto(ms, builder); ms.translate(0, 1 / 16d, -2 / 16d); - msr.rotateX(angle); + msr.rotateX(arm.lowerArmAngle.get(pt) - 135); ms.translate(0, -1 / 16d, 0); - lowerBody.color(color).renderInto(ms, builder); - + lowerBody.color(color) + .renderInto(ms, builder); + ms.translate(0, 12 / 16d, 12 / 16d); - msr.rotateX(-otherAngle / 2f); - upperBody.color(color).renderInto(ms, builder); - + msr.rotateX(arm.upperArmAngle.get(pt) - 90); + upperBody.color(color) + .renderInto(ms, builder); + ms.translate(0, 11 / 16d, -11 / 16d); - msr.rotateX(-angle); + msr.rotateX(arm.headAngle.get(pt)); head.renderInto(ms, builder); - + ms.translate(0, 0, -4 / 16d); claw.renderInto(ms, builder); + ItemStack item = arm.heldItem; + ItemRenderer itemRenderer = Minecraft.getInstance() + .getItemRenderer(); + boolean hasItem = !item.isEmpty(); + boolean isBlockItem = hasItem && (item.getItem() instanceof BlockItem) + && itemRenderer.getItemModelWithOverrides(item, Minecraft.getInstance().world, null) + .isGui3d(); for (int flip : Iterate.positiveAndNegative) { ms.push(); ms.translate(0, flip * 3 / 16d, -1 / 16d); - msr.rotateX(flip * clawAngle); + msr.rotateX(flip * (hasItem ? isBlockItem ? 0 : -35 : 0)); clawGrip.renderInto(ms, builder); ms.pop(); } + if (hasItem) { + float itemScale = isBlockItem ? .5f : .625f; + msr.rotateX(90); + ms.translate(0, -4 / 16f, 0); + ms.scale(itemScale, itemScale, itemScale); + itemRenderer + .renderItem(item, TransformType.FIXED, light, overlay, ms, buffer); + } + ms.pop(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 30ba76250..9bc84fb21 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -1,45 +1,297 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPoint.Mode; +import com.simibubi.create.foundation.gui.widgets.InterpolatedAngle; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.NBTHelper; + +import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.INBT; +import net.minecraft.nbt.ListNBT; import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.math.MathHelper; +import net.minecraftforge.common.util.Constants.NBT; public class ArmTileEntity extends KineticTileEntity { - boolean debugRave; - - public ArmTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - @Override - public void lazyTick() { - if (hasWorld()) - if (world.rand.nextInt(100) == 0) - toggleRave(); - super.lazyTick(); + // Server + List inputs; + List outputs; + ListNBT interactionPointTag; + + // Both + float chasedPointProgress; + int chasedPointIndex; + ItemStack heldItem; + Phase phase; + + // Client + ArmAngleTarget previousTarget; + InterpolatedAngle lowerArmAngle; + InterpolatedAngle upperArmAngle; + InterpolatedAngle baseAngle; + InterpolatedAngle headAngle; + InterpolatedAngle clawAngle; + float previousBaseAngle; + boolean updateInteractionPoints; + + enum Phase { + SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, IDLE } - public void toggleRave() { + public ArmTileEntity(TileEntityType typeIn) { + super(typeIn); + inputs = new ArrayList<>(); + outputs = new ArrayList<>(); + heldItem = ItemStack.EMPTY; + phase = Phase.SEARCH_INPUTS; + baseAngle = new InterpolatedAngle(); + lowerArmAngle = new InterpolatedAngle(); + upperArmAngle = new InterpolatedAngle(); + headAngle = new InterpolatedAngle(); + clawAngle = new InterpolatedAngle(); + previousTarget = ArmAngleTarget.NO_TARGET; + previousBaseAngle = previousTarget.baseAngle; + updateInteractionPoints = true; + } + + @Override + public void tick() { + super.tick(); + initInteractionPoints(); + tickMovementProgress(); + if (world.isRemote) return; - debugRave = !debugRave; + if (chasedPointProgress < 1) + return; + if (phase == Phase.MOVE_TO_INPUT) + collectItem(); + if (phase == Phase.MOVE_TO_OUTPUT) + depositItem(); + } + + @Override + public void lazyTick() { + super.lazyTick(); + + if (world.isRemote) + return; + if (chasedPointProgress < .5f) + return; + if (phase == Phase.SEARCH_INPUTS) + searchForItem(); + if (phase == Phase.SEARCH_OUTPUTS) + searchForDestination(); + } + + private void tickMovementProgress() { + chasedPointProgress += Math.min(256, Math.abs(getSpeed())) / 1024f; + if (chasedPointProgress > 1) + chasedPointProgress = 1; + if (!world.isRemote) + return; + + ArmInteractionPoint targetedInteractionPoint = getTargetedInteractionPoint(); + ArmAngleTarget previousTarget = this.previousTarget; + ArmAngleTarget target = + targetedInteractionPoint == null ? ArmAngleTarget.NO_TARGET : targetedInteractionPoint.getTargetAngles(pos); + + baseAngle.set(AngleHelper.angleLerp(chasedPointProgress, previousBaseAngle, + target == ArmAngleTarget.NO_TARGET ? previousBaseAngle : target.baseAngle)); + + // Arm's angles first backup to resting position and then continue + if (chasedPointProgress < .5f) + target = ArmAngleTarget.NO_TARGET; + else + previousTarget = ArmAngleTarget.NO_TARGET; + float progress = chasedPointProgress == 1 ? 1 : (chasedPointProgress % .5f) * 2; + + lowerArmAngle.set(MathHelper.lerp(progress, previousTarget.lowerArmAngle, target.lowerArmAngle)); + upperArmAngle.set(MathHelper.lerp(progress, previousTarget.upperArmAngle, target.upperArmAngle)); + headAngle.set(AngleHelper.angleLerp(progress, previousTarget.headAngle, target.headAngle)); + } + + @Nullable + private ArmInteractionPoint getTargetedInteractionPoint() { + if (chasedPointIndex == -1) + return null; + if (phase == Phase.MOVE_TO_INPUT && chasedPointIndex < inputs.size()) + return inputs.get(chasedPointIndex); + if (phase == Phase.MOVE_TO_OUTPUT && chasedPointIndex < outputs.size()) + return outputs.get(chasedPointIndex); + return null; + } + + protected void searchForItem() { + for (int index = 0; index < inputs.size(); index++) { + ArmInteractionPoint armInteractionPoint = inputs.get(index); + for (int i = 0; i < armInteractionPoint.getSlotCount(world); i++) { + if (getDistributableAmount(armInteractionPoint, i) == 0) + continue; + + phase = Phase.MOVE_TO_INPUT; + chasedPointIndex = index; + chasedPointProgress = 0; + sendData(); + markDirty(); + return; + } + } + } + + protected void searchForDestination() { + ItemStack held = heldItem.copy(); + for (int index = 0; index < outputs.size(); index++) { + ArmInteractionPoint armInteractionPoint = outputs.get(index); + ItemStack remainder = armInteractionPoint.insert(world, held, true); + if (remainder.equals(heldItem, false)) + continue; + + phase = Phase.MOVE_TO_OUTPUT; + chasedPointIndex = index; + chasedPointProgress = 0; + sendData(); + markDirty(); + return; + } + } + + protected int getDistributableAmount(ArmInteractionPoint armInteractionPoint, int i) { + ItemStack stack = armInteractionPoint.extract(world, i, true); + ItemStack remainder = simulateInsertion(stack); + return stack.getCount() - remainder.getCount(); + } + + protected void depositItem() { + ArmInteractionPoint armInteractionPoint = getTargetedInteractionPoint(); + ItemStack toInsert = heldItem.copy(); + ItemStack remainder = armInteractionPoint.insert(world, toInsert, false); + heldItem = remainder; + phase = heldItem.isEmpty() ? Phase.SEARCH_INPUTS : Phase.SEARCH_OUTPUTS; + chasedPointProgress = 0; + chasedPointIndex = -1; + sendData(); + markDirty(); + } + + protected void collectItem() { + ArmInteractionPoint armInteractionPoint = getTargetedInteractionPoint(); + for (int i = 0; i < armInteractionPoint.getSlotCount(world); i++) { + int amountExtracted = getDistributableAmount(armInteractionPoint, i); + if (amountExtracted == 0) + continue; + + heldItem = armInteractionPoint.extract(world, i, amountExtracted, false); + phase = Phase.SEARCH_OUTPUTS; + chasedPointProgress = 0; + chasedPointIndex = -1; + sendData(); + markDirty(); + return; + } + + phase = Phase.SEARCH_INPUTS; + chasedPointProgress = 0; + chasedPointIndex = -1; + sendData(); + markDirty(); + } + + private ItemStack simulateInsertion(ItemStack stack) { + for (ArmInteractionPoint armInteractionPoint : outputs) { + stack = armInteractionPoint.insert(world, stack, true); + if (stack.isEmpty()) + break; + } + return stack; + } + + protected void initInteractionPoints() { + if (interactionPointTag == null) + return; + inputs.clear(); + outputs.clear(); + for (INBT inbt : interactionPointTag) { + ArmInteractionPoint point = ArmInteractionPoint.deserialize(world, (CompoundNBT) inbt); + if (point.mode == Mode.DEPOSIT) + outputs.add(point); + if (point.mode == Mode.TAKE) + inputs.add(point); + } + interactionPointTag = null; markDirty(); sendData(); } - + @Override public CompoundNBT write(CompoundNBT compound) { super.write(compound); - compound.putBoolean("DebugRave", debugRave); + + ListNBT pointsNBT = new ListNBT(); + inputs.stream() + .map(ArmInteractionPoint::serialize) + .forEach(pointsNBT::add); + outputs.stream() + .map(ArmInteractionPoint::serialize) + .forEach(pointsNBT::add); + + NBTHelper.writeEnum(compound, "Phase", phase); + compound.put("InterationPoints", pointsNBT); + compound.put("HeldItem", heldItem.serializeNBT()); + compound.putInt("TargetPointIndex", chasedPointIndex); + compound.putFloat("MovementProgress", chasedPointProgress); return compound; } - + + @Override + public CompoundNBT writeToClient(CompoundNBT compound) { + super.writeToClient(compound); + if (interactionPointTag != null) + compound.put("InitialInterationPoints", interactionPointTag); + return compound; + } + @Override public void read(CompoundNBT compound) { super.read(compound); - debugRave = compound.getBoolean("DebugRave"); + heldItem = ItemStack.read(compound.getCompound("HeldItem")); + phase = NBTHelper.readEnum(compound, "Phase", Phase.class); + chasedPointIndex = compound.getInt("TargetPointIndex"); + chasedPointProgress = compound.getFloat("MovementProgress"); + + if (!hasWorld() || !world.isRemote || updateInteractionPoints) + interactionPointTag = compound.getList("InterationPoints", NBT.TAG_COMPOUND); + updateInteractionPoints = false; + } + + @Override + public void readClientUpdate(CompoundNBT tag) { + int previousIndex = chasedPointIndex; + Phase previousPhase = phase; + + super.readClientUpdate(tag); + + if (previousIndex != chasedPointIndex || (previousPhase != phase)) { + ArmInteractionPoint previousPoint = null; + if (previousPhase == Phase.MOVE_TO_INPUT && previousIndex < inputs.size()) + previousPoint = inputs.get(previousIndex); + if (previousPhase == Phase.MOVE_TO_OUTPUT && previousIndex < outputs.size()) + previousPoint = outputs.get(previousIndex); + previousTarget = previousPoint == null ? ArmAngleTarget.NO_TARGET : previousPoint.getTargetAngles(pos); + if (previousPoint != null) + previousBaseAngle = previousPoint.getTargetAngles(pos).baseAngle; + } + + if (tag.contains("InitialInterationPoints")) + interactionPointTag = tag.getList("InitialInterationPoints", NBT.TAG_COMPOUND); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreenPacket.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreenPacket.java index e3c7808cd..8d49abeb4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreenPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreenPacket.java @@ -43,7 +43,9 @@ public class FilterScreenPacket extends SimplePacketBase { public void handle(Supplier context) { context.get().enqueueWork(() -> { ServerPlayerEntity player = context.get().getSender(); - + if (player == null) + return; + if (player.openContainer instanceof AbstractFilterContainer) { AbstractFilterContainer c = (AbstractFilterContainer) player.openContainer; if (option == Option.CLEAR) { diff --git a/src/main/java/com/simibubi/create/content/schematics/packet/ConfigureSchematicannonPacket.java b/src/main/java/com/simibubi/create/content/schematics/packet/ConfigureSchematicannonPacket.java index f8f9a1e93..c69f1f822 100644 --- a/src/main/java/com/simibubi/create/content/schematics/packet/ConfigureSchematicannonPacket.java +++ b/src/main/java/com/simibubi/create/content/schematics/packet/ConfigureSchematicannonPacket.java @@ -49,6 +49,8 @@ public class ConfigureSchematicannonPacket extends SimplePacketBase { public void handle(Supplier context) { context.get().enqueueWork(() -> { ServerPlayerEntity player = context.get().getSender(); + if (player == null) + return; World world = player.world; if (world == null) return; diff --git a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicPlacePacket.java b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicPlacePacket.java index 4f907675f..869f966f1 100644 --- a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicPlacePacket.java +++ b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicPlacePacket.java @@ -32,6 +32,8 @@ public class SchematicPlacePacket extends SimplePacketBase { public void handle(Supplier context) { context.get().enqueueWork(() -> { ServerPlayerEntity player = context.get().getSender(); + if (player == null) + return; Template t = SchematicItem.loadSchematic(stack); PlacementSettings settings = SchematicItem.getSettings(stack); settings.setIgnoreEntities(false); diff --git a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java index 447745bd5..b8c37ac39 100644 --- a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java +++ b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java @@ -68,6 +68,8 @@ public class SchematicUploadPacket extends SimplePacketBase { .enqueueWork(() -> { ServerPlayerEntity player = context.get() .getSender(); + if (player == null) + return; if (code == BEGIN) { BlockPos pos = ((SchematicTableContainer) player.openContainer).getTileEntity() .getPos(); diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java new file mode 100644 index 000000000..d8dd660e8 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java @@ -0,0 +1,11 @@ +package com.simibubi.create.foundation.gui.widgets; + +import com.simibubi.create.foundation.utility.AngleHelper; + +public class InterpolatedAngle extends InterpolatedValue { + + public float get(float partialTicks) { + return AngleHelper.angleLerp(partialTicks, lastValue, value); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java index 3dc30905e..b9f4f1cc2 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java @@ -4,6 +4,10 @@ import com.simibubi.create.foundation.utility.AngleHelper; public class InterpolatedChasingAngle extends InterpolatedChasingValue { + public float get(float partialTicks) { + return AngleHelper.angleLerp(partialTicks, lastValue, value); + } + @Override protected float getCurrentDiff() { return AngleHelper.getShortestAngleDiff(value, getTarget()); diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index 40a1376d2..141a0499c 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.contraptions.relays.advanced.sequencer.Config import com.simibubi.create.content.curiosities.symmetry.SymmetryEffectPacket; import com.simibubi.create.content.curiosities.tools.ExtendoGripInteractionPacket; import com.simibubi.create.content.curiosities.zapper.ZapperBeamPacket; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmPlacementPacket; import com.simibubi.create.content.logistics.item.filter.FilterScreenPacket; import com.simibubi.create.content.logistics.packet.ConfigureFlexcratePacket; import com.simibubi.create.content.logistics.packet.ConfigureStockswitchPacket; @@ -44,6 +45,7 @@ public enum AllPackets { CONFIGURE_SCROLLABLE(ScrollValueUpdatePacket.class, ScrollValueUpdatePacket::new), CANCEL_FALL(CancelPlayerFallPacket.class, CancelPlayerFallPacket::new), EXTENDO_INTERACT(ExtendoGripInteractionPacket.class, ExtendoGripInteractionPacket::new), + PLACE_ARM(ArmPlacementPacket.class, ArmPlacementPacket::new), // Server to Client SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new), diff --git a/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java b/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java index e03a3fa5c..2ea47f60a 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java +++ b/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java @@ -40,6 +40,8 @@ public class NbtPacket extends SimplePacketBase { public void handle(Supplier context) { context.get().enqueueWork(() -> { ServerPlayerEntity player = context.get().getSender(); + if (player == null) + return; if (slot == -1) { ItemStack heldItem = player.getHeldItem(hand); diff --git a/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java b/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java index 0d8da4d47..ba3bd1f3b 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java +++ b/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java @@ -35,6 +35,8 @@ public abstract class TileEntityConfigurationPacket public void handle(Supplier context) { context.get().enqueueWork(() -> { ServerPlayerEntity player = context.get().getSender(); + if (player == null) + return; World world = player.world; if (world == null || world.getTileEntity(pos) == null) diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java index 2c971b671..6a08a3c62 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java @@ -12,8 +12,9 @@ import net.minecraft.util.math.AxisAlignedBB; public class NBTHelper { - public static > T readEnum(String name, Class enumClass) { + public static > T readEnum(CompoundNBT nbt, String key, Class enumClass) { T[] enumConstants = enumClass.getEnumConstants(); + String name = nbt.getString(key); if (enumConstants == null) throw new IllegalArgumentException("Non-Enum class passed to readEnum(): " + enumClass.getName()); for (T t : enumConstants) { @@ -22,11 +23,11 @@ public class NBTHelper { } return enumConstants[0]; } - - public static > String writeEnum(T enumConstant) { - return enumConstant.name(); + + public static > void writeEnum(CompoundNBT nbt, String key, T enumConstant) { + nbt.putString(key, enumConstant.name()); } - + public static ListNBT writeCompoundList(List list, Function serializer) { ListNBT listNBT = new ListNBT(); list.forEach(t -> listNBT.add(serializer.apply(t))); diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json new file mode 100644 index 000000000..7996d1e8a --- /dev/null +++ b/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json @@ -0,0 +1,31 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "4": "create:block/marker_flag" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 16, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "north": {"uv": [1, 0, 2, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#4"}, + "south": {"uv": [1, 0, 2, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#4"} + } + }, + { + "from": [0.4, 7.5, 1], + "to": [0.4, 15.5, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "east": {"uv": [16, 0, 8, 8], "texture": "#4", "tintindex": 0}, + "west": {"uv": [8, 0, 16, 8], "texture": "#4", "tintindex": 0} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json new file mode 100644 index 000000000..6dae60cdb --- /dev/null +++ b/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json @@ -0,0 +1,31 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "4": "create:block/marker_flag" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 16, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "north": {"uv": [1, 0, 2, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#4"}, + "south": {"uv": [1, 0, 2, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#4"} + } + }, + { + "from": [0.4, 7.5, 1], + "to": [0.4, 15.5, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "east": {"uv": [16, 8, 8, 16], "texture": "#4", "tintindex": 0}, + "west": {"uv": [8, 8, 16, 16], "texture": "#4", "tintindex": 0} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json new file mode 100644 index 000000000..84f72eb0c --- /dev/null +++ b/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json @@ -0,0 +1,31 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "4": "create:block/marker_flag" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 8, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "north": {"uv": [1, 8, 2, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#4"}, + "south": {"uv": [1, 0, 2, 8], "texture": "#4"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#4"} + } + }, + { + "from": [0.4, -0.5, 1], + "to": [0.4, 7.5, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "east": {"uv": [16, 0, 8, 8], "texture": "#4", "tintindex": 0}, + "west": {"uv": [8, 0, 16, 8], "texture": "#4", "tintindex": 0} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json new file mode 100644 index 000000000..24223d31a --- /dev/null +++ b/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json @@ -0,0 +1,31 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "4": "create:block/marker_flag" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 8, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "north": {"uv": [1, 8, 2, 16], "texture": "#4"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#4"}, + "south": {"uv": [1, 0, 2, 8], "texture": "#4"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#4"} + } + }, + { + "from": [0.4, -0.5, 1], + "to": [0.4, 7.5, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, + "faces": { + "east": {"uv": [16, 8, 8, 16], "texture": "#4", "tintindex": 0}, + "west": {"uv": [8, 8, 16, 16], "texture": "#4", "tintindex": 0} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/marker_flag.png b/src/main/resources/assets/create/textures/block/marker_flag.png new file mode 100644 index 0000000000000000000000000000000000000000..0970405a30d0750e0c3a1c0badedb47b980c56ea GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!JD2gjv*HQ$!C1J{``OWS-eekwV9z&0%P^J zH$U|i6%QUbe*E}{M@PBY^z`)DWMyS{M5$@`nmAnJVPfH}`237_#=kEwg_~#2lx)+U z*~0R3q0b$LCnY7b6B*tx*~Q5juuFGzbR?7%79LzB$>PDsTw=h&V^R9*%76EMxxeNn zCMgcb3=WihJ;tjcY|e1>(6L_W|IRx#8Zz`7E-{)p&#zopr00aDX3;+NC literal 0 HcmV?d00001 From cd189a5fa9bb3bfdca89adac927089c2f5202058 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 2 Jul 2020 17:23:42 +0200 Subject: [PATCH 25/47] Chute Implementation - Chutes can now transfer items - Chutes now propagate air flow from attached fans - Fixed a few issues with mechanical arms - Removed unused chute models - Implemented appropriate interactions between funnels and chutes --- .../java/com/simibubi/create/AllShapes.java | 2 +- .../com/simibubi/create/AllTileEntities.java | 5 + .../components/fan/EncasedFanBlock.java | 34 +- .../components/fan/EncasedFanTileEntity.java | 25 +- .../belt/transport/TransportedItemStack.java | 5 +- .../logistics/block/chute/ChuteBlock.java | 81 ++- .../block/chute/ChuteItemHandler.java | 52 ++ .../logistics/block/chute/ChuteRenderer.java | 48 ++ .../block/chute/ChuteTileEntity.java | 465 ++++++++++++++++++ .../logistics/block/depot/DepotBlock.java | 17 +- .../block/mechanicalArm/ArmBlock.java | 42 +- .../mechanicalArm/ArmInteractionPoint.java | 2 + .../block/mechanicalArm/ArmTileEntity.java | 37 +- .../realityFunnel/RealityFunnelBlock.java | 21 +- .../RealityFunnelTileEntity.java | 39 +- .../create/models/block/chute/block.json | 11 +- .../models/block/chute/block_diagonal.json | 2 +- .../block/chute/block_diagonal_start.json | 8 +- .../block/chute/block_diagonal_straight.json | 2 +- .../models/block/chute/block_windowed.json | 48 +- .../block/chute/old/block_diagonal_start.json | 138 ------ .../chute/old/block_diagonal_straight.json | 77 --- .../block/chute/old/block_diagonal_t.json | 90 ---- .../models/block/chute/old/scene.bbmodel | 1 - .../create/models/block/chute/scene.bbmodel | 1 - .../models/block/chute_funnel/block.json | 6 +- .../create/textures/block/chute_diagonal.png | Bin 1399 -> 1338 bytes 27 files changed, 891 insertions(+), 368 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItemHandler.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java delete mode 100644 src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json delete mode 100644 src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json delete mode 100644 src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json delete mode 100644 src/main/resources/assets/create/models/block/chute/old/scene.bbmodel delete mode 100644 src/main/resources/assets/create/models/block/chute/scene.bbmodel diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index daddda735..53980cc8f 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -74,8 +74,8 @@ public class AllShapes { .add(0, 10, 0, 16, 13, 16) .forDirectional(UP), CHUTE_FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) - .add(1, 5, 1, 15, 16, 15) .add(0, 8, 0, 16, 14, 16) + .add(1, 5, 1, 15, 18, 15) .forDirectional(UP), BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 141699d12..b639047f5 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -72,6 +72,8 @@ import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverRe import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelRenderer; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; +import com.simibubi.create.content.logistics.block.chute.ChuteRenderer; +import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; import com.simibubi.create.content.logistics.block.depot.DepotRenderer; import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; import com.simibubi.create.content.logistics.block.diodes.AdjustablePulseRepeaterTileEntity; @@ -154,6 +156,8 @@ public class AllTileEntities { register("fluid_tank", FluidTankTileEntity::new, AllBlocks.FLUID_TANK); public static final TileEntityEntry BELT = register("belt", BeltTileEntity::new, AllBlocks.BELT); + public static final TileEntityEntry CHUTE = + register("chute", ChuteTileEntity::new, AllBlocks.CHUTE); public static final TileEntityEntry BELT_TUNNEL = register("belt_tunnel", BeltTunnelTileEntity::new, AllBlocks.BELT_TUNNEL); public static final TileEntityEntry MECHANICAL_ARM = @@ -301,6 +305,7 @@ public class AllTileEntities { bind(ROTATION_SPEED_CONTROLLER, SpeedControllerRenderer::new); bind(PACKAGER, PackagerRenderer::new); bind(DEPOT, DepotRenderer::new); + bind(CHUTE, ChuteRenderer::new); bind(CREATIVE_CRATE, SmartTileEntityRenderer::new); bind(REDSTONE_LINK, SmartTileEntityRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java index 792feb485..cde28e30e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java @@ -1,5 +1,6 @@ package com.simibubi.create.content.contraptions.components.fan; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.foundation.block.ITE; @@ -34,19 +35,38 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements ITE { + + private static Random R = new Random(); + public ItemStack stack; public float beltPosition; public float sideOffset; @@ -25,7 +28,7 @@ public class TransportedItemStack implements Comparable { public TransportedItemStack(ItemStack stack) { this.stack = stack; - angle = new Random().nextInt(360); + angle = R.nextInt(360); sideOffset = prevSideOffset = getTargetSideOffset(); insertedFrom = Direction.UP; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java index 06c931ceb..e8a978360 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteBlock.java @@ -4,23 +4,34 @@ import java.util.HashMap; import java.util.Map; import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; import net.minecraft.state.DirectionProperty; import net.minecraft.state.EnumProperty; import net.minecraft.state.IProperty; import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; +import net.minecraft.util.Hand; import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; @@ -28,7 +39,7 @@ import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public class ChuteBlock extends Block implements IWrenchable { +public class ChuteBlock extends Block implements IWrenchable, ITE { public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); public static final DirectionProperty FACING = BlockStateProperties.FACING_EXCEPT_UP; @@ -41,6 +52,16 @@ public class ChuteBlock extends Block implements IWrenchable { } } + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.CHUTE.create(); + } + public ChuteBlock(Properties p_i48440_1_) { super(p_i48440_1_); setDefaultState(getDefaultState().with(SHAPE, Shape.NORMAL) @@ -48,10 +69,34 @@ public class ChuteBlock extends Block implements IWrenchable { } @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) { - if (p_220082_5_) + public void onLanded(IBlockReader worldIn, Entity entityIn) { + super.onLanded(worldIn, entityIn); + if (!(entityIn instanceof ItemEntity)) + return; + if (entityIn.world.isRemote) + return; + DirectBeltInputBehaviour input = TileEntityBehaviour.get(entityIn.world, new BlockPos(entityIn.getPositionVec() + .add(0, 0.5f, 0)).down(), DirectBeltInputBehaviour.TYPE); + if (input == null) + return; + if (!input.canInsertFromSide(Direction.UP)) return; + ItemEntity itemEntity = (ItemEntity) entityIn; + ItemStack toInsert = itemEntity.getItem(); + ItemStack remainder = input.handleInsertion(toInsert, Direction.UP, false); + + if (remainder.isEmpty()) + itemEntity.remove(); + if (remainder.getCount() < toInsert.getCount()) + itemEntity.setItem(remainder); + } + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) { + withTileEntityDo(world, pos, ChuteTileEntity::onAdded); + if (p_220082_5_) + return; updateDiagonalNeighbour(state, world, pos); } @@ -72,6 +117,7 @@ public class ChuteBlock extends Block implements IWrenchable { public void onReplaced(BlockState state, World world, BlockPos pos, BlockState p_196243_4_, boolean p_196243_5_) { boolean differentBlock = state.getBlock() != p_196243_4_.getBlock(); if (state.hasTileEntity() && (differentBlock || !p_196243_4_.hasTileEntity())) { + withTileEntityDo(world, pos, c -> c.onRemoved(state)); world.removeTileEntity(pos); } if (p_196243_5_ || !differentBlock) @@ -175,4 +221,33 @@ public class ChuteBlock extends Block implements IWrenchable { super.fillStateContainer(p_206840_1_.add(SHAPE, FACING)); } + @Override + public Class getTileEntityClass() { + return ChuteTileEntity.class; + } + + @Override + public ActionResultType onUse(BlockState p_225533_1_, World world, BlockPos pos, PlayerEntity player, Hand hand, + BlockRayTraceResult p_225533_6_) { + if (!player.getHeldItem(hand) + .isEmpty()) + return ActionResultType.PASS; + if (world.isRemote) + return ActionResultType.SUCCESS; + try { + ChuteTileEntity te = getTileEntity(world, pos); + if (te == null) + return ActionResultType.PASS; + if (te.item.isEmpty()) + return ActionResultType.PASS; + player.inventory.placeItemBackInInventory(world, te.item); + te.setItem(ItemStack.EMPTY); + return ActionResultType.SUCCESS; + + } catch (TileEntityException e) { + e.printStackTrace(); + } + return ActionResultType.PASS; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItemHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItemHandler.java new file mode 100644 index 000000000..bb4b3dad8 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteItemHandler.java @@ -0,0 +1,52 @@ +package com.simibubi.create.content.logistics.block.chute; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; + +public class ChuteItemHandler implements IItemHandler { + + private ChuteTileEntity te; + + public ChuteItemHandler(ChuteTileEntity te) { + this.te = te; + } + + @Override + public int getSlots() { + return 1; + } + + @Override + public ItemStack getStackInSlot(int slot) { + return te.item; + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + if (!te.item.isEmpty()) + return stack; + if (!simulate) + te.setItem(stack); + return ItemStack.EMPTY; + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + ItemStack remainder = te.item.copy(); + ItemStack split = remainder.split(amount); + if (!simulate) + te.setItem(remainder); + return split; + } + + @Override + public int getSlotLimit(int slot) { + return Math.min(64, getStackInSlot(slot).getMaxStackSize()); + } + + @Override + public boolean isItemValid(int slot, ItemStack stack) { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java new file mode 100644 index 000000000..5094ec246 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteRenderer.java @@ -0,0 +1,48 @@ +package com.simibubi.create.content.logistics.block.chute; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; +import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; +import com.simibubi.create.foundation.utility.MatrixStacker; + +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.util.Direction; + +public class ChuteRenderer extends SafeTileEntityRenderer { + + public ChuteRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + @Override + protected void renderSafe(ChuteTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, + int light, int overlay) { + if (te.item.isEmpty()) + return; + BlockState blockState = te.getBlockState(); + if (blockState.get(ChuteBlock.FACING) != Direction.DOWN) + return; + if (blockState.get(ChuteBlock.SHAPE) != Shape.WINDOW_STRAIGHT) + return; + + ItemRenderer itemRenderer = Minecraft.getInstance() + .getItemRenderer(); + MatrixStacker msr = MatrixStacker.of(ms); + ms.push(); + msr.centre(); + float itemScale = .5f; + float itemPosition = te.itemPosition.get(partialTicks); + ms.translate(0, -.5 + itemPosition, 0); + ms.scale(itemScale, itemScale, itemScale); + msr.rotateX(itemPosition * 180); + msr.rotateY(itemPosition * 180); + itemRenderer.renderItem(te.item, TransformType.FIXED, light, overlay, ms, buffer); + ms.pop(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java new file mode 100644 index 000000000..1d266f23c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -0,0 +1,465 @@ +package com.simibubi.create.content.logistics.block.chute; + +import java.util.LinkedList; +import java.util.List; + +import javax.annotation.Nullable; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock; +import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity; +import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; +import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; +import com.simibubi.create.foundation.gui.widgets.InterpolatedValue; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.item.ItemEntity; +import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.particles.ItemParticleData; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; + +public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInformation { + + float pull; + float push; + + ItemStack item; + InterpolatedValue itemPosition; + ChuteItemHandler itemHandler; + LazyOptional lazyHandler; + boolean canPickUpItems; + + public ChuteTileEntity(TileEntityType tileEntityTypeIn) { + super(tileEntityTypeIn); + item = ItemStack.EMPTY; + itemPosition = new InterpolatedValue(); + itemHandler = new ChuteItemHandler(this); + lazyHandler = LazyOptional.of(() -> itemHandler); + canPickUpItems = false; + } + + @Override + public void addBehaviours(List behaviours) { + behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen((d) -> canDirectlyInsertCached())); + } + + // Cached per-tick, useful when a lot of items are waiting on top of it + public boolean canDirectlyInsertCached() { + return canPickUpItems; + } + + private boolean canDirectlyInsert() { + BlockState blockState = getBlockState(); + BlockState blockStateAbove = world.getBlockState(pos.up()); + if (!AllBlocks.CHUTE.has(blockState)) + return false; + if (AllBlocks.CHUTE.has(blockStateAbove) && blockStateAbove.get(ChuteBlock.FACING) == Direction.DOWN) + return false; + if (getItemMotion() > 0 && getInputChutes().isEmpty()) + return false; + return blockState.get(ChuteBlock.FACING) == Direction.DOWN || blockState.get(ChuteBlock.SHAPE) == Shape.START; + } + + @Override + public void initialize() { + super.initialize(); + } + + @Override + public void tick() { + super.tick(); + canPickUpItems = canDirectlyInsert(); + if (item.isEmpty()) + return; + float itemMotion = getItemMotion(); + float nextOffset = itemPosition.value + itemMotion; + + if (itemMotion < 0) { + if (nextOffset < .5f) { + if (handleSideOutput()) + return; + boolean success = handleDownwardOutput(true); + if (!success) + nextOffset = .5f; + else if (nextOffset < 0) { + handleDownwardOutput(world.isRemote); + return; + } + } + } + + if (itemMotion > 0) { + if (nextOffset > .5f) { + if (handleSideOutput()) + return; + boolean success = handleUpwardOutput(true); + if (!success) + nextOffset = .5f; + else if (nextOffset > 1) { + handleUpwardOutput(world.isRemote); + return; + } + } + } + + itemPosition.set(nextOffset); + } + + private boolean handleDownwardOutput(boolean simulate) { + BlockState blockState = getBlockState(); + ChuteTileEntity targetChute = getTargetChute(blockState); + + if (targetChute != null) { + boolean canInsert = targetChute.item.isEmpty(); + if (!simulate && canInsert) { + targetChute.setItem(item, 1); + setItem(ItemStack.EMPTY); + } + return canInsert; + } + + // Diagonal chutes can only insert into other chutes + if (blockState.get(ChuteBlock.FACING) + .getAxis() + .isHorizontal()) + return false; + + BlockState stateBelow = world.getBlockState(pos.down()); + if (AllBlocks.REALITY_FUNNEL.has(stateBelow)) { + if (stateBelow.get(RealityFunnelBlock.POWERED)) + return false; + if (stateBelow.get(RealityFunnelBlock.FACING) != Direction.UP) + return false; + ItemStack remainder = RealityFunnelBlock.tryInsert(world, pos.down(), item, simulate); + if (!simulate) + setItem(remainder); + return remainder.isEmpty(); + } + + DirectBeltInputBehaviour directInput = + TileEntityBehaviour.get(world, pos.down(), DirectBeltInputBehaviour.TYPE); + if (directInput != null) { + if (!directInput.canInsertFromSide(Direction.UP)) + return false; + ItemStack remainder = directInput.handleInsertion(item, Direction.UP, simulate); + if (!simulate) + setItem(remainder); + return remainder.isEmpty(); + } + + if (Block.hasSolidSideOnTop(world, pos.down())) + return false; + + if (!simulate) { + Vec3d dropVec = VecHelper.getCenterOf(pos) + .add(0, -12 / 16f, 0); + ItemEntity dropped = new ItemEntity(world, dropVec.x, dropVec.y, dropVec.z, item.copy()); + dropped.setDefaultPickupDelay(); + dropped.setMotion(0, -.25f, 0); + world.addEntity(dropped); + setItem(ItemStack.EMPTY); + } + + return true; + } + + private boolean handleUpwardOutput(boolean simulate) { + BlockState stateAbove = world.getBlockState(pos.up()); + if (AllBlocks.REALITY_FUNNEL.has(stateAbove)) { + if (!stateAbove.get(RealityFunnelBlock.POWERED) + && stateAbove.get(RealityFunnelBlock.FACING) == Direction.DOWN) { + ItemStack remainder = RealityFunnelBlock.tryInsert(world, pos.up(), item, simulate); + if (remainder.isEmpty()) { + if (!simulate) + setItem(remainder); + return true; + } + } + } + + ChuteTileEntity bestOutput = null; + List inputChutes = getInputChutes(); + for (ChuteTileEntity targetChute : inputChutes) { + if (!targetChute.item.isEmpty()) + continue; + float itemMotion = targetChute.getItemMotion(); + if (itemMotion < 0) + continue; + if (bestOutput == null || bestOutput.getItemMotion() < itemMotion) { + bestOutput = targetChute; + } + } + + if (bestOutput != null) { + if (!simulate) { + bestOutput.setItem(item, 0); + setItem(ItemStack.EMPTY); + } + return true; + } + + if (Block.hasSolidSide(stateAbove, world, pos.up(), Direction.DOWN)) + return false; + if (!inputChutes.isEmpty()) + return false; + + if (!simulate) { + Vec3d dropVec = VecHelper.getCenterOf(pos) + .add(0, 8 / 16f, 0); + ItemEntity dropped = new ItemEntity(world, dropVec.x, dropVec.y, dropVec.z, item.copy()); + dropped.setDefaultPickupDelay(); + dropped.setMotion(0, getItemMotion() * 2, 0); + world.addEntity(dropped); + setItem(ItemStack.EMPTY); + } + return true; + } + + private boolean handleSideOutput() { + if (world.isRemote) + return false; + for (Direction direction : Iterate.horizontalDirections) { + BlockPos funnelPos = pos.offset(direction); + BlockState funnelState = world.getBlockState(funnelPos); + if (AllBlocks.CHUTE_FUNNEL.has(funnelState)) { + if (funnelState.get(ChuteFunnelBlock.POWERED)) + continue; + if (funnelState.get(ChuteFunnelBlock.HORIZONTAL_FACING) != direction.getOpposite()) + continue; + if (funnelState.get(ChuteFunnelBlock.PUSHING)) + continue; + ItemStack remainder = RealityFunnelBlock.tryInsert(world, funnelPos, item.copy(), world.isRemote); + if (remainder.getCount() != item.getCount() && !world.isRemote) + setItem(remainder); + } + } + return item.isEmpty(); + } + + public void setItem(ItemStack stack) { + setItem(stack, getItemMotion() < 0 ? 1 : 0); + } + + public void setItem(ItemStack stack, float insertionPos) { + item = stack; + itemPosition.lastValue = itemPosition.value = insertionPos; + markDirty(); + sendData(); + } + + @Override + public void remove() { + super.remove(); + if (lazyHandler != null) + lazyHandler.invalidate(); + } + + @Override + public CompoundNBT write(CompoundNBT compound) { + compound.put("Item", item.serializeNBT()); + compound.putFloat("ItemPosition", itemPosition.value); + compound.putFloat("Pull", pull); + compound.putFloat("Push", push); + return super.write(compound); + } + + @Override + public void read(CompoundNBT compound) { + ItemStack previousItem = item; + item = ItemStack.read(compound.getCompound("Item")); + itemPosition.lastValue = itemPosition.value = compound.getFloat("ItemPosition"); + pull = compound.getFloat("Pull"); + push = compound.getFloat("Push"); + super.read(compound); + + if (hasWorld() && world.isRemote && !previousItem.equals(item, false) && !item.isEmpty()) { + if (world.rand.nextInt(3) != 0) + return; + Vec3d p = VecHelper.getCenterOf(pos); + p = VecHelper.offsetRandomly(p, world.rand, .5f); + Vec3d m = Vec3d.ZERO; + world.addParticle(new ItemParticleData(ParticleTypes.ITEM, item), p.x, p.y, p.z, m.x, m.y, m.z); + } + } + + public float getItemMotion() { + // Chutes per second + final float fanSpeedModifier = 1 / 64f; + final float maxUpwardItemSpeed = 20f; + final float gravity = 4f; + + float upwardMotion = (push + pull) * fanSpeedModifier; + return (upwardMotion == 0 ? -gravity : MathHelper.clamp(upwardMotion, 0, maxUpwardItemSpeed)) / 20f; + } + + public void onRemoved(BlockState chuteState) { + ChuteTileEntity targetChute = getTargetChute(chuteState); + List inputChutes = getInputChutes(); + if (!item.isEmpty()) + InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), item); + super.remove(); + if (targetChute != null) { + targetChute.updatePull(); + targetChute.propagatePush(); + } + inputChutes.forEach(c -> c.updatePush(inputChutes.size())); + } + + public void onAdded() { + updateContainingBlockInfo(); + updatePull(); + ChuteTileEntity targetChute = getTargetChute(getBlockState()); + if (targetChute != null) + targetChute.propagatePush(); + else + updatePush(1); + } + + public void updatePull() { + float totalPull = calculatePull(); + if (pull == totalPull) + return; + pull = totalPull; + sendData(); + ChuteTileEntity targetChute = getTargetChute(getBlockState()); + if (targetChute != null) + targetChute.updatePull(); + } + + public void updatePush(int branchCount) { + float totalPush = calculatePush(branchCount); + if (push == totalPush) + return; + push = totalPush; + sendData(); + propagatePush(); + } + + public void propagatePush() { + List inputs = getInputChutes(); + inputs.forEach(c -> c.updatePush(inputs.size())); + } + + protected float calculatePull() { + BlockState blockStateAbove = world.getBlockState(pos.up()); + if (AllBlocks.ENCASED_FAN.has(blockStateAbove) + && blockStateAbove.get(EncasedFanBlock.FACING) == Direction.DOWN) { + TileEntity te = world.getTileEntity(pos.up()); + if (te instanceof EncasedFanTileEntity && !te.isRemoved()) { + EncasedFanTileEntity fan = (EncasedFanTileEntity) te; + return Math.abs(fan.getSpeed()); + } + } + + float totalPull = 0; + for (Direction d : Iterate.directions) { + ChuteTileEntity inputChute = getInputChute(d); + if (inputChute == null) + continue; + totalPull += inputChute.pull; + } + return totalPull; + } + + protected float calculatePush(int branchCount) { + BlockState blockStateBelow = world.getBlockState(pos.down()); + if (AllBlocks.ENCASED_FAN.has(blockStateBelow) && blockStateBelow.get(EncasedFanBlock.FACING) == Direction.UP) { + TileEntity te = world.getTileEntity(pos.down()); + if (te instanceof EncasedFanTileEntity && !te.isRemoved()) { + EncasedFanTileEntity fan = (EncasedFanTileEntity) te; + return Math.abs(fan.getSpeed()); + } + } + + ChuteTileEntity targetChute = getTargetChute(getBlockState()); + if (targetChute == null) + return 0; + return targetChute.push / branchCount; + } + + @Nullable + private ChuteTileEntity getTargetChute(BlockState state) { + Direction targetDirection = state.get(ChuteBlock.FACING); + BlockPos chutePos = pos.down(); + if (targetDirection.getAxis() + .isHorizontal()) + chutePos = chutePos.offset(targetDirection.getOpposite()); + BlockState chuteState = world.getBlockState(chutePos); + if (!AllBlocks.CHUTE.has(chuteState)) + return null; + TileEntity te = world.getTileEntity(chutePos); + if (te instanceof ChuteTileEntity) + return (ChuteTileEntity) te; + return null; + } + + private List getInputChutes() { + List inputs = new LinkedList<>(); + for (Direction d : Iterate.directions) { + ChuteTileEntity inputChute = getInputChute(d); + if (inputChute == null) + continue; + inputs.add(inputChute); + } + return inputs; + } + + @Nullable + private ChuteTileEntity getInputChute(Direction direction) { + if (direction == Direction.DOWN) + return null; + direction = direction.getOpposite(); + BlockPos chutePos = pos.up(); + if (direction.getAxis() + .isHorizontal()) + chutePos = chutePos.offset(direction); + BlockState chuteState = world.getBlockState(chutePos); + if (!AllBlocks.CHUTE.has(chuteState) || chuteState.get(ChuteBlock.FACING) != direction) + return null; + TileEntity te = world.getTileEntity(chutePos); + if (te instanceof ChuteTileEntity && !te.isRemoved()) + return (ChuteTileEntity) te; + return null; + } + + @Override + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + tooltip.add(spacing + TextFormatting.GOLD + "Pull: " + TextFormatting.WHITE + pull); + tooltip.add(spacing + TextFormatting.GOLD + "Push: " + TextFormatting.WHITE + push); + tooltip.add(TextFormatting.YELLOW + "-> Item Motion: " + TextFormatting.WHITE + getItemMotion()); + return true; + } + + @Override + public LazyOptional getCapability(Capability cap, Direction side) { + if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + return lazyHandler.cast(); + return super.getCapability(cap, side); + } + + public ItemStack getItem() { + return item; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java index a5aa60646..c29347c7c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/DepotBlock.java @@ -64,8 +64,9 @@ public class DepotBlock extends Block implements ITE { return ActionResultType.SUCCESS; withTileEntityDo(world, pos, te -> { - boolean wasEmptyHanded = player.getHeldItem(hand) - .isEmpty(); + ItemStack heldItem = player.getHeldItem(hand); + boolean wasEmptyHanded = heldItem.isEmpty(); + boolean shouldntPlaceItem = AllBlocks.MECHANICAL_ARM.isIn(heldItem); ItemStack mainItemStack = te.getHeldItemStack(); if (!mainItemStack.isEmpty()) { @@ -76,12 +77,12 @@ public class DepotBlock extends Block implements ITE { for (int i = 0; i < outputs.getSlots(); i++) player.inventory.placeItemBackInInventory(world, outputs.extractItem(i, 64, false)); - if (!wasEmptyHanded) { - TransportedItemStack heldItem = new TransportedItemStack(player.getHeldItem(hand)); - heldItem.insertedFrom = player.getHorizontalFacing(); - heldItem.prevBeltPosition = .25f; - heldItem.beltPosition = .25f; - te.setHeldItem(heldItem); + if (!wasEmptyHanded && !shouldntPlaceItem) { + TransportedItemStack transported = new TransportedItemStack(heldItem); + transported.insertedFrom = player.getHorizontalFacing(); + transported.prevBeltPosition = .25f; + transported.beltPosition = .25f; + te.setHeldItem(transported); player.setHeldItem(hand, ItemStack.EMPTY); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java index a266435e3..e5f1518d5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java @@ -3,16 +3,24 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.KineticBlock; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; import com.simibubi.create.foundation.block.ITE; import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; public class ArmBlock extends KineticBlock implements ITE { @@ -24,13 +32,13 @@ public class ArmBlock extends KineticBlock implements ITE { public boolean hasIntegratedCogwheel(IWorldReader world, BlockPos pos, BlockState state) { return true; } - + @Override public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { return AllShapes.MECHANICAL_ARM; } - + @Override public Axis getRotationAxis(BlockState state) { return Axis.Y; @@ -46,4 +54,34 @@ public class ArmBlock extends KineticBlock implements ITE { return ArmTileEntity.class; } + @Override + public void onReplaced(BlockState p_196243_1_, World world, BlockPos pos, BlockState p_196243_4_, + boolean p_196243_5_) { + if (p_196243_1_.hasTileEntity() + && (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasTileEntity())) { + withTileEntityDo(world, pos, te -> { + if (!te.heldItem.isEmpty()) + InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), te.heldItem); + }); + world.removeTileEntity(pos); + } + } + + @Override + public ActionResultType onUse(BlockState p_225533_1_, World world, BlockPos pos, PlayerEntity player, + Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + if (world.isRemote) + return ActionResultType.SUCCESS; + withTileEntityDo(world, pos, te -> { + if (te.heldItem.isEmpty()) + return; + player.inventory.placeItemBackInInventory(world, te.heldItem); + te.heldItem = ItemStack.EMPTY; + te.phase = Phase.SEARCH_INPUTS; + te.markDirty(); + te.sendData(); + }); + return ActionResultType.SUCCESS; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java index 1d844ec5c..c247eaf62 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -147,6 +147,8 @@ public abstract class ArmInteractionPoint { static ArmInteractionPoint deserialize(IBlockReader world, CompoundNBT nbt) { BlockPos pos = NBTUtil.readBlockPos(nbt.getCompound("Pos")); ArmInteractionPoint interactionPoint = createAt(world, pos); + if (interactionPoint == null) + return null; interactionPoint.mode = NBTHelper.readEnum(nbt, "Mode", Mode.class); return interactionPoint; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 9bc84fb21..88a0b9c88 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -172,9 +172,11 @@ public class ArmTileEntity extends KineticTileEntity { protected void depositItem() { ArmInteractionPoint armInteractionPoint = getTargetedInteractionPoint(); - ItemStack toInsert = heldItem.copy(); - ItemStack remainder = armInteractionPoint.insert(world, toInsert, false); - heldItem = remainder; + if (armInteractionPoint != null) { + ItemStack toInsert = heldItem.copy(); + ItemStack remainder = armInteractionPoint.insert(world, toInsert, false); + heldItem = remainder; + } phase = heldItem.isEmpty() ? Phase.SEARCH_INPUTS : Phase.SEARCH_OUTPUTS; chasedPointProgress = 0; chasedPointIndex = -1; @@ -184,19 +186,20 @@ public class ArmTileEntity extends KineticTileEntity { protected void collectItem() { ArmInteractionPoint armInteractionPoint = getTargetedInteractionPoint(); - for (int i = 0; i < armInteractionPoint.getSlotCount(world); i++) { - int amountExtracted = getDistributableAmount(armInteractionPoint, i); - if (amountExtracted == 0) - continue; - - heldItem = armInteractionPoint.extract(world, i, amountExtracted, false); - phase = Phase.SEARCH_OUTPUTS; - chasedPointProgress = 0; - chasedPointIndex = -1; - sendData(); - markDirty(); - return; - } + if (armInteractionPoint != null) + for (int i = 0; i < armInteractionPoint.getSlotCount(world); i++) { + int amountExtracted = getDistributableAmount(armInteractionPoint, i); + if (amountExtracted == 0) + continue; + + heldItem = armInteractionPoint.extract(world, i, amountExtracted, false); + phase = Phase.SEARCH_OUTPUTS; + chasedPointProgress = 0; + chasedPointIndex = -1; + sendData(); + markDirty(); + return; + } phase = Phase.SEARCH_INPUTS; chasedPointProgress = 0; @@ -221,6 +224,8 @@ public class ArmTileEntity extends KineticTileEntity { outputs.clear(); for (INBT inbt : interactionPointTag) { ArmInteractionPoint point = ArmInteractionPoint.deserialize(world, (CompoundNBT) inbt); + if (point == null) + continue; if (point.mode == Mode.DEPOSIT) outputs.add(point); if (point.mode == Mode.TAKE) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index b0985465a..38361f52a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -76,21 +76,26 @@ public class RealityFunnelBlock extends ProperDirectionalBlock implements ITE chute.setItem(stack, .5f)); + extracting.withAdditionalFilter(stack -> chute.getItem() + .isEmpty()); + extracting.extract(); + } + + public void tickAsVerticalChuteFunnel() { + Direction funnelFacing = RealityFunnelBlock.getFunnelFacing(getBlockState()); + BlockPos chutePos = pos.offset(funnelFacing); + TileEntity te = world.getTileEntity(chutePos); + if (!(te instanceof ChuteTileEntity)) + return; + ChuteTileEntity chute = (ChuteTileEntity) te; + if (chute.getItemMotion() > 0 != (funnelFacing == Direction.UP)) + return; + extracting.setCallback(stack -> chute.setItem(stack)); + extracting.withAdditionalFilter(stack -> chute.getItem() + .isEmpty()); + extracting.extract(); } public void tickAsBeltFunnel() { @@ -138,7 +175,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { filtering = new FilteringBehaviour(this, new FunnelFilterSlotPositioning()).showCountWhen(() -> { BlockState blockState = getBlockState(); return blockState.getBlock() instanceof HorizontalInteractionFunnelBlock - && blockState.get(HorizontalInteractionFunnelBlock.PUSHING); + && blockState.get(HorizontalInteractionFunnelBlock.PUSHING) || determineCurrentMode() == Mode.CHUTE_END; }); behaviours.add(filtering); diff --git a/src/main/resources/assets/create/models/block/chute/block.json b/src/main/resources/assets/create/models/block/chute/block.json index 69281e6fe..d1bb640b4 100644 --- a/src/main/resources/assets/create/models/block/chute/block.json +++ b/src/main/resources/assets/create/models/block/chute/block.json @@ -97,6 +97,14 @@ "south": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} } + }, + { + "from": [3, 13, 3], + "to": [13, 14, 13], + "faces": { + "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"}, + "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"} + } } ], "groups": [ @@ -109,6 +117,5 @@ "name": "ChuteBase", "origin": [8, 8, -7], "children": [4, 5, 6, 7] - } - ] + }, 8] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal.json b/src/main/resources/assets/create/models/block/chute/block_diagonal.json index 1e5ca301b..7f7428bce 100644 --- a/src/main/resources/assets/create/models/block/chute/block_diagonal.json +++ b/src/main/resources/assets/create/models/block/chute/block_diagonal.json @@ -37,7 +37,7 @@ "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [13, 0, 16, 11], "texture": "#2"}, + "east": {"uv": [13, 11, 16, 0], "texture": "#2"}, "south": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, "west": {"uv": [13, 0, 16, 11], "rotation": 180, "texture": "#2"}, "up": {"uv": [5, 10, 11, 13], "rotation": 180, "texture": "#2"} diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json b/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json index bfd61b68e..8b53f63c6 100644 --- a/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json +++ b/src/main/resources/assets/create/models/block/chute/block_diagonal_start.json @@ -68,8 +68,8 @@ "to": [14.1, 10.666, 14.1], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "east": {"uv": [13, 0, 16, 11], "texture": "#2"}, + "north": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, + "east": {"uv": [13, 11, 16, 0], "texture": "#2"}, "south": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, "west": {"uv": [13, 0, 16, 11], "rotation": 180, "texture": "#2"}, "up": {"uv": [5, 10, 11, 13], "rotation": 180, "texture": "#2"} @@ -81,7 +81,7 @@ "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [1, 3, 11, 10], "rotation": 90, "texture": "#2"}, - "east": {"uv": [1, 0, 11, 3], "rotation": 270, "texture": "#2"}, + "east": {"uv": [0, 0, 10, 3], "rotation": 270, "texture": "#2"}, "south": {"uv": [1, 3, 11, 10], "rotation": 90, "texture": "#2"}, "west": {"uv": [1, 0, 11, 3], "rotation": 90, "texture": "#2"} } @@ -90,7 +90,7 @@ "from": [3, 13, 3], "to": [13, 14, 13], "faces": { - "up": {"uv": [11, 11, 16, 16], "rotation": 180, "texture": "#2"} + "up": {"uv": [9.5, 9.5, 14.5, 14.5], "rotation": 180, "texture": "#13"} } } ], diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json b/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json index 98410e8a5..d6d05dd68 100644 --- a/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json +++ b/src/main/resources/assets/create/models/block/chute/block_diagonal_straight.json @@ -13,7 +13,7 @@ "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "east": {"uv": [13, 0, 16, 11], "texture": "#2"}, + "east": {"uv": [13, 11, 16, 0], "texture": "#2"}, "south": {"uv": [0, 10, 11, 16], "rotation": 270, "texture": "#2"}, "west": {"uv": [13, 0, 16, 11], "rotation": 180, "texture": "#2"} } diff --git a/src/main/resources/assets/create/models/block/chute/block_windowed.json b/src/main/resources/assets/create/models/block/chute/block_windowed.json index e30a8fa32..fecf23214 100644 --- a/src/main/resources/assets/create/models/block/chute/block_windowed.json +++ b/src/main/resources/assets/create/models/block/chute/block_windowed.json @@ -237,8 +237,53 @@ "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} } + }, + { + "from": [3, 13, 3], + "to": [13, 14, 13], + "faces": { + "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"}, + "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"} + } } ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, "groups": [ { "name": "ChuteTop", @@ -254,6 +299,5 @@ "name": "windows", "origin": [8, 8, 8], "children": [16, 17, 18, 19] - } - ] + }, 20] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json deleted file mode 100644 index b8a0c4652..000000000 --- a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_start.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "13": "create:block/chute", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "from": [3, 8, 1], - "to": [13, 16, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "texture": "#13"} - } - }, - { - "from": [3, 8, 13], - "to": [13, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 19]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "rotation": 180, "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [1, 8, 1], - "to": [3, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "south": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, - "down": {"uv": [0, 0, 1, 7], "texture": "#13"} - } - }, - { - "from": [13, 8, 1], - "to": [15, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, - "faces": { - "north": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "south": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"}, - "down": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [2, 5.7, 2], - "to": [14, 8.7, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -24, 56]}, - "faces": { - "north": {"uv": [7.5, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "east": {"uv": [7.5, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "south": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, - "west": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"}, - "up": {"uv": [9, 9.5, 15, 15.5], "rotation": 180, "texture": "#13"}, - "down": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [2.1, 4, 2.1], - "to": [13.9, 10.666, 13.9], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "east": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [1.9, -12, 1.9], - "to": [14.1, 4, 14.1], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "east": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "south": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "west": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "up": {"uv": [9, 9, 15, 15], "texture": "#13"}, - "down": {"uv": [9, 9, 15, 15], "texture": "#13"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "group", - "origin": [8, 56, -56], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json deleted file mode 100644 index d721e031a..000000000 --- a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_straight.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "13": "create:block/chute", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "from": [1.9, 4, 1.9], - "to": [14.1, 10.666, 14.1], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "east": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "south": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [1.9, -12, 1.9], - "to": [14.1, 4, 14.1], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "east": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "south": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "west": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "down": {"uv": [9, 8, 15, 16], "texture": "#13"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "group", - "origin": [8, 8, -8], - "children": [0, 1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json b/src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json deleted file mode 100644 index f62998689..000000000 --- a/src/main/resources/assets/create/models/block/chute/old/block_diagonal_t.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "13": "create:block/chute", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "from": [2, 8, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 40]}, - "faces": { - "north": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"}, - "east": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, - "south": {"uv": [9, 10.5, 15, 14.5], "rotation": 180, "texture": "#13"}, - "west": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"}, - "up": {"uv": [9, 9, 15, 15], "rotation": 180, "texture": "#13"}, - "down": {"uv": [9, 11, 15, 15], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [1.9, 4, 1.9], - "to": [14.1, 10.666, 14.1], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "east": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "south": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"}, - "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [1.9, -12, 1.9], - "to": [14.1, 4, 14.1], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "east": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "south": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "west": {"uv": [9, 8, 15, 16], "texture": "#13"}, - "down": {"uv": [9, 9, 15, 15], "texture": "#13"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "group", - "origin": [8, 24, -24], - "children": [0, 1, 2] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/old/scene.bbmodel b/src/main/resources/assets/create/models/block/chute/old/scene.bbmodel deleted file mode 100644 index 363f03e35..000000000 --- a/src/main/resources/assets/create/models/block/chute/old/scene.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"block","parent":"block/block","ambientocclusion":true,"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[13,48,2],"to":[14,56,14],"autouv":0,"color":3,"origin":[9,56,9],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"cb247a93-b132-0d89-060e-7d32ac911851"},{"name":"cube","from":[2,48,2],"to":[3,56,14],"autouv":0,"color":2,"origin":[9,56,9],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"9617a0c3-50b9-edba-695f-ed23d954b273"},{"name":"cube","from":[3,48,13],"to":[13,56,14],"autouv":0,"color":4,"origin":[8,56,20],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"30114a15-21e6-cbe3-478d-b1be5b551d3a"},{"name":"cube","from":[3,48,2],"to":[13,56,3],"autouv":0,"color":5,"origin":[8,56,9],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"ff2e3c87-362b-61de-c74f-ee3ae8ae823f"},{"name":"cube","from":[1,56,1],"to":[3,64,15],"autouv":0,"color":1,"origin":[9,64,9],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"f5020da6-1b01-2c10-9577-ef8feca78368"},{"name":"cube","from":[3,56,1],"to":[13,64,3],"autouv":0,"color":4,"origin":[11,64,-3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"d74886e8-f476-5f70-a0b9-a6c0b74b1ed6"},{"name":"cube","from":[13,56,1],"to":[15,64,15],"autouv":0,"color":1,"origin":[7,64,7],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"eed9e3e2-5891-968a-4d04-6d8dc132e64b"},{"name":"cube","from":[3,56,13],"to":[13,64,15],"autouv":0,"color":4,"origin":[5,64,19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"bfccb904-0eaf-2126-c2c3-83ed5786ceab"},{"name":"cube","from":[3,8,1],"to":[13,16,3],"autouv":0,"color":4,"origin":[11,16,-3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"9f6326ae-0536-f38c-5e34-8a803949fd3b"},{"name":"cube","from":[3,8,13],"to":[13,16,15],"autouv":0,"color":4,"origin":[5,16,19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"953c869b-d823-3e54-1bbc-9c09aeb49191"},{"name":"cube","from":[1,8,1],"to":[3,16,15],"autouv":0,"color":1,"origin":[9,16,9],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"c6dba88d-01f3-7796-4d93-aeade5f211ce"},{"name":"cube","from":[13,8,1],"to":[15,16,15],"autouv":0,"color":1,"origin":[7,16,7],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"a862a613-3a45-99e5-0466-f4cbf8c6d7f4"},{"name":"cube","from":[13,0,2],"to":[14,8,14],"autouv":0,"color":3,"origin":[9,8,9],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"7a237e57-bd5f-8cb1-e82f-c8c216d80824"},{"name":"cube","from":[2,0,2],"to":[3,8,14],"autouv":0,"color":2,"origin":[9,8,9],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"65d5d282-2577-9dc9-d9b5-b45404b9b0f7"},{"name":"cube","from":[3,0,13],"to":[13,8,14],"autouv":0,"color":4,"origin":[8,8,20],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"b7172991-3b3b-b942-7518-96dd64150617"},{"name":"cube","from":[3,0,2],"to":[13,8,3],"autouv":0,"color":5,"origin":[8,8,9],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"657fc7f7-d4d3-e6d4-5671-dd6809ba81d8"},{"name":"cube","from":[13,-16,2],"to":[14,-8,14],"autouv":0,"color":3,"origin":[9,-8,9],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"130bea9c-264a-027b-1640-2323773eea5f"},{"name":"cube","from":[2,-16,2],"to":[3,-8,14],"autouv":0,"color":2,"origin":[9,-8,9],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"804db574-84c3-a9b9-e9e8-8e593501abaf"},{"name":"cube","from":[3,-16,13],"to":[13,-8,14],"autouv":0,"color":4,"origin":[8,-8,20],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"26431adb-f9d9-8039-a6f8-43fa248e8441"},{"name":"cube","from":[3,-16,2],"to":[13,-8,3],"autouv":0,"color":5,"origin":[8,-8,9],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"978324b1-beb8-89f9-3442-5352d2e6c4ca"},{"name":"cube","from":[3,40,-31],"to":[13,48,-29],"autouv":0,"color":4,"origin":[11,48,-35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"9369884d-2997-8125-e18d-facc272b81e6"},{"name":"cube","from":[3,40,-19],"to":[13,48,-17],"autouv":0,"color":4,"origin":[5,48,-13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"b222ad5a-6161-01a1-9195-cbcb8be142dd"},{"name":"cube","from":[1,40,-31],"to":[3,48,-17],"autouv":0,"color":1,"origin":[9,48,-23],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"7f9cef98-1123-4d09-58ff-2a3efa7b13e8"},{"name":"cube","from":[13,40,-31],"to":[15,48,-17],"autouv":0,"color":1,"origin":[7,48,-25],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"3a1bc73e-f621-7501-f0d6-06eef44e704a"},{"name":"cube","from":[13,32,-30],"to":[14,40,-18],"autouv":0,"color":3,"origin":[9,40,-23],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"d61acea9-b417-0d4f-68bc-f254ff2583f9"},{"name":"cube","from":[2,32,-30],"to":[3,40,-18],"autouv":0,"color":2,"origin":[9,40,-23],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"4a67d982-08bc-6b87-e7e3-940859e88304"},{"name":"cube","from":[3,32,-19],"to":[13,40,-18],"autouv":0,"color":4,"origin":[8,40,-12],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"0d55777c-1c80-0c28-37f5-3dcd2291116c"},{"name":"cube","from":[3,32,-30],"to":[13,40,-29],"autouv":0,"color":5,"origin":[8,40,-23],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"9dfd2c4c-efdf-e794-6cbe-17f0393988d1"},{"name":"cube","from":[3,56,-31],"to":[13,64,-29],"autouv":0,"color":4,"origin":[11,64,-35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"5483a732-15ac-8972-1bc8-bd9390dea1d6"},{"name":"cube","from":[3,56,-19],"to":[13,64,-17],"autouv":0,"color":4,"origin":[5,64,-13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"89d38e87-6aaa-8630-99bc-4c06adc63653"},{"name":"cube","from":[1,56,-31],"to":[3,64,-17],"autouv":0,"color":1,"origin":[9,64,-23],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"af6c85f8-6ee9-f719-f369-2b3deeeebcd2"},{"name":"cube","from":[13,56,-31],"to":[15,64,-17],"autouv":0,"color":1,"origin":[7,64,-25],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"a0c011f9-fb73-a1c9-16db-3334215306de"},{"name":"cube","from":[13,48,-30],"to":[14,56,-18],"autouv":0,"color":3,"origin":[9,56,-23],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"d944e897-2343-159a-c29f-5138c8731201"},{"name":"cube","from":[2,48,-30],"to":[3,56,-18],"autouv":0,"color":2,"origin":[9,56,-23],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"b7ddc4cf-f13f-1bd7-6b96-34b9a35f491d"},{"name":"cube","from":[3,48,-19],"to":[13,56,-18],"autouv":0,"color":4,"origin":[8,56,-12],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"b6644343-f029-d9c9-a7fc-338c4d6ada03"},{"name":"cube","from":[3,48,-30],"to":[13,56,-29],"autouv":0,"color":5,"origin":[8,56,-23],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"a6cca398-4a1d-b023-80f4-5b749b0421ec"},{"name":"cube","from":[3,56,-47],"to":[13,64,-45],"autouv":0,"color":4,"origin":[11,64,-51],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"772eb9b6-7cc2-1b0b-c215-a0517f4a39d4"},{"name":"cube","from":[3,56,-35],"to":[13,64,-33],"autouv":0,"color":4,"origin":[5,64,-29],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"955e2790-ea98-e594-b848-2f9e6de29099"},{"name":"cube","from":[1,56,-47],"to":[3,64,-33],"autouv":0,"color":1,"origin":[9,64,-39],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"3d8956b4-9a16-2c9a-1cac-b67df352a5b6"},{"name":"cube","from":[13,56,-47],"to":[15,64,-33],"autouv":0,"color":1,"origin":[7,64,-41],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"d2529932-c015-11a1-ef0f-bb54a9f458de"},{"name":"cube","from":[13,48,-46],"to":[14,56,-34],"autouv":0,"color":3,"origin":[9,56,-39],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"53025b82-19bd-2198-048e-a70c1b3874ec"},{"name":"cube","from":[2,48,-46],"to":[3,56,-34],"autouv":0,"color":2,"origin":[9,56,-39],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"d157b7f2-3208-c66d-4021-e5f5c014de60"},{"name":"cube","from":[3,48,-35],"to":[13,56,-34],"autouv":0,"color":4,"origin":[8,56,-28],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"7b668473-229f-a142-74c2-e84c111224ef"},{"name":"cube","from":[3,48,-46],"to":[13,56,-45],"autouv":0,"color":5,"origin":[8,56,-39],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"7ae61b0d-779c-2cdf-0fff-ce95992aae14"},{"name":"cube","from":[-16,-48,0],"to":[0,-32,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"f9a9f7be-7591-dc3d-860a-319e4b865afa"},{"name":"cube","from":[-16,-32,0],"to":[0,-16,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"ce2f53be-2851-9207-06a8-535a6b56681b"},{"name":"cube","from":[-16,-16,0],"to":[0,0,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"8f68aabd-36a0-faa2-77e7-fa05b7dba552"},{"name":"cube","from":[-16,0,0],"to":[0,16,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"346913f0-9693-3da9-7385-7d98f9e4ec6b"},{"name":"cube","from":[-16,0,-16],"to":[0,16,0],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"2feba15c-c0e6-8470-9a2b-dca42f1ec8c9"},{"name":"cube","from":[-16,16,-32],"to":[0,32,-16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"d7d6a48e-2074-9cce-6673-c38b9fa546ea"},{"name":"cube","from":[-16,32,-48],"to":[0,48,-32],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"47009ce0-915d-70bc-88ff-94e738617c13"},{"name":"cube","from":[-16,16,0],"to":[0,32,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"7be3f1b8-ae0b-fca9-5de0-fa647792e918"},{"name":"cube","from":[-16,32,-32],"to":[0,48,-16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"201625dd-d6da-771e-a053-81c3748a953f"},{"name":"cube","from":[-16,48,-48],"to":[0,64,-32],"autouv":1,"color":4,"origin":[8,24,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"baf84af7-f139-bf9d-22aa-205bf33d1b3c"},{"name":"cube","from":[-16,48,-32],"to":[0,64,-16],"autouv":1,"color":4,"origin":[8,24,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"c4343a87-53b9-a6a6-6e6c-3c7868bcafdf"},{"name":"cube","from":[3,-8,1],"to":[13,0,3],"autouv":0,"color":4,"origin":[11,0,-3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"fae7c3dc-3a65-9192-6d98-c299a72e957b"},{"name":"cube","from":[3,-8,13],"to":[13,0,15],"autouv":0,"color":4,"origin":[5,0,19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"9216ac4e-0f6b-fa70-a48b-546dcc9e8211"},{"name":"cube","from":[1,-8,1],"to":[3,0,15],"autouv":0,"color":1,"origin":[9,0,9],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"2765ceca-6411-317b-d189-f6833a451ca2"},{"name":"cube","from":[13,-8,1],"to":[15,0,15],"autouv":0,"color":1,"origin":[7,0,7],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"9fe26dd5-7996-e435-a5f9-ea08786e2557"},{"name":"cube","from":[1,-24,1],"to":[15,-16,15],"autouv":0,"color":5,"visibility":false,"origin":[8,24,-24],"faces":{"north":{"uv":[8.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,7,7],"texture":0},"down":{"uv":[0,0,7,7],"texture":0}},"uuid":"23be82fc-49cd-253f-2642-fe4740f144a1"},{"name":"cube","from":[0,-48,16],"to":[16,-37,32],"autouv":0,"color":7,"origin":[0.5,-37.5,16.5],"faces":{"north":{"uv":[0,5,16,16],"texture":2},"east":{"uv":[0,5,16,16],"texture":2},"south":{"uv":[0,5,16,16],"texture":2},"west":{"uv":[0,5,16,16],"texture":2},"up":{"uv":[0,0,16,16],"texture":4},"down":{"uv":[0,0,16,16],"texture":4}},"uuid":"8521ed0a-023c-5025-cfa0-a3d5b12d3a9f"},{"name":"cube","from":[1,-37,17],"to":[15,-35,31],"autouv":0,"color":1,"origin":[9,-50,25],"faces":{"north":{"uv":[1,14,15,16],"texture":3},"east":{"uv":[1,14,15,16],"texture":3},"south":{"uv":[1,14,15,16],"texture":3},"west":{"uv":[1,14,15,16],"texture":3},"up":{"uv":[1,0,15,14],"texture":3},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"d89925d8-7c75-e833-6a34-3e865ac3417d"},{"name":"cube","from":[2,-22,-54],"to":[14,-16,-47],"autouv":1,"color":5,"origin":[8,-40,40],"faces":{"north":{"uv":[4,10,16,16],"rotation":180,"texture":0},"east":{"uv":[9,10,16,16],"rotation":180,"texture":0},"south":{"uv":[0,0,12,6]},"west":{"uv":[0,0,7,6]},"up":{"uv":[0,0,12,7]},"down":{"uv":[0,0,12,7]}},"uuid":"6240255c-fe04-0455-7c95-41f1ae08ae52"},{"name":"cube","from":[2.2,24,-30],"to":[13.8,32,-18],"autouv":0,"color":5,"origin":[8,8,8],"faces":{"north":{"uv":[9,11,15,15],"rotation":180,"texture":0},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"786b50e4-398f-69b9-c394-8280a828d119"},{"name":"cube","from":[1.9,-12,-14],"to":[14.099999999999998,4,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-8],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"066dcb14-3625-4555-9b70-262fac458b33"},{"name":"cube","from":[-16,32,0],"to":[0,48,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"53dd545a-edec-5cd9-f804-f101359cab1f"},{"name":"cube","from":[-16,48,0],"to":[0,64,16],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"b7792388-9a39-5016-9a15-f5a6a22eb4f2"},{"name":"cube","from":[13,45,1],"to":[15,48,15],"autouv":0,"color":3,"origin":[9,48,9],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"9b1319e8-574d-f388-da3a-554b916bc6dc"},{"name":"cube","from":[3,45,13],"to":[13,48,15],"autouv":0,"color":7,"origin":[9,48,9],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"dc789d04-3a62-c8ee-f0f9-fd3e0a29f727"},{"name":"cube","from":[12,40,13],"to":[13,45,15],"autouv":0,"color":0,"origin":[11,48,9],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"3eead843-d482-0f19-74b2-cb9b6bfc9251"},{"name":"cube","from":[12,40,1],"to":[13,45,3],"autouv":0,"color":6,"origin":[11,48,7],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"464cd6b7-3a4a-ea8f-e777-7695fa9a5f51"},{"name":"cube","from":[13,40,12],"to":[15,45,15],"autouv":0,"color":5,"origin":[11,48,9],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"0bca34fc-be42-1d77-aedb-cf6440e97643"},{"name":"cube","from":[13,40,1],"to":[15,45,4],"autouv":0,"color":4,"origin":[11,48,7],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"8dd9d58a-6f13-6394-d931-09cecd2d7200"},{"name":"cube","from":[1,45,1],"to":[3,48,15],"autouv":0,"color":4,"origin":[7,48,7],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"726d71f7-e0e7-b4c4-3f74-6c3e595149cf"},{"name":"cube","from":[3,45,1],"to":[13,48,3],"autouv":0,"color":4,"origin":[7,48,7],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"4aa396ba-ba9f-568c-bd30-be7c64b7ed33"},{"name":"cube","from":[3,40,1],"to":[4,45,3],"autouv":0,"color":2,"origin":[5,48,7],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"74d0d090-7d1c-6d91-297f-f2856a8954a6"},{"name":"cube","from":[3,40,13],"to":[4,45,15],"autouv":0,"color":4,"origin":[5,48,9],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"bde427c5-7426-c74a-782e-a3d5106dfdde"},{"name":"cube","from":[1,40,1],"to":[3,45,4],"autouv":0,"color":2,"origin":[5,48,7],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"8747bad8-194c-59d5-f21f-9493fece801c"},{"name":"cube","from":[1,40,12],"to":[3,45,15],"autouv":0,"color":3,"origin":[5,48,9],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"3c5f9e52-f0ea-bd32-be0b-4d42ec1878bb"},{"name":"cube","from":[13,32,2],"to":[14,40,14],"autouv":0,"color":1,"origin":[9,40,9],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"ba83925d-9d29-bf09-a0b0-1355cdf14edf"},{"name":"cube","from":[2,32,2],"to":[3,40,14],"autouv":0,"color":7,"origin":[9,40,9],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"241e8d1a-45a8-788b-2cbd-5af861aff264"},{"name":"cube","from":[3,32,13],"to":[13,40,14],"autouv":0,"color":3,"origin":[8,40,20],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"e13183ab-227a-e861-cd7c-b25bdd03f63f"},{"name":"cube","from":[3,32,2],"to":[13,40,3],"autouv":0,"color":4,"origin":[8,40,9],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"fdf0d295-aaad-1aae-d721-467fadaa72f3"},{"name":"cube","from":[2,40,2],"to":[14,45,3],"autouv":0,"color":5,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"fefd07f2-f430-8c85-ffdf-6bfa401446ee"},{"name":"cube","from":[13,40,2],"to":[14,45,14],"autouv":0,"color":5,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"9d48dec6-5838-b108-953b-ec1192aa0822"},{"name":"cube","from":[2,40,13],"to":[14,45,14],"autouv":0,"color":4,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"af34e4c0-723a-22a3-898a-8f6f0eaf495d"},{"name":"cube","from":[2,40,2],"to":[3,45,14],"autouv":0,"color":7,"origin":[8,40,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"79df7a55-901c-d623-fdee-0b1ca6caa50c"},{"name":"cube","from":[13,29,1],"to":[15,32,15],"autouv":0,"color":3,"origin":[9,32,9],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"c6527792-8074-13c0-519d-2394887ceb3f"},{"name":"cube","from":[3,29,13],"to":[13,32,15],"autouv":0,"color":7,"origin":[9,32,9],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"133da996-a17d-71b9-e84b-6e2a8170e64d"},{"name":"cube","from":[12,24,13],"to":[13,29,15],"autouv":0,"color":0,"origin":[11,32,9],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"0ab753de-eb54-ad47-d851-980e1476d7ba"},{"name":"cube","from":[12,24,1],"to":[13,29,3],"autouv":0,"color":6,"origin":[11,32,7],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"bf477c92-617c-59f2-1dd4-4c489d4c1a5a"},{"name":"cube","from":[13,24,12],"to":[15,29,15],"autouv":0,"color":5,"origin":[11,32,9],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"63033484-63b9-c645-cac6-702ac05b8f4c"},{"name":"cube","from":[13,24,1],"to":[15,29,4],"autouv":0,"color":4,"origin":[11,32,7],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"a6f78292-b1c5-805d-483a-818a04d450f3"},{"name":"cube","from":[1,29,1],"to":[3,32,15],"autouv":0,"color":4,"origin":[7,32,7],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"dc212f01-008e-1a4a-5b95-24892e58b953"},{"name":"cube","from":[3,29,1],"to":[13,32,3],"autouv":0,"color":4,"origin":[7,32,7],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"9122ceab-d56d-3101-3b4b-151684a26497"},{"name":"cube","from":[3,24,1],"to":[4,29,3],"autouv":0,"color":2,"origin":[5,32,7],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"2e3ca9e4-8017-aeac-b826-3536159d1092"},{"name":"cube","from":[3,24,13],"to":[4,29,15],"autouv":0,"color":4,"origin":[5,32,9],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"b4d50b45-0492-6259-ba06-fc44042ad338"},{"name":"cube","from":[1,24,1],"to":[3,29,4],"autouv":0,"color":2,"origin":[5,32,7],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"204ec5fd-c394-36a6-ce03-88d17038c92b"},{"name":"cube","from":[1,24,12],"to":[3,29,15],"autouv":0,"color":3,"origin":[5,32,9],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"daa17cc2-e7ce-f405-eb92-7543f62a664f"},{"name":"cube","from":[13,16,2],"to":[14,24,14],"autouv":0,"color":1,"origin":[9,24,9],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"8b97443c-f66b-345f-e7ce-bc84ed8f6a17"},{"name":"cube","from":[2,16,2],"to":[3,24,14],"autouv":0,"color":7,"origin":[9,24,9],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"b81da298-f2e4-cf0b-a336-f9d0a304e879"},{"name":"cube","from":[3,16,13],"to":[13,24,14],"autouv":0,"color":3,"origin":[8,24,20],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"b940f28f-06e4-aaed-d592-cbe90d883fab"},{"name":"cube","from":[3,16,2],"to":[13,24,3],"autouv":0,"color":4,"origin":[8,24,9],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"55718430-e11f-afad-c3f7-3a4b1ff5ebbf"},{"name":"cube","from":[2,24,2],"to":[14,29,3],"autouv":0,"color":5,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"c8ae79a8-443d-18f9-cb93-1d2df199cd76"},{"name":"cube","from":[13,24,2],"to":[14,29,14],"autouv":0,"color":5,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"85096e5d-9aed-095e-5290-f769d57a1541"},{"name":"cube","from":[2,24,13],"to":[14,29,14],"autouv":0,"color":4,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"2388ccb1-8446-dedb-f958-57a67fad827a"},{"name":"cube","from":[2,24,2],"to":[3,29,14],"autouv":0,"color":7,"origin":[8,24,8],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"742a36ae-ccdf-7e27-f952-65b3ab768577"},{"name":"cube","from":[3,56,-63],"to":[13,64,-61],"autouv":0,"color":4,"origin":[11,64,-67],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"ddc28bb3-c117-970e-1607-4b3113b42a6d"},{"name":"cube","from":[3,56,-51],"to":[13,64,-49],"autouv":0,"color":4,"origin":[5,64,-45],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"53bddac1-a509-a2e6-a603-41cf6796baa2"},{"name":"cube","from":[1,56,-63],"to":[3,64,-49],"autouv":0,"color":1,"origin":[9,64,-55],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"c640a4c4-a579-bb3f-087a-2d2b48570512"},{"name":"cube","from":[13,56,-63],"to":[15,64,-49],"autouv":0,"color":1,"origin":[7,64,-57],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"b55eb5fc-f68c-75c7-3f9d-70774d89b3a1"},{"name":"cube","from":[1.9,4,-30],"to":[14.099999999999998,20,-18],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,24,-24],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"742bbf82-d00b-e9d5-82f8-ac3ee2c9a32d"},{"name":"cube","from":[1.9,20,-30],"to":[14.099999999999998,26.666,-18],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,24,-24],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"263536fc-4ed5-ab1c-a666-50fb3ffac844"},{"name":"cube","from":[1.9,4,-14],"to":[14.099999999999998,10.666,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-8],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"c5df05b2-e3e2-0543-4c97-764f055b4fd6"},{"name":"cube","from":[1.9,20,-46],"to":[14.099999999999998,36,-34],"autouv":0,"color":5,"visibility":false,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"bca31192-4f5d-85a4-7f21-ba8c38f67a1a"},{"name":"cube","from":[1.9,36,-46],"to":[14.099999999999998,42.666,-34],"autouv":0,"color":5,"visibility":false,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"0d4a012a-2a61-b3db-d282-2386601969b5"},{"name":"cube","from":[1.9,36,-62.1],"to":[14.099999999999998,52,-49.9],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,56,-56],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[9,8.5,15,14.5],"texture":0},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"60b7284a-69a8-fc05-b4f7-a7a96f9afd92"},{"name":"cube","from":[2.1,52,-61.9],"to":[13.9,58.666,-50.1],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,56,-56],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[0,0,0,0],"rotation":90,"texture":null},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"20f4515f-0517-55bd-8351-7e0fd1ed20cd"},{"name":"cube","from":[2,53.7,-62],"to":[14.000000000000007,56.7,-50],"autouv":0,"color":5,"origin":[8,24,-8],"faces":{"north":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"east":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"0cfd465e-cace-5168-0cfa-5da17b123e98"},{"name":"cube","from":[2.1,36,-45.9],"to":[13.9,42.666,-34.1],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[0,0,0,0],"rotation":90,"texture":null},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"c67c24e1-3b8f-609d-d955-5108cb94353d"},{"name":"cube","from":[1.9,20,-46.1],"to":[14.099999999999998,36,-33.9],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,40,-40],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[9,8.5,15,14.5],"texture":0},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"c39b4392-255e-9f9f-8491-06858a18c031"},{"name":"cube","from":[2.2,40,-46],"to":[13.8,48,-34],"autouv":0,"color":5,"origin":[8,8,8],"faces":{"north":{"uv":[9,11,15,15],"rotation":180,"texture":0},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"ab57a3bb-74ab-b898-c088-341bf8618762"},{"name":"cube","from":[2.2,-24,2],"to":[13.8,-16,14],"autouv":0,"color":5,"origin":[8,-40,40],"faces":{"north":{"uv":[9,11,15,15],"rotation":180,"texture":0},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"2a1ca887-4397-9a18-d33c-04a6743aab33"},{"name":"cube","from":[1.9,-28,2],"to":[14.099999999999998,-21.334,14],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-24,8],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"c7a3bbb2-a6d9-3965-0e76-4a79cc627caf"},{"name":"cube","from":[1.9,-44,2],"to":[14.099999999999998,-28,14],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-24,8],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"d9581d64-ee8d-0c1c-0c22-823e5e014612"},{"name":"cube","from":[1.9,-12,-14],"to":[14.099999999999998,-5.334,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-8,-8],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"69541915-3211-0409-4cdf-48afb8728433"},{"name":"cube","from":[1.9,-28,-14],"to":[14.099999999999998,-12,-2],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,-8,-8],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"3cc8619d-209c-1be8-432b-690beb5395de"},{"name":"cube","from":[13,8,-31],"to":[15,16,-17],"autouv":0,"color":1,"origin":[7,16,-25],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"b980d0bd-0945-ad67-353a-d0c541187eb9"},{"name":"cube","from":[2,5.700000000000003,-30],"to":[14.000000000000007,8.700000000000003,-18],"autouv":0,"color":5,"origin":[8,-24,24],"faces":{"north":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"east":{"uv":[7.5,10,9,16],"rotation":90,"texture":0},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[9,11,15,15],"rotation":180,"texture":0},"up":{"uv":[9,11,15,15],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"2f2fef1b-a2a1-2a2c-bfb8-5abeab3d1ad0"},{"name":"cube","from":[2.1,4,-29.9],"to":[13.9,10.665999999999997,-18.1],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-24],"faces":{"north":{"uv":[6,10,9,16],"rotation":90,"texture":0},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[0,0,0,0],"rotation":90,"texture":null},"west":{"uv":[6,10,9,16],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"a12be982-5777-bb88-af3d-b9f76d066c7c"},{"name":"cube","from":[1.9,-12,-30.1],"to":[14.099999999999998,4,-17.9],"autouv":0,"color":5,"rotation":[-45,0,0],"origin":[8,8,-24],"faces":{"north":{"uv":[9,8,15,16],"texture":0},"east":{"uv":[9,8,15,16],"texture":0},"south":{"uv":[9,8,15,16],"texture":0},"west":{"uv":[9,8,15,16],"texture":0},"up":{"uv":[9,8.5,15,14.5],"texture":0},"down":{"uv":[9,8,15,16],"texture":0}},"uuid":"65468081-a71e-1eed-19f6-4cb6329141cf"}],"outliner":[{"name":"group","uuid":"63ca3bbe-c089-f2fa-0b1e-68cec5b0f223","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"110eb8c1-6b21-6a16-6966-c95e4ad7bde5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["d74886e8-f476-5f70-a0b9-a6c0b74b1ed6","bfccb904-0eaf-2126-c2c3-83ed5786ceab","f5020da6-1b01-2c10-9577-ef8feca78368","eed9e3e2-5891-968a-4d04-6d8dc132e64b"]},{"name":"ChuteBase","uuid":"dfff869f-0384-17b8-950d-6b1d71a8d746","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["cb247a93-b132-0d89-060e-7d32ac911851","9617a0c3-50b9-edba-695f-ed23d954b273","30114a15-21e6-cbe3-478d-b1be5b551d3a","ff2e3c87-362b-61de-c74f-ee3ae8ae823f"]}]},{"name":"group","uuid":"1589ce86-8c5d-2dd5-1cba-b3816fdb2d51","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"18ee5452-96c4-e00e-dae2-48e848e6fef6","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["9f6326ae-0536-f38c-5e34-8a803949fd3b","953c869b-d823-3e54-1bbc-9c09aeb49191","c6dba88d-01f3-7796-4d93-aeade5f211ce","a862a613-3a45-99e5-0466-f4cbf8c6d7f4"]},{"name":"ChuteTop","uuid":"2c70ca25-4ab4-ec98-e46c-135a814ece49","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["fae7c3dc-3a65-9192-6d98-c299a72e957b","9216ac4e-0f6b-fa70-a48b-546dcc9e8211","2765ceca-6411-317b-d189-f6833a451ca2","9fe26dd5-7996-e435-a5f9-ea08786e2557"]},{"name":"ChuteBase","uuid":"10b2f4d2-5cd4-0841-c387-528a3c414f31","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["7a237e57-bd5f-8cb1-e82f-c8c216d80824","65d5d282-2577-9dc9-d9b5-b45404b9b0f7","b7172991-3b3b-b942-7518-96dd64150617","657fc7f7-d4d3-e6d4-5671-dd6809ba81d8"]}]},{"name":"group","uuid":"2eeeac05-20df-5441-318a-eb6a0646631e","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteBase","uuid":"170f2e47-a6c7-c989-7e62-1a4a7701cc19","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["130bea9c-264a-027b-1640-2323773eea5f","804db574-84c3-a9b9-e9e8-8e593501abaf","26431adb-f9d9-8039-a6f8-43fa248e8441","978324b1-beb8-89f9-3442-5352d2e6c4ca"]}]},{"name":"group","uuid":"1d4b3f1b-87f5-59fa-f6ee-ce0421e73192","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"f3f71d10-2780-4fa4-bf3b-b9ace40cedd6","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["9369884d-2997-8125-e18d-facc272b81e6","b222ad5a-6161-01a1-9195-cbcb8be142dd","7f9cef98-1123-4d09-58ff-2a3efa7b13e8","3a1bc73e-f621-7501-f0d6-06eef44e704a"]},{"name":"ChuteBase","uuid":"906bc7ef-a2a6-feca-590a-070fe4f46916","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["d61acea9-b417-0d4f-68bc-f254ff2583f9","4a67d982-08bc-6b87-e7e3-940859e88304","0d55777c-1c80-0c28-37f5-3dcd2291116c","9dfd2c4c-efdf-e794-6cbe-17f0393988d1"]}]},{"name":"group","uuid":"122e4478-d0a8-dfae-0945-83222c803ce5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["b55eb5fc-f68c-75c7-3f9d-70774d89b3a1","0cfd465e-cace-5168-0cfa-5da17b123e98","20f4515f-0517-55bd-8351-7e0fd1ed20cd","60b7284a-69a8-fc05-b4f7-a7a96f9afd92"]},{"name":"group","uuid":"74a046f6-d5d4-3520-15d4-e69619b0f106","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["c5df05b2-e3e2-0543-4c97-764f055b4fd6","066dcb14-3625-4555-9b70-262fac458b33"]},{"name":"group","uuid":"675e5715-19c6-cfbb-e413-0be419b63cef","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["23be82fc-49cd-253f-2642-fe4740f144a1","0d4a012a-2a61-b3db-d282-2386601969b5","bca31192-4f5d-85a4-7f21-ba8c38f67a1a"]},{"name":"group","uuid":"79b5f9fa-5285-1319-fa25-2f32942c442c","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},"f9a9f7be-7591-dc3d-860a-319e4b865afa","ce2f53be-2851-9207-06a8-535a6b56681b","8f68aabd-36a0-faa2-77e7-fa05b7dba552","346913f0-9693-3da9-7385-7d98f9e4ec6b","7be3f1b8-ae0b-fca9-5de0-fa647792e918","53dd545a-edec-5cd9-f804-f101359cab1f","b7792388-9a39-5016-9a15-f5a6a22eb4f2","2feba15c-c0e6-8470-9a2b-dca42f1ec8c9","d7d6a48e-2074-9cce-6673-c38b9fa546ea","201625dd-d6da-771e-a053-81c3748a953f","c4343a87-53b9-a6a6-6e6c-3c7868bcafdf","47009ce0-915d-70bc-88ff-94e738617c13","baf84af7-f139-bf9d-22aa-205bf33d1b3c",{"name":"group","uuid":"33ab7026-6f9a-7f35-9bf2-d92779cd9ffc","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},{"name":"group","uuid":"227edd9a-1e5b-4d0f-a0bd-643426cd294f","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},{"name":"group","uuid":"3df7787d-7a48-a481-bc21-0cfa5322ac04","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"3c965d96-e75b-6b40-c26e-c6fd6557b3c4","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["5483a732-15ac-8972-1bc8-bd9390dea1d6","89d38e87-6aaa-8630-99bc-4c06adc63653","af6c85f8-6ee9-f719-f369-2b3deeeebcd2","a0c011f9-fb73-a1c9-16db-3334215306de"]},{"name":"ChuteBase","uuid":"d97a0912-d4ec-fa1a-a6ff-719062b42cbe","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["d944e897-2343-159a-c29f-5138c8731201","b7ddc4cf-f13f-1bd7-6b96-34b9a35f491d","b6644343-f029-d9c9-a7fc-338c4d6ada03","a6cca398-4a1d-b023-80f4-5b749b0421ec"]}]},{"name":"group","uuid":"111af74f-17ca-154f-28ee-0e99781843a2","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":[{"name":"ChuteTop","uuid":"fd581c39-623c-64db-b3c2-006531d5d45d","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["772eb9b6-7cc2-1b0b-c215-a0517f4a39d4","955e2790-ea98-e594-b848-2f9e6de29099","3d8956b4-9a16-2c9a-1cac-b67df352a5b6","d2529932-c015-11a1-ef0f-bb54a9f458de"]},{"name":"ChuteTop","uuid":"68c9caa9-d6dd-a60b-a42b-0c45672941f1","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["ddc28bb3-c117-970e-1607-4b3113b42a6d","53bddac1-a509-a2e6-a603-41cf6796baa2","c640a4c4-a579-bb3f-087a-2d2b48570512"]},{"name":"ChuteBase","uuid":"301e76c5-0145-e97b-e6d8-d98c738d4e4c","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["53025b82-19bd-2198-048e-a70c1b3874ec","d157b7f2-3208-c66d-4021-e5f5c014de60","7b668473-229f-a142-74c2-e84c111224ef","7ae61b0d-779c-2cdf-0fff-ce95992aae14"]}]},{"name":"group","uuid":"e0321c7e-4d6b-516f-9b56-e8effc517a0d","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["6240255c-fe04-0455-7c95-41f1ae08ae52"]},{"name":"group","uuid":"6f3d0ea9-a379-290e-44d4-1421a9e876c9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[]},{"name":"block","uuid":"1d2acf6e-0f08-da2c-6bd9-bce72b414442","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["8521ed0a-023c-5025-cfa0-a3d5b12d3a9f","d89925d8-7c75-e833-6a34-3e865ac3417d"]},{"name":"block_windowed","uuid":"5bd9bc56-ba99-d277-b56a-ecc09e3305fd","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"497593b3-ae5a-ca1b-c22b-fa6e85cab5e5","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["9b1319e8-574d-f388-da3a-554b916bc6dc","dc789d04-3a62-c8ee-f0f9-fd3e0a29f727","3eead843-d482-0f19-74b2-cb9b6bfc9251","464cd6b7-3a4a-ea8f-e777-7695fa9a5f51","0bca34fc-be42-1d77-aedb-cf6440e97643","8dd9d58a-6f13-6394-d931-09cecd2d7200","726d71f7-e0e7-b4c4-3f74-6c3e595149cf","4aa396ba-ba9f-568c-bd30-be7c64b7ed33","74d0d090-7d1c-6d91-297f-f2856a8954a6","bde427c5-7426-c74a-782e-a3d5106dfdde","8747bad8-194c-59d5-f21f-9493fece801c","3c5f9e52-f0ea-bd32-be0b-4d42ec1878bb"]},{"name":"ChuteBase","uuid":"f54d3830-6fd3-076c-4863-f1db5b98a0f3","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["ba83925d-9d29-bf09-a0b0-1355cdf14edf","241e8d1a-45a8-788b-2cbd-5af861aff264","e13183ab-227a-e861-cd7c-b25bdd03f63f","fdf0d295-aaad-1aae-d721-467fadaa72f3"]},{"name":"windows","uuid":"0952a871-8212-4cc4-579b-baf142092682","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["fefd07f2-f430-8c85-ffdf-6bfa401446ee","9d48dec6-5838-b108-953b-ec1192aa0822","af34e4c0-723a-22a3-898a-8f6f0eaf495d","79df7a55-901c-d623-fdee-0b1ca6caa50c"]}]},{"name":"block_windowed","uuid":"461ecbf2-48ad-2c2c-f891-14d0a28448bd","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"4a3f4842-b566-2292-5ddb-7974830720d9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["c6527792-8074-13c0-519d-2394887ceb3f","133da996-a17d-71b9-e84b-6e2a8170e64d","0ab753de-eb54-ad47-d851-980e1476d7ba","bf477c92-617c-59f2-1dd4-4c489d4c1a5a","63033484-63b9-c645-cac6-702ac05b8f4c","a6f78292-b1c5-805d-483a-818a04d450f3","dc212f01-008e-1a4a-5b95-24892e58b953","9122ceab-d56d-3101-3b4b-151684a26497","2e3ca9e4-8017-aeac-b826-3536159d1092","b4d50b45-0492-6259-ba06-fc44042ad338","204ec5fd-c394-36a6-ce03-88d17038c92b","daa17cc2-e7ce-f405-eb92-7543f62a664f"]},{"name":"ChuteBase","uuid":"f215d450-01ae-41bc-b838-bf419558e7b4","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["8b97443c-f66b-345f-e7ce-bc84ed8f6a17","b81da298-f2e4-cf0b-a336-f9d0a304e879","b940f28f-06e4-aaed-d592-cbe90d883fab","55718430-e11f-afad-c3f7-3a4b1ff5ebbf"]},{"name":"windows","uuid":"1cb9b116-44d1-b5bf-fee4-0370a3596b03","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["c8ae79a8-443d-18f9-cb93-1d2df199cd76","85096e5d-9aed-095e-5290-f769d57a1541","2388ccb1-8446-dedb-f958-57a67fad827a","742a36ae-ccdf-7e27-f952-65b3ab768577"]}]},{"name":"group","uuid":"1660404e-70a7-b44c-e191-fe3e9580c6e8","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["c67c24e1-3b8f-609d-d955-5108cb94353d","ab57a3bb-74ab-b898-c088-341bf8618762","c39b4392-255e-9f9f-8491-06858a18c031"]},{"name":"group","uuid":"524e3d38-4634-cd78-d405-bd48459a8d8a","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,24,-24],"children":["786b50e4-398f-69b9-c394-8280a828d119","263536fc-4ed5-ab1c-a666-50fb3ffac844","742bbf82-d00b-e9d5-82f8-ac3ee2c9a32d"]},{"name":"group","uuid":"c06c3ebd-dbc5-135a-fc42-817ceafa0bf9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,24,-24],"children":["2a1ca887-4397-9a18-d33c-04a6743aab33","c7a3bbb2-a6d9-3965-0e76-4a79cc627caf","d9581d64-ee8d-0c1c-0c22-823e5e014612"]},{"name":"group","uuid":"90987386-644c-2da1-649b-836ee25f56c9","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["69541915-3211-0409-4cdf-48afb8728433","3cc8619d-209c-1be8-432b-690beb5395de"]},{"name":"group","uuid":"3653a153-3039-4888-f561-12c449ee8041","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["b980d0bd-0945-ad67-353a-d0c541187eb9","2f2fef1b-a2a1-2a2c-bfb8-5abeab3d1ad0","a12be982-5777-bb88-af3d-b9f76d066c7c","65468081-a71e-1eed-19f6-4cb6329141cf"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\chute.png","name":"chute.png","folder":"block","namespace":"create","id":"13","particle":false,"mode":"bitmap","saved":true,"uuid":"28f5c1bd-347f-5679-af31-8f883b6ef597","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFoklEQVRYR51XT2gcZRR/829nd5NsNkIMSVGkFKrS0sA2baq1QU/NKSihNB706EXBi6eCB0E8eNWDIF56qSEoObUXWxpRUEncUlNIjEjqP6wpaTa7O7MzszPye9M3fjOZthsfLN/MfN9+7/d+7/feN6PNzMxEtm1TGIZkWRZ1u12CGYaRe411uq7T+vo6r6vX69rUmZei6tAA35dLJR4rpRI1HIdHGK5hbcchr9Ohdtuj60tXNW12djYaHx+njY0N8n2fQciIP+BaDHNjY2O0urpKm5ubCYDps2ejyRMnaOXGjVwQ4lj2OXbkCP2wvEyXr1yJAWCiv78/cQRGOp1Ocq9e4DlALSwsaPIcDFgFnfr6+pgBRJllQgXRarXI98KYAaSgXC7zXnCMX6VSYfqxUEwANZtNfqQCAAMF207W5jmXSYCDIQ3MwNzcHGtADFEIGOig3W7zfRAEzAp+eLa4uJgwoAIQ57KfaEEci3OMe1IgQEzTZCbEhAlhYXt7OwUAKSiXC5RlQZyr0SNyToeIUKoAAsNPZUAcSvT4I1KAKpifn08xMFGrsbAAQmUhj4E9IkS0cC7UCwOSAhUABAgQagqyIsQ+avmpTCAVKRFmqwAMqPSDBQCAiQayVYC50dGnIssyiSgk07QoCPxkLBaLFARxf3GcuIq2tv5gBlNVAPXDwAAM1dFoNBLnkgKMahXg/tChZyNdh1i7VCza5LqdZKxUBhIxx/sX6NategxArQKJHJHiWoBkGchWATaq1U5Gnufxf0zDYNDSTUulEjnogL7PI3rOysr3MYC8RiSqzQJ6UBVg/fHjkxHmh6pV7iH4QVeu6zKTCCKKImq12wwsAYAqmJiYQE9ndWMSIwwbIFo8E4EODw/zOaCKEHMQojAHZ5ZlUKlkU6vVoULB5NzLvpqm0dLX1/7TABypTrGhegaodOIwytMAAMS6KZDnBWQV4l6CusfenQ5EqXP9wxIAQvel+hpvcHh0kNb+2qGnx6oyxeP44yNJ3acm7t+gG0ovMEyTWQt8n0ycsEFAeAYwsgZdkDWgAjg/fjj3vn7n7+hRAESEBYXNrAj9IGCRQgvLy9+lAXx4fTl6Z6qWilIc9wLg1ORp1gAUHr9TRGTbBc49ytLzfELuIUJo5ObNHx8NAOzAeS8pAANowfkagIgjjhz62Gk0e2NA0tMLAwBQHRxg9QdByMpnMVom6brGb1y5AKSFvnXxc8qmQAUwfexkqoVmhfj8c2ci5Lwy2Mfiw6EU+AHphs6OYRCj73fJdT365tulOAXSQt+b/5J+22nmgkCFvHvuZW6hTz4xQo7jM9XYWK4bjbhfIHKUm24YnHM4hfCgC2EAJZkAEPW+9tGn7PxBYjx3+kUW2EB/P029cIqPXpjUNYRVLBYYAEqOoojFhjIE/QIGaUkBkBZ64eIlkjK88MXl6P1XplMl+cHrr3KEACBvwJKGe9u71Gy1CBoAAG5WmkY4BbkRGQbwUNgNWBcpANJC3/7kM6bo90aL7t29k6T46MGDfP3xm29wFEOPxSdmqVgkx3WTceufbaYaqUHUvucxYLCBfaGL3BTst4UeODCS1whp/edfEwawQDfARHwgQQearjMIaAZsJY1ovy20Wq2mPjrk4+OntV8SDWSd4yzAUQ0G9/QBaAALQOnDDHQjt7WjzyRfPOIc4+3bf/4/ET7Ua87k3PnzcVFnTAWAI8Yw4yM87IZkFSxyHYcbFPoAyvTqta/SrbhXIHh/kLXyFYT75m78ESNlGIUhhWFEvh+QbcffnBAkKgaW9IFeHcs6AEBpqd8AmMPGiAwAwEAUhWQXi+Q6LiqSozcMjZpNl9xOZ+9Z0CsQVI3aiHDE4jtP7QN5KWjs7PI5gSrAq/me43g/ALAW9Q6TTohjFmK27r9Rywst1shLLSIv2naKgX8B17EnXWhPQ1MAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\zinc_block.png","name":"zinc_block.png","folder":"block","namespace":"create","id":"particle","particle":false,"mode":"bitmap","saved":true,"uuid":"96e35d1c-6a94-bae9-e68d-c650d5726517","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdElEQVQ4T32TPU/bUBSGH8dgJ3FsJxCSsKRIHTJAQa0Ea7sx9a+0iI0KqVKl9v8gdUQsHaAURSwdUBW+CgKSkk/bcRzbt7KjtIBoj3SHe690z/vc9z3Sm7ebwjDSJKQEwwCEIK4wFAghkCSQExK+HzAhh/F+fG/3h0ibmx9FpfKMcrnM2dkZqVQaXddRlEnUpEKv62Lbv5DlNBcXPykUSgyHLq7b5+joO9LGxgexsLCM7w8Jw5DJSSXu4nkuxeIMtu3GjzabHQxDRVFkul0Xx7E5OPiKtLb2XlQqSySTqZG2OxU92mzeEAQBQkTr7+Vw6FGv30QIn8Ty8kuKxQJXV5fkctNkswbHx8cYxjStVhtd1zg5+UE2m0OSBJqW5PLyhsPDgxHC0tIKnheg62kcx0PTVGRZod3ukkzKWJaNpqVwnCHJ5AQzMya3t112drbvI0R/EFUkudV6XPoY4h7C/Pxz5uaeUqvVyOdLyHICWQ6o15u0Wg3y+Tzn5yOHTNPANHVkGba2Po8QVlZe0e8PMAwFRZnAsjympzP0egMsy8GyeoRh8MehqHsuZ7K9/QDhoQsR0r9w7iGsrr5G1w183+X6uhF3CgJBp9NFkqTYYlVVaDTqcciuri7QtAy7u19GCIuLyzFfJNtxBnQ6Fp1OJ5ZeLj+h0WgwNTUFCHo9J3ar3baoVvceD9L/pD/qwt0gRWEJwwSJxMgFw9A5Pa1RKs3GQSsUZvH9QRzl/f298Sy8wPN8MplRkFRVJp836fWizPdJpbQ4VKYZzcIE7baN4zhUq9+Q1tffCVVV48+6W9E4d7t2fJTJpLCsfjxs44pG3XVdfgM1m36TOejAKAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\depot_side.png","name":"depot_side.png","folder":"block","namespace":"create","id":"1","particle":false,"mode":"bitmap","saved":true,"uuid":"c5acdd77-eeae-7e26-5346-2f2858645589","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABqUlEQVQ4T91Tu0oDQRQ9Sza7O2vMw4RoIBJ8dEaxtBFsAzZaBkwTFUH8BX/CxkL8AK3EwspGW0HwBb4CEiEEH8nGZB/ZDSsz62wMiI2dt7lz78w9M3vOWQF/DOGP8/gPAMXVomsYBqOCEMJyNBZFvVYH73Oe+D6t+Z6QX8q72YlJ6IYFlcjsLF0b5gfisQREhcAxvQveaq8YTA379dX1JQT6gkxmBGcH25CDAVh2x8/8ZtoXAwFWCgLl3UU2twIfYGx0HOeH24iGCfqI1KMskYP+oOu6eK5q0JomZhbXuwDJZBJPp3sYiKgIh2QosgTdcGC2zR4wVZHwUmuipduYXtjA7c3XJ6TTGZzsbyEWjSASVmFZOmzd9oeDahCy7PUbHyYamo75tc0uAOXg/ngX8YiKoUT/j+ZstDzARtOC1mwhM1tApVLuJXEwHoJpOVBkkWUetJZE0efiXWthdK6AUunOA0ilhnFxtMPYp2zbnQ7adgemA8RDEmPedhymEI+p3HIXgKpAg2perZSZ/rymHqD6E6W/xyfUM4+lB+8Fv/2R3JU8f3chdeYnqTjFSIRpNikAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\depot_top.png","name":"depot_top.png","folder":"block","namespace":"create","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"8c30f417-4872-e1ba-d093-965f97783da8","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB90lEQVQ4T4VTzU7bQBicjdfZpHYqlZJApdDWsUpQJZ4Eqde8Q470xqXqhVs55h1yrcSTREUIYkFkpIrCgSQuseu1t/o2ceyQ/viyn9ffjmfnm2EA0O12Fa30VCuVrIRdqLPNIAyX37+cnDCWAfj+d/3BNE29PqvmQPT+OMsPxnGM3XcO1gCiKG/ivAyD4EsMnJeQpkCaKkgp8XLjBdw3TXw+Pp4z+Hh4qK6ubxAEU/zrIPUmiUSjXsfW1mbO4NPRkRqcDzWAEAKu64KgDcOAUimSJIEQZQwG5+DcwPOavQpADG5v7zF+GENUy2g2X8PzPE1ZKQJicF0HFxceRJnDsuzVKxADb3SD8WQC0yzBcVoYjUaI4wQpXR4KrZYD3/cXAlt/AXgYQ6Yp2u1dnJ19A+cmpIz1ob29NobDK0j5C416Y10DYvA4+6n/ShpcXnoQwkCSKNDY9vffLzXgnMN521wVkQCCIAA3Da3BfD7QGlBNYpIGxMi2a+sANAXGGJSK9cxJ7aIGxMKyaphOJxpge3sTvV4v9wFN4cfdHQyDg7ESpIwKGizoLEz8RwAyUmZfsm3Ryk9tTDg7O69yBhQmChGFh8JSXIshyvZnYahDt8xCp9NRFSGWKftfEUaRbun3+3MNDg4+qHAR00ohwtlepvzTntPTr+w3L98kIBHZenAAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\andesite_casing.png","name":"andesite_casing.png","folder":"block","namespace":"create","id":"3","particle":false,"mode":"bitmap","saved":true,"uuid":"86071dd2-b59c-91bb-a979-579f827a44af","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeUlEQVQ4T32Tz2vTYBjHvzFpmqRpfnSuXec2x+qcuE30puBF8DLBw7wIAw8yNwTxNMF/QvAkCAqCV0EFQS+7O5QNWd1g4rZWZmfbuSVb2zdp0kXedySdDnwuyZP34ZPn/T7fh5ucngzwnyCERKeyLIPmh58cBeQGTqFBXIiiwIpbrX00mwRJVYMfBBA4jn23bAtyQgfP7UPgeXxdyiMCzL1+wop0VcRGdQ/ZlAbP9xETePB8gI1qDV1mEnXHBcDh3NgdrK19OwAMnR3F51ePYWgyEpKAH1sOuk0ZruchHoshCAIUKxayKRWKxKNUqeHC9btYXft+ADBMA6WPbyAIxzCc68RKqY6sLqLhNGFqCThuE792PehxIAhaWP9p4+KNe20A1WDh3VOYmoxcj4nF9SrO9KaxbdciQLFqoz9toE4I62Do6m0QZ+9vDXRVYh3ML5WQ68vAaTpQJBFJRcDC8iZOdOlRB4NXbsLasdoazL58hIzRBtDiMDIphQFUU4dP6rBrLrsCm8LMw5mgwzyO/PtnkQa0AwqQ4zEQ10MIONzB5YkH+DL/qS3i5txbJJRYpEFaU44ABvs7Iw3oFKIOZCmJldkXSKeS0JMSNu0mU5zenwbVIF/YikSs/CYYvTZ11Ei9GYMBChWLFdP5h1egADqZ8tYutu0Gui+Nt0WkY6RO7Osy2R8L5R1mGsf1IcUFZp7Vko2TaQOu56NBPJwfv4+V5Ty4iVsTwcDAaSx+eA5VFsHzQLFkoSdjokaobam9YyhbHjpUEV6rBVHgMTI2dWAkChgZHmXLFIZmGuzVd9qbSPOwRpHj7DxaJpqEa0tXNYx/V/lwXVjzB52xTSnD2+HhAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\reality_funnel.png","name":"reality_funnel.png","folder":"block","namespace":"create","id":"10","particle":false,"mode":"bitmap","saved":true,"uuid":"e40f56ce-e46d-a3ee-0993-49b13588fc41","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAMLklEQVR4Xu1ba2wU1xU+szuzDz93jR/BJjG2FwzGwPoBmBYaVISq/mzzo5HaiFaVqqqlKf1XVW1erar+K03TqGqltlFbKZWI8gPxCBFRUgPhZbDx2178AIpZ2/jNvnen+u7sXY/Hu/bM7sZYCVeyZnc8O3Pvd7/z3XPuOSP84EWXnGMXibdoTCazSSAc0STJxI4LC2EqLbaRRTJRKByj8ckAO982WEh2u53y8vLo3LlzQuJGKT68e+I7siSaKRyJsitePP6vJb95/fhO5cGqFgwtO0U+fyRxBfqv/l7ksCz5fSAYI5tVGQca+h+LETsnHP/eNnnr5jqSRIkkUSBfIETtvbfJvX0XRaMymc1K/3LsVnb0+YOJG+G6mx4HWSwWKiwspLNnz+oC4J8fTtPc3Bwd/1Y1vXDsnWUAVFfUr4bjkv/3Dney7wca99HFm1fZwNzbmtk5ScTkAkCZBE3vTn/SSgIYoAxwdRbEonKCGcGgMoM3BgooJyeH8vPzdQFw8OBBuaCggAGA4+nTp5MCsOAP6Qahf7ibCvJF2rW1mW4P3CDRbKI99S3kuTux7B5RTD0R1W4uoTP/baVVZ2y1XjQ2NsowAQCgxwQOHz4s22y2lAD84kf18vaqnWQUAGehRDtcTdTtaSNBEGjvzr00OPqIdR8sxuwHQ8qkRaIxqtm0gT65fiVzAJqammRuAnoBAGN8Ph9jTnPNCE3PhlnHTvy9TwAAHHSrRd/84PeOAjEBAOTlQGML9Y1MkEU0x+1eGbzZZKJQKErVzxbRR1c/zRyA5uZm2Wq1GmKA0+mk6elpwrG+oo/27lRs97dvdwkQwdrNu+l3/+hajXzs/z//bj31j3Qw06x3NVKX5yYzATBg6P7UksFj5q2SSKFwhHa4yuhc68UnD0BdeV/Cdt94UwHg/Y+VWQNL0AIBZcXhDSaEBgahfeNQlMIRAOCmLk87W6k4AKHwIu0xeDSZZHq2zJEdE4AGoEMOh4POnDmzKmehAWoG7NzUn6Duqyc6EwDwwU9MLBcyDKKkpCQBAgBIxoC+YeW3oD0fOI55dhs5C2zZAQAawAHQKnoyDmsBgAlw8XrtD11MA85cFtnspxo8vy9AAAtSMYCLYDAcIYtkJiFOeJhI1SZn9kxAkiSmAefPn9fFAHR6ZmaGsaahajhhu2oTmJqaovn5+RV1AM8sKipaEQB/MEw2q0J9AIDBo2UNALfbzRgAWutxhLTLYEPVaMJ2f/PWogYYBSASkWmHy03dnnbmve6p30udgw/ZzKOZTAJJZuUzGFG50UmtN68mF8Fk7io8Rj4d3E3G90uduRk5Qk01AEBR70wYAP+GA4B1HwAM3p1kXVYPHN/Bim2bS1MD8N5bR+W/nZ1c4q7CNuFqog3dm6aYLNPgaA8DwIgjBHDVrvCtvjZy1zZS951bpBZBIww41BAg5gjVNLD7YEX4kruFPPcmlw0+EFJiiNrKkkUR1M74n94bZW6q2l195eV6edHVFKjYsYV6h7rpj+/0r2r3akPGs9isxAMivmzh3Cu/v51YBYwCkJcrJkwJ99q/ex/dHZtJUJ4PnPeluqKIWtuuKSagnZUT/xlaBgDWZ6j1gi9IcwsBEs0CDYz0MO9tJaVKZTqIONWN3wfXf3zLZngVUGsAEIYfEI0qfj9EMBBUZp5HoficAEAboGDmy8rKyOv1suPJkyeF135azwB47A8ZAiCV6eTnSix6Q+NeID6rAcB3vX4ANKAwz0KzCyEaG/ez4M5kFggBHBPBeFSrDuhwnk2DFgB4XmpnBQDABCBWvkCYAWCziNRzp3MJA5KJZyrTgc3CpNAQwUEA1QDg80q+APcBcJ1WA6AlK7FS/T92odY54X46PwKAXx4DAG4KhKIMgLwcC93u71gCQDLxTGU6PHrD8xHB8U6DAS27m1ksAAC0bjDvPJZe+BOIBa503CD1Jgi05IkAkCzWT2U6PHrjAMAL1NvpbF6nmwG/OgYNcNNjf5jpQH6ulTr62pcwIBkAqUwHGxgwKTTuA2RzYHrvpRuAV1/GKuCmqVk/RSJRstss1Dmw1ARgSmo399SpUylNhy9bCgDtBC9Qb6ezeV1SALj6q1cBZss1DTQ2MU8IriyShbo9yQGA7UJEV9KOdcUAUFe97CUDQI8IasUUAKRizrpiQDIAEKnxiA1U1qMByQBIxZx1B4B6wBi41hXWqwFa/yEVc/JzsYfnZuaMCO7XT1IDknmCWgD0aoAWgFTMKczHLu4iAK+/qd95yboIagF46YiTtMmLN362i4ngg/E5ts2MRIpWBHEfremkYg6P3hgD4pFgNgem915JgyH8GEEDj9iQvuJU7hlqZ4HQcxvrqb331jI/QAvAWmgAJmdiSslY8bSeNthaMRbQhqh84GoA9DJAazqpfpdNDUDA9ZXmFpJVKURtGoz/D0dZltnfB5cuKakxPWmxVMnRv7zrSTgwyTzBVMyBBiB6Q0MEl4kG4BlIhHQPeslsFikajRIJMjkLchOWMLvgI+wJiKKJ8mwWqiwvorOt8dwgEqHq5ChPiqqTo4j93dsbliVH1QBo9xWQ+EzFgGxqAJ6BLTDP3UckipgPgXmrkXgeUDENE9sdwhF7glsqN9D5y3EG4AI9LEiWHFUDgGhQqx3oHNLR2rT6po1KUoM3IxGcVuAUAJAKe8iSHqLJzCguxtNiHIBwOErBYIQEk0B1NaX0wcUsZIb0qu1neR0AQDp8+P4jtsMBKYjJMbJJUuKxFouSF8Au0dx8kHZsKaMPP72UeWrssxyY3ntzAFALIAjKNpi2aUUQO9sfXbn8+QFAPWBucsmAwP94Q5XLEwlB9c6s3usy9gP0Pmi9XpeRH7BeB2WkXxn5AUYetF6vzcgPWK+DMtIvmMDBpv3UOThGFouJLKLIYhlTPBOMe8lRmVAsgfohJExdz234/PgBX3gAnnqCTz1BxRV+6gnGlfML5QnC/tUrBgqj40VhLAJFUxdH8884jwLrdeMKI5RGp95+//6yFTAUUuqGUZHKBhQK0Y9fqGRbdthPBP1vdF+j/btbyBdQ6gLDYaX6FMnceGacbYig3fP2smvTCoeTIY6bokJbjbTR+B6bKdrS+dV8AfxmYPQ2q/19pngruxybOGgT04Ns7xItEpXJkVfNADOzDROih5MDNDefBgN46ImbLJaiM1cjUY6OMvQvN+xhD9TOKGYv2UziugsXLhhiJBIx+7d7qbqijgLhSGLw03MeNkhngYuwD+Cd7GcgACQFIIEceVa61nXTuAnwNXdgxEsxkikcDy/tVolCoQjVucpYGfqhPS3L3gVINaOYyb+eGksLgH1bvOSqrKPHAYXyaADAme8im3XxxYl73m7GAl4ziAKPW30d6QGA+pv+kQmKyjEyxbdfUYcbDMpUW6W4mJ13K3QPCDOJjqfDAADgi9f/MBNQvenCy2NwfsVt8dVsTf1/HnmhFB2D55WX8LF9vjDVuUoZA3rub9I9oEwAOFA3TlNzIcPVaj85WiuXFFlJ4HU9OXaJrnddY6VqKwECEwADeoa9ZBYW38MBGAg2eBm6UQZAG1pbWw1pALbhv+qeyQwAXtdz9GtF1DfcoRsA1OIrm4+K6mIbujA3h8pL81gRslEA0jEBAHCkeZaQFTJarwgGFBVYSODJjGwD0OYp0T2j6ANWhnQ04PldE2kDwExADQAKB1dDkptANhnwpABgDOBFDd//uoOJl14ARsdmWPIhHK/GjIRRNyTR5nKlDn8tTAB9z5gB6QJwzzvLlhxejor3cLC2VlUUGQYgXQZkIoI//PYWubzUrpgAUtovHXHoFkHk4f43MUuoz4Xzw5oANzRG26pKWcblen+xIQ3ALdJZBdIVQQBQ7IhrQDoAPJiYI58/TME4ALl2C80s+MldW77mADwY99Of/z1oaAldAgBy+npXAThCqMW/751hOTYkGtHyc6w06/PTjupn6PyltdOA/du8NDkTNAwAygKKnbbFVeDYNzfqEkEAgFr83jvjbPD8lRSAoFSOOOncxYtr5glmDADP6RthADxBSVz0ApkECMTeyI7FYqzyon2oVLdNQ4fwIjW2svWGxNyDbetuo8npAKnT9HpcezBgY4mdBJ7TL8y36WIAryhR1+LzYINHhvjOw2Ht2+HazmnLc9YSANQo/B+qWBWjUt6t0AAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"1_particle","particle":true,"mode":"bitmap","saved":true,"uuid":"50c5af51-eb03-5c79-c48b-de34340e7e64","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="}],"display":{"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,225,0],"scale":[0.4,0.4,0.4]},"ground":{"translation":[0,3.25,0],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,225,0],"translation":[0,1,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,90,0]},"fixed":{"rotation":[0,90,0],"translation":[0,1.5,0],"scale":[0.5,0.5,0.5]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/scene.bbmodel b/src/main/resources/assets/create/models/block/chute/scene.bbmodel deleted file mode 100644 index 7a686b94d..000000000 --- a/src/main/resources/assets/create/models/block/chute/scene.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"","parent":"block/block","ambientocclusion":true,"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[3,8,17],"to":[13,16,19],"autouv":0,"color":2,"origin":[11,16,13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"b311e08b-7eb1-f325-710a-b782685ce096"},{"name":"cube","from":[3,8,29],"to":[13,16,31],"autouv":0,"color":1,"origin":[5,16,35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"f9ec3a01-4c0e-1016-31c7-b90965f1e405"},{"name":"cube","from":[1,8,17],"to":[3,16,31],"autouv":0,"color":3,"origin":[9,16,25],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"fdf0d41d-6f8e-7b71-6b0e-cb61fe8991e6"},{"name":"cube","from":[13,8,17],"to":[15,16,31],"autouv":0,"color":0,"origin":[7,16,23],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"897440f1-e70b-52b0-27a8-42edb4c0eea5"},{"name":"cube","from":[13,0,18],"to":[14,8,30],"autouv":0,"color":7,"origin":[9,8,25],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"bcdb5da2-7af3-1584-365c-2bea85a4bc79"},{"name":"cube","from":[2,0,18],"to":[3,8,30],"autouv":0,"color":7,"origin":[9,8,25],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"4a532c7a-d9cd-6f89-c8da-0bdc1584cfd0"},{"name":"cube","from":[3,0,29],"to":[13,8,30],"autouv":0,"color":5,"origin":[8,8,36],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"c3e71d5a-5588-59f8-bfab-eab8004b886e"},{"name":"cube","from":[3,0,18],"to":[13,8,19],"autouv":0,"color":6,"origin":[8,8,25],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"7126992d-ed02-d8c5-0a8d-ef79e0ad1bde"},{"name":"cube","from":[13,29,17],"to":[15,32,31],"autouv":0,"color":2,"origin":[9,32,25],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"24c6ed60-fb2b-bfc8-9f26-a1a1069fb075"},{"name":"cube","from":[3,29,29],"to":[13,32,31],"autouv":0,"color":3,"origin":[9,32,25],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"e58fc898-7c20-514b-9964-c63559464c43"},{"name":"cube","from":[12,24,29],"to":[13,29,31],"autouv":0,"color":5,"origin":[11,32,25],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"1e80440a-b5f3-a4e9-9fbb-187e93f6063d"},{"name":"cube","from":[12,24,17],"to":[13,29,19],"autouv":0,"color":1,"origin":[11,32,23],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"80df8673-375e-0e2d-1105-e63a45339921"},{"name":"cube","from":[13,24,28],"to":[15,29,31],"autouv":0,"color":0,"origin":[11,32,25],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"01e5ed5e-f013-fd50-c4f8-a86903a22aaa"},{"name":"cube","from":[13,24,17],"to":[15,29,20],"autouv":0,"color":6,"origin":[11,32,23],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"eecfcc74-adbd-e4cd-cca2-2825f41022a5"},{"name":"cube","from":[1,29,17],"to":[3,32,31],"autouv":0,"color":3,"origin":[7,32,23],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"a56081d0-ee0d-4662-200b-bd48e1a827a5"},{"name":"cube","from":[3,29,17],"to":[13,32,19],"autouv":0,"color":5,"origin":[7,32,23],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"59f58a98-b74b-33ad-40e4-84699e3b7350"},{"name":"cube","from":[3,24,17],"to":[4,29,19],"autouv":0,"color":7,"origin":[5,32,23],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"c93d8afe-44e0-a6c0-eef6-eddd1179d252"},{"name":"cube","from":[3,24,29],"to":[4,29,31],"autouv":0,"color":3,"origin":[5,32,25],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"a7b45360-5cfe-95f3-a021-2987c8c9e5a2"},{"name":"cube","from":[1,24,17],"to":[3,29,20],"autouv":0,"color":7,"origin":[5,32,23],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"c424dc42-6a2a-5537-df58-048b5beed33c"},{"name":"cube","from":[1,24,28],"to":[3,29,31],"autouv":0,"color":6,"origin":[5,32,25],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"5b8ec8b1-c138-0552-68a4-ca66697bb9e9"},{"name":"cube","from":[13,16,18],"to":[14,24,30],"autouv":0,"color":7,"origin":[9,24,25],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"a788617a-e31b-3775-ec89-5ac482b2bf05"},{"name":"cube","from":[2,16,18],"to":[3,24,30],"autouv":0,"color":4,"origin":[9,24,25],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"91e8c105-c260-fdd5-6e06-13373d0c4321"},{"name":"cube","from":[3,16,29],"to":[13,24,30],"autouv":0,"color":5,"origin":[8,24,36],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"27c9f67d-6f35-f8b8-a68d-6b24247c1636"},{"name":"cube","from":[3,16,18],"to":[13,24,19],"autouv":0,"color":5,"origin":[8,24,25],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"ba0e5d2f-a244-0364-a842-f6ad7594d7fc"},{"name":"cube","from":[2,24,18],"to":[14,29,19],"autouv":0,"color":0,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"cfe1464b-179f-656a-447f-cc32f42b76cf"},{"name":"cube","from":[13,24,18],"to":[14,29,30],"autouv":0,"color":0,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"e2849527-341c-e300-0796-915bbeb49fad"},{"name":"cube","from":[2,24,29],"to":[14,29,30],"autouv":0,"color":4,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"694a8c4d-e2e6-9a4f-84e7-d44056c603e4"},{"name":"cube","from":[2,24,18],"to":[3,29,30],"autouv":0,"color":0,"origin":[8,24,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"0df748e9-ea8e-0e4e-f327-bdfbdcd7c744"},{"name":"cube","from":[13,45,17],"to":[15,48,31],"autouv":0,"color":2,"origin":[9,48,25],"faces":{"north":{"uv":[8.5,0,9.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[14.5,0,15.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"texture":0},"down":{"uv":[6,0,7,7],"texture":0}},"uuid":"36bbd02b-f243-4063-49c4-c4faf9795de6"},{"name":"cube","from":[3,45,29],"to":[13,48,31],"autouv":0,"color":3,"origin":[9,48,25],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"060dced1-0ce7-696a-c59a-fcc7477cccda"},{"name":"cube","from":[12,40,29],"to":[13,45,31],"autouv":0,"color":5,"origin":[11,48,25],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[9,0,16,4],"texture":0},"south":{"uv":[14,1.5,14.5,4],"texture":0},"west":{"uv":[13,1.5,14,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"texture":0}},"uuid":"a95f4f38-6586-ca70-6395-6bd91a40fed0"},{"name":"cube","from":[12,40,17],"to":[13,45,19],"autouv":0,"color":1,"origin":[11,48,23],"faces":{"north":{"uv":[9.5,1.5,10,4],"texture":0},"east":{"uv":[16,0,9,4],"texture":0},"south":{"uv":[10,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,13,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"texture":0}},"uuid":"7785ad17-f90e-63be-010e-e03f6c1eaf48"},{"name":"cube","from":[13,40,28],"to":[15,45,31],"autouv":0,"color":0,"origin":[11,48,25],"faces":{"north":{"uv":[10,1.5,11,4],"texture":0},"east":{"uv":[8.5,1.5,10,4],"texture":0},"south":{"uv":[14.5,1.5,15.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,6,6,7],"texture":0},"down":{"uv":[6,0,7,1.5],"texture":0}},"uuid":"b0ceec6e-60e2-8313-8bdb-0559728f486e"},{"name":"cube","from":[13,40,17],"to":[15,45,20],"autouv":0,"color":6,"origin":[11,48,23],"faces":{"north":{"uv":[8.5,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[13,1.5,14,4],"texture":0},"west":{"uv":[15.5,1.5,14,4],"texture":0},"up":{"uv":[1,7,6,6],"texture":0},"down":{"uv":[6,1.5,7,0],"texture":0}},"uuid":"9e6193d3-3d33-5cb0-e93a-1c7db0a249a6"},{"name":"cube","from":[1,45,17],"to":[3,48,31],"autouv":0,"color":3,"origin":[7,48,23],"faces":{"north":{"uv":[14.5,0,15.5,1.5],"texture":0},"east":{"uv":[8.5,0,15.5,1.5],"texture":0},"south":{"uv":[8.5,0,9.5,1.5],"texture":0},"west":{"uv":[8.5,0,15.5,1.5],"texture":0},"up":{"uv":[6,0,7,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,7],"rotation":180,"texture":0}},"uuid":"232f6a8b-bfec-ca00-c5fc-99cab97538e9"},{"name":"cube","from":[3,45,17],"to":[13,48,19],"autouv":0,"color":5,"origin":[7,48,23],"faces":{"north":{"uv":[9.5,0,14.5,1.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,1.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"ec1a321a-d7fb-33b5-5e6b-fdf7199255f2"},{"name":"cube","from":[3,40,17],"to":[4,45,19],"autouv":0,"color":7,"origin":[5,48,23],"faces":{"north":{"uv":[14,1.5,14.5,4],"texture":0},"east":{"uv":[13,1.5,14,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[9,0,16,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,0,6,1],"rotation":180,"texture":0}},"uuid":"dbea5aea-e9d1-2ba9-eda4-092f73be8507"},{"name":"cube","from":[3,40,29],"to":[4,45,31],"autouv":0,"color":3,"origin":[5,48,25],"faces":{"north":{"uv":[10,1.5,9.5,4],"texture":0},"east":{"uv":[14,1.5,13,4],"texture":0},"south":{"uv":[9.5,1.5,10,4],"texture":0},"west":{"uv":[16,0,9,4],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[5.5,1,6,0],"rotation":180,"texture":0}},"uuid":"6447fc7a-8a73-7776-7a63-2835011d269b"},{"name":"cube","from":[1,40,17],"to":[3,45,20],"autouv":0,"color":7,"origin":[5,48,23],"faces":{"north":{"uv":[14.5,1.5,15.5,4],"texture":0},"east":{"uv":[14,1.5,15.5,4],"texture":0},"south":{"uv":[10,1.5,11,4],"texture":0},"west":{"uv":[8.5,1.5,10,4],"texture":0},"up":{"uv":[1,6,6,7],"rotation":180,"texture":0},"down":{"uv":[6,0,7,1.5],"rotation":180,"texture":0}},"uuid":"ebc0a600-365d-0a80-ecbb-08bc9ac1c97e"},{"name":"cube","from":[1,40,28],"to":[3,45,31],"autouv":0,"color":6,"origin":[5,48,25],"faces":{"north":{"uv":[13,1.5,14,4],"texture":0},"east":{"uv":[15.5,1.5,14,4],"texture":0},"south":{"uv":[8.5,1.5,9.5,4],"texture":0},"west":{"uv":[14,1.5,15.5,4],"texture":0},"up":{"uv":[1,7,6,6],"rotation":180,"texture":0},"down":{"uv":[6,1.5,7,0],"rotation":180,"texture":0}},"uuid":"0f13b503-2239-49f5-60a9-df7ae15e38bb"},{"name":"cube","from":[13,32,18],"to":[14,40,30],"autouv":0,"color":7,"origin":[9,40,25],"faces":{"north":{"uv":[0,9.5,0.5,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[5.5,9.5,6,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"c54e39e8-9287-55ea-0308-2e7f4ab1dc31"},{"name":"cube","from":[2,32,18],"to":[3,40,30],"autouv":0,"color":4,"origin":[9,40,25],"faces":{"north":{"uv":[5.5,9.5,6,13.5],"texture":0},"east":{"uv":[0,9.5,6,13.5],"texture":0},"south":{"uv":[0,9.5,0.5,13.5],"texture":0},"west":{"uv":[0,9.5,6,13.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"59189db1-85dc-b934-392b-2c00ccbf1a97"},{"name":"cube","from":[3,32,29],"to":[13,40,30],"autouv":0,"color":5,"origin":[8,40,36],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"13147572-41c0-b5ff-9bc6-0e7c62d23120"},{"name":"cube","from":[3,32,18],"to":[13,40,19],"autouv":0,"color":5,"origin":[8,40,25],"faces":{"north":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0.5,9.5,5.5,13.5],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"15266cee-24f4-1675-b38c-5d19038d8b2e"},{"name":"cube","from":[2,40,18],"to":[14,45,19],"autouv":0,"color":0,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"4fef5453-0411-7c05-8f07-f88a4f4c0e87"},{"name":"cube","from":[13,40,18],"to":[14,45,30],"autouv":0,"color":0,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"e4a0f138-42df-176b-81e3-abf5b8c6193e"},{"name":"cube","from":[2,40,29],"to":[14,45,30],"autouv":0,"color":4,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"216c3aad-46bc-db1f-4c17-2341b06a103d"},{"name":"cube","from":[2,40,18],"to":[3,45,30],"autouv":0,"color":0,"origin":[8,40,24],"faces":{"north":{"uv":[0,7,6,9.5],"texture":0},"east":{"uv":[0,7,6,9.5],"texture":0},"south":{"uv":[0,7,6,9.5],"texture":0},"west":{"uv":[0,7,6,9.5],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"0ee86d43-966e-cedf-fb6d-1e1b805566f3"},{"name":"cube","from":[1.9,-12,1.9],"to":[14.1,10.666,8.1],"autouv":0,"color":3,"rotation":[-45,0,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,10,11,16],"rotation":270,"texture":3},"east":{"uv":[13,0,16,11],"rotation":180,"texture":3},"south":{"uv":[6,10,9,16],"rotation":90,"texture":0},"west":{"uv":[13,0,16,11],"texture":3},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"40801c7b-1b87-e0d8-2eed-af4769550651"},{"name":"cube","from":[1.1,-12,7.9],"to":[14.9,10.666,14.1],"autouv":0,"color":0,"rotation":[-45,0,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,3,11,10],"rotation":90,"texture":3},"east":{"uv":[0,0,11,3],"rotation":90,"texture":3},"south":{"uv":[0,3,11,10],"rotation":90,"texture":3},"west":{"uv":[0,0,11,3],"rotation":270,"texture":3},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"b14fa0aa-11b8-6639-07a4-8993c6270dcc"},{"name":"cube","from":[3,-8,17],"to":[13,0,19],"autouv":0,"color":2,"origin":[11,0,13],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"253c5a9a-9eb6-2cf5-bc5d-ac45c09f440b"},{"name":"cube","from":[3,-8,29],"to":[13,0,31],"autouv":0,"color":1,"origin":[5,0,35],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"92e4d21d-714b-0131-35b9-fd03d89ebd71"},{"name":"cube","from":[1,-8,17],"to":[3,0,31],"autouv":0,"color":3,"origin":[9,0,25],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"026a32a4-e784-e591-675d-1cb144abb631"},{"name":"cube","from":[13,-8,17],"to":[15,0,31],"autouv":0,"color":0,"origin":[7,0,23],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"4d444f2d-cfd7-fdaf-8850-5c913bf1c6b9"},{"name":"cube","from":[13,-16,18],"to":[14,-8,30],"autouv":0,"color":7,"origin":[9,-8,25],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"bbea4be6-1f82-205b-a53f-8ad1efe01ae4"},{"name":"cube","from":[2,-16,18],"to":[3,-8,30],"autouv":0,"color":7,"origin":[9,-8,25],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"9d74769a-a0d9-cf08-5470-cb2c1acac4a7"},{"name":"cube","from":[3,-16,29],"to":[13,-8,30],"autouv":0,"color":5,"origin":[8,-8,36],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"bbfb3afd-9bef-7d8c-34a5-2e9099daa9ac"},{"name":"cube","from":[3,-16,18],"to":[13,-8,19],"autouv":0,"color":6,"origin":[8,-8,25],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"c72cabb0-7553-c7cd-3438-bca07fff1a4b"},{"name":"cube","from":[2,24,-14],"to":[14,32,-2],"autouv":0,"color":5,"origin":[8,40,-24],"faces":{"north":{"uv":[9,4,15,8],"rotation":180,"texture":0},"east":{"uv":[9,4,15,8],"rotation":180,"texture":0},"south":{"uv":[9,4,15,8],"rotation":180,"texture":0},"west":{"uv":[9,4,15,8],"rotation":180,"texture":0},"up":{"uv":[5,10,11,16],"rotation":180,"texture":3},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"9b36b49b-2b79-2ea7-96ab-85b749cb84c8"},{"name":"cube","from":[2,21.5,-14],"to":[14,24,-2],"autouv":0,"color":2,"origin":[8,40,-24],"faces":{"north":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"east":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"south":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"west":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"up":{"uv":[9,9.5,15,15.5],"rotation":180,"texture":0},"down":{"uv":[9,11,15,15],"rotation":180,"texture":0}},"uuid":"794b22a0-5dfb-6928-0997-500295f2cf22"},{"name":"cube","from":[1.9,-12.25,-20.85],"to":[14.1,10.416,-14.650000000000002],"autouv":0,"color":4,"rotation":[-45,0,0],"origin":[8,24,-31],"faces":{"north":{"uv":[0,10,11,16],"rotation":270,"texture":3},"east":{"uv":[13,0,16,11],"rotation":180,"texture":3},"south":{"uv":[0,10,11,16],"rotation":270,"texture":3},"west":{"uv":[13,0,16,11],"texture":3},"up":{"uv":[5,10,11,13],"texture":3},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"13340ea7-a01f-8c76-1964-a22a22b3dbd2"},{"name":"cube","from":[0.9,-12.25,-14.850000000000001],"to":[15.1,10.416,-8.650000000000002],"autouv":0,"color":6,"rotation":[-45,0,0],"origin":[8,24,-31],"faces":{"north":{"uv":[0,3,11,10],"rotation":90,"texture":3},"east":{"uv":[0,0,11,3],"rotation":90,"texture":3},"south":{"uv":[0,3,11,10],"rotation":90,"texture":3},"west":{"uv":[0,0,11,3],"rotation":270,"texture":3},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"3fe22056-138b-f2da-d542-df4b57f4f48f"},{"name":"cube","from":[-13,56,-15],"to":[-3,64,-13],"autouv":0,"color":2,"origin":[-5,64,-19],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"texture":0},"down":{"uv":[1,6,6,7],"texture":0}},"uuid":"e039d864-44f7-4cca-f96d-2c36682a6cae"},{"name":"cube","from":[-13,56,-3],"to":[-3,64,-1],"autouv":0,"color":1,"origin":[-11,64,3],"faces":{"north":{"uv":[9.5,0,14.5,4],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,0,14.5,4],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[1,0,6,1],"rotation":180,"texture":0},"down":{"uv":[1,6,6,7],"rotation":180,"texture":0}},"uuid":"33e26015-b003-3c5e-fe9b-ffca555095d3"},{"name":"cube","from":[-15,56,-15],"to":[-13,64,-1],"autouv":0,"color":3,"origin":[-7,64,-7],"faces":{"north":{"uv":[14.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,9.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"texture":0},"down":{"uv":[0,0,1,7],"texture":0}},"uuid":"698cbeaf-3c8d-a0dd-c349-6b88deed5ebd"},{"name":"cube","from":[-3,56,-15],"to":[-1,64,-1],"autouv":0,"color":0,"origin":[-9,64,-9],"faces":{"north":{"uv":[8.5,0,9.5,4],"texture":0},"east":{"uv":[8.5,0,15.5,4],"texture":0},"south":{"uv":[14.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":180,"texture":0},"down":{"uv":[0,0,1,7],"rotation":180,"texture":0}},"uuid":"accfef3a-47b9-2b64-b224-b7e6345b8ec2"},{"name":"cube","from":[-3,48,-14],"to":[-2,56,-2],"autouv":0,"color":7,"origin":[-7,56,-7],"faces":{"north":{"uv":[9,4,9.5,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[14.5,4,15,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"cc369bf6-3229-04ee-06f0-2798461877db"},{"name":"cube","from":[-14,48,-14],"to":[-13,56,-2],"autouv":0,"color":7,"origin":[-7,56,-7],"faces":{"north":{"uv":[14.5,4,15,8],"texture":0},"east":{"uv":[9,4,15,8],"texture":0},"south":{"uv":[9,4,9.5,8],"texture":0},"west":{"uv":[9,4,15,8],"texture":0},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9,7.5,15,8],"rotation":90,"texture":0}},"uuid":"6b70fee3-50ad-d05c-cbed-a3384ac2b9b0"},{"name":"cube","from":[-13,48,-3],"to":[-3,56,-2],"autouv":0,"color":5,"origin":[-8,56,4],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"928f084e-5f01-bcc5-9b4e-fd5f07ad947c"},{"name":"cube","from":[-13,48,-14],"to":[-3,56,-13],"autouv":0,"color":6,"origin":[-8,56,-7],"faces":{"north":{"uv":[9.5,4,14.5,8],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9.5,4,14.5,8],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[9.5,7.5,14.5,8],"texture":0}},"uuid":"da7ebe8d-ef12-4e82-99a6-1c5a98dba9b2"},{"name":"cube","from":[-15,40,-13],"to":[-13,48,-3],"autouv":0,"color":2,"origin":[-19,48,-11],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[9.5,0,14.5,4],"texture":0},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[9.5,0,14.5,4],"texture":0},"up":{"uv":[1,0,6,1],"rotation":270,"texture":0},"down":{"uv":[1,6,6,7],"rotation":90,"texture":0}},"uuid":"277e446e-a979-c2d5-17ba-f388c07c5bae"},{"name":"cube","from":[-3,40,-13],"to":[-1,48,-3],"autouv":0,"color":6,"origin":[3,48,-5],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[9.5,0,14.5,4],"texture":0},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[9.5,0,14.5,4],"texture":0},"up":{"uv":[1,0,6,1],"rotation":90,"texture":0},"down":{"uv":[1,6,6,7],"rotation":270,"texture":0}},"uuid":"dc2bf280-beb6-8b99-318a-05aa0fda0e77"},{"name":"cube","from":[-15,40,-3],"to":[-1,48,-1],"autouv":0,"color":0,"origin":[-7,48,-9],"faces":{"north":{"uv":[8.5,0,15.5,4],"texture":0},"east":{"uv":[8.5,0,9.5,4],"texture":0},"south":{"uv":[8.5,0,15.5,4],"texture":0},"west":{"uv":[14.5,0,15.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":270,"texture":0},"down":{"uv":[0,0,1,7],"rotation":90,"texture":0}},"uuid":"3c3bcc31-6477-07c2-a914-df85c20c0ef0"},{"name":"cube","from":[-15,40,-15],"to":[-1,48,-13],"autouv":0,"color":2,"origin":[-9,48,-7],"faces":{"north":{"uv":[8.5,0,15.5,4],"texture":0},"east":{"uv":[14.5,0,15.5,4],"texture":0},"south":{"uv":[8.5,0,15.5,4],"texture":0},"west":{"uv":[8.5,0,9.5,4],"texture":0},"up":{"uv":[0,0,1,7],"rotation":90,"texture":0},"down":{"uv":[0,0,1,7],"rotation":270,"texture":0}},"uuid":"298df166-633b-0ba3-eb24-56c9ccf4a676"},{"name":"cube","from":[-14,37.5,-14],"to":[-2,40,-2],"autouv":0,"color":7,"origin":[40,8,-8],"faces":{"north":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"east":{"uv":[9,10.5,15,14.5],"rotation":180,"texture":0},"south":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"west":{"uv":[14.25,5,15.5,11],"rotation":270,"texture":3},"up":{"uv":[9,9.5,15,15.5],"rotation":90,"texture":0},"down":{"uv":[9,11,15,15],"rotation":270,"texture":0}},"uuid":"7f3b8b84-d9b1-c50e-6686-ae6cc00c75a0"},{"name":"cube","from":[-14.100000000000001,19.999999999999996,-14.100000000000001],"to":[-7.900000000000002,42.666,-1.8999999999999986],"autouv":0,"color":3,"rotation":[0,0,45],"origin":[-8,40,-8],"faces":{"north":{"uv":[13,0,16,11],"rotation":180,"texture":3},"east":{"uv":[6,10,9,16],"rotation":90,"texture":0},"south":{"uv":[13,0,16,11],"texture":3},"west":{"uv":[0,10,11,16],"rotation":270,"texture":3},"up":{"uv":[5,10,11,13],"rotation":270,"texture":3},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"6f1aadde-8b4a-cd1c-d46f-130c53e74918"},{"name":"cube","from":[-8.100000000000001,19.999999999999996,-14.899999999999999],"to":[-1.8999999999999986,40.666,-1.1000000000000014],"autouv":0,"color":6,"rotation":[0,0,45],"origin":[-8,40,-8],"faces":{"north":{"uv":[1,0,11,3],"rotation":90,"texture":3},"east":{"uv":[1,3,11,10],"rotation":90,"texture":3},"south":{"uv":[1,0,11,3],"rotation":270,"texture":3},"west":{"uv":[1,3,11,10],"rotation":90,"texture":3},"up":{"uv":[0,0,0,0],"rotation":270,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"434c4f12-bb25-855e-c94f-1904252cbf05"},{"name":"cube","from":[-13,45,-13],"to":[-3,46,-3],"autouv":0,"color":3,"origin":[-8,40,-8],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[11,11,16,16],"rotation":270,"texture":3},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"5710efe0-1f83-e83d-6f5a-2d46b42084c8"}],"outliner":[{"name":"block","uuid":"45951789-9635-6d12-0303-f2c5149bdeff","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"8af20f6a-924a-a997-c65b-d0a3390ebd43","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["b311e08b-7eb1-f325-710a-b782685ce096","f9ec3a01-4c0e-1016-31c7-b90965f1e405","fdf0d41d-6f8e-7b71-6b0e-cb61fe8991e6","897440f1-e70b-52b0-27a8-42edb4c0eea5"]},{"name":"ChuteBase","uuid":"c37b655b-63f3-5e92-5f68-d42eca57318b","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["bcdb5da2-7af3-1584-365c-2bea85a4bc79","4a532c7a-d9cd-6f89-c8da-0bdc1584cfd0","c3e71d5a-5588-59f8-bfab-eab8004b886e","7126992d-ed02-d8c5-0a8d-ef79e0ad1bde"]}]},{"name":"block_windowed","uuid":"47d71345-71f6-7e1f-d370-be8e0aab59e9","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"b6c5872e-3c80-979e-1e17-c2b5772f44e9","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["24c6ed60-fb2b-bfc8-9f26-a1a1069fb075","e58fc898-7c20-514b-9964-c63559464c43","1e80440a-b5f3-a4e9-9fbb-187e93f6063d","80df8673-375e-0e2d-1105-e63a45339921","01e5ed5e-f013-fd50-c4f8-a86903a22aaa","eecfcc74-adbd-e4cd-cca2-2825f41022a5","a56081d0-ee0d-4662-200b-bd48e1a827a5","59f58a98-b74b-33ad-40e4-84699e3b7350","c93d8afe-44e0-a6c0-eef6-eddd1179d252","a7b45360-5cfe-95f3-a021-2987c8c9e5a2","c424dc42-6a2a-5537-df58-048b5beed33c","5b8ec8b1-c138-0552-68a4-ca66697bb9e9"]},{"name":"ChuteBase","uuid":"48397e85-5f56-8f2d-6e04-98942194088f","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["a788617a-e31b-3775-ec89-5ac482b2bf05","91e8c105-c260-fdd5-6e06-13373d0c4321","27c9f67d-6f35-f8b8-a68d-6b24247c1636","ba0e5d2f-a244-0364-a842-f6ad7594d7fc"]},{"name":"windows","uuid":"b73e1858-e389-6f03-a095-36f3ae96f208","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["cfe1464b-179f-656a-447f-cc32f42b76cf","e2849527-341c-e300-0796-915bbeb49fad","694a8c4d-e2e6-9a4f-84e7-d44056c603e4","0df748e9-ea8e-0e4e-f327-bdfbdcd7c744"]}]},{"name":"block_windowed","uuid":"654529a0-a8d9-0b64-b7d4-9577efb836d1","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"2a345c4a-6dc5-a6b3-5b79-3e25134f427a","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["36bbd02b-f243-4063-49c4-c4faf9795de6","060dced1-0ce7-696a-c59a-fcc7477cccda","a95f4f38-6586-ca70-6395-6bd91a40fed0","7785ad17-f90e-63be-010e-e03f6c1eaf48","b0ceec6e-60e2-8313-8bdb-0559728f486e","9e6193d3-3d33-5cb0-e93a-1c7db0a249a6","232f6a8b-bfec-ca00-c5fc-99cab97538e9","ec1a321a-d7fb-33b5-5e6b-fdf7199255f2","dbea5aea-e9d1-2ba9-eda4-092f73be8507","6447fc7a-8a73-7776-7a63-2835011d269b","ebc0a600-365d-0a80-ecbb-08bc9ac1c97e","0f13b503-2239-49f5-60a9-df7ae15e38bb"]},{"name":"ChuteBase","uuid":"45c5489b-8e54-bcaf-12ee-3e1a398c8420","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["c54e39e8-9287-55ea-0308-2e7f4ab1dc31","59189db1-85dc-b934-392b-2c00ccbf1a97","13147572-41c0-b5ff-9bc6-0e7c62d23120","15266cee-24f4-1675-b38c-5d19038d8b2e"]},{"name":"windows","uuid":"e27dacfb-c052-5f06-815e-9ddac3452276","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["4fef5453-0411-7c05-8f07-f88a4f4c0e87","e4a0f138-42df-176b-81e3-abf5b8c6193e","216c3aad-46bc-db1f-4c17-2341b06a103d","0ee86d43-966e-cedf-fb6d-1e1b805566f3"]}]},{"name":"alt_block_diagonal_straight","uuid":"d2be5349-affa-19ba-6e7e-389b37e59f19","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"7062be0d-82e1-7200-e062-251e14653cc2","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["40801c7b-1b87-e0d8-2eed-af4769550651","b14fa0aa-11b8-6639-07a4-8993c6270dcc"]},{"name":"group","uuid":"57b24a7a-2597-b2d4-3959-ccd1ab696bc2","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]},{"name":"block","uuid":"973c3003-b9e2-f4a5-671f-6cc6852ee598","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"0864bc0a-7eab-3006-9693-4dfd6e3b01c5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["253c5a9a-9eb6-2cf5-bc5d-ac45c09f440b","92e4d21d-714b-0131-35b9-fd03d89ebd71","026a32a4-e784-e591-675d-1cb144abb631","4d444f2d-cfd7-fdaf-8850-5c913bf1c6b9"]},{"name":"ChuteBase","uuid":"b0783e35-18fe-eb7c-207f-c4aa7aea679f","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["bbea4be6-1f82-205b-a53f-8ad1efe01ae4","9d74769a-a0d9-cf08-5470-cb2c1acac4a7","bbfb3afd-9bef-7d8c-34a5-2e9099daa9ac","c72cabb0-7553-c7cd-3438-bca07fff1a4b"]}]},{"name":"alt_block_diagonal_t","uuid":"bdd30392-ed7a-b780-083c-4526c3256893","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"201e8b09-23cc-5057-3964-fb3f0ab1c181","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,24,-24],"children":["9b36b49b-2b79-2ea7-96ab-85b749cb84c8"]},{"name":"alt_block_diagonal_start","uuid":"eb35b5c8-7ffe-8905-0b53-22b99e47f683","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"fcedcfd9-ce29-d4bb-92ef-6e6554cef241","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["794b22a0-5dfb-6928-0997-500295f2cf22"]},{"name":"alt_block_diagonal_straight","uuid":"4213eca7-0863-97c4-5a9e-33de9dbe0ab1","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"0222bd50-564d-5bac-9417-58b00a126b7b","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["13340ea7-a01f-8c76-1964-a22a22b3dbd2"]},{"name":"group","uuid":"3a4b4f95-d28a-b31a-2562-4505d8b4567b","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]}]},{"name":"alt_block_diagonal_straight","uuid":"179d0014-4a6b-8e46-aa63-a8c7f6f8b2f1","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"5bd95880-36d9-141b-c715-cc9f5d246c5d","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["3fe22056-138b-f2da-d542-df4b57f4f48f"]},{"name":"group","uuid":"f73034f7-0837-4d0c-5473-7a55e40da304","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]}]},{"name":"block","uuid":"d791ab8f-5d78-64d9-8e53-d41160f7343e","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"ChuteTop","uuid":"6c03593a-c99c-9e12-0afe-65f33c45a864","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[9,16,-7],"children":["e039d864-44f7-4cca-f96d-2c36682a6cae","33e26015-b003-3c5e-fe9b-ffca555095d3","698cbeaf-3c8d-a0dd-c349-6b88deed5ebd","accfef3a-47b9-2b64-b224-b7e6345b8ec2"]},{"name":"ChuteBase","uuid":"8491a876-56bf-9e5d-c932-5add8363e5b0","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,-7],"children":["cc369bf6-3229-04ee-06f0-2798461877db","6b70fee3-50ad-d05c-cbed-a3384ac2b9b0","928f084e-5f01-bcc5-9b4e-fd5f07ad947c","da7ebe8d-ef12-4e82-99a6-1c5a98dba9b2"]}]},{"name":"alt_block_diagonal_start","uuid":"53cb600a-6ec6-7f57-8486-a277c1158c36","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"57236fe0-74cd-e71a-2765-a58625143892","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,56,-56],"children":["277e446e-a979-c2d5-17ba-f388c07c5bae","dc2bf280-beb6-8b99-318a-05aa0fda0e77","3c3bcc31-6477-07c2-a914-df85c20c0ef0","298df166-633b-0ba3-eb24-56c9ccf4a676","7f3b8b84-d9b1-c50e-6686-ae6cc00c75a0"]},{"name":"alt_block_diagonal_straight","uuid":"251a2b9a-2deb-b3ac-4845-80c1996f33cd","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"group","uuid":"51684bc8-e7ac-b902-58db-2a9a494f61c5","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":["6f1aadde-8b4a-cd1c-d46f-130c53e74918","434c4f12-bb25-855e-c94f-1904252cbf05"]},{"name":"group","uuid":"fe1cb35c-17e3-e008-825d-4fd55e08bf91","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,-8],"children":[]}]},"5710efe0-1f83-e83d-6f5a-2d46b42084c8"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\chute.png","name":"chute.png","folder":"block","namespace":"create","id":"13","particle":false,"mode":"bitmap","saved":true,"uuid":"6fb1e05d-c758-ab0b-eb9f-4cb8b3a08cfa","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFoklEQVRYR51XT2gcZRR/829nd5NsNkIMSVGkFKrS0sA2baq1QU/NKSihNB706EXBi6eCB0E8eNWDIF56qSEoObUXWxpRUEncUlNIjEjqP6wpaTa7O7MzszPye9M3fjOZthsfLN/MfN9+7/d+7/feN6PNzMxEtm1TGIZkWRZ1u12CGYaRe411uq7T+vo6r6vX69rUmZei6tAA35dLJR4rpRI1HIdHGK5hbcchr9Ohdtuj60tXNW12djYaHx+njY0N8n2fQciIP+BaDHNjY2O0urpKm5ubCYDps2ejyRMnaOXGjVwQ4lj2OXbkCP2wvEyXr1yJAWCiv78/cQRGOp1Ocq9e4DlALSwsaPIcDFgFnfr6+pgBRJllQgXRarXI98KYAaSgXC7zXnCMX6VSYfqxUEwANZtNfqQCAAMF207W5jmXSYCDIQ3MwNzcHGtADFEIGOig3W7zfRAEzAp+eLa4uJgwoAIQ57KfaEEci3OMe1IgQEzTZCbEhAlhYXt7OwUAKSiXC5RlQZyr0SNyToeIUKoAAsNPZUAcSvT4I1KAKpifn08xMFGrsbAAQmUhj4E9IkS0cC7UCwOSAhUABAgQagqyIsQ+avmpTCAVKRFmqwAMqPSDBQCAiQayVYC50dGnIssyiSgk07QoCPxkLBaLFARxf3GcuIq2tv5gBlNVAPXDwAAM1dFoNBLnkgKMahXg/tChZyNdh1i7VCza5LqdZKxUBhIxx/sX6NategxArQKJHJHiWoBkGchWATaq1U5Gnufxf0zDYNDSTUulEjnogL7PI3rOysr3MYC8RiSqzQJ6UBVg/fHjkxHmh6pV7iH4QVeu6zKTCCKKImq12wwsAYAqmJiYQE9ndWMSIwwbIFo8E4EODw/zOaCKEHMQojAHZ5ZlUKlkU6vVoULB5NzLvpqm0dLX1/7TABypTrGhegaodOIwytMAAMS6KZDnBWQV4l6CusfenQ5EqXP9wxIAQvel+hpvcHh0kNb+2qGnx6oyxeP44yNJ3acm7t+gG0ovMEyTWQt8n0ycsEFAeAYwsgZdkDWgAjg/fjj3vn7n7+hRAESEBYXNrAj9IGCRQgvLy9+lAXx4fTl6Z6qWilIc9wLg1ORp1gAUHr9TRGTbBc49ytLzfELuIUJo5ObNHx8NAOzAeS8pAANowfkagIgjjhz62Gk0e2NA0tMLAwBQHRxg9QdByMpnMVom6brGb1y5AKSFvnXxc8qmQAUwfexkqoVmhfj8c2ci5Lwy2Mfiw6EU+AHphs6OYRCj73fJdT365tulOAXSQt+b/5J+22nmgkCFvHvuZW6hTz4xQo7jM9XYWK4bjbhfIHKUm24YnHM4hfCgC2EAJZkAEPW+9tGn7PxBYjx3+kUW2EB/P029cIqPXpjUNYRVLBYYAEqOoojFhjIE/QIGaUkBkBZ64eIlkjK88MXl6P1XplMl+cHrr3KEACBvwJKGe9u71Gy1CBoAAG5WmkY4BbkRGQbwUNgNWBcpANJC3/7kM6bo90aL7t29k6T46MGDfP3xm29wFEOPxSdmqVgkx3WTceufbaYaqUHUvucxYLCBfaGL3BTst4UeODCS1whp/edfEwawQDfARHwgQQearjMIaAZsJY1ovy20Wq2mPjrk4+OntV8SDWSd4yzAUQ0G9/QBaAALQOnDDHQjt7WjzyRfPOIc4+3bf/4/ET7Ua87k3PnzcVFnTAWAI8Yw4yM87IZkFSxyHYcbFPoAyvTqta/SrbhXIHh/kLXyFYT75m78ESNlGIUhhWFEvh+QbcffnBAkKgaW9IFeHcs6AEBpqd8AmMPGiAwAwEAUhWQXi+Q6LiqSozcMjZpNl9xOZ+9Z0CsQVI3aiHDE4jtP7QN5KWjs7PI5gSrAq/me43g/ALAW9Q6TTohjFmK27r9Rywst1shLLSIv2naKgX8B17EnXWhPQ1MAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\zinc_block.png","name":"zinc_block.png","folder":"block","namespace":"create","id":"particle","particle":false,"mode":"bitmap","saved":true,"uuid":"346033bc-9488-c94b-dd63-ea9ce9b903d9","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdElEQVQ4T32TPU/bUBSGH8dgJ3FsJxCSsKRIHTJAQa0Ea7sx9a+0iI0KqVKl9v8gdUQsHaAURSwdUBW+CgKSkk/bcRzbt7KjtIBoj3SHe690z/vc9z3Sm7ebwjDSJKQEwwCEIK4wFAghkCSQExK+HzAhh/F+fG/3h0ibmx9FpfKMcrnM2dkZqVQaXddRlEnUpEKv62Lbv5DlNBcXPykUSgyHLq7b5+joO9LGxgexsLCM7w8Jw5DJSSXu4nkuxeIMtu3GjzabHQxDRVFkul0Xx7E5OPiKtLb2XlQqSySTqZG2OxU92mzeEAQBQkTr7+Vw6FGv30QIn8Ty8kuKxQJXV5fkctNkswbHx8cYxjStVhtd1zg5+UE2m0OSBJqW5PLyhsPDgxHC0tIKnheg62kcx0PTVGRZod3ukkzKWJaNpqVwnCHJ5AQzMya3t112drbvI0R/EFUkudV6XPoY4h7C/Pxz5uaeUqvVyOdLyHICWQ6o15u0Wg3y+Tzn5yOHTNPANHVkGba2Po8QVlZe0e8PMAwFRZnAsjympzP0egMsy8GyeoRh8MehqHsuZ7K9/QDhoQsR0r9w7iGsrr5G1w183+X6uhF3CgJBp9NFkqTYYlVVaDTqcciuri7QtAy7u19GCIuLyzFfJNtxBnQ6Fp1OJ5ZeLj+h0WgwNTUFCHo9J3ar3baoVvceD9L/pD/qwt0gRWEJwwSJxMgFw9A5Pa1RKs3GQSsUZvH9QRzl/f298Sy8wPN8MplRkFRVJp836fWizPdJpbQ4VKYZzcIE7baN4zhUq9+Q1tffCVVV48+6W9E4d7t2fJTJpLCsfjxs44pG3XVdfgM1m36TOejAKAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"3_particle","particle":false,"mode":"bitmap","saved":true,"uuid":"6d143b15-4074-ed18-c8be-08ddcadad759","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\chute_diagonal.png","name":"chute_diagonal.png","folder":"block","namespace":"create","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"6e635327-47a2-2f70-6ae8-60d630c1340c","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFOElEQVRYR61XW28bVRCevdrrOK3d2E4Kfa3EQ1sUTGmgNC0lkIQHov7U5IVUipAKDwihUKqg9g+kiR3b8XW9dy/6xj6bzXoNW4l5OXu8s2e+uX1nLG1tbYVLS0sE6XWHVCjoNB67vIfE93iOS1JPz+XIdRz+/tUvP0tx3Xr9UVirlqOzR6ZJZ2dNkp5uPg+fP/ua/nzz5sqoYdDYsqI9DoXAAAR7YSy+4t2n9+7RH8fH9NPh4TUA9++vhy9+/IFe/fobOY5D5nhM/f6QJEQAH1YrFVrO52lo27w2u11aLZd5DzAFw6DiDMDIcfgZ6w3DoIFlRYBN0yTPncxH4LMvwlrtFjuACA2GQ+p0OlMAmqqyRzASByHAYIWEYUiSJEU6wrgIFYAuSsHDzzfC1bUKWWObbNsl13Wpc9mdpuDpky85bKVSKfJWpACger1e9I7rwjCi9CQjsCgFAPDRx6scfttyyDQtal5cXKVAFGK8cESu034DCGE8HolWu52ago1Hj8OVlZukahpHqdsd0kWrPQXwf3WB63nkeyFpukxHR0fXilBEAMZN0yHLmkUg3gWFQoHG4zFpmsZOe55H+E3XdUJxYUUdxPeTyYR83+dvWq0WPd7YoL9OTmh/f38OQKVS4lrrXg6uAIguqNVqkQEcqKoqF1xWATCARHFBDg4Orn28+eSb8NnmV3T8+jU5jkeu61OjOeMBw9CouLxMxWIxsgePEAHuf12PDs7lchwFYUi8E78BRL83mmtDkQJzNCbLcq53AQCsrq2xxzAgyzIhtGKNR0FRFAqCYC4wo9GID0WVI8+HL1/OMaH4SOj5fkDS7s5OqOk6oRBhPK0b4hFIRgSeA5Bt25wCRZap0Wh/GBXfLBU5/DAkgMATiGEYbACo8QyJ70Wk2u02Rw2ckZaChVSMLgAAGAcIAeBDio+5fVaAi2qgnkLF/f5gyoS3b1cpl89zDVSrVfYQuUZL/pcAOAD0+32OElLhue5cDaRRMTNhsgZQB2hBISLHovgWraIGRsMhWZa3sAviVBzdBUiB6IByuXzNaXzwb0UI5XhrNs7PUwGkUfHZ+TlJe3t7fB2j73GQWEURiltQsF1yL/ofIKFz2emkDiRpVNwfDKYA1h88oL/fvWPP42QkjKGwwAlIDQDG98i7IC3ofHL3bupAAgBJKuYUgIoxQJTKy8z7YD8ciMMQBRjFbyICyT0iIKgb66KBJI2KT9+fkQRk+Xyeqxci2A8Ho6893+ca4HeSRFl1j49/T70N41R8+r4xbUMcns+r5PsTUjWFDfqex3d34Pt8cXR7AyrOhtcsukkAGEqTVHx52Z+2YX19nW8pWVGmEQgCfgYIvDt5+5ZOTxuEqTarrut6lMuBI64mbNdFR00HWyHS7s5uqKgKBX5AWMOQaBL40eSCewJAWu0e1aq3WCeLLgBAhFGscRFApJ3t7RDkIskypk4K+BaEEY8QMwyskzCkZrND1UqJGTKLLgAkjSZZFSC4DV3HZc/gKSYWVD0KDjXg2DYpqso33J07a5RVNzOA7e+3wyCYkK5rJCsyhZMJG4SA0/EsUlBZKVFW3SwAYCNKAbyF57jP+YpVFF7RjojGeaMdpSCLLgaULCJtfftdqKoyG8LB8BaFh/aTZIUwFqIrLlpdKpduUFbdLBGIakD8mUD+o/4PAgbxsF5nagUA1EBW3XgXLIoEA0AXLFLwvIDyxhRUu9PnFGTVFRGAkXg3iH3UhmAoXCj6jP9hID54YgzDnwi04rSvs+niehcklCQgQVBY/wHt2fUUQWzx1gAAAABJRU5ErkJggg=="}],"display":{"thirdperson_righthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,45,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,45,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,225,0],"scale":[0.4,0.4,0.4]},"ground":{"translation":[0,3.25,0],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,225,0],"translation":[0,1,0],"scale":[0.5,0.5,0.5]},"head":{"rotation":[0,90,0]},"fixed":{"rotation":[0,90,0],"translation":[0,1.5,0],"scale":[0.5,0.5,0.5]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute_funnel/block.json b/src/main/resources/assets/create/models/block/chute_funnel/block.json index 5a64bd828..a7597b729 100644 --- a/src/main/resources/assets/create/models/block/chute_funnel/block.json +++ b/src/main/resources/assets/create/models/block/chute_funnel/block.json @@ -5,8 +5,8 @@ "3": "create:block/belt_funnel_push_off", "4": "create:block/funnel_plating", "13": "create:block/chute", - "3_particle": "create:block/brass_block", "particle": "create:block/brass_block", + "3_particle": "create:block/brass_block", "1_2": "create:block/funnel_back" }, "elements": [ @@ -138,8 +138,8 @@ }, { "name": "Back", - "from": [1.1, 1.1, -2.9], - "to": [14.9, 14.9, 2.1], + "from": [1.1, 1.1, -3.1], + "to": [14.9, 14.9, 2], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, "faces": { "north": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#13"}, diff --git a/src/main/resources/assets/create/textures/block/chute_diagonal.png b/src/main/resources/assets/create/textures/block/chute_diagonal.png index 054c399555b415eae923f0ce656c5ca6a0ce3216..dd9f8ff3e6165f1655a393d50b67c548f54d9a92 100644 GIT binary patch delta 1281 zcmV+c1^)W?3c3oANq@os01mZX&4j(>lD@7rKLrP$y9ByI1s z7JK@GfqVY^r3>Tf%-y_xT?e;XO*OK&*Vex27`Fpxz{Xi)bKs!UQ9Y08bgFY;B2J>0 z%aIGqmC*fgbmSWKy4!8FR5oihU1&PSx3;!id)};%yt2Km(r|SD{#(o#D&?~K`Qbx# zt}6DTD3Z~c3xAm`i!vOI+{JjTha)-MbesU_ees?#m=awQV#OR6VHoIL@w zL9-b#sR1Q@f6m5$F@S^t+Nvku@Fb3v{(8Ntx-!6|pMM1$fTUr_*Nr6|6IPx)`%@zM zl}hwir>71^xl|sPmzOS*IAHH!Fi~9@@Uvj=>aN~)r@gH$%Y>Hu@S_h@ZxL{!w|95l z#^$EG`u-L7o@7k6w&j8#a9`c|Y;mDHINY+uu*d>7K@Sm)L~n^v`WW7n11ps*f_=Rv z0cm~q{(pLW?9w!yn}374JP+}~GgKrF(AldD5Rv31z<61x!l1$LPL71dp#w(P*foaiFi`knMx|x_{6*8pS%62c>vZF1jsG+iW(KiO^C8 z!v=0-fCU5nyv{pf%p9XuEW^rDtRn(rz+e>5X0rv&^z%Bm9u9{pV+pWTSXPRosFXQC z0kIh1765AT^#7W{VnCl^NenD2#aajOh{|RR^dvYi%&hLErsu zet#*}N@y{_fp#c{tr@*Yb1bg|Xr&&k0*B{Iu`)ol<4wt7n$e2%`~Lg-I?fntjQPRr zV_7NILd4|9*RJUz|3Cu=4CL1f#(Ac^P9NCVe|-(}rC19Q8^62vqi%+Qe!suCjrBPc z$$@#DzC8LB)8Uzkfulr57@mIIwaX3cW?wK6vocTW@je;M0_k z-Jn0z0)+D?f4y+Qmv_F_FGsBw2_^DfkO;*Hp7LgwVwBXOgi^(duFX5ZkJ5Q}!Q|`L z=UEzl@%e4NO--T`gR^Z8}jMRYQs8f^S~i%$H%_}PoMq~oSvQp5`=;K?SIiD zSrTXj&t@5&0Lk2BQC`&H=WR{dise%=5BYzYm zz%W8;K__F>d9cpfq6kSR%Hmi)NP5smiUeYqs200A#ynVOZBc}z&8_`?y-oIw&VJ=U zYbx*Ck<>D*v$iOLZ|>e*6o@?HSUwn%@7(b3f6m>`yKnvj=8<2UFGQ;lbUL?FsN@$5 rHv`;y8Z1v+p{;IgfLkY-<0d)$Gje z&FubnX3qAGkB`%hjSUAn=a;Tt58Yr8sSffw^E`^{!b-(O>Gk{W)vGtokE6uhx^Y8|Tg`?#+27yQx#>8!01RMu*4Q&})NZR@L=;8(42)%y z=;daOOTGfT7<9ust%k9pF&5_r(w^bTW9zFVi8ADhuyFZ^i z(alxFUl0UhO@Exv!?GxY;m}=KE~QO>RaYPdV_=KOpvZBw02M{Pryn+*`0O#tj**%g421TBYwP+wAgGKsS* zfHr70CnhzaWS)O!Hed`OVSush3J5-lW2L`VtEjFF@P9C01q47caFo}LCAA4FfB*AB zGWo4a^tWec4n{dt5!30^1(FB6+wYH6R|fJ`uz$U!r`_4z){#|0(|z&f=c+eJIMH`o zEw{0`>8^iv&Fx9WWNVww^E~(C-EZdyDuUovErxj&@DlWp(Ma^BIAxCGO$iu=SqA6z zswAY%d4Komvu7?%)0z7#)Z}`|53V7UJV57NWq^#NE&Az?h$9UF?z)!EN#VV5f}poqc};DInB(AI;S2C1}bAouw_`(ii4n( zZGZ-1Ilw6Z)Uwn68wSe(y@mxju&5PlA7DpxHe;YG$$?`|1#oDN7fIG?lbPi}EPj^d z0Dp(dw_@#tmIDN|pg6W+^dfCzMIAsZ{a_ggUTnq60Nsu|rG^6UN-)~-LGsYUW zd@|>;s1<7?;^9{Z2f8R9&_IB`{CdGT*HqM*1G9bXYglZ>+K71ZmxsUW%P`RE_2#Fs zIYE&GEb7edTCgqq8d9>wRt&r&`K<;OqkmcblC4%=$XN2g+O042uDbT|<3B#Qi`z%v zqE+wHW|g&BAWkcZ7xJySN^F1)_-QJ4 zDEEg$JSK@`W+~8yA~mHpUuqVtvldv;VsKzKzamMMB-!=Qc&G#%(&&w_A#)=r)+K?9_nebZ*=x62U=6P-?o&NVV$*L zl}&i}@7>F?Y60R{J{VH(obcVh7jEa%tN(yS6xULQTtl%0O}EW??e-mM5;&3mV&P Date: Thu, 2 Jul 2020 17:26:12 +0200 Subject: [PATCH 26/47] Additional lang keys from prior merge --- .../assets/create/lang/unfinished/de_de.json | 11 ++++++++++- .../assets/create/lang/unfinished/fr_fr.json | 11 ++++++++++- .../assets/create/lang/unfinished/it_it.json | 11 ++++++++++- .../assets/create/lang/unfinished/ja_jp.json | 11 ++++++++++- .../assets/create/lang/unfinished/ko_kr.json | 11 ++++++++++- .../assets/create/lang/unfinished/nl_nl.json | 11 ++++++++++- .../assets/create/lang/unfinished/pt_br.json | 11 ++++++++++- .../assets/create/lang/unfinished/ru_ru.json | 11 ++++++++++- .../assets/create/lang/unfinished/zh_cn.json | 11 ++++++++++- 9 files changed, 90 insertions(+), 9 deletions(-) diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index ac258ff13..4653db832 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 766" + "_": "Missing Localizations: 774" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "UNLOCALIZED: Min. Ingredients", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "UNLOCALIZED: killtps", "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 2ca12f853..92d6c5815 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 368" + "_": "Missing Localizations: 376" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "Ingrédients min.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 2f59f7bf6..94d80b3f9 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 352" + "_": "Missing Localizations: 360" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "Ingredienti Min.", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 15ae97444..e71dae427 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 347" + "_": "Missing Localizations: 355" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "最小 材料", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index ab309250f..78483095a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 352" + "_": "Missing Localizations: 360" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "최소 재료 종류", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 905a97f91..104323103 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 702" + "_": "Missing Localizations: 710" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "UNLOCALIZED: killtps", "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index be62ae8e5..6221a47f4 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 773" + "_": "Missing Localizations: 781" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "UNLOCALIZED: Min. Ingredients", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "UNLOCALIZED: killtps", "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 781de51c7..8fc7d33c9 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 767" + "_": "Missing Localizations: 775" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "UNLOCALIZED: Min. Ingredients", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "UNLOCALIZED: killtps", "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 2e9bf9764..25580ddbb 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 27" + "_": "Missing Localizations: 35" "_": "->------------------------] Game Elements [------------------------<-", @@ -816,6 +816,15 @@ "create.mechanical_mixer.min_ingredients": "最少物品种类数", + "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", + "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", + "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", + "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", + "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", + "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", + "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", + "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", + "create.command.killTPSCommand": "killtps", "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器每秒tick速被降低为 %s ms :o", "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在每秒tick速被降低为 >:)", From 5cf3dde0a1c865e6c5b18b6607c7a0b3a505c222 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 2 Jul 2020 17:39:31 +0200 Subject: [PATCH 27/47] Populang hotfix - Fixed invalid json in populated lang templates --- src/generated/resources/.cache/cache | 18 +++++++++--------- .../assets/create/lang/unfinished/de_de.json | 2 +- .../assets/create/lang/unfinished/fr_fr.json | 2 +- .../assets/create/lang/unfinished/it_it.json | 2 +- .../assets/create/lang/unfinished/ja_jp.json | 2 +- .../assets/create/lang/unfinished/ko_kr.json | 2 +- .../assets/create/lang/unfinished/nl_nl.json | 4 ++-- .../assets/create/lang/unfinished/pt_br.json | 2 +- .../assets/create/lang/unfinished/ru_ru.json | 2 +- .../assets/create/lang/unfinished/zh_cn.json | 2 +- .../create/foundation/data/LangMerger.java | 2 +- .../resources/assets/create/lang/nl_nl.json | 2 +- 12 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 4828d3b04..7a94afd4f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -337,15 +337,15 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json b149cd24e07fcadf25331bac859c313373617462 assets\create\lang\en_us.json -722910566426c6327d032fdf6f5a50abe4294002 assets\create\lang\unfinished\de_de.json -c29c0b2a0150e4d98ba293adb3fbe44bf9f6c8bb assets\create\lang\unfinished\fr_fr.json -4592d8a33170d4fa0f6a50ac179a0adf919ab5db assets\create\lang\unfinished\it_it.json -0b8d23672484d8a1d6d6660f304a8518e2441908 assets\create\lang\unfinished\ja_jp.json -65540c4cba02168f4fbef728cf03b7a5369995e7 assets\create\lang\unfinished\ko_kr.json -e7475d39ed0dba6fc16eec27f9eb7ca2feae8072 assets\create\lang\unfinished\nl_nl.json -023949e413e3be443e9155bc6ec8cf9259e20121 assets\create\lang\unfinished\pt_br.json -28b491b4c99de673f198b99949993df14d4002d5 assets\create\lang\unfinished\ru_ru.json -b9588b8e9b479b44683e32c61d5727c42514f80b assets\create\lang\unfinished\zh_cn.json +feb13f2c71a8ccc5c9a1b3cd58f0e06db6e89825 assets\create\lang\unfinished\de_de.json +e06e04eb9c06679cef7b3b1273c02e83297bf3cb assets\create\lang\unfinished\fr_fr.json +78973e80977ebc94dfadbfc6cd21de91c673f32a assets\create\lang\unfinished\it_it.json +dd821fcf079b96bd636350f9b3c77da13fa8dfc5 assets\create\lang\unfinished\ja_jp.json +92058021567b46150322be87120ca009cf74f808 assets\create\lang\unfinished\ko_kr.json +c076938f726f8ed92ebc8bb27b9df415fb8f06be assets\create\lang\unfinished\nl_nl.json +e4562ef48bd555d84dbe13233e850e0bd0917a90 assets\create\lang\unfinished\pt_br.json +dfacb15608f4b043e06a6ac9441234acbfccf708 assets\create\lang\unfinished\ru_ru.json +a685880eb8e0dd580f74675e66e8470b01415c50 assets\create\lang\unfinished\zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 4653db832..d920041b5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 774" + "_": "Missing Localizations: 774", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 92d6c5815..b4b09cdfc 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 376" + "_": "Missing Localizations: 376", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 94d80b3f9..e477c8700 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 360" + "_": "Missing Localizations: 360", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index e71dae427..eb1aba63d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 355" + "_": "Missing Localizations: 355", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 78483095a..a46b6bf9b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 360" + "_": "Missing Localizations: 360", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 104323103..72168412c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 710" + "_": "Missing Localizations: 710", "_": "->------------------------] Game Elements [------------------------<-", @@ -504,7 +504,7 @@ "create.recipe.smoking_via_fan": "Bulk Rook", "create.recipe.smoking_via_fan.fan": "Ventilator achter vuur", "create.recipe.blasting_via_fan": "Bulk Smelten", - "create.recipe.blasting_via_fan.fan": ""Ventilator achter Lava", + "create.recipe.blasting_via_fan.fan": "Ventilator achter Lava", "create.recipe.pressing": "Persen", "create.recipe.mixing": "Mengen", "create.recipe.packing": "Compressen", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 6221a47f4..345a72f3e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 781" + "_": "Missing Localizations: 781", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 8fc7d33c9..d4a63d2ae 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 775" + "_": "Missing Localizations: 775", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 25580ddbb..e30433a0d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 35" + "_": "Missing Localizations: 35", "_": "->------------------------] Game Elements [------------------------<-", diff --git a/src/main/java/com/simibubi/create/foundation/data/LangMerger.java b/src/main/java/com/simibubi/create/foundation/data/LangMerger.java index c8dac6003..6c672ee18 100644 --- a/src/main/java/com/simibubi/create/foundation/data/LangMerger.java +++ b/src/main/java/com/simibubi/create/foundation/data/LangMerger.java @@ -235,7 +235,7 @@ public class LangMerger implements IDataProvider { StringBuilder builder = new StringBuilder(); builder.append("{\n"); if (missingKeys != -1) - builder.append("\t\"_\": \"Missing Localizations: " + missingKeys + "\"\n"); + builder.append("\t\"_\": \"Missing Localizations: " + missingKeys + "\",\n"); data.forEach(builder::append); builder.append("\t\"_\": \"Thank you for translating Create!\"\n\n"); builder.append("}"); diff --git a/src/main/resources/assets/create/lang/nl_nl.json b/src/main/resources/assets/create/lang/nl_nl.json index d5d8c298e..8d9108149 100644 --- a/src/main/resources/assets/create/lang/nl_nl.json +++ b/src/main/resources/assets/create/lang/nl_nl.json @@ -194,7 +194,7 @@ "create.recipe.smoking_via_fan": "Bulk Rook", "create.recipe.smoking_via_fan.fan": "Ventilator achter vuur", "create.recipe.blasting_via_fan": "Bulk Smelten", - "create.recipe.blasting_via_fan.fan": "\"Ventilator achter Lava", + "create.recipe.blasting_via_fan.fan": "Ventilator achter Lava", "create.recipe.pressing": "Persen", "create.recipe.mixing": "Mengen", "create.recipe.packing": "Compressen", From 957f9355b7aae40e8f63f8fcb8bbdba00669d63c Mon Sep 17 00:00:00 2001 From: Zelophed Date: Fri, 3 Jul 2020 23:56:50 +0200 Subject: [PATCH 28/47] Display Arm Interaction Points - placed mechanical arms will show their in/out puts if you look at them while holding a wrench --- .../ArmInteractionPointHandler.java | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java index 16dc97a97..b6a94e2b1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Map.Entry; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllItems; import com.simibubi.create.CreateClient; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPoint.Mode; import com.simibubi.create.foundation.networking.AllPackets; @@ -14,11 +15,15 @@ import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @@ -29,6 +34,8 @@ public class ArmInteractionPointHandler { static Map currentSelection = new HashMap<>(); static ItemStack currentItem; + static long lastBlockPos = -1; + @SubscribeEvent public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClickBlock event) { if (currentItem == null) @@ -74,21 +81,61 @@ public class ArmInteractionPointHandler { public static void tick() { PlayerEntity player = Minecraft.getInstance().player; - World world = Minecraft.getInstance().world; + if (player == null) return; ItemStack heldItemMainhand = player.getHeldItemMainhand(); if (!AllBlocks.MECHANICAL_ARM.isIn(heldItemMainhand)) { currentItem = null; - return; - } - if (heldItemMainhand != currentItem) { - currentSelection.clear(); - currentItem = heldItemMainhand; + } else { + if (heldItemMainhand != currentItem) { + currentSelection.clear(); + currentItem = heldItemMainhand; + } + + drawOutlines(currentSelection); } - for (Iterator> iterator = currentSelection.entrySet() + checkForWrench(heldItemMainhand); + } + + private static void checkForWrench(ItemStack heldItem) { + if(!AllItems.WRENCH.isIn(heldItem)) { + return; + } + + RayTraceResult objectMouseOver = Minecraft.getInstance().objectMouseOver; + if (!(objectMouseOver instanceof BlockRayTraceResult)) { + return; + } + + BlockRayTraceResult result = (BlockRayTraceResult) objectMouseOver; + BlockPos pos = result.getPos(); + + TileEntity te = Minecraft.getInstance().world.getTileEntity(pos); + if (!(te instanceof ArmTileEntity)) { + lastBlockPos = -1; + currentSelection.clear(); + return; + } + + if (lastBlockPos == -1 || lastBlockPos != pos.toLong()) { + currentSelection.clear(); + ArmTileEntity arm = (ArmTileEntity) te; + arm.inputs.forEach(point -> currentSelection.put(point.pos, point)); + arm.outputs.forEach(point -> currentSelection.put(point.pos, point)); + lastBlockPos = pos.toLong(); + } + + if (lastBlockPos != -1) { + drawOutlines(currentSelection); + } + } + + private static void drawOutlines(Map selection) { + World world = Minecraft.getInstance().world; + for (Iterator> iterator = selection.entrySet() .iterator(); iterator.hasNext();) { Entry entry = iterator.next(); BlockPos pos = entry.getKey(); From ff32c6c6ae6c95aff1333b746b960c0746a4906a Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Sat, 4 Jul 2020 14:09:22 +0200 Subject: [PATCH 29/47] fix null player crashes --- .../base/DirectionalAxisKineticBlock.java | 43 +++++++++----- .../base/DirectionalKineticBlock.java | 15 +++-- .../base/RotatedPillarKineticBlock.java | 26 +++++--- .../crafter/MechanicalCrafterBlock.java | 4 +- .../components/crank/HandCrankBlock.java | 24 +++++--- .../components/fan/EncasedFanBlock.java | 2 +- .../components/motor/CreativeMotorBlock.java | 6 +- .../chassis/LinearChassisBlock.java | 11 ++-- .../structureMovement/glue/SuperGlueItem.java | 12 ++-- .../waterwheel/WaterWheelBlock.java | 34 +++++++---- .../sequencer/SequencedGearshiftBlock.java | 4 +- .../contraptions/relays/belt/BeltBlock.java | 4 +- .../relays/belt/item/BeltConnectorItem.java | 59 ++++++++++--------- .../relays/encased/EncasedBeltBlock.java | 46 ++++++++------- .../relays/encased/EncasedShaftBlock.java | 8 ++- .../contraptions/wrench/IWrenchable.java | 2 +- .../contraptions/wrench/WrenchItem.java | 12 ++-- .../curiosities/TreeFertilizerItem.java | 40 +++++++++---- .../symmetry/SymmetryWandItem.java | 5 ++ .../curiosities/zapper/ZapperItem.java | 7 ++- .../block/inventories/CrateBlock.java | 22 ++++--- .../block/redstone/RedstoneContactBlock.java | 14 +++-- .../logistics/item/filter/FilterItem.java | 51 ++++++++++------ .../schematics/item/SchematicItem.java | 23 +++++--- 24 files changed, 294 insertions(+), 180 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java index 605184e99..dd623508c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java @@ -27,14 +27,17 @@ public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBloc } protected Direction getFacingForPlacement(BlockItemUseContext context) { - Direction facing = context.getNearestLookingDirection().getOpposite(); - if (context.getPlayer().isSneaking()) + Direction facing = context.getNearestLookingDirection() + .getOpposite(); + if (context.getPlayer() != null && context.getPlayer() + .isSneaking()) facing = facing.getOpposite(); return facing; } protected boolean getAxisAlignmentForPlacement(BlockItemUseContext context) { - return context.getPlacementHorizontalFacing().getAxis() == Axis.X; + return context.getPlacementHorizontalFacing() + .getAxis() == Axis.X; } @Override @@ -44,30 +47,37 @@ public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBloc World world = context.getWorld(); boolean alongFirst = false; - if (facing.getAxis().isHorizontal()) { + if (facing.getAxis() + .isHorizontal()) { alongFirst = facing.getAxis() == Axis.Z; - Block blockAbove = world.getBlockState(pos.offset(Direction.UP)).getBlock(); + Block blockAbove = world.getBlockState(pos.offset(Direction.UP)) + .getBlock(); boolean shaftAbove = blockAbove instanceof IRotate && ((IRotate) blockAbove).hasShaftTowards(world, - pos.up(), world.getBlockState(pos.up()), Direction.DOWN); - Block blockBelow = world.getBlockState(pos.offset(Direction.DOWN)).getBlock(); + pos.up(), world.getBlockState(pos.up()), Direction.DOWN); + Block blockBelow = world.getBlockState(pos.offset(Direction.DOWN)) + .getBlock(); boolean shaftBelow = blockBelow instanceof IRotate && ((IRotate) blockBelow).hasShaftTowards(world, - pos.down(), world.getBlockState(pos.down()), Direction.UP); + pos.down(), world.getBlockState(pos.down()), Direction.UP); if (shaftAbove || shaftBelow) alongFirst = facing.getAxis() == Axis.X; } - if (facing.getAxis().isVertical()) { + if (facing.getAxis() + .isVertical()) { alongFirst = getAxisAlignmentForPlacement(context); Direction prefferedSide = null; for (Direction side : Direction.values()) { - if (side.getAxis().isVertical()) + if (side.getAxis() + .isVertical()) continue; - BlockState blockState = context.getWorld().getBlockState(context.getPos().offset(side)); + BlockState blockState = context.getWorld() + .getBlockState(context.getPos() + .offset(side)); if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), - context.getPos().offset(side), blockState, side.getOpposite())) + if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos() + .offset(side), blockState, side.getOpposite())) if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) { prefferedSide = null; break; @@ -81,12 +91,15 @@ public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBloc } } - return this.getDefaultState().with(FACING, facing).with(AXIS_ALONG_FIRST_COORDINATE, alongFirst); + return this.getDefaultState() + .with(FACING, facing) + .with(AXIS_ALONG_FIRST_COORDINATE, alongFirst); } @Override public Axis getRotationAxis(BlockState state) { - Axis pistonAxis = state.get(FACING).getAxis(); + Axis pistonAxis = state.get(FACING) + .getAxis(); boolean alongFirst = state.get(AXIS_ALONG_FIRST_COORDINATE); if (pistonAxis == Axis.X) diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java index 28b281500..a2bc9e6f4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java @@ -27,10 +27,12 @@ public abstract class DirectionalKineticBlock extends KineticBlock { public Direction getPreferredFacing(BlockItemUseContext context) { Direction prefferedSide = null; for (Direction side : Direction.values()) { - BlockState blockState = context.getWorld().getBlockState(context.getPos().offset(side)); + BlockState blockState = context.getWorld() + .getBlockState(context.getPos() + .offset(side)); if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos().offset(side), - blockState, side.getOpposite())) + if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos() + .offset(side), blockState, side.getOpposite())) if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) { prefferedSide = null; break; @@ -45,10 +47,11 @@ public abstract class DirectionalKineticBlock extends KineticBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext context) { Direction preferred = getPreferredFacing(context); - if (preferred == null || context.getPlayer().isSneaking()) { + if (preferred == null || (context.getPlayer() != null && context.getPlayer() + .isSneaking())) { Direction nearestLookingDirection = context.getNearestLookingDirection(); - return getDefaultState().with(FACING, - context.getPlayer().isSneaking() ? nearestLookingDirection : nearestLookingDirection.getOpposite()); + return getDefaultState().with(FACING, context.getPlayer() != null && context.getPlayer() + .isSneaking() ? nearestLookingDirection : nearestLookingDirection.getOpposite()); } return getDefaultState().with(FACING, preferred.getOpposite()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java index b4f661d1f..dda1b90f4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java @@ -16,7 +16,8 @@ public abstract class RotatedPillarKineticBlock extends KineticBlock { public RotatedPillarKineticBlock(Properties properties) { super(properties); - this.setDefaultState(this.getDefaultState().with(AXIS, Direction.Axis.Y)); + this.setDefaultState(this.getDefaultState() + .with(AXIS, Direction.Axis.Y)); } @Override @@ -40,10 +41,12 @@ public abstract class RotatedPillarKineticBlock extends KineticBlock { public static Axis getPreferredAxis(BlockItemUseContext context) { Axis prefferedAxis = null; for (Direction side : Direction.values()) { - BlockState blockState = context.getWorld().getBlockState(context.getPos().offset(side)); + BlockState blockState = context.getWorld() + .getBlockState(context.getPos() + .offset(side)); if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos().offset(side), - blockState, side.getOpposite())) + if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos() + .offset(side), blockState, side.getOpposite())) if (prefferedAxis != null && prefferedAxis != side.getAxis()) { prefferedAxis = null; break; @@ -63,10 +66,15 @@ public abstract class RotatedPillarKineticBlock extends KineticBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext context) { Axis preferredAxis = getPreferredAxis(context); - if (preferredAxis != null && !context.getPlayer().isSneaking()) - return this.getDefaultState().with(AXIS, preferredAxis); - return this.getDefaultState().with(AXIS, context.getPlayer().isSneaking() ? context.getFace().getAxis() - : context.getNearestLookingDirection().getAxis()); + if (preferredAxis != null && (context.getPlayer() == null || !context.getPlayer() + .isSneaking())) + return this.getDefaultState() + .with(AXIS, preferredAxis); + return this.getDefaultState() + .with(AXIS, preferredAxis != null && context.getPlayer() + .isSneaking() ? context.getFace() + .getAxis() + : context.getNearestLookingDirection() + .getAxis()); } - } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java index e19d27f0b..4d34fd6a7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java @@ -76,8 +76,8 @@ public class MechanicalCrafterBlock extends HorizontalKineticBlock implements IT BlockState blockState = context.getWorld() .getBlockState(placedOnPos); - if ((blockState.getBlock() != this) || context.getPlayer() - .isSneaking()) { + if ((blockState.getBlock() != this) || (context.getPlayer() != null && context.getPlayer() + .isSneaking())) { BlockState stateForPlacement = super.getStateForPlacement(context); Direction direction = stateForPlacement.get(HORIZONTAL_FACING); if (direction != face) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java index d375ccca9..da13c072d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java @@ -33,7 +33,7 @@ public class HandCrankBlock extends DirectionalKineticBlock implements ITE 0; i--) { Vec3d offset = VecHelper.rotate(plane, 360 * world.rand.nextFloat(), direction.getAxis()); - Vec3d motion = offset.normalize().scale(1 / 16f); + Vec3d motion = offset.normalize() + .scale(1 / 16f); if (fullBlock) offset = new Vec3d(MathHelper.clamp(offset.x, -.5, .5), MathHelper.clamp(offset.y, -.5, .5), - MathHelper.clamp(offset.z, -.5, .5)); + MathHelper.clamp(offset.z, -.5, .5)); Vec3d particlePos = facePos.add(offset); world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), particlePos.x, particlePos.y, - particlePos.z, motion.x, motion.y, motion.z); + particlePos.z, motion.x, motion.y, motion.z); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java index 83d2f16c7..e5923468e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java @@ -34,7 +34,7 @@ public class WaterWheelBlock extends HorizontalKineticBlock implements ITE beltsToCreate = getBeltChainBetween(start, end, slope, facing); BlockState beltBlock = AllBlocks.BELT.getDefaultState(); @@ -134,8 +135,8 @@ public class BeltConnectorItem extends BlockItem { if (part == Part.MIDDLE && pulley) part = Part.PULLEY; world.setBlockState(pos, beltBlock.with(BeltBlock.SLOPE, slope) - .with(BeltBlock.PART, part) - .with(BeltBlock.HORIZONTAL_FACING, facing), 3); + .with(BeltBlock.PART, part) + .with(BeltBlock.HORIZONTAL_FACING, facing), 3); } } @@ -148,7 +149,7 @@ public class BeltConnectorItem extends BlockItem { axisDirection = diff.getY() > 0 ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE; else axisDirection = beltAxis.getCoordinate(diff.getX(), 0, diff.getZ()) > 0 ? AxisDirection.POSITIVE - : AxisDirection.NEGATIVE; + : AxisDirection.NEGATIVE; return Direction.getFacingFromAxis(axisDirection, beltAxis); } @@ -197,20 +198,20 @@ public class BeltConnectorItem extends BlockItem { BlockPos diff = second.subtract(first); Axis axis = world.getBlockState(first) - .get(BlockStateProperties.AXIS); + .get(BlockStateProperties.AXIS); int x = diff.getX(); int y = diff.getY(); int z = diff.getZ(); int sames = ((Math.abs(x) == Math.abs(y)) ? 1 : 0) + ((Math.abs(y) == Math.abs(z)) ? 1 : 0) - + ((Math.abs(z) == Math.abs(x)) ? 1 : 0); + + ((Math.abs(z) == Math.abs(x)) ? 1 : 0); if (axis.getCoordinate(x, y, z) != 0) return false; if (sames != 1) return false; if (axis != world.getBlockState(second) - .get(BlockStateProperties.AXIS)) + .get(BlockStateProperties.AXIS)) return false; TileEntity tileEntity = world.getTileEntity(first); @@ -234,7 +235,7 @@ public class BeltConnectorItem extends BlockItem { if (ShaftBlock.isShaft(blockState) && blockState.get(ShaftBlock.AXIS) == axis) continue; if (!blockState.getMaterial() - .isReplaceable()) + .isReplaceable()) return false; } @@ -248,7 +249,7 @@ public class BeltConnectorItem extends BlockItem { if (!ShaftBlock.isShaft(world.getBlockState(pos))) return false; if (world.getBlockState(pos) - .get(BlockStateProperties.AXIS) == Axis.Y) + .get(BlockStateProperties.AXIS) == Axis.Y) return false; return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java index e28b40615..46d0891c0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java @@ -29,7 +29,8 @@ import net.minecraft.world.IWorldReader; public class EncasedBeltBlock extends RotatedPillarKineticBlock { public static final IProperty PART = EnumProperty.create("part", Part.class); - public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE = DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; + public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE = + DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; public EncasedBeltBlock(Properties properties) { super(properties); @@ -40,12 +41,12 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { public boolean shouldCheckWeakPower(BlockState state, IWorldReader world, BlockPos pos, Direction side) { return false; } - + @Override public PushReaction getPushReaction(BlockState state) { return PushReaction.NORMAL; } - + @Override protected void fillStateContainer(Builder builder) { super.fillStateContainer(builder.add(PART, CONNECTED_ALONG_FIRST_COORDINATE)); @@ -53,8 +54,10 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext context) { - Axis placedAxis = context.getNearestLookingDirection().getAxis(); - Axis axis = context.getPlayer().isSneaking() ? placedAxis : getPreferredAxis(context); + Axis placedAxis = context.getNearestLookingDirection() + .getAxis(); + Axis axis = context.getPlayer() != null && context.getPlayer() + .isSneaking() ? placedAxis : getPreferredAxis(context); if (axis == null) axis = placedAxis; @@ -64,20 +67,20 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { continue; BlockPos pos = context.getPos(); BlockPos offset = pos.offset(facing); - state = updatePostPlacement(state, facing, context.getWorld().getBlockState(offset), context.getWorld(), - pos, offset); + state = updatePostPlacement(state, facing, context.getWorld() + .getBlockState(offset), context.getWorld(), pos, offset); } return state; } @Override public BlockState updatePostPlacement(BlockState stateIn, Direction face, BlockState neighbour, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { + BlockPos currentPos, BlockPos facingPos) { Part part = stateIn.get(PART); Axis axis = stateIn.get(AXIS); boolean connectionAlongFirst = stateIn.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis connectionAxis = connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) - : (axis == Axis.Z ? Axis.Y : Axis.Z); + Axis connectionAxis = + connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) : (axis == Axis.Z ? Axis.Y : Axis.Z); Axis faceAxis = face.getAxis(); boolean facingAlongFirst = axis == Axis.X ? faceAxis.isVertical() : faceAxis == Axis.X; @@ -99,8 +102,8 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { Part otherPart = neighbour.get(PART); Axis otherAxis = neighbour.get(AXIS); boolean otherConnection = neighbour.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis otherConnectionAxis = otherConnection ? (otherAxis == Axis.X ? Axis.Y : Axis.X) - : (otherAxis == Axis.Z ? Axis.Y : Axis.Z); + Axis otherConnectionAxis = + otherConnection ? (otherAxis == Axis.X ? Axis.Y : Axis.X) : (otherAxis == Axis.Z ? Axis.Y : Axis.Z); if (neighbour.get(AXIS) == faceAxis) return stateIn; @@ -117,12 +120,14 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { if ((part == Part.START) != positive) part = Part.MIDDLE; - return stateIn.with(PART, part).with(CONNECTED_ALONG_FIRST_COORDINATE, connectionAlongFirst); + return stateIn.with(PART, part) + .with(CONNECTED_ALONG_FIRST_COORDINATE, connectionAlongFirst); } @Override public BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) { - Blocks.AIR.getDefaultState().updateNeighbors(context.getWorld(), context.getPos(), 1); + Blocks.AIR.getDefaultState() + .updateNeighbors(context.getWorld(), context.getPos(), 1); Axis axis = newState.get(AXIS); newState = getDefaultState().with(AXIS, axis); for (Direction facing : Direction.values()) { @@ -130,8 +135,9 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { continue; BlockPos pos = context.getPos(); BlockPos offset = pos.offset(facing); - newState = updatePostPlacement(newState, facing, context.getWorld().getBlockState(offset), context.getWorld(), - pos, offset); } + newState = updatePostPlacement(newState, facing, context.getWorld() + .getBlockState(offset), context.getWorld(), pos, offset); + } newState.updateNeighbors(context.getWorld(), context.getPos(), 1 | 2); return newState; } @@ -150,13 +156,13 @@ public class EncasedBeltBlock extends RotatedPillarKineticBlock { Part part = state.get(PART); Axis axis = state.get(AXIS); boolean connectionAlongFirst = state.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis connectionAxis = connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) - : (axis == Axis.Z ? Axis.Y : Axis.Z); + Axis connectionAxis = + connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) : (axis == Axis.Z ? Axis.Y : Axis.Z); Axis otherAxis = other.get(AXIS); boolean otherConnection = other.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis otherConnectionAxis = otherConnection ? (otherAxis == Axis.X ? Axis.Y : Axis.X) - : (otherAxis == Axis.Z ? Axis.Y : Axis.Z); + Axis otherConnectionAxis = + otherConnection ? (otherAxis == Axis.X ? Axis.Y : Axis.X) : (otherAxis == Axis.Z ? Axis.Y : Axis.Z); if (otherConnectionAxis != connectionAxis) return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java index 56b8ccfe2..ef275df56 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java @@ -36,11 +36,13 @@ public class EncasedShaftBlock extends RotatedPillarKineticBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext context) { - if (context.getPlayer().isSneaking()) + if (context.getPlayer() != null && context.getPlayer() + .isSneaking()) return super.getStateForPlacement(context); Axis preferredAxis = getPreferredAxis(context); - return this.getDefaultState().with(AXIS, - preferredAxis == null ? context.getNearestLookingDirection().getAxis() : preferredAxis); + return this.getDefaultState() + .with(AXIS, preferredAxis == null ? context.getNearestLookingDirection() + .getAxis() : preferredAxis); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java index 13efbdc8d..6b4bb4481 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java @@ -52,7 +52,7 @@ public interface IWrenchable { BlockPos pos = context.getPos(); PlayerEntity player = context.getPlayer(); if (world instanceof ServerWorld) { - if (!player.isCreative()) + if (player != null && !player.isCreative()) Block.getDrops(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem()) .forEach(itemStack -> { player.inventory.placeItemBackInInventory(world, itemStack); diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java index e71a6d08d..839d6ec74 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java @@ -6,24 +6,28 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemUseContext; import net.minecraft.util.ActionResultType; +import javax.annotation.Nonnull; + public class WrenchItem extends Item { public WrenchItem(Properties properties) { super(properties); } + @Nonnull @Override public ActionResultType onItemUse(ItemUseContext context) { PlayerEntity player = context.getPlayer(); - if (!player.isAllowEdit()) + if (player == null || !player.isAllowEdit()) return super.onItemUse(context); - - BlockState state = context.getWorld().getBlockState(context.getPos()); + + BlockState state = context.getWorld() + .getBlockState(context.getPos()); if (!(state.getBlock() instanceof IWrenchable)) return super.onItemUse(context); IWrenchable actor = (IWrenchable) state.getBlock(); - if (player.isSneaking()) + if (player.isSneaking()) return actor.onSneakWrenched(state, context); return actor.onWrenched(state, context); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java index c43b8dca9..104095a74 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java @@ -21,7 +21,8 @@ public class TreeFertilizerItem extends Item { @Override public ActionResultType onItemUse(ItemUseContext context) { - BlockState state = context.getWorld().getBlockState(context.getPos()); + BlockState state = context.getWorld() + .getBlockState(context.getPos()); Block block = state.getBlock(); if (block instanceof SaplingBlock) { @@ -34,31 +35,46 @@ public class TreeFertilizerItem extends Item { BlockPos saplingPos = context.getPos(); for (BlockPos pos : BlockPos.getAllInBoxMutable(-1, 0, -1, 1, 0, 1)) { - if (context.getWorld().getBlockState(saplingPos.add(pos)).getBlock() == block) + if (context.getWorld() + .getBlockState(saplingPos.add(pos)) + .getBlock() == block) world.setBlockState(pos.up(10), state.with(SaplingBlock.STAGE, 1)); } - ((SaplingBlock) block).grow(world, world.getRandom(), BlockPos.ZERO.up(10), state.with(SaplingBlock.STAGE, 1)); + ((SaplingBlock) block).grow(world, world.getRandom(), BlockPos.ZERO.up(10), + state.with(SaplingBlock.STAGE, 1)); for (BlockPos pos : world.blocksAdded.keySet()) { - BlockPos actualPos = pos.add(saplingPos).down(10); + BlockPos actualPos = pos.add(saplingPos) + .down(10); // Don't replace Bedrock - if (context.getWorld().getBlockState(actualPos).getBlockHardness(context.getWorld(), actualPos) == -1) + if (context.getWorld() + .getBlockState(actualPos) + .getBlockHardness(context.getWorld(), actualPos) == -1) continue; // Don't replace solid blocks with leaves - if (!world.getBlockState(pos).isNormalCube(world, pos) && !context.getWorld().getBlockState(actualPos) - .getCollisionShape(context.getWorld(), actualPos).isEmpty()) + if (!world.getBlockState(pos) + .isNormalCube(world, pos) + && !context.getWorld() + .getBlockState(actualPos) + .getCollisionShape(context.getWorld(), actualPos) + .isEmpty()) continue; - if (world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK - || world.getBlockState(pos).getBlock() == Blocks.PODZOL) + if (world.getBlockState(pos) + .getBlock() == Blocks.GRASS_BLOCK + || world.getBlockState(pos) + .getBlock() == Blocks.PODZOL) continue; - context.getWorld().setBlockState(actualPos, world.getBlockState(pos)); + context.getWorld() + .setBlockState(actualPos, world.getBlockState(pos)); } - if (!context.getPlayer().isCreative()) - context.getItem().shrink(1); + if (context.getPlayer() != null && !context.getPlayer() + .isCreative()) + context.getItem() + .shrink(1); return ActionResultType.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java index 40b5fb682..5ee1ba62a 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java @@ -38,6 +38,8 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.network.PacketDistributor; +import javax.annotation.Nonnull; + public class SymmetryWandItem extends Item { public static final String SYMMETRY = "symmetry"; @@ -48,10 +50,13 @@ public class SymmetryWandItem extends Item { .rarity(Rarity.UNCOMMON)); } + @Nonnull @Override public ActionResultType onItemUse(ItemUseContext context) { PlayerEntity player = context.getPlayer(); BlockPos pos = context.getPos(); + if (player == null) + return ActionResultType.PASS; player.getCooldownTracker() .setCooldown(this, 5); ItemStack wand = player.getHeldItem(context.getHand()); diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java index 18328c84f..952e42022 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java @@ -41,6 +41,8 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.network.PacketDistributor; +import javax.annotation.Nonnull; + public abstract class ZapperItem extends Item { public ZapperItem(Properties properties) { @@ -80,10 +82,11 @@ public abstract class ZapperItem extends Item { return newStack.getItem() instanceof ZapperItem; } + @Nonnull @Override public ActionResultType onItemUse(ItemUseContext context) { // Shift -> open GUI - if (context.getPlayer() + if (context.getPlayer() != null && context.getPlayer() .isSneaking()) { if (context.getWorld().isRemote) { DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> { @@ -218,7 +221,7 @@ public abstract class ZapperItem extends Item { public boolean onEntitySwing(ItemStack stack, LivingEntity entity) { return true; } - + @Override public boolean canPlayerBreakBlockWhileHolding(BlockState state, World worldIn, BlockPos pos, PlayerEntity player) { return false; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateBlock.java index 0bc4a69c4..12ff27a6e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CrateBlock.java @@ -23,7 +23,8 @@ public class CrateBlock extends ProperDirectionalBlock implements IWrenchable { public CrateBlock(Properties p_i48415_1_) { super(p_i48415_1_); - setDefaultState(getDefaultState().with(FACING, Direction.UP).with(DOUBLE, false)); + setDefaultState(getDefaultState().with(FACING, Direction.UP) + .with(DOUBLE, false)); } @Override @@ -33,17 +34,18 @@ public class CrateBlock extends ProperDirectionalBlock implements IWrenchable { @Override public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { + BlockPos currentPos, BlockPos facingPos) { boolean isDouble = stateIn.get(DOUBLE); Direction blockFacing = stateIn.get(FACING); boolean isFacingOther = facingState.getBlock() == this && facingState.get(DOUBLE) - && facingState.get(FACING) == facing.getOpposite(); + && facingState.get(FACING) == facing.getOpposite(); if (!isDouble) { if (!isFacingOther) return stateIn; - return stateIn.with(DOUBLE, true).with(FACING, facing); + return stateIn.with(DOUBLE, true) + .with(FACING, facing); } if (facing != blockFacing) @@ -59,18 +61,22 @@ public class CrateBlock extends ProperDirectionalBlock implements IWrenchable { BlockPos pos = context.getPos(); World world = context.getWorld(); - if (!context.getPlayer().isSneaking()) { + if (context.getPlayer() == null || !context.getPlayer() + .isSneaking()) { for (Direction d : Direction.values()) { BlockState state = world.getBlockState(pos.offset(d)); if (state.getBlock() == this && !state.get(DOUBLE)) - return getDefaultState().with(FACING, d).with(DOUBLE, true); + return getDefaultState().with(FACING, d) + .with(DOUBLE, true); } } - Direction placedOnFace = context.getFace().getOpposite(); + Direction placedOnFace = context.getFace() + .getOpposite(); BlockState state = world.getBlockState(pos.offset(placedOnFace)); if (state.getBlock() == this && !state.get(DOUBLE)) - return getDefaultState().with(FACING, placedOnFace).with(DOUBLE, true); + return getDefaultState().with(FACING, placedOnFace) + .with(DOUBLE, true); return getDefaultState(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java index f24c11904..72ea19d51 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactBlock.java @@ -28,7 +28,8 @@ public class RedstoneContactBlock extends ProperDirectionalBlock implements IPor public RedstoneContactBlock(Properties properties) { super(properties); - setDefaultState(getDefaultState().with(POWERED, false).with(FACING, Direction.UP)); + setDefaultState(getDefaultState().with(POWERED, false) + .with(FACING, Direction.UP)); } @Override @@ -39,10 +40,13 @@ public class RedstoneContactBlock extends ProperDirectionalBlock implements IPor @Override public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState state = getDefaultState().with(FACING, context.getNearestLookingDirection().getOpposite()); - Direction placeDirection = context.getFace().getOpposite(); + BlockState state = getDefaultState().with(FACING, context.getNearestLookingDirection() + .getOpposite()); + Direction placeDirection = context.getFace() + .getOpposite(); - if (context.getPlayer().isSneaking() || hasValidContact(context.getWorld(), context.getPos(), placeDirection)) + if ((context.getPlayer() != null && context.getPlayer() + .isSneaking()) || hasValidContact(context.getWorld(), context.getPos(), placeDirection)) state = state.with(FACING, placeDirection); if (hasValidContact(context.getWorld(), context.getPos(), state.get(FACING))) state = state.with(POWERED, true); @@ -52,7 +56,7 @@ public class RedstoneContactBlock extends ProperDirectionalBlock implements IPor @Override public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { + BlockPos currentPos, BlockPos facingPos) { if (facing != stateIn.get(FACING)) return stateIn; boolean hasValidContact = hasValidContact(worldIn, currentPos, facing); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java index 039109ff7..feb43b008 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterItem.java @@ -36,6 +36,8 @@ import net.minecraftforge.fml.network.NetworkHooks; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; +import javax.annotation.Nonnull; + public class FilterItem extends Item implements INamedContainerProvider { private FilterType type; @@ -43,22 +45,25 @@ public class FilterItem extends Item implements INamedContainerProvider { private enum FilterType { REGULAR, ATTRIBUTE; } - + public static FilterItem regular(Properties properties) { return new FilterItem(FilterType.REGULAR, properties); } - + public static FilterItem attribute(Properties properties) { return new FilterItem(FilterType.ATTRIBUTE, properties); } - + private FilterItem(FilterType type, Properties properties) { super(properties); this.type = type; } + @Nonnull @Override public ActionResultType onItemUse(ItemUseContext context) { + if (context.getPlayer() == null) + return ActionResultType.PASS; return onItemRightClick(context.getWorld(), context.getPlayer(), context.getHand()).getType(); } @@ -73,16 +78,17 @@ public class FilterItem extends Item implements INamedContainerProvider { ItemDescription.add(tooltip, makeSummary); } } - + private List makeSummary(ItemStack filter) { List list = new ArrayList<>(); if (type == FilterType.REGULAR) { ItemStackHandler filterItems = getFilterItems(filter); - boolean blacklist = filter.getOrCreateTag().getBoolean("Blacklist"); + boolean blacklist = filter.getOrCreateTag() + .getBoolean("Blacklist"); list.add(TextFormatting.GOLD - + (blacklist ? Lang.translate("gui.filter.blacklist") : Lang.translate("gui.filter.whitelist"))); + + (blacklist ? Lang.translate("gui.filter.blacklist") : Lang.translate("gui.filter.whitelist"))); int count = 0; for (int i = 0; i < filterItems.getSlots(); i++) { if (count > 3) { @@ -93,7 +99,8 @@ public class FilterItem extends Item implements INamedContainerProvider { ItemStack filterStack = filterItems.getStackInSlot(i); if (filterStack.isEmpty()) continue; - list.add(TextFormatting.GRAY + "- " + filterStack.getDisplayName().getFormattedText()); + list.add(TextFormatting.GRAY + "- " + filterStack.getDisplayName() + .getFormattedText()); count++; } @@ -102,15 +109,17 @@ public class FilterItem extends Item implements INamedContainerProvider { } if (type == FilterType.ATTRIBUTE) { - WhitelistMode whitelistMode = WhitelistMode.values()[filter.getOrCreateTag().getInt("WhitelistMode")]; + WhitelistMode whitelistMode = WhitelistMode.values()[filter.getOrCreateTag() + .getInt("WhitelistMode")]; list.add(TextFormatting.GOLD + (whitelistMode == WhitelistMode.WHITELIST_CONJ - ? Lang.translate("gui.attribute_filter.whitelist_conjunctive") - : whitelistMode == WhitelistMode.WHITELIST_DISJ - ? Lang.translate("gui.attribute_filter.whitelist_disjunctive") - : Lang.translate("gui.attribute_filter.blacklist"))); + ? Lang.translate("gui.attribute_filter.whitelist_conjunctive") + : whitelistMode == WhitelistMode.WHITELIST_DISJ + ? Lang.translate("gui.attribute_filter.whitelist_disjunctive") + : Lang.translate("gui.attribute_filter.blacklist"))); int count = 0; - ListNBT attributes = filter.getOrCreateTag().getList("MatchedAttributes", NBT.TAG_COMPOUND); + ListNBT attributes = filter.getOrCreateTag() + .getList("MatchedAttributes", NBT.TAG_COMPOUND); for (INBT inbt : attributes) { ItemAttribute attribute = ItemAttribute.fromNBT((CompoundNBT) inbt); if (count > 3) { @@ -174,15 +183,17 @@ public class FilterItem extends Item implements INamedContainerProvider { private static boolean test(World world, ItemStack stack, ItemStack filter, boolean matchNBT) { if (filter.isEmpty()) return true; - + if (!(filter.getItem() instanceof FilterItem)) return (matchNBT ? ItemHandlerHelper.canItemStacksStack(filter, stack) - : ItemStack.areItemsEqual(filter, stack)); + : ItemStack.areItemsEqual(filter, stack)); if (AllItems.FILTER.get() == filter.getItem()) { ItemStackHandler filterItems = getFilterItems(filter); - boolean respectNBT = filter.getOrCreateTag().getBoolean("RespectNBT"); - boolean blacklist = filter.getOrCreateTag().getBoolean("Blacklist"); + boolean respectNBT = filter.getOrCreateTag() + .getBoolean("RespectNBT"); + boolean blacklist = filter.getOrCreateTag() + .getBoolean("Blacklist"); for (int slot = 0; slot < filterItems.getSlots(); slot++) { ItemStack stackInSlot = filterItems.getStackInSlot(slot); if (stackInSlot.isEmpty()) @@ -195,8 +206,10 @@ public class FilterItem extends Item implements INamedContainerProvider { } if (AllItems.ATTRIBUTE_FILTER.get() == filter.getItem()) { - WhitelistMode whitelistMode = WhitelistMode.values()[filter.getOrCreateTag().getInt("WhitelistMode")]; - ListNBT attributes = filter.getOrCreateTag().getList("MatchedAttributes", NBT.TAG_COMPOUND); + WhitelistMode whitelistMode = WhitelistMode.values()[filter.getOrCreateTag() + .getInt("WhitelistMode")]; + ListNBT attributes = filter.getOrCreateTag() + .getList("MatchedAttributes", NBT.TAG_COMPOUND); for (INBT inbt : attributes) { ItemAttribute attribute = ItemAttribute.fromNBT((CompoundNBT) inbt); boolean matches = attribute.appliesTo(stack, world); diff --git a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java index fe8a15868..521d74a2e 100644 --- a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java @@ -41,6 +41,8 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.thread.SidedThreadGroups; +import javax.annotation.Nonnull; + public class SchematicItem extends Item { public SchematicItem(Properties properties) { @@ -70,8 +72,10 @@ public class SchematicItem extends Item { @OnlyIn(value = Dist.CLIENT) public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { if (stack.hasTag()) { - if (stack.getTag().contains("File")) - tooltip.add(new StringTextComponent(TextFormatting.GOLD + stack.getTag().getString("File"))); + if (stack.getTag() + .contains("File")) + tooltip.add(new StringTextComponent(TextFormatting.GOLD + stack.getTag() + .getString("File"))); } else { tooltip.add(new StringTextComponent(TextFormatting.RED + Lang.translate("schematic.invalid"))); } @@ -95,12 +99,15 @@ public class SchematicItem extends Item { public static Template loadSchematic(ItemStack blueprint) { Template t = new Template(); - String owner = blueprint.getTag().getString("Owner"); - String schematic = blueprint.getTag().getString("File"); + String owner = blueprint.getTag() + .getString("Owner"); + String schematic = blueprint.getTag() + .getString("File"); String filepath = ""; - if (Thread.currentThread().getThreadGroup() == SidedThreadGroups.SERVER) + if (Thread.currentThread() + .getThreadGroup() == SidedThreadGroups.SERVER) filepath = "schematics/uploaded/" + owner + "/" + schematic; else filepath = "schematics/" + schematic; @@ -121,9 +128,10 @@ public class SchematicItem extends Item { return t; } + @Nonnull @Override public ActionResultType onItemUse(ItemUseContext context) { - if (!onItemUse(context.getPlayer(), context.getHand())) + if (context.getPlayer() != null && !onItemUse(context.getPlayer(), context.getHand())) return super.onItemUse(context); return ActionResultType.SUCCESS; } @@ -138,7 +146,8 @@ public class SchematicItem extends Item { private boolean onItemUse(PlayerEntity player, Hand hand) { if (!player.isSneaking() || hand != Hand.MAIN_HAND) return false; - if (!player.getHeldItem(hand).hasTag()) + if (!player.getHeldItem(hand) + .hasTag()) return false; DistExecutor.runWhenOn(Dist.CLIENT, () -> this::displayBlueprintScreen); return true; From 9ca203a3a600e92ba9b95325aa5b532c890700d5 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Mon, 6 Jul 2020 09:26:52 +0200 Subject: [PATCH 30/47] Recipe Compatibility - atmospheric wood and flowers - autumnity flowers - blloomful wood and flowers - botania petal milling to floral powder - buzzier bees flowers - druidcraft wood and flowers - projectvibrantjourneys wood - upgrade aquatic wood and flowers This should resolve #389 for the most part. --- .../compat/atmospheric/cutting/aspen_log.json | 21 +++++++++++++ .../atmospheric/cutting/grimwood_log.json | 21 +++++++++++++ .../compat/atmospheric/cutting/kousa_log.json | 21 +++++++++++++ .../atmospheric/cutting/rosewood_log.json | 21 +++++++++++++ .../cutting/stripped_aspen_log.json | 21 +++++++++++++ .../cutting/stripped_grimwood_log.json | 21 +++++++++++++ .../cutting/stripped_kousa_log.json | 21 +++++++++++++ .../cutting/stripped_rosewood_log.json | 21 +++++++++++++ .../cutting/stripped_yucca_log.json | 21 +++++++++++++ .../compat/atmospheric/cutting/yucca_log.json | 21 +++++++++++++ .../compat/atmospheric/milling/gilia.json | 31 +++++++++++++++++++ .../atmospheric/milling/hot_monkey_brush.json | 31 +++++++++++++++++++ .../milling/scalding_monkey_brush.json | 31 +++++++++++++++++++ .../milling/warm_monkey_brush.json | 31 +++++++++++++++++++ .../atmospheric/milling/yucca_flower.json | 26 ++++++++++++++++ .../autumnity/milling/autumn_crocus.json | 31 +++++++++++++++++++ .../cutting/stripped_wisteria_log.json | 21 +++++++++++++ .../compat/bloomful/cutting/wisteria_log.json | 21 +++++++++++++ .../bloomful/milling/blue_delphinium.json | 26 ++++++++++++++++ .../bloomful/milling/pink_delphinium.json | 26 ++++++++++++++++ .../bloomful/milling/purple_delphinium.json | 26 ++++++++++++++++ .../bloomful/milling/white_delphinium.json | 26 ++++++++++++++++ .../compat/botania/milling/black_petal.json | 21 +++++++++++++ .../compat/botania/milling/blue_petal.json | 21 +++++++++++++ .../compat/botania/milling/brown_petal.json | 21 +++++++++++++ .../compat/botania/milling/cyan_petal.json | 21 +++++++++++++ .../compat/botania/milling/gray_petal.json | 21 +++++++++++++ .../compat/botania/milling/green_petal.json | 21 +++++++++++++ .../botania/milling/light_blue_petal.json | 21 +++++++++++++ .../botania/milling/light_gray_petal.json | 21 +++++++++++++ .../compat/botania/milling/lime_petal.json | 21 +++++++++++++ .../compat/botania/milling/magenta_petal.json | 21 +++++++++++++ .../compat/botania/milling/orange_petal.json | 21 +++++++++++++ .../compat/botania/milling/pink_petal.json | 21 +++++++++++++ .../compat/botania/milling/purple_petal.json | 21 +++++++++++++ .../compat/botania/milling/red_petal.json | 21 +++++++++++++ .../compat/botania/milling/white_petal.json | 21 +++++++++++++ .../compat/botania/milling/yellow_petal.json | 21 +++++++++++++ .../milling/bird_of_paradise.json | 31 +++++++++++++++++++ .../compat/buzzier_bees/milling/bluebell.json | 21 +++++++++++++ .../buzzier_bees/milling/cartwheel.json | 26 ++++++++++++++++ .../buzzier_bees/milling/columbine.json | 26 ++++++++++++++++ .../compat/buzzier_bees/milling/dianthus.json | 26 ++++++++++++++++ .../milling/magenta_hibiscus.json | 26 ++++++++++++++++ .../buzzier_bees/milling/orange_hibiscus.json | 26 ++++++++++++++++ .../buzzier_bees/milling/pink_clover.json | 26 ++++++++++++++++ .../buzzier_bees/milling/pink_hibiscus.json | 26 ++++++++++++++++ .../buzzier_bees/milling/purple_hibiscus.json | 26 ++++++++++++++++ .../buzzier_bees/milling/red_hibiscus.json | 26 ++++++++++++++++ .../compat/buzzier_bees/milling/violet.json | 26 ++++++++++++++++ .../buzzier_bees/milling/white_clover.json | 26 ++++++++++++++++ .../buzzier_bees/milling/yellow_hibiscus.json | 26 ++++++++++++++++ .../druidcraft/cutting/darkwood_log.json | 21 +++++++++++++ .../compat/druidcraft/cutting/elder_log.json | 21 +++++++++++++ .../cutting/stripped_darkwood_log.json | 21 +++++++++++++ .../cutting/stripped_elder_log.json | 21 +++++++++++++ .../compat/druidcraft/milling/lavender.json | 26 ++++++++++++++++ .../cutting/aspen_log.json | 21 +++++++++++++ .../cutting/baobab_log.json | 21 +++++++++++++ .../cutting/cottonwood_log.json | 21 +++++++++++++ .../cutting/fir_log.json | 21 +++++++++++++ .../cutting/juniper_log.json | 21 +++++++++++++ .../cutting/mangrove_log.json | 21 +++++++++++++ .../cutting/maple_log.json | 21 +++++++++++++ .../cutting/palm_log.json | 21 +++++++++++++ .../cutting/pine_log.json | 21 +++++++++++++ .../cutting/redwood_log.json | 21 +++++++++++++ .../cutting/stripped_aspen_log.json | 21 +++++++++++++ .../cutting/stripped_baobab_log.json | 21 +++++++++++++ .../cutting/stripped_cottonwood_log.json | 21 +++++++++++++ .../cutting/stripped_fir_log.json | 21 +++++++++++++ .../cutting/stripped_juniper_log.json | 21 +++++++++++++ .../cutting/stripped_mangrove_log.json | 21 +++++++++++++ .../cutting/stripped_maple_log.json | 21 +++++++++++++ .../cutting/stripped_palm_log.json | 21 +++++++++++++ .../cutting/stripped_pine_log.json | 21 +++++++++++++ .../cutting/stripped_redwood_log.json | 21 +++++++++++++ .../cutting/stripped_willow_log.json | 21 +++++++++++++ .../cutting/willow_log.json | 21 +++++++++++++ .../cutting/driftwood_log.json | 21 +++++++++++++ .../upgrade_aquatic/cutting/river_log.json | 21 +++++++++++++ .../cutting/stripped_driftwood_log.json | 21 +++++++++++++ .../cutting/stripped_river_log.json | 21 +++++++++++++ .../milling/flowering_rush.json | 26 ++++++++++++++++ .../milling/searocket_pink.json | 26 ++++++++++++++++ .../milling/searocket_white.json | 26 ++++++++++++++++ 86 files changed, 1971 insertions(+) create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json create mode 100644 src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json create mode 100644 src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json create mode 100644 src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json create mode 100644 src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json create mode 100644 src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json create mode 100644 src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json create mode 100644 src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json create mode 100644 src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json create mode 100644 src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_pink.json create mode 100644 src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_white.json diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json new file mode 100644 index 000000000..d9a202bb3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:aspen_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_aspen_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json new file mode 100644 index 000000000..8f888461c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:grimwood_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_grimwood_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json new file mode 100644 index 000000000..ecad3012c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:kousa_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_kousa_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json new file mode 100644 index 000000000..d56aa855e --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:rosewood_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_rosewood_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json new file mode 100644 index 000000000..5f72d093b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_aspen_log" + } + ], + "results": [ + { + "item": "atmospheric:aspen_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json new file mode 100644 index 000000000..861940bad --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_grimwood_log" + } + ], + "results": [ + { + "item": "atmospheric:grimwood_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json new file mode 100644 index 000000000..c6cf8fae3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_kousa_log" + } + ], + "results": [ + { + "item": "atmospheric:kousa_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json new file mode 100644 index 000000000..e8e3b4902 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_rosewood_log" + } + ], + "results": [ + { + "item": "atmospheric:rosewood_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json new file mode 100644 index 000000000..2a0c23af8 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:stripped_yucca_log" + } + ], + "results": [ + { + "item": "atmospheric:yucca_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json new file mode 100644 index 000000000..45f33c335 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "atmospheric:yucca_log" + } + ], + "results": [ + { + "item": "atmospheric:stripped_yucca_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json new file mode 100644 index 000000000..12d375350 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "atmospheric:gilia" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:pink_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json new file mode 100644 index 000000000..56c097784 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "atmospheric:monkey_brush" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "count": 1, + "chance": 0.05 + }, + { + "item": "minecraft:yellow_dye", + "count": 1, + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json new file mode 100644 index 000000000..171991b0d --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "atmospheric:scalding_monkey_brush" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:orange_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json new file mode 100644 index 000000000..9f0451a84 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "atmospheric:warm_monkey_brush" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:yellow_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:orange_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json new file mode 100644 index 000000000..2dad00a71 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "atmospheric:yucca_flower" + } + ], + "results": [ + { + "item": "minecraft:light_gray_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "count": 1, + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json b/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json new file mode 100644 index 000000000..16e48a60e --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "autumnity" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "autumnity:autumn_crocus" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "count": 2, + "chance": 0.1 + }, + { + "item": "minecraft:purple_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json b/src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json new file mode 100644 index 000000000..f939c1e5b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "bloomful" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "bloomful:stripped_wisteria_log" + } + ], + "results": [ + { + "item": "bloomful:wisteria_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json b/src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json new file mode 100644 index 000000000..9150a9d19 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "bloomful" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "bloomful:wisteria_log" + } + ], + "results": [ + { + "item": "bloomful:stripped_wisteria_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json new file mode 100644 index 000000000..cf9f2d4bd --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "bloomful" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "bloomful:blue_delphinium" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 3 + }, + { + "item": "minecraft:blue_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json new file mode 100644 index 000000000..dc9ef9ea8 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "bloomful" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "bloomful:pink_delphinium" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 3 + }, + { + "item": "minecraft:pink_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json new file mode 100644 index 000000000..7bb4493c5 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "bloomful" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "bloomful:purple_delphinium" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 3 + }, + { + "item": "minecraft:purple_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json new file mode 100644 index 000000000..4c97705a9 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "bloomful" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "bloomful:white_delphinium" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 3 + }, + { + "item": "minecraft:white_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json new file mode 100644 index 000000000..3da3edec6 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/black" + } + ], + "results": [ + { + "item": "botania:black_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json new file mode 100644 index 000000000..6cc6348a7 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/blue" + } + ], + "results": [ + { + "item": "botania:blue_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json new file mode 100644 index 000000000..9bca30a30 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/brown" + } + ], + "results": [ + { + "item": "botania:brown_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json new file mode 100644 index 000000000..17ac50f42 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/cyan" + } + ], + "results": [ + { + "item": "botania:cyan_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json new file mode 100644 index 000000000..d50727dbf --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/gray" + } + ], + "results": [ + { + "item": "botania:gray_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json new file mode 100644 index 000000000..11ab451db --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/green" + } + ], + "results": [ + { + "item": "botania:green_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json new file mode 100644 index 000000000..86ccd140b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/light_blue" + } + ], + "results": [ + { + "item": "botania:light_blue_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json new file mode 100644 index 000000000..28b9da970 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/light_gray" + } + ], + "results": [ + { + "item": "botania:light_gray_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json new file mode 100644 index 000000000..8aa80c9e3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/lime" + } + ], + "results": [ + { + "item": "botania:lime_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json new file mode 100644 index 000000000..a24f5e296 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/magenta" + } + ], + "results": [ + { + "item": "botania:magenta_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json new file mode 100644 index 000000000..6bd37d5d7 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/orange" + } + ], + "results": [ + { + "item": "botania:orange_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json new file mode 100644 index 000000000..60c3fce1a --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/pink" + } + ], + "results": [ + { + "item": "botania:pink_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json new file mode 100644 index 000000000..606697da0 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/purple" + } + ], + "results": [ + { + "item": "botania:purple_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json new file mode 100644 index 000000000..62b4b7af3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/red" + } + ], + "results": [ + { + "item": "botania:red_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json new file mode 100644 index 000000000..602602a72 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/white" + } + ], + "results": [ + { + "item": "botania:white_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json new file mode 100644 index 000000000..8041f0451 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "botania" + } + ], + "type": "create:milling", + "ingredients": [ + { + "tag": "botania:petals/yellow" + } + ], + "results": [ + { + "item": "botania:yellow_dye", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json new file mode 100644 index 000000000..5edf6abea --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:bird_of_paradise" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 3 + }, + { + "item": "minecraft:blue_dye", + "count": 1, + "chance": 0.25 + }, + { + "item": "minecraft:red_dye", + "count": 1, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json new file mode 100644 index 000000000..b049cbc96 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:bluebell" + } + ], + "results": [ + { + "item": "minecraft:blue_dye", + "count": 2 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json new file mode 100644 index 000000000..169193092 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:cartwheel" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:orange_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json new file mode 100644 index 000000000..f5988729e --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:columbine" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:white_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json new file mode 100644 index 000000000..48c05d143 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:jolyce" + } + ], + "results": [ + { + "item": "minecraft:green_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json new file mode 100644 index 000000000..9e00cf80c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:magenta_hibiscus" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:magenta_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json new file mode 100644 index 000000000..6cc0c4ac3 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:orange_hibiscus" + } + ], + "results": [ + { + "item": "minecraft:orange_dye", + "count": 2 + }, + { + "item": "minecraft:orange_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json new file mode 100644 index 000000000..c8753a417 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:pink_clover" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json new file mode 100644 index 000000000..fa8c4c473 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:pink_hibiscus" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:pink_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json new file mode 100644 index 000000000..91ac754a7 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:purple_hibiscus" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:purple_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json new file mode 100644 index 000000000..5b50d8189 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:red_hibiscus" + } + ], + "results": [ + { + "item": "minecraft:red_dye", + "count": 2 + }, + { + "item": "minecraft:red_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json new file mode 100644 index 000000000..fea46a464 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:violet" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:purple_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json new file mode 100644 index 000000000..7c9a228b2 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:white_clover" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:lime_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json new file mode 100644 index 000000000..f2ce4cead --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "buzzierbees" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "buzzierbees:daybloom" + } + ], + "results": [ + { + "item": "minecraft:yellow_dye", + "count": 2 + }, + { + "item": "minecraft:yellow_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json new file mode 100644 index 000000000..cefdf5e0a --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "druidcraft:darkwood_log" + } + ], + "results": [ + { + "item": "druidcraft:stripped_darkwood_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json new file mode 100644 index 000000000..2fde05a0c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "druidcraft:elder_log" + } + ], + "results": [ + { + "item": "druidcraft:stripped_elder_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json new file mode 100644 index 000000000..6d3244f85 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "druidcraft:stripped_darkwood_log" + } + ], + "results": [ + { + "item": "druidcraft:darkwood_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json new file mode 100644 index 000000000..e5a2c5084 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "druidcraft:stripped_elder_log" + } + ], + "results": [ + { + "item": "druidcraft:elder_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json b/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json new file mode 100644 index 000000000..9b5847bda --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "druidcraft:lavender" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 2 + }, + { + "item": "minecraft:purple_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json new file mode 100644 index 000000000..f0f35da28 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:aspen_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_aspen_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json new file mode 100644 index 000000000..02808f5ee --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:baobab_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_baobab_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json new file mode 100644 index 000000000..fee2fb61f --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:cottonwood_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_cottonwood_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json new file mode 100644 index 000000000..b133abd81 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:fir_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_fir_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json new file mode 100644 index 000000000..a9fda021b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:juniper_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_juniper_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json new file mode 100644 index 000000000..fc77c21cc --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:mangrove_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_mangrove_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json new file mode 100644 index 000000000..d9297cf33 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:maple_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_maple_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json new file mode 100644 index 000000000..aeefb2a88 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:palm_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_palm_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json new file mode 100644 index 000000000..fb27f4696 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:pine_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_pine_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json new file mode 100644 index 000000000..960514664 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:redwood_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_redwood_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json new file mode 100644 index 000000000..2679b5538 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_aspen_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:aspen_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json new file mode 100644 index 000000000..1f5799d13 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_baobab_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:baobab_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json new file mode 100644 index 000000000..8dd22e6bb --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_cottonwood_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:cottonwood_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json new file mode 100644 index 000000000..f84e6acc1 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_fir_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:fir_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json new file mode 100644 index 000000000..24b6e1d3a --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_juniper_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:juniper_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json new file mode 100644 index 000000000..a7e11054b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_mangrove_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:mangrove_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json new file mode 100644 index 000000000..c82ebf136 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_maple_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:maple_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json new file mode 100644 index 000000000..a6299ce69 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_palm_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:palm_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json new file mode 100644 index 000000000..2ca583202 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_pine_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:pine_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json new file mode 100644 index 000000000..b37f06e20 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_redwood_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:redwood_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json new file mode 100644 index 000000000..66b6aa646 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:stripped_willow_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:willow_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json new file mode 100644 index 000000000..dc9b00bde --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "projectvibrantjourneys" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "projectvibrantjourneys:willow_log" + } + ], + "results": [ + { + "item": "projectvibrantjourneys:stripped_willow_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json new file mode 100644 index 000000000..5aaea6a61 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:driftwood_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:driftwood_log_stripped", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json new file mode 100644 index 000000000..18e44da83 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:river_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:stripped_river_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json new file mode 100644 index 000000000..b118469de --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:driftwood_log_stripped" + } + ], + "results": [ + { + "item": "upgrade_aquatic:driftwood_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json new file mode 100644 index 000000000..faae38dff --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "upgrade_aquatic:stripped_river_log" + } + ], + "results": [ + { + "item": "upgrade_aquatic:river_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json new file mode 100644 index 000000000..3f8a63e24 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "upgrade_aquatic:flowering_rush" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 3 + }, + { + "item": "minecraft:pink_dye", + "count": 2, + "chance": 0.25 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_pink.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_pink.json new file mode 100644 index 000000000..934880856 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_pink.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "upgrade_aquatic:searocket_pink" + } + ], + "results": [ + { + "item": "minecraft:pink_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_white.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_white.json new file mode 100644 index 000000000..8dcec4210 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/searocket_white.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "upgrade_aquatic" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "upgrade_aquatic:searocket_white" + } + ], + "results": [ + { + "item": "minecraft:white_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "count": 1, + "chance": 0.1 + } + ], + "processingTime": 50 +} \ No newline at end of file From d0d981fba535826c3c2de6b296d05b70b0aeefa9 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Mon, 6 Jul 2020 11:40:58 +0200 Subject: [PATCH 31/47] More compat - Made Create cobble stone variants part of forge:cobblestone - autumnity wood compat - changed biomes o'plenty flower crushing to milling (as it is with vanilla flowers) --- src/generated/resources/.cache/cache | 23 +- .../assets/create/blockstates/fluid_pipe.json | 132 +- .../create/blockstates/radial_chassis.json | 24 +- .../assets/create/lang/unfinished/de_de.json | 328 +-- .../assets/create/lang/unfinished/fr_fr.json | 986 ++++---- .../assets/create/lang/unfinished/it_it.json | 294 +-- .../assets/create/lang/unfinished/ja_jp.json | 1716 ++++++------- .../assets/create/lang/unfinished/ko_kr.json | 1500 ++++++------ .../assets/create/lang/unfinished/nl_nl.json | 26 +- .../assets/create/lang/unfinished/pt_br.json | 392 +-- .../assets/create/lang/unfinished/ru_ru.json | 794 +++--- .../assets/create/lang/unfinished/zh_cn.json | 2164 ++++++++--------- .../data/forge/tags/items/cobblestone.json | 14 + .../java/com/simibubi/create/AllTags.java | 7 +- .../palettes/PalettesVariantEntry.java | 8 +- .../atmospheric/splashing/arid_sand.json | 26 + .../atmospheric/splashing/red_arid_sand.json | 26 + .../compat/autumnity/cutting/maple_log.json | 21 + .../autumnity/cutting/stripped_maple_log.json | 21 + .../{crushing => milling}/blue_hydrangea.json | 2 +- .../burning_blossom.json | 2 +- .../bop/{crushing => milling}/glowflower.json | 2 +- .../bop/{crushing => milling}/goldenrod.json | 2 +- .../bop/{crushing => milling}/lavender.json | 2 +- .../{crushing => milling}/orange_cosmos.json | 2 +- .../{crushing => milling}/pink_daffodil.json | 2 +- .../{crushing => milling}/pink_hibiscus.json | 2 +- .../bop/{crushing => milling}/rose.json | 2 +- .../bop/{crushing => milling}/violet.json | 2 +- .../bop/{crushing => milling}/wildflower.json | 2 +- .../{crushing => milling}/wilted_lily.json | 2 +- 31 files changed, 4319 insertions(+), 4207 deletions(-) create mode 100644 src/generated/resources/data/forge/tags/items/cobblestone.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json create mode 100644 src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json create mode 100644 src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json create mode 100644 src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/blue_hydrangea.json (94%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/burning_blossom.json (93%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/glowflower.json (93%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/goldenrod.json (94%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/lavender.json (93%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/orange_cosmos.json (93%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/pink_daffodil.json (94%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/pink_hibiscus.json (94%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/rose.json (92%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/violet.json (91%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/wildflower.json (93%) rename src/main/resources/data/create/recipes/compat/bop/{crushing => milling}/wilted_lily.json (91%) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 7a94afd4f..1f7fcc917 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -118,7 +118,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets\create\blockstates\fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets\create\blockstates\fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weathered_limestone_bricks_stairs.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets\create\blockstates\fancy_weathered_limestone_bricks_wall.json -4cbd66ed3da77d1caad6ef4e657a86b1b4017a39 assets\create\blockstates\fluid_pipe.json +3aa8213ea6cd12a6964e3a70900b12d76d794d20 assets\create\blockstates\fluid_pipe.json 9d0e78a4d6d0ccac37c06d0f5810a800a04844b2 assets\create\blockstates\fluid_tank.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json @@ -282,7 +282,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets\create\blockstates\radial_chassis.json +8d7e653bfd9846e684a0d3725595714a19201017 assets\create\blockstates\radial_chassis.json 5e03eb759050c365f9f452ef0659f19a80e1e2f8 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json @@ -337,15 +337,15 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json b149cd24e07fcadf25331bac859c313373617462 assets\create\lang\en_us.json -feb13f2c71a8ccc5c9a1b3cd58f0e06db6e89825 assets\create\lang\unfinished\de_de.json -e06e04eb9c06679cef7b3b1273c02e83297bf3cb assets\create\lang\unfinished\fr_fr.json -78973e80977ebc94dfadbfc6cd21de91c673f32a assets\create\lang\unfinished\it_it.json -dd821fcf079b96bd636350f9b3c77da13fa8dfc5 assets\create\lang\unfinished\ja_jp.json -92058021567b46150322be87120ca009cf74f808 assets\create\lang\unfinished\ko_kr.json -c076938f726f8ed92ebc8bb27b9df415fb8f06be assets\create\lang\unfinished\nl_nl.json -e4562ef48bd555d84dbe13233e850e0bd0917a90 assets\create\lang\unfinished\pt_br.json -dfacb15608f4b043e06a6ac9441234acbfccf708 assets\create\lang\unfinished\ru_ru.json -a685880eb8e0dd580f74675e66e8470b01415c50 assets\create\lang\unfinished\zh_cn.json +a32f6739a9050c392eba2a90695afd5fc709de73 assets\create\lang\unfinished\de_de.json +6bc84e77c189d15383354b5653f8e3bb1c697497 assets\create\lang\unfinished\fr_fr.json +7b35a364e6dc5e2be51e83db256d3e9ddbfdcdbe assets\create\lang\unfinished\it_it.json +065a2f1266fc58e2ede537d8195c330f440b296d assets\create\lang\unfinished\ja_jp.json +efb37168a87c6dbdd0104e16f631ec90b7774c76 assets\create\lang\unfinished\ko_kr.json +32244c57648e19f70f9544e733812673c8074e0b assets\create\lang\unfinished\nl_nl.json +c65fbd24b18682f1bfe8d558e011241edf90818e assets\create\lang\unfinished\pt_br.json +0f26fca1b43e6ff5fac93172f55549c1be20dc3f assets\create\lang\unfinished\ru_ru.json +48efe21287a74b31b85f14bd03fbf2db6acbdee2 assets\create\lang\unfinished\zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -2454,6 +2454,7 @@ ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data\forge\tags\blocks\storage_blocks\b f6c8f34ceb475546dba5cc6ff288863ea795d20b data\forge\tags\blocks\storage_blocks\copper.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data\forge\tags\blocks\storage_blocks\zinc.json d9ffc62a496946fc4848934e7c0a6e917337f8be data\forge\tags\items\beacon_payment.json +05ca51cdc60a5e109b5a0e3b782de13d34ebcb24 data\forge\tags\items\cobblestone.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\items\glass\colorless.json 81ced867d24ec814942909965dd4576eff1db685 data\forge\tags\items\glass_panes.json d9ffc62a496946fc4848934e7c0a6e917337f8be data\forge\tags\items\ingots.json diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index 96f2f6808..44255c27a 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -181,10 +181,10 @@ }, { "when": { - "north": "false", - "south": "true", "west": "true", - "east": "false" + "east": "false", + "north": "false", + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_y" @@ -192,10 +192,10 @@ }, { "when": { - "north": "false", - "south": "true", "west": "false", - "east": "true" + "east": "true", + "north": "false", + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_y" @@ -203,10 +203,10 @@ }, { "when": { - "north": "true", - "south": "false", "west": "true", - "east": "false" + "east": "false", + "north": "true", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_y" @@ -214,10 +214,10 @@ }, { "when": { - "north": "true", - "south": "false", "west": "false", - "east": "true" + "east": "true", + "north": "true", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_y" @@ -225,10 +225,10 @@ }, { "when": { + "west": "false", + "east": "false", "north": "true", - "south": "true", - "west": "false", - "east": "false" + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -236,10 +236,10 @@ }, { "when": { + "west": "false", + "east": "false", "north": "false", - "south": "true", - "west": "false", - "east": "false" + "south": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -247,10 +247,10 @@ }, { "when": { + "west": "false", + "east": "false", "north": "true", - "south": "false", - "west": "false", - "east": "false" + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -258,10 +258,10 @@ }, { "when": { - "north": "false", - "south": "false", "west": "true", - "east": "true" + "east": "true", + "north": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -269,10 +269,10 @@ }, { "when": { - "north": "false", - "south": "false", "west": "true", - "east": "false" + "east": "false", + "north": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -280,10 +280,10 @@ }, { "when": { - "north": "false", - "south": "false", "west": "false", - "east": "true" + "east": "true", + "north": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -291,10 +291,10 @@ }, { "when": { - "north": "false", - "south": "false", "west": "false", - "east": "false" + "east": "false", + "north": "false", + "south": "false" }, "apply": { "model": "create:block/fluid_pipe/none_y" @@ -302,10 +302,10 @@ }, { "when": { - "up": "true", "west": "false", - "down": "false", - "east": "true" + "east": "true", + "up": "true", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/lu_z" @@ -313,10 +313,10 @@ }, { "when": { - "up": "true", "west": "true", - "down": "false", - "east": "false" + "east": "false", + "up": "true", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/ru_z" @@ -324,10 +324,10 @@ }, { "when": { - "up": "false", "west": "false", - "down": "true", - "east": "true" + "east": "true", + "up": "false", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/ld_z" @@ -335,10 +335,10 @@ }, { "when": { - "up": "false", "west": "true", - "down": "true", - "east": "false" + "east": "false", + "up": "false", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/rd_z" @@ -346,10 +346,10 @@ }, { "when": { + "west": "false", + "east": "false", "up": "true", - "west": "false", - "down": "true", - "east": "false" + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -357,10 +357,10 @@ }, { "when": { + "west": "false", + "east": "false", "up": "true", - "west": "false", - "down": "false", - "east": "false" + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -368,10 +368,10 @@ }, { "when": { - "up": "false", "west": "false", - "down": "true", - "east": "false" + "east": "false", + "up": "false", + "down": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -379,10 +379,10 @@ }, { "when": { - "up": "false", "west": "true", - "down": "false", - "east": "true" + "east": "true", + "up": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -390,10 +390,10 @@ }, { "when": { - "up": "false", "west": "false", - "down": "false", - "east": "true" + "east": "true", + "up": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -401,10 +401,10 @@ }, { "when": { - "up": "false", "west": "true", - "down": "false", - "east": "false" + "east": "false", + "up": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -412,10 +412,10 @@ }, { "when": { - "up": "false", "west": "false", - "down": "false", - "east": "false" + "east": "false", + "up": "false", + "down": "false" }, "apply": { "model": "create:block/fluid_pipe/none_z" diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index f97d8c8bc..9d00ea8b1 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -29,8 +29,8 @@ }, { "when": { - "axis": "x", - "sticky_south": "true" + "sticky_south": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -39,8 +39,8 @@ }, { "when": { - "axis": "y", - "sticky_south": "true" + "sticky_south": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky" @@ -48,8 +48,8 @@ }, { "when": { - "axis": "z", - "sticky_south": "true" + "sticky_south": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -59,8 +59,8 @@ }, { "when": { - "axis": "x", - "sticky_south": "false" + "sticky_south": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -69,8 +69,8 @@ }, { "when": { - "axis": "y", - "sticky_south": "false" + "sticky_south": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y" @@ -78,8 +78,8 @@ }, { "when": { - "axis": "z", - "sticky_south": "false" + "sticky_south": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index d920041b5..ac7cc9c48 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -8,7 +8,7 @@ "block.create.adjustable_crate": "adjustable_crate", "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "Verzögernder Verstärker", + "block.create.adjustable_repeater": "Verzögernder Verstärker", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", "block.create.andesite_bricks": "Andesitziegel", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", @@ -23,7 +23,7 @@ "block.create.basin": "UNLOCALIZED: Basin", "block.create.belt": "Mechanischer Riemen", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "Fließband-Beobachter", + "block.create.belt_observer": "Fließband-Beobachter", "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", @@ -82,7 +82,7 @@ "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Dolomitsäule", + "block.create.dolomite_pillar": "Dolomitsäule", "block.create.encased_belt": "Eingeschlossener Riemen", "block.create.encased_fan": "Eingeschlossener Propeller", "block.create.encased_shaft": "Eingeschlossene Welle", @@ -128,7 +128,7 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Fließbandtrichter", + "block.create.funnel": "Fließbandtrichter", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Gabbroziegel", @@ -156,7 +156,7 @@ "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Großes Zahnrad", + "block.create.large_cogwheel": "Großes Zahnrad", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -176,9 +176,9 @@ "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Kalksteinsäule", - "block.create.linear_chassis": "Schubgerüst", - "block.create.linked_extractor": "Verknüpfter Auswerfer", + "block.create.limestone_pillar": "Kalksteinsäule", + "block.create.linear_chassis": "Schubgerüst", + "block.create.linked_extractor": "Verknüpfter Auswerfer", "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", "block.create.mechanical_bearing": "Mechanisches Lager", @@ -257,7 +257,7 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", + "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", @@ -286,8 +286,8 @@ "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", - "block.create.pulse_repeater": "Pulsierender Verstärker", - "block.create.radial_chassis": "Drehgerüst", + "block.create.pulse_repeater": "Pulsierender Verstärker", + "block.create.radial_chassis": "Drehgerüst", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Redstone-Kontakt", "block.create.redstone_link": "Redstone-Verbindung", @@ -337,7 +337,7 @@ "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", + "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", @@ -388,7 +388,7 @@ "item.create.schematic_and_quill": "Bauplan und Feder", "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "Baumdünger", + "item.create.tree_fertilizer": "Baumdünger", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", "item.create.wand_of_symmetry": "Symmetriestab", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", @@ -488,9 +488,9 @@ "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", "death.attack.create.crush": "%1$s stolperte in ein Mahlwerk", - "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", + "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", "death.attack.create.fan_lava": "%1$s wurde von Lava verweht", - "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", + "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", @@ -500,8 +500,8 @@ "create.recipe.crushing": "Mahlen", "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.splashing": "Waschen", - "create.recipe.splashing.fan": "Propeller hinter fließendem Wasser", - "create.recipe.smoking_via_fan": "Räuchern", + "create.recipe.splashing.fan": "Propeller hinter fließendem Wasser", + "create.recipe.smoking_via_fan": "Räuchern", "create.recipe.smoking_via_fan.fan": "Propeller hinter Feuer", "create.recipe.blasting_via_fan": "Schmelzen", "create.recipe.blasting_via_fan.fan": "Propeller hinter Lava", @@ -524,7 +524,7 @@ "create.generic.height": "UNLOCALIZED: Height", "create.generic.length": "UNLOCALIZED: Length", "create.generic.speed": "Geschwindigkeit", - "create.generic.delay": "Verzögerung", + "create.generic.delay": "Verzögerung", "create.generic.unit.ticks": "Ticks", "create.generic.unit.seconds": "Sekunden", "create.generic.unit.minutes": "Minuten", @@ -533,20 +533,20 @@ "create.generic.unit.degrees": "UNLOCALIZED: °", "create.action.scroll": "Wechseln", - "create.action.confirm": "Bestätigen", + "create.action.confirm": "Bestätigen", "create.action.abort": "Abbrechen", "create.action.saveToFile": "Speichern", - "create.action.discard": "Löschen", + "create.action.discard": "Löschen", - "create.keyinfo.toolmenu": "Werkzeugmenü", + "create.keyinfo.toolmenu": "Werkzeugmenü", "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", - "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", + "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", + "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", - "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", + "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", + "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", "create.gui.toolmenu.focusKey": "Halte [%1$s] zum Fokussieren", "create.gui.toolmenu.cycle": "[Mausrad] zum Wechseln", "create.gui.symmetryWand.mirrorType": "Spiegeln", @@ -567,7 +567,7 @@ "create.gui.blockzapper.searchDiagonal": "Diagonalen folgen", "create.gui.blockzapper.searchFuzzy": "Materialgrenzen ignorieren", "create.gui.blockzapper.range": "Reichweite", - "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", + "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", "create.gui.blockzapper.patternSection": "Muster", "create.gui.blockzapper.pattern.solid": "Fest", "create.gui.blockzapper.pattern.checkered": "Schachbrett", @@ -597,15 +597,15 @@ "create.blockzapper.usingBlock": "Auswahl: %1$s", "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", "create.blockzapper.component.body": "Rumpf", - "create.blockzapper.component.amplifier": "Verstärker", + "create.blockzapper.component.amplifier": "Verstärker", "create.blockzapper.component.accelerator": "Beschleuniger", - "create.blockzapper.component.retriever": "Empfänger", + "create.blockzapper.component.retriever": "Empfänger", "create.blockzapper.component.scope": "Fernrohr", "create.blockzapper.componentTier.none": "Nichts", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", - "create.blockzapper.empty": "Keine Blöcke übrig!", + "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", + "create.blockzapper.empty": "Keine Blöcke übrig!", "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", @@ -641,9 +641,9 @@ "create.gui.stockpile_switch.lowerLimit": "Untergrenze", "create.gui.stockpile_switch.upperLimit": "Obergrenze", "create.gui.stockpile_switch.startAt": "Signal bei", - "create.gui.stockpile_switch.startAbove": "Signal über", + "create.gui.stockpile_switch.startAbove": "Signal über", "create.gui.stockpile_switch.stopAt": "Signalstopp bei", - "create.gui.stockpile_switch.stopBelow": "Signalstopp über", + "create.gui.stockpile_switch.stopBelow": "Signalstopp über", "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", @@ -659,25 +659,25 @@ "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", + "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", - "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", + "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", "create.schematicAndQuill.prompt": "Gib dem Bauplan einen Namen:", "create.schematicAndQuill.fallbackName": "Mein Bauplan", "create.schematicAndQuill.saved": "Gespeichert als %1$s", - "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", + "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", "create.schematic.position": "Position", "create.schematic.rotation": "Rotation", "create.schematic.rotation.none": "Nein", - "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", - "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", - "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", + "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", + "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", + "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", "create.schematic.mirror": "Spiegeln", "create.schematic.mirror.none": "Nein", - "create.schematic.mirror.frontBack": "Vor-Zurück", + "create.schematic.mirror.frontBack": "Vor-Zurück", "create.schematic.mirror.leftRight": "Links-Rechts", "create.schematic.tool.deploy": "Positionieren", "create.schematic.tool.move": "XZ Bewegen", @@ -688,7 +688,7 @@ "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", - "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", + "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", "create.schematic.tool.move.description.2": "", @@ -698,47 +698,47 @@ "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", - "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", + "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", - "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", - "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", + "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", + "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", + "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", - "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", + "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", + "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", "create.gui.schematicTable.title": "Bauplantisch", - "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", - "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", + "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", + "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", "create.gui.schematicTable.uploading": "Hochladen...", "create.gui.schematicTable.finished": "Hochgeladen!", "create.gui.schematicannon.title": "Bauplankanone", "create.gui.schematicannon.settingsTitle": "Platzier-Optionen", "create.gui.schematicannon.listPrinter": "Materiallistendruck", "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", - "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", + "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", "create.gui.schematicannon.optionEnabled": "Aktiviert", "create.gui.schematicannon.optionDisabled": "Deaktiviert", - "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", - "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", - "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", - "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", - "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", + "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", + "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", + "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", + "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", + "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", - "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", - "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", - "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", + "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", + "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", + "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", "create.schematicannon.status.idle": "Aus", "create.schematicannon.status.ready": "Bereit", @@ -750,11 +750,11 @@ "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", "create.schematicannon.status.searching": "Suchen", - "create.schematicannon.status.skipping": "Überspringen", + "create.schematicannon.status.skipping": "Ãœberspringen", "create.schematicannon.status.missingBlock": "Fehlender Block:", "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", - "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", + "create.schematicannon.status.clearing": "Blöcke entfernen", + "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", @@ -851,29 +851,29 @@ "item.create.example_item.tooltip.condition1": "Wenn dies", "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", "item.create.example_item.tooltip.condition2": "Und wenn dies", - "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", - "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", + "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", + "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", - "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", + "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", "item.create.wand_of_symmetry.tooltip.condition1": "Wenn in der Schnellleiste", "item.create.wand_of_symmetry.tooltip.behaviour1": "Bleibt aktiv", "item.create.wand_of_symmetry.tooltip.control1": "R-Klick auf Boden", "item.create.wand_of_symmetry.tooltip.action1": "_Erstellt_ oder _Bewegt_ den Spiegel", "item.create.wand_of_symmetry.tooltip.control2": "R-Klick in die Luft", - "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", + "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", "item.create.wand_of_symmetry.tooltip.control3": "R-Klick beim Schleichen", - "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", + "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", "item.create.handheld_blockzapper.tooltip": "BLOCKPISTOLE", - "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", + "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", "item.create.handheld_blockzapper.tooltip.control1": "L-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", + "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", "item.create.handheld_blockzapper.tooltip.control2": "R-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", + "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", "item.create.handheld_blockzapper.tooltip.control3": "R-Klick beim Schleichen", - "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", + "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", @@ -884,10 +884,10 @@ "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", - "item.create.tree_fertilizer.tooltip": "BAUMDÜNGER", - "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", + "item.create.tree_fertilizer.tooltip": "BAUMDÃœNGER", + "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", - "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", + "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", @@ -912,49 +912,49 @@ "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", "item.create.empty_schematic.tooltip": "LEERER BAUPLAN", - "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", + "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", "item.create.schematic.tooltip": "BAUPLAN", - "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", + "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", "item.create.schematic.tooltip.condition1": "Wenn gehalten", "item.create.schematic.tooltip.behaviour1": "Kann mit den Werkzeugen auf dem Bildschirm positioniert werden", "item.create.schematic.tooltip.control1": "R-Klick beim Schleichen", - "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", + "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", "item.create.schematic_and_quill.tooltip": "BAUPLAN UND FEDER", "item.create.schematic_and_quill.tooltip.summary": "Wird benutzt, um eine existierende Struktur in der Welt als eine .nbt-Datei zu speichern.", "item.create.schematic_and_quill.tooltip.condition1": "Schritt 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", + "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", "item.create.schematic_and_quill.tooltip.condition2": "Schritt 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", + "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", "item.create.schematic_and_quill.tooltip.control1": "R-Klick", - "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", - "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", - "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", + "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", + "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", + "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", "item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen", - "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", + "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", "block.create.schematicannon.tooltip": "BAUPLANKANONE", - "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", + "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", "block.create.schematicannon.tooltip.control1": "Wenn R-Geklickt", - "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", + "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", "block.create.schematic_table.tooltip": "BAUPLANTISCH", - "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", + "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", - "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", + "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", "block.create.shaft.tooltip": "WELLE", - "block.create.shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse.", + "block.create.shaft.tooltip.summary": "_Ãœberträgt_ _Rotation_ entlang ihrer Achse.", "block.create.cogwheel.tooltip": "ZAHNRAD", - "block.create.cogwheel.tooltip.summary": "_Überträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", + "block.create.cogwheel.tooltip.summary": "_Ãœberträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", - "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", - "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", + "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", + "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", "block.create.encased_shaft.tooltip": "EINGESCHLOSSENE WELLE", - "block.create.encased_shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Übertragung von Rotation durch Wände hindurch.", + "block.create.encased_shaft.tooltip.summary": "_Ãœberträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Ãœbertragung von Rotation durch Wände hindurch.", "block.create.gearbox.tooltip": "GETRIEBE", "block.create.gearbox.tooltip.summary": "_Leitet_ _Rotation_ in _vier_ _Richtungen_ weiter. Kehrt geradlinige Verbindungen um.", @@ -963,19 +963,19 @@ "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", "block.create.gearshift.tooltip": "GANGSCHALTUNG", - "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", "block.create.gearshift.tooltip.condition1": "Wenn aktiv", "block.create.gearshift.tooltip.behaviour1": "_Kehrt_ die ausgehende Drehrichtung _um._", "block.create.clutch.tooltip": "KUPPLUNG", - "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", "block.create.clutch.tooltip.condition1": "Wenn aktiv", "block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.", "block.create.encased_belt.tooltip": "EINGESCHLOSSENER RIEMEN", - "block.create.encased_belt.tooltip.summary": "_Überträgt_ _Rotation_ durch seinen Block und zu einem angeschlossenen _Eingeschlossenen_ _Riemen._", + "block.create.encased_belt.tooltip.summary": "_Ãœberträgt_ _Rotation_ durch seinen Block und zu einem angeschlossenen _Eingeschlossenen_ _Riemen._", "block.create.encased_belt.tooltip.condition1": "Wenn an einem anderen Eingeschlossenen Riemen angeschlossen", - "block.create.encased_belt.tooltip.behaviour1": "Wird der angeschlossene Block die exakt gleiche Rotationsgeschwindigkeit und Richtung haben. Angeschlossene Riemen müssen nicht in die gleiche Richtung schauen.", + "block.create.encased_belt.tooltip.behaviour1": "Wird der angeschlossene Block die exakt gleiche Rotationsgeschwindigkeit und Richtung haben. Angeschlossene Riemen müssen nicht in die gleiche Richtung schauen.", "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", @@ -985,9 +985,9 @@ "item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN", "item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.", "item.create.belt_connector.tooltip.control1": "R-Klick auf Welle", - "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", + "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", "item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen", - "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", + "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", @@ -1007,16 +1007,16 @@ "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", "block.create.water_wheel.tooltip": "WASSERRAD", - "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", + "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", "block.create.encased_fan.tooltip": "EINGESCHLOSSENER PROPELLER", - "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", - "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", + "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", + "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", "block.create.encased_fan.tooltip.behaviour1": "Liefert _Rotationsenergie_ (muss vertikal ausgerichtet sein)", "block.create.encased_fan.tooltip.condition2": "Wenn angetrieben", - "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", - "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", - "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", + "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", + "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", + "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", @@ -1032,7 +1032,7 @@ "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", "block.create.turntable.tooltip": "DREHTISCH", - "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", + "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1042,16 +1042,16 @@ "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", "block.create.crushing_wheel.tooltip": "MAHLWERKRAD", - "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", + "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", "block.create.crushing_wheel.tooltip.condition1": "Wenn mit einem anderem Mahlwerkrad verbunden", - "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", + "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", "block.create.mechanical_press.tooltip": "MECHANISCHE PRESSE", - "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", + "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", "block.create.mechanical_press.tooltip.condition1": "Wenn durch Redstone aktiviert", - "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", - "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", - "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", + "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", + "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", + "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", @@ -1100,26 +1100,26 @@ "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", "block.create.mechanical_piston.tooltip": "MECHANISCHER KOLBEN", - "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", "block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", "block.create.sticky_mechanical_piston.tooltip": "KLEBRIGER MECHANISCHER KOLBEN", - "block.create.sticky_mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Klebrigen_ _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Klolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Klebrigen_ _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Klolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Wenn angetrieben", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", - "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", - "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", + "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", + "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", "block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht", - "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", + "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", "block.create.mechanical_bearing.tooltip": "MECHANISCHES LAGER", - "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", + "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", "block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", + "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", "block.create.mechanical_bearing.tooltip.condition2": "Wenn durch Redstone aktiviert", - "block.create.mechanical_bearing.tooltip.behaviour2": "Fängt an, _Rotationsenergie_ durch das Drehen der angebrachten Struktur zu erzeugen. Die Struktur muss _geeignete_ _Segelblöcke_ beinhalten. (Momentan jede Art von Wolle).", + "block.create.mechanical_bearing.tooltip.behaviour2": "Fängt an, _Rotationsenergie_ durch das Drehen der angebrachten Struktur zu erzeugen. Die Struktur muss _geeignete_ _Segelblöcke_ beinhalten. (Momentan jede Art von Wolle).", "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", @@ -1149,35 +1149,35 @@ "block.create.rope_pulley.tooltip.condition1": "UNLOCALIZED: When Rotated", "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", - "block.create.linear_chassis.tooltip": "SCHUBGERÜST", - "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", + "block.create.linear_chassis.tooltip": "SCHUBGERÃœST", + "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", "block.create.linear_chassis.tooltip.condition1": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", + "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.linear_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", + "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", - "block.create.radial_chassis.tooltip": "DREHGERÜST", - "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", + "block.create.radial_chassis.tooltip": "DREHGERÃœST", + "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", "block.create.radial_chassis.tooltip.condition1": "Wenn durch ein Lager gedreht", - "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Überträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", + "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Ãœberträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.radial_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", + "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", "block.create.mechanical_drill.tooltip": "MECHANISCHER BOHRER", - "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", + "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", "block.create.mechanical_drill.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", + "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", "block.create.mechanical_drill.tooltip.condition2": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", + "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", "block.create.mechanical_harvester.tooltip": "MECHANISCHE ERNTEMASCHINE", - "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", + "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", "block.create.mechanical_harvester.tooltip.condition1": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", + "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1194,22 +1194,22 @@ "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", "block.create.stockpile_switch.tooltip": "VORRATSSENSOR", - "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", + "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", "block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit", "block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.", - "block.create.stockpile_switch.tooltip.condition2": "Wenn über dem oberen Limit", + "block.create.stockpile_switch.tooltip.condition2": "Wenn über dem oberen Limit", "block.create.stockpile_switch.tooltip.behaviour2": "Wird das Redstone-Signal eingeschaltet bis das untere Limit wieder erreicht wird.", "block.create.stockpile_switch.tooltip.control1": "Wenn R-geklickt", - "block.create.stockpile_switch.tooltip.action1": "Wird das _Konfigurationsmenü_ geöffnet", + "block.create.stockpile_switch.tooltip.action1": "Wird das _Konfigurationsmenü_ geöffnet", "block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG", - "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", + "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", "block.create.redstone_link.tooltip.condition1": "Wenn aktiv", "block.create.redstone_link.tooltip.behaviour1": "Liefern eingehende Verbindungen mit derselben _Frequenz_ ein Redstone-Signal.", "block.create.redstone_link.tooltip.control1": "Wenn mit einem Gegenstand R-geklickt", - "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", - "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", - "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", + "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", + "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", + "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,30 +1217,30 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "REDSTONE-KONTAKT", - "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", - "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", + "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", + "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", "block.create.redstone_contact.tooltip.behaviour1": "Liefert ein _Redstone-Signal._", "block.create.redstone_contact.tooltip.condition2": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", + "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", + "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", "block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt", - "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", + "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", "block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER", - "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", + "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "AUSWERFER", - "block.create.extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird keine Gegenstände auswerfen, bis der Platz dafür frei ist. Kann einen Stack von Gegenständen als _Filter_ zugewiesen bekommen.", + "block.create.extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird keine Gegenstände auswerfen, bis der Platz dafür frei ist. Kann einen Stack von Gegenständen als _Filter_ zugewiesen bekommen.", "block.create.extractor.tooltip.condition1": "Wenn durch Redstone aktiviert", "block.create.extractor.tooltip.behaviour1": "_Pausiert_ den Auswerfer", "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", "block.create.extractor.tooltip.control1": "R-Klick auf Filterplatz", - "block.create.extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter. ", + "block.create.extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter. ", "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", @@ -1258,14 +1258,14 @@ "block.create.deployer.tooltip.condition2": "UNLOCALIZED: R-Clicked with Wrench", "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", - "block.create.linked_extractor.tooltip": "VERKÜPFTER AUSWERFER", - "block.create.linked_extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird Gegenstände nicht auswerfen, bis der Platz frei ist. Kann einen Stack von Gegenständen zugewiesen bekommen. Kann aus Distanz mit einer _Redstone-Verbindung_ kontrolliert werden.", + "block.create.linked_extractor.tooltip": "VERKÃœPFTER AUSWERFER", + "block.create.linked_extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird Gegenstände nicht auswerfen, bis der Platz frei ist. Kann einen Stack von Gegenständen zugewiesen bekommen. Kann aus Distanz mit einer _Redstone-Verbindung_ kontrolliert werden.", "block.create.linked_extractor.tooltip.condition1": "Wenn die Restone-Verbindung aktiv ist", "block.create.linked_extractor.tooltip.behaviour1": "Wird der Auswerfer _pausiert._", "block.create.linked_extractor.tooltip.control1": "R-Klick auf den Filterplatz", - "block.create.linked_extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter.", + "block.create.linked_extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter.", "block.create.linked_extractor.tooltip.control2": "R-Klick auf den Frequenzplatz", - "block.create.linked_extractor.tooltip.action2": "Weist den momentan _gehaltenen_ _Gegenstand_ als Teil der gelisteten Frequenz zu. Wann auch immer eine übertragende _Redstone-Verbindung_ derselben Frequenz aktiv ist, pausiert dieser Auswerfer.", + "block.create.linked_extractor.tooltip.action2": "Weist den momentan _gehaltenen_ _Gegenstand_ als Teil der gelisteten Frequenz zu. Wann auch immer eine übertragende _Redstone-Verbindung_ derselben Frequenz aktiv ist, pausiert dieser Auswerfer.", "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", @@ -1276,8 +1276,8 @@ "block.create.linked_transposer.tooltip.control2": "UNLOCALIZED: R-Click on Frequency Space", "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", - "block.create.funnel.tooltip": "FLIEẞBANDTRICHTER", - "block.create.funnel.tooltip.summary": "Sammelt eingehende Gegenstände auf einem _Mechanischen_ _Riemen_ und fügt diese in einen verbundenen _Behälter_ ein, wenn möglich. Muss direkt _auf_ dem Riemen sein, mit der Öffnung entgegen der Bewegungsrichtung des Riemens zeigend. Der Behälter muss auf der gleichen Höhe wie der Trichter sein.", + "block.create.funnel.tooltip": "FLIEẞBANDTRICHTER", + "block.create.funnel.tooltip.summary": "Sammelt eingehende Gegenstände auf einem _Mechanischen_ _Riemen_ und fügt diese in einen verbundenen _Behälter_ ein, wenn möglich. Muss direkt _auf_ dem Riemen sein, mit der Öffnung entgegen der Bewegungsrichtung des Riemens zeigend. Der Behälter muss auf der gleichen Höhe wie der Trichter sein.", "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", @@ -1293,10 +1293,10 @@ "block.create.brass_casing.tooltip.condition1": "UNLOCALIZED: When used on Mechanical Belt", "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", - "block.create.belt_observer.tooltip": "FLIEẞBAND-BEOBACHTER", - "block.create.belt_observer.tooltip.summary": "Erkennt Gegenstände, die vor ihm auf einem _Mechanischen_ _Riemen_ vorbeilaufen. Funktioniert wunderbar mit einem _Kolben_ über ihm, der gewisse Gegenstände runterschubst. ", - "block.create.belt_observer.tooltip.condition1": "Wenn ein Gegenstand mit dem Filter übereinstimmt", - "block.create.belt_observer.tooltip.behaviour1": "Sendet einen kurzen _Redstone-Puls_ an alle Seiten. Bei einem leeren Filter passiert dies mit allen Gegenständen.", + "block.create.belt_observer.tooltip": "FLIEẞBAND-BEOBACHTER", + "block.create.belt_observer.tooltip.summary": "Erkennt Gegenstände, die vor ihm auf einem _Mechanischen_ _Riemen_ vorbeilaufen. Funktioniert wunderbar mit einem _Kolben_ über ihm, der gewisse Gegenstände runterschubst. ", + "block.create.belt_observer.tooltip.condition1": "Wenn ein Gegenstand mit dem Filter übereinstimmt", + "block.create.belt_observer.tooltip.behaviour1": "Sendet einen kurzen _Redstone-Puls_ an alle Seiten. Bei einem leeren Filter passiert dies mit allen Gegenständen.", "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", @@ -1304,11 +1304,11 @@ "block.create.belt_observer.tooltip.condition4": "UNLOCALIZED: Split Mode", "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", - "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", - "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", + "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", + "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", - "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", - "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", + "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", + "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index b4b09cdfc..81d6f2b2a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -7,14 +7,14 @@ "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "block.create.adjustable_crate": "Caisse ajustable", "block.create.adjustable_pulley": "Poulie de tapis roulant analogique", - "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", - "block.create.adjustable_repeater": "Répéteur réglable", + "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", + "block.create.adjustable_repeater": "Répéteur réglable", "block.create.analog_lever": "Levier analogique", - "block.create.andesite_bricks": "Briques d'andésite", + "block.create.andesite_bricks": "Briques d'andésite", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "Boîtier en andésite", + "block.create.andesite_casing": "Boîtier en andésite", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", @@ -23,12 +23,12 @@ "block.create.basin": "Bassin", "block.create.belt": "Tapis roulant", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "Observateur d'entité", + "block.create.belt_observer": "Observateur d'entité", "block.create.belt_tunnel": "Tunnel de convoyeur", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", "block.create.brass_block": "UNLOCALIZED: Brass Block", - "block.create.brass_casing": "Boîtier en laiton", + "block.create.brass_casing": "Boîtier en laiton", "block.create.cart_assembler": "Assembleur de wagon", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -38,18 +38,18 @@ "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "Roulement mécanique horloger", + "block.create.clockwork_bearing": "Roulement mécanique horloger", "block.create.clutch": "Embrayage", - "block.create.cogwheel": "Roue dentée", + "block.create.cogwheel": "Roue dentée", "block.create.copper_block": "Bloc de cuivre", - "block.create.copper_casing": "Boîtier en cuivre", + "block.create.copper_casing": "Boîtier en cuivre", "block.create.copper_ore": "Minerai de cuivre", "block.create.copper_shingles": "Bardeaux de cuivre", - "block.create.creative_crate": "Créateur de schémacanon", + "block.create.creative_crate": "Créateur de schémacanon", "block.create.creative_motor": "Moteur", "block.create.crushing_wheel": "Roue de concassage", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "Horloge à coucou", + "block.create.cuckoo_clock": "Horloge à coucou", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.dark_scoria": "Scorie sombre", @@ -62,7 +62,7 @@ "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "Déployeur", + "block.create.deployer": "Déployeur", "block.create.depot": "UNLOCALIZED: Depot", "block.create.diorite_bricks": "Briques de diorite", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", @@ -83,9 +83,9 @@ "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", "block.create.dolomite_pillar": "Pillier de dolomie", - "block.create.encased_belt": "Tapis roulant enfermé", - "block.create.encased_fan": "Ventilateur enfermé", - "block.create.encased_shaft": "Arbre mécanique enfermé", + "block.create.encased_belt": "Tapis roulant enfermé", + "block.create.encased_fan": "Ventilateur enfermé", + "block.create.encased_shaft": "Arbre mécanique enfermé", "block.create.extractor": "Extracteur", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", @@ -126,9 +126,9 @@ "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", "block.create.flywheel": "Volant d'inertie", - "block.create.framed_glass": "Grande fenêtre en verre", - "block.create.framed_glass_pane": "Grande vitre encadrée", - "block.create.funnel": "Entonnoir amélioré", + "block.create.framed_glass": "Grande fenêtre en verre", + "block.create.framed_glass_pane": "Grande vitre encadrée", + "block.create.funnel": "Entonnoir amélioré", "block.create.furnace_engine": "Moteur de four", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Briques de gabbro", @@ -140,8 +140,8 @@ "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "Boîte à roue dentée", - "block.create.gearshift": "Décaleur de rotation", + "block.create.gearbox": "Boîte à roue dentée", + "block.create.gearshift": "Décaleur de rotation", "block.create.granite_bricks": "Briques de granite", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", @@ -152,11 +152,11 @@ "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", "block.create.hand_crank": "Manivelle", - "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", - "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", + "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", + "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Grande roue dentée", + "block.create.large_cogwheel": "Grande roue dentée", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -177,21 +177,21 @@ "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pillier de calcaire", - "block.create.linear_chassis": "Châssis linéaire", - "block.create.linked_extractor": "Extracteur lié", - "block.create.linked_transposer": "Transposeur lié", + "block.create.linear_chassis": "Châssis linéaire", + "block.create.linked_extractor": "Extracteur lié", + "block.create.linked_transposer": "Transposeur lié", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Roulement mécanique", - "block.create.mechanical_crafter": "Établi mécanique", - "block.create.mechanical_drill": "Perceuse mécanique", - "block.create.mechanical_harvester": "Récolteuse mécanique", - "block.create.mechanical_mixer": "Mixeur mécanique", - "block.create.mechanical_piston": "Piston mécanique", - "block.create.mechanical_piston_head": "Tête de piston mécanique", + "block.create.mechanical_bearing": "Roulement mécanique", + "block.create.mechanical_crafter": "Établi mécanique", + "block.create.mechanical_drill": "Perceuse mécanique", + "block.create.mechanical_harvester": "Récolteuse mécanique", + "block.create.mechanical_mixer": "Mixeur mécanique", + "block.create.mechanical_piston": "Piston mécanique", + "block.create.mechanical_piston_head": "Tête de piston mécanique", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Presse mécanique", + "block.create.mechanical_press": "Presse mécanique", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "Scie mécanique", + "block.create.mechanical_saw": "Scie mécanique", "block.create.millstone": "UNLOCALIZED: Millstone", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", @@ -257,7 +257,7 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Pôle d'extension de piston", + "block.create.piston_extension_pole": "Pôle d'extension de piston", "block.create.polished_dark_scoria": "Scorie sombre polie", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", @@ -278,25 +278,25 @@ "block.create.polished_scoria_slab": "Dalle de scorie polie", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Calcaire patinées polies", - "block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées", + "block.create.polished_weathered_limestone": "Calcaire patinées polies", + "block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", "block.create.portable_storage_interface": "Interface de stockage portable", - "block.create.powered_latch": "Verrou alimenté", - "block.create.powered_toggle_latch": "Verrou alimenté à bascule", + "block.create.powered_latch": "Verrou alimenté", + "block.create.powered_toggle_latch": "Verrou alimenté à bascule", "block.create.pulley_magnet": "Aimant de poulie", - "block.create.pulse_repeater": "Répéteur d'impulsions", - "block.create.radial_chassis": "Châssis radial", + "block.create.pulse_repeater": "Répéteur d'impulsions", + "block.create.radial_chassis": "Châssis radial", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "redstone_contact Redstone", "block.create.redstone_link": "Liaison Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "Corde", - "block.create.rope_pulley": "Poulie à corde", - "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", - "block.create.schematic_table": "Table à schéma", - "block.create.schematicannon": "Schémacanon", + "block.create.rope_pulley": "Poulie à corde", + "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", + "block.create.schematic_table": "Table à schéma", + "block.create.schematicannon": "Schémacanon", "block.create.scoria": "Scorie", "block.create.scoria_bricks": "Briques de scorie", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", @@ -308,36 +308,36 @@ "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", "block.create.scoria_pillar": "Pillier de scorie", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", - "block.create.shaft": "Arbre mécanique", + "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", + "block.create.shaft": "Arbre mécanique", "block.create.speedometer": "Compteur de vitesse", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "Piston mécanique collant", - "block.create.stockpile_switch": "Détecteur de stockage", - "block.create.stressometer": "Stressomètre", - "block.create.tiled_glass": "Verre carrelé", - "block.create.tiled_glass_pane": "Vitre carrelé", + "block.create.sticky_mechanical_piston": "Piston mécanique collant", + "block.create.stockpile_switch": "Détecteur de stockage", + "block.create.stressometer": "Stressomètre", + "block.create.tiled_glass": "Verre carrelé", + "block.create.tiled_glass_pane": "Vitre carrelé", "block.create.transposer": "Transposeur", "block.create.turntable": "Plaque tournante", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", - "block.create.vertical_framed_glass": "Fenêtre en verre verticale", - "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", + "block.create.vertical_framed_glass": "Fenêtre en verre verticale", + "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "Roue à eau", - "block.create.weathered_limestone": "Calcaire patinées", - "block.create.weathered_limestone_bricks": "Briques de calcaire patinées", - "block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées", - "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées", - "block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées", + "block.create.water_wheel": "Roue à eau", + "block.create.weathered_limestone": "Calcaire patinées", + "block.create.weathered_limestone_bricks": "Briques de calcaire patinées", + "block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Pillier de calcaire patinées", + "block.create.weathered_limestone_pillar": "Pillier de calcaire patinées", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "Minerai de zinc", @@ -345,57 +345,57 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.andesite_alloy": "Alliage d'andésite", + "item.create.andesite_alloy": "Alliage d'andésite", "item.create.attribute_filter": "Filtre d'attribut", "item.create.belt_connector": "Tapis roulant", "item.create.brass_hand": "Main", "item.create.brass_ingot": "Lingot de laiton", - "item.create.brass_nugget": "Pépite de laiton", + "item.create.brass_nugget": "Pépite de laiton", "item.create.brass_sheet": "Plaques de laiton", - "item.create.chromatic_compound": "Composé chromatique", + "item.create.chromatic_compound": "Composé chromatique", "item.create.copper_ingot": "Lingot de cuivre", - "item.create.copper_nugget": "Pépite de cuivre", + "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", "item.create.crafter_slot_cover": "Couvercle", - "item.create.crushed_brass": "Laiton concassé", + "item.create.crushed_brass": "Laiton concassé", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "Déforesteur", - "item.create.dough": "Pâte", - "item.create.electron_tube": "Tube électronique", - "item.create.empty_schematic": "Schéma vide", + "item.create.deforester": "Déforesteur", + "item.create.dough": "Pâte", + "item.create.electron_tube": "Tube électronique", + "item.create.empty_schematic": "Schéma vide", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filtre", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "Lunettes d'ingénieur", + "item.create.goggles": "Lunettes d'ingénieur", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Blockzappeur portable", - "item.create.handheld_worldshaper": "Térraformeur portable", - "item.create.integrated_circuit": "Circuit intégré", + "item.create.handheld_worldshaper": "Térraformeur portable", + "item.create.integrated_circuit": "Circuit intégré", "item.create.iron_sheet": "Plaque de Fer", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.polished_rose_quartz": "Quartz rose poli", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Hélice", + "item.create.propeller": "Hélice", "item.create.red_sand_paper": "Papier de verre rouge", - "item.create.refined_radiance": "Éclat raffiné", + "item.create.refined_radiance": "Éclat raffiné", "item.create.rose_quartz": "Quartz rose", "item.create.sand_paper": "Papier de verre", - "item.create.schematic": "Schéma", - "item.create.schematic_and_quill": "Schéma et plume", + "item.create.schematic": "Schéma", + "item.create.schematic_and_quill": "Schéma et plume", "item.create.shadow_steel": "Acier sombre", "item.create.super_glue": "UNLOCALIZED: Super Glue", "item.create.tree_fertilizer": "Engrais pour arbre", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "Bâton de symétrie", + "item.create.wand_of_symmetry": "Bâton de symétrie", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", "item.create.whisk": "Fouet", - "item.create.wrench": "Clé", + "item.create.wrench": "Clé", "item.create.zinc_ingot": "Barre de zinc", - "item.create.zinc_nugget": "Pépite de zinc", + "item.create.zinc_nugget": "Pépite de zinc", "_": "->------------------------] Advancements [------------------------<-", @@ -487,38 +487,38 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage", - "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", - "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", - "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", - "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", - "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", + "death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage", + "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", + "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", + "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", + "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", + "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", - "create.block.deployer.damage_source_name": "un déployeur voyou", + "create.block.deployer.damage_source_name": "un déployeur voyou", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", "create.recipe.crushing": "Ecrasement", "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.splashing": "Lavage en vrac", - "create.recipe.splashing.fan": "Ventilateur derrière de l'eau qui coule", + "create.recipe.splashing.fan": "Ventilateur derrière de l'eau qui coule", "create.recipe.smoking_via_fan": "Fumer en vrac", "create.recipe.smoking_via_fan.fan": "Fan behind Fire", - "create.recipe.blasting_via_fan": "Ventilateur derrière du feu", - "create.recipe.blasting_via_fan.fan": "Ventilateur derrière de la lave", + "create.recipe.blasting_via_fan": "Ventilateur derrière du feu", + "create.recipe.blasting_via_fan.fan": "Ventilateur derrière de la lave", "create.recipe.pressing": "Pressage", "create.recipe.mixing": "Mixage", "create.recipe.packing": "Compactage", "create.recipe.mechanical_sawing": "Sciage", - "create.recipe.mechanical_crafting": "Fabrication mécanique", + "create.recipe.mechanical_crafting": "Fabrication mécanique", "create.recipe.block_cutting": "Coupe de bloc", "create.recipe.blockzapper_upgrade": "Blockzappeur portable", "create.recipe.sandpaper_polishing": "Polissage au papier de verre", - "create.recipe.mystery_conversion": "Métamorphose chromatique", + "create.recipe.mystery_conversion": "Métamorphose chromatique", "create.recipe.processing.catalyst": "Catalyseur", "create.recipe.processing.chance": "%1$s%% de chance", "create.recipe.processing.chanceToReturn": "%1$s%% de chance de retour", - "create.generic.range": "Portée", + "create.generic.range": "Portée", "create.generic.radius": "Rayon", "create.generic.width": "Largeur", "create.generic.height": "Hauteur", @@ -530,9 +530,9 @@ "create.generic.unit.minutes": "Minutes", "create.generic.unit.rpm": "tr/min", "create.generic.unit.stress": "us", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "Faire défiler", + "create.action.scroll": "Faire défiler", "create.action.confirm": "Confirmer", "create.action.abort": "Abandonner", "create.action.saveToFile": "Sauvegarder", @@ -543,10 +543,10 @@ "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", "create.gui.scrollInput.defaultTitle": "Choisissez une option:", - "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", - "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", - "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", - "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", + "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", + "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", + "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", + "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", "create.gui.toolmenu.focusKey": "Enfoncez [%1$s] pour focus", "create.gui.toolmenu.cycle": "[SCROLL] pour cycler", "create.gui.symmetryWand.mirrorType": "Mirroir", @@ -565,24 +565,24 @@ "create.gui.blockzapper.title": "Blockzappeur portable", "create.gui.blockzapper.replaceMode": "Mode de remplacement", "create.gui.blockzapper.searchDiagonal": "Suivez les diagonales", - "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", + "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", "create.gui.blockzapper.range": "Plage de propagation", - "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", + "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", "create.gui.blockzapper.patternSection": "Motif", "create.gui.blockzapper.pattern.solid": "Solide", "create.gui.blockzapper.pattern.checkered": "Quamechanical_drillage", - "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", + "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", "create.gui.blockzapper.pattern.chance25": "25%", "create.gui.blockzapper.pattern.chance50": "50%", "create.gui.blockzapper.pattern.chance75": "75%", - "create.gui.terrainzapper.title": "Térraformeur portable", + "create.gui.terrainzapper.title": "Térraformeur portable", "create.gui.terrainzapper.placement": "Placement", "create.gui.terrainzapper.placement.merged": "Fusionner", "create.gui.terrainzapper.placement.attached": "Attacher", "create.gui.terrainzapper.placement.inserted": "Inserer", "create.gui.terrainzapper.brush": "Pinceau", - "create.gui.terrainzapper.brush.cuboid": "Cuboïde", - "create.gui.terrainzapper.brush.sphere": "Sphère", + "create.gui.terrainzapper.brush.cuboid": "Cuboïde", + "create.gui.terrainzapper.brush.sphere": "Sphère", "create.gui.terrainzapper.brush.cylinder": "Cylindre", "create.gui.terrainzapper.tool": "Outil", "create.gui.terrainzapper.tool.fill": "Remplir", @@ -592,28 +592,28 @@ "create.gui.terrainzapper.tool.overlay": "Recouvrir", "create.gui.terrainzapper.tool.flatten": "Applatir", - "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", + "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", "create.blockzapper.usingBlock": "Utilisation: %1$s", - "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", + "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", "create.blockzapper.component.body": "Corps", "create.blockzapper.component.amplifier": "Amplifieur", - "create.blockzapper.component.accelerator": "Accélérateur", - "create.blockzapper.component.retriever": "Récupérateur", + "create.blockzapper.component.accelerator": "Accélérateur", + "create.blockzapper.component.retriever": "Récupérateur", "create.blockzapper.component.scope": "Lunette", "create.blockzapper.componentTier.none": "Aucun", "create.blockzapper.componentTier.brass": "Laiton", "create.blockzapper.componentTier.chromatic": "Chromatique", - "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", + "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", "create.blockzapper.empty": "Plus de blocs!", "create.contraptions.movement_mode": "Mode de mouvement", - "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", - "create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite", - "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", - "create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", + "create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", + "create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", @@ -623,52 +623,52 @@ "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", - "create.gui.goggles.generator_stats": "Statistiques du générateur:", - "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", - "create.gui.goggles.at_current_speed": "À la vitesse actuelle", + "create.gui.goggles.generator_stats": "Statistiques du générateur:", + "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", + "create.gui.goggles.at_current_speed": "À la vitesse actuelle", "create.gui.goggles.base_value": "Valeur de base", "create.gui.gauge.info_header": "Informations sur la jauge:", "create.gui.speedometer.title": "Vitesse de rotation", - "create.gui.stressometer.title": "Stress du réseau", - "create.gui.stressometer.capacity": "Capacité restante", - "create.gui.stressometer.overstressed": "Surmenée", + "create.gui.stressometer.title": "Stress du réseau", + "create.gui.stressometer.capacity": "Capacité restante", + "create.gui.stressometer.overstressed": "Surmenée", "create.gui.stressometer.no_rotation": "Pas de rotation", - "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", + "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "Caisse réglable", + "create.gui.adjustable_crate.title": "Caisse réglable", "create.gui.adjustable_crate.storageSpace": "Espace de stockage", "create.gui.stockpile_switch.title": "Commutateur de stockage", - "create.gui.stockpile_switch.lowerLimit": "Seuil inférieur", - "create.gui.stockpile_switch.upperLimit": "Seuil supérieur", - "create.gui.stockpile_switch.startAt": "Signal de départ à", - "create.gui.stockpile_switch.startAbove": "Signal de démarrage au-dessus", - "create.gui.stockpile_switch.stopAt": "Signal d'arrêt à", - "create.gui.stockpile_switch.stopBelow": "Signal d'arrêt en-dessous", - "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", + "create.gui.stockpile_switch.lowerLimit": "Seuil inférieur", + "create.gui.stockpile_switch.upperLimit": "Seuil supérieur", + "create.gui.stockpile_switch.startAt": "Signal de départ à", + "create.gui.stockpile_switch.startAbove": "Signal de démarrage au-dessus", + "create.gui.stockpile_switch.stopAt": "Signal d'arrêt à", + "create.gui.stockpile_switch.stopBelow": "Signal d'arrêt en-dessous", + "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", "create.gui.sequenced_gearshift.instruction": "Instructions", "create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner", "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", "create.gui.sequenced_gearshift.instruction.wait": "Attente", - "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", + "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", "create.gui.sequenced_gearshift.instruction.end": "Fin", "create.gui.sequenced_gearshift.speed": "Vitesse, direction", - "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", + "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", "create.gui.sequenced_gearshift.speed.forward_fast": "Vitesse double, normal", - "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", - "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", + "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", + "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", - "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Première position définie.", - "create.schematicAndQuill.secondPos": "Seconde position définie.", - "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", - "create.schematicAndQuill.abort": "Sélection supprimée.", - "create.schematicAndQuill.prompt": "Entrez un nom pour le schéma:", - "create.schematicAndQuill.fallbackName": "Mon schéma", - "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", + "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Première position définie.", + "create.schematicAndQuill.secondPos": "Seconde position définie.", + "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", + "create.schematicAndQuill.abort": "Sélection supprimée.", + "create.schematicAndQuill.prompt": "Entrez un nom pour le schéma:", + "create.schematicAndQuill.fallbackName": "Mon schéma", + "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", - "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", + "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", "create.schematic.position": "Position", "create.schematic.rotation": "Rotation", "create.schematic.rotation.none": "Aucune", @@ -677,121 +677,121 @@ "create.schematic.rotation.cw270": "Sens horaire 270", "create.schematic.mirror": "Mirroir", "create.schematic.mirror.none": "Aucun", - "create.schematic.mirror.frontBack": "Avant-Arrière", + "create.schematic.mirror.frontBack": "Avant-Arrière", "create.schematic.mirror.leftRight": "Gauche-Droite", - "create.schematic.tool.deploy": "Déployer", - "create.schematic.tool.move": "Déplacer XZ", - "create.schematic.tool.movey": "Déplacer Y", + "create.schematic.tool.deploy": "Déployer", + "create.schematic.tool.move": "Déplacer XZ", + "create.schematic.tool.movey": "Déplacer Y", "create.schematic.tool.rotate": "Tourner", "create.schematic.tool.print": "Imprimer", "create.schematic.tool.flip": "Retourner", - "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", + "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", "create.schematic.tool.deploy.description.1": "Clic droit sur le sol pour placer.", - "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", - "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", - "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", + "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", + "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", + "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", - "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", + "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", + "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", + "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", - "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", - "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", + "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", + "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", + "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", - "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", + "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", + "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", - "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", + "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", + "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", - "create.gui.schematicTable.title": "Table à schéma", - "create.gui.schematicTable.availableSchematics": "Schémas disponibles", - "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", - "create.gui.schematicTable.uploading": "Téléchargement...", - "create.gui.schematicTable.finished": "Téléchargement terminé!", - "create.gui.schematicannon.title": "Schémacanon", + "create.gui.schematicTable.title": "Table à schéma", + "create.gui.schematicTable.availableSchematics": "Schémas disponibles", + "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", + "create.gui.schematicTable.uploading": "Téléchargement...", + "create.gui.schematicTable.finished": "Téléchargement terminé!", + "create.gui.schematicannon.title": "Schémacanon", "create.gui.schematicannon.settingsTitle": "Options de placement", - "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", - "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", + "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", + "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", "create.gui.schematicannon.shotsRemaining": "Tirs restants: %1$s", "create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s", - "create.gui.schematicannon.optionEnabled": "Actuellement activé", - "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", + "create.gui.schematicannon.optionEnabled": "Actuellement activé", + "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", "create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides", "create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide", "create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi", "create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien", "create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants", - "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", + "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", "create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.", - "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", + "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", "create.gui.schematicannon.option.dontReplaceSolid.description": "Le canon ne remplacera jamais les blocs solides dans sa zone de travail, seulement non solides et air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", - "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", + "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", "create.schematicannon.status.idle": "Repos", - "create.schematicannon.status.ready": "Prêt", + "create.schematicannon.status.ready": "Prêt", "create.schematicannon.status.running": "En cours", - "create.schematicannon.status.finished": "Terminé", - "create.schematicannon.status.paused": "Pausé", - "create.schematicannon.status.stopped": "Arrêté", - "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", - "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", + "create.schematicannon.status.finished": "Terminé", + "create.schematicannon.status.paused": "Pausé", + "create.schematicannon.status.stopped": "Arrêté", + "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", + "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", "create.schematicannon.status.targetOutsideRange": "Cible trop lointaine", "create.schematicannon.status.searching": "Recherche", "create.schematicannon.status.skipping": "Saut", "create.schematicannon.status.missingBlock": "Blocs manquants:", "create.schematicannon.status.placing": "Placement", "create.schematicannon.status.clearing": "Suppression des blocs", - "create.schematicannon.status.schematicInvalid": "Schéma non valide", - "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", - "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", + "create.schematicannon.status.schematicInvalid": "Schéma non valide", + "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", + "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", "create.gui.filter.blacklist": "Liste noire", - "create.gui.filter.blacklist.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", + "create.gui.filter.blacklist.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", "create.gui.filter.whitelist": "Liste blanche", - "create.gui.filter.whitelist.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", - "create.gui.filter.respect_data": "Respect des données", - "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", - "create.gui.filter.ignore_data": "Ignorer les données", - "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", + "create.gui.filter.whitelist.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", + "create.gui.filter.respect_data": "Respect des données", + "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", + "create.gui.filter.ignore_data": "Ignorer les données", + "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", "create.item_attributes.placeable": "est placeable", - "create.item_attributes.consumable": "peut être mangé", + "create.item_attributes.consumable": "peut être mangé", "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", "create.item_attributes.washable": "UNLOCALIZED: can be Washed", "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.enchanted": "est enchanté", - "create.item_attributes.damaged": "est endommagé", + "create.item_attributes.enchanted": "est enchanté", + "create.item_attributes.damaged": "est endommagé", "create.item_attributes.badly_damaged": "est fortement damaged", "create.item_attributes.not_stackable": "ne peut pas s'empiler", - "create.item_attributes.equipable": "peut être équipé", + "create.item_attributes.equipable": "peut être équipé", "create.item_attributes.furnace_fuel": "est du combustible", - "create.item_attributes.in_tag": "est étiqueté %1$s", - "create.item_attributes.in_item_group": "appartient à %1$s", - "create.item_attributes.added_by": "a été ajouté par %1$s", + "create.item_attributes.in_tag": "est étiqueté %1$s", + "create.item_attributes.in_item_group": "appartient à %1$s", + "create.item_attributes.added_by": "a été ajouté par %1$s", - "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", - "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", + "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", + "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", "create.gui.attribute_filter.whitelist_disjunctive": "Liste blanche (n'importe)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", + "create.gui.attribute_filter.whitelist_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", "create.gui.attribute_filter.whitelist_conjunctive": "Liste blanche (tout)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", + "create.gui.attribute_filter.whitelist_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", "create.gui.attribute_filter.blacklist": "Liste noire", - "create.gui.attribute_filter.blacklist.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", - "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", + "create.gui.attribute_filter.blacklist.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", + "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", "create.tooltip.holdKey": "Enfoncez [%1$s]", "create.tooltip.holdKeyOrKey": "Enfoncez [%1$s] ou [%2$s]", @@ -799,22 +799,22 @@ "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "Vitesse requise: %1$s", "create.tooltip.speedRequirement.none": "Aucune", - "create.tooltip.speedRequirement.medium": "Modérée", + "create.tooltip.speedRequirement.medium": "Modérée", "create.tooltip.speedRequirement.high": "Rapide", "create.tooltip.stressImpact": "Impact du stress: %1$s", "create.tooltip.stressImpact.low": "Faible", - "create.tooltip.stressImpact.medium": "Modéré", - "create.tooltip.stressImpact.high": "Elevé", - "create.tooltip.stressImpact.overstressed": "Surmené", - "create.tooltip.capacityProvided": "Capacité de stress: %1$s", + "create.tooltip.stressImpact.medium": "Modéré", + "create.tooltip.stressImpact.high": "Elevé", + "create.tooltip.stressImpact.overstressed": "Surmené", + "create.tooltip.capacityProvided": "Capacité de stress: %1$s", "create.tooltip.capacityProvided.low": "Petite", "create.tooltip.capacityProvided.medium": "Moyenne", "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", - "create.tooltip.generationSpeed": "Génère à %1$s %2$s", + "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", + "create.tooltip.generationSpeed": "Génère à %1$s %2$s", "create.tooltip.analogStrength": "Force analogique: %1$s/15", - "create.mechanical_mixer.min_ingredients": "Ingrédients min.", + "create.mechanical_mixer.min_ingredients": "Ingrédients min.", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -833,63 +833,63 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "Tire de schémacanon", - "create.subtitle.schematicannon_finish": "Fin de schémacanon", + "create.subtitle.schematicannon_launch_block": "Tire de schémacanon", + "create.subtitle.schematicannon_finish": "Fin de schémacanon", "create.subtitle.slime_added": "Bruit de slime", "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", - "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", + "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", "create.subtitle.blockzapper_place": "Blocs se zappant en place", "create.subtitle.blockzapper_confirm": "Ding d'affirmation", - "create.subtitle.blockzapper_deny": "Boop de déclin", + "create.subtitle.blockzapper_deny": "Boop de déclin", "create.subtitle.block_funnel_eat": "Croc d'entonoir", "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "OBJET EXEMPLE (juste une indication que cette info-bulle existe)", - "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", + "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", "item.create.example_item.tooltip.condition1": "Quand ceci", - "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", + "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", "item.create.example_item.tooltip.condition2": "Et quand cela", "item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez", - "item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé", - "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", + "item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé", + "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", - "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", - "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", - "item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active", + "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", + "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", + "item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active", "item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif", "item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol", - "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", + "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", "item.create.wand_of_symmetry.tooltip.control2": "Clic droit dans les airs", "item.create.wand_of_symmetry.tooltip.action2": "_Retire_ le mirroir actif", - "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", + "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", "item.create.wand_of_symmetry.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPEUR", - "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", + "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", "item.create.handheld_blockzapper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", "item.create.handheld_blockzapper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", - "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", + "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", "item.create.handheld_blockzapper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_.", "item.create.handheld_worldshaper.tooltip": "TERRAFORMEUR", - "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", + "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", "item.create.handheld_worldshaper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", "item.create.handheld_worldshaper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", - "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", + "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", "item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", "item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRE", - "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.", - "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre", - "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_", + "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.", + "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre", + "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_", - "item.create.deforester.tooltip": "DÉFORESTEUR", + "item.create.deforester.tooltip": "DÉFORESTEUR", "item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des arbres en une fraction de seconde.", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", @@ -898,141 +898,141 @@ "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", "item.create.filter.tooltip": "FILTRE", - "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", "item.create.filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", - "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", "item.create.filter.tooltip.condition2": "Clic droit", "item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", "item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS", - "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", "item.create.attribute_filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", - "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", "item.create.attribute_filter.tooltip.condition2": "Clic droit", "item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", - "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", - "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", + "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", + "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", - "item.create.schematic.tooltip": "SCHÉMA", - "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", + "item.create.schematic.tooltip": "SCHÉMA", + "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", "item.create.schematic.tooltip.condition1": "Lorsque tenu en main", - "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", - "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", - "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", + "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", + "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", + "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", - "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", - "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", - "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", + "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", + "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", + "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", "item.create.schematic_and_quill.tooltip.control1": "Clic droit", - "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", + "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", "item.create.schematic_and_quill.tooltip.control2": "Ctrl maintenu", - "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", - "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", - "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", + "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", + "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", + "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", - "block.create.schematicannon.tooltip": "SCHÉMACANON", - "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", + "block.create.schematicannon.tooltip": "SCHÉMACANON", + "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", "block.create.schematicannon.tooltip.control1": "Clic droit", "block.create.schematicannon.tooltip.action1": "Ouvre l'_Interface_", - "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", - "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", - "block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide", - "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", + "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", + "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", + "block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide", + "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", - "block.create.shaft.tooltip": "ARBRE MÉCANIQUE", + "block.create.shaft.tooltip": "ARBRE MÉCANIQUE", "block.create.shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite.", - "block.create.cogwheel.tooltip": "ROUE DENTÉE", - "block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", + "block.create.cogwheel.tooltip": "ROUE DENTÉE", + "block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", - "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", - "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", + "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", + "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", - "block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÎTÉ", - "block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", + "block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÃŽTÉ", + "block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", - "block.create.gearbox.tooltip": "BOÎTE DE VITESSES", + "block.create.gearbox.tooltip": "BOÃŽTE DE VITESSES", "block.create.gearbox.tooltip.summary": "_Relais_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", - "block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION", - "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.", - "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", + "block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION", + "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.", + "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", "block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.", "block.create.clutch.tooltip": "EMBRAYAGE", - "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.", - "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", - "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", + "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.", + "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", + "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", - "block.create.encased_belt.tooltip": "TAPIS ROULANT ENFERMÉ", - "block.create.encased_belt.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés.", - "block.create.encased_belt.tooltip.condition1": "Lorsque connecté", - "block.create.encased_belt.tooltip.behaviour1": "Les blocs attachés auront la _même_ _vitesse_ _de_ _rotation_ et direction. Ils n'ont pas besoin de regarder dans la même direction.", + "block.create.encased_belt.tooltip": "TAPIS ROULANT ENFERMÉ", + "block.create.encased_belt.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés.", + "block.create.encased_belt.tooltip.condition1": "Lorsque connecté", + "block.create.encased_belt.tooltip.behaviour1": "Les blocs attachés auront la _même_ _vitesse_ _de_ _rotation_ et direction. Ils n'ont pas besoin de regarder dans la même direction.", "block.create.adjustable_pulley.tooltip": "POULIE DE TAPIS ROULANT ANALOGIQUE", - "block.create.adjustable_pulley.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés. Les _tapis_ _roulants_ _enfermés_ attachés _tourneront_ _plus_ _vite_ en fonction du _signal_ _de_ _redstone_ _analogique_ que ce bloc reçoit.", - "block.create.adjustable_pulley.tooltip.condition1": "Contrôle Redstone", - "block.create.adjustable_pulley.tooltip.behaviour1": "Sans signal, il ne va pas _accélérer_ les tapis roulants connectées. Avec un tapis roulant connectée au signal de pleine puissance, vitesse _doublées_.", + "block.create.adjustable_pulley.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés. Les _tapis_ _roulants_ _enfermés_ attachés _tourneront_ _plus_ _vite_ en fonction du _signal_ _de_ _redstone_ _analogique_ que ce bloc reçoit.", + "block.create.adjustable_pulley.tooltip.condition1": "Contrôle Redstone", + "block.create.adjustable_pulley.tooltip.behaviour1": "Sans signal, il ne va pas _accélérer_ les tapis roulants connectées. Avec un tapis roulant connectée au signal de pleine puissance, vitesse _doublées_.", "item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS", - "item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", + "item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", "item.create.belt_connector.tooltip.control1": "Clic droit sur arbre", - "item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", - "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", - "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", + "item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", + "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", + "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", "item.create.goggles.tooltip": "LUNETTES", - "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", - "item.create.goggles.tooltip.condition1": "Lorsque portées", - "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", - "item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge", - "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", + "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", + "item.create.goggles.tooltip.condition1": "Lorsque portées", + "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", + "item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge", + "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", - "item.create.wrench.tooltip": "CLÉ", - "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", + "item.create.wrench.tooltip": "CLÉ", + "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", "item.create.wrench.tooltip.control1": "Clic droit a kinetic block", "item.create.wrench.tooltip.action1": "_Tourne_ les _composents_ proche ou loin de la face avec lequel vous avez interagi.", - "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", - "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", + "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", + "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", - "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", + "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", "block.create.creative_motor.tooltip.summary": "Une source configurable de _force_ _de_ _rotation_.", - "block.create.water_wheel.tooltip": "ROUE À EAU", + "block.create.water_wheel.tooltip": "ROUE À EAU", "block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.", - "block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ", - "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", - "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", - "block.create.encased_fan.tooltip.condition2": "Lorsque tourné", - "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", - "block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux", - "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", + "block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ", + "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", + "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", + "block.create.encased_fan.tooltip.condition2": "Lorsque tourné", + "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", + "block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux", + "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", "block.create.nozzle.tooltip": "BUSE", - "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", + "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", "block.create.hand_crank.tooltip": "MANIVELLE", - "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", - "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", - "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", + "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", + "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", + "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", "block.create.cuckoo_clock.tooltip": "COUCOU", - "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", - "block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné", - "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", + "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", + "block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné", + "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", "block.create.turntable.tooltip": "PLAQUE TOURNANTE", - "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.", + "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1043,100 +1043,100 @@ "block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE", "block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.", - "block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage", - "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", + "block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage", + "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", - "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", - "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", - "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", - "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", - "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", + "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", + "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", + "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", + "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", + "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", "block.create.basin.tooltip": "BASSIN", - "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", + "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", - "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", - "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", + "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", + "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", "block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin", - "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.", - "block.create.mechanical_mixer.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.mechanical_mixer.tooltip.behaviour2": "_Configure_ la quantité minimale du _total_ _d'ingredients_ pour les recettes appliquées. Utilisez cette option pour _exclure_ les _recettes_ _indésirables_ avec des ingrédients similaires mais moins.", + "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.", + "block.create.mechanical_mixer.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configure_ la quantité minimale du _total_ _d'ingredients_ pour les recettes appliquées. Utilisez cette option pour _exclure_ les _recettes_ _indésirables_ avec des ingrédients similaires mais moins.", - "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", - "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", - "block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", + "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", + "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", + "block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", - "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", - "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", - "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", - "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", + "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", + "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", + "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", + "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", "block.create.furnace_engine.tooltip": "MOTEUR DE FOUR", - "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", - "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", - "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", + "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", + "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", + "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", "block.create.flywheel.tooltip": "VOLANT D'INERTIE", - "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", - "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", - "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", + "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", + "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", + "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", "block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE", - "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", + "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", "block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.", - "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", - "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", + "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", + "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", - "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", - "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", - "block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", + "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - "block.create.sticky_mechanical_piston.tooltip": "PISTON MÉCANIQUE COLLANT", - "block.create.sticky_mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_ _collant_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "Lorsque tourné", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + "block.create.sticky_mechanical_piston.tooltip": "PISTON MÉCANIQUE COLLANT", + "block.create.sticky_mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_ _collant_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - "block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON", - "block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", - "block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", - "block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", + "block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON", + "block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", + "block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", + "block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", - "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", - "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", - "block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", - "block.create.mechanical_bearing.tooltip.condition2": "Lorsqu'alimenté par de la redstone", - "block.create.mechanical_bearing.tooltip.behaviour2": "Commence à fournir une _force_ _de_ rotation_ générée à partir de la rotation de la structure attachée. La structure doit inclure des _blocs_ _de_ _voiles_ appropriés (actuellement n'importe quel bloc de laine).", + "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", + "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", + "block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.mechanical_bearing.tooltip.condition2": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Commence à fournir une _force_ _de_ rotation_ générée à partir de la rotation de la structure attachée. La structure doit inclure des _blocs_ _de_ _voiles_ appropriés (actuellement n'importe quel bloc de laine).", - "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", - "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", - "block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné", - "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", + "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", + "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", + "block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", - "block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ", - "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", - "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", + "block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ", + "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", + "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", "block.create.sequenced_gearshift.tooltip.condition2": "Clic droit", "block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_", "block.create.cart_assembler.tooltip": "ASSEMBLEUR DE CHARIOT", - "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.", - "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.", + "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.", + "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.", "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", @@ -1145,70 +1145,70 @@ "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "POULIE DE CORDE", - "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", - "block.create.rope_pulley.tooltip.condition1": "Lorsque tourné", - "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.rope_pulley.tooltip.condition1": "Lorsque tourné", + "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - "block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION", + "block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION", "block.create.linear_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", - "block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé", - "block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", - "block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", + "block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", "block.create.linear_chassis.tooltip.control1": "Clic droit avec une boule de slime", - "block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", + "block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", - "block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION", + "block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION", "block.create.radial_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", - "block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé", - "block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", - "block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", + "block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", + "block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", "block.create.radial_chassis.tooltip.control1": "Clic droit avec une boule de slime", - "block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", + "block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", - "block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE", - "block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", + "block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE", + "block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", "block.create.mechanical_drill.tooltip.condition2": "Lorsqu'en mouvement", "block.create.mechanical_drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.", - "block.create.mechanical_harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", - "block.create.mechanical_harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", + "block.create.mechanical_harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", "block.create.mechanical_harvester.tooltip.condition1": "Lorsqu'en mouvement", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", - "block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE", - "block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut", - "block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", - "block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal", + "block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE", + "block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut", + "block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", + "block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal", "block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un arbre, _l'arbre_ _tombera_ loin de la scie.", "block.create.mechanical_saw.tooltip.condition3": "Lorsqu'en mouvement", "block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _arbres_ avec lesquels la scie entre en collision.", - "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", - "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", + "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", + "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", "block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum", - "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", + "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", "block.create.stockpile_switch.tooltip.condition2": "Lorsqu'au dessus de la limite de stockage maximum", - "block.create.stockpile_switch.tooltip.behaviour2": "Commence à fournir de _l'énergie_ jusqu'à ce que la limite d'énergie soit réatteinte.", + "block.create.stockpile_switch.tooltip.behaviour2": "Commence à fournir de _l'énergie_ jusqu'à ce que la limite d'énergie soit réatteinte.", "block.create.stockpile_switch.tooltip.control1": "Clic droit", "block.create.stockpile_switch.tooltip.action1": "Ouvre l'_interface_ _de_ _configuration_.", "block.create.redstone_link.tooltip": "LIAISON REDSTONE", - "block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.", - "block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté", - "block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.", + "block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.", + "block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté", + "block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.", "block.create.redstone_link.tooltip.control1": "Clic droit avec un objet", - "block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", - "block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi", + "block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", + "block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi", "block.create.redstone_link.tooltip.action2": "TBascule entre le mode _receveur_ et _transmetteur_.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", @@ -1217,120 +1217,120 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "redstone_contact REDSTONE", - "block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.", - "block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact", + "block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact", "block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ _redstone_.", "block.create.redstone_contact.tooltip.condition2": "Lorsqu'en mouvement", - "block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.", + "block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.", "block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE", - "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", "block.create.adjustable_crate.tooltip.control1": "Clic droit", "block.create.adjustable_crate.tooltip.action1": "Ouvre _l'interface_.", - "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", - "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", + "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", + "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRACTEUR", - "block.create.extractor.tooltip.summary": "_Prend_ des _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être affecté à une pile d'objets en tant que _filtre_.", - "block.create.extractor.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.extractor.tooltip.summary": "_Prend_ des _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.extractor.tooltip.condition1": "Lorsqu'alimenté par de la redstone", "block.create.extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", "block.create.extractor.tooltip.condition2": "Tirage actif du tapis roulant", - "block.create.extractor.tooltip.behaviour2": "Les extracteurs peuvent extraire les objets _de_ _tapis_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque l'extracteur est bloqué, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.extractor.tooltip.behaviour2": "Les extracteurs peuvent extraire les objets _de_ _tapis_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque l'extracteur est bloqué, le _tapis_ _roulant_ _va_ _caler_.", "block.create.extractor.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", "block.create.transposer.tooltip": "TRANSPOSEUR", - "block.create.transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_.", - "block.create.transposer.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.transposer.tooltip.condition1": "Lorsqu'alimenté par de la redstone", "block.create.transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", "block.create.transposer.tooltip.condition2": "Tirage actif du tapis roulant", - "block.create.transposer.tooltip.behaviour2": "Les transposeurs peuvent extraire des éléments _de_ _tapis_ _roulants_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque le transposeur est sauvegardé, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.transposer.tooltip.behaviour2": "Les transposeurs peuvent extraire des éléments _de_ _tapis_ _roulants_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque le transposeur est sauvegardé, le _tapis_ _roulant_ _va_ _caler_.", "block.create.transposer.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", - "block.create.deployer.tooltip": "DÉPLOYEUR", - "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", - "block.create.deployer.tooltip.condition1": "Lorsque tourné", - "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", - "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", - "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", + "block.create.deployer.tooltip": "DÉPLOYEUR", + "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", + "block.create.deployer.tooltip.condition1": "Lorsque tourné", + "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", + "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", + "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", - "block.create.linked_extractor.tooltip": "EXTRACTEUR LIÉ", - "block.create.linked_extractor.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être assigné une pile d'éléments en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_extractor.tooltip": "EXTRACTEUR LIÉ", + "block.create.linked_extractor.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être assigné une pile d'éléments en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", "block.create.linked_extractor.tooltip.condition1": "Lorsque la liaison redstone est active", "block.create.linked_extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", "block.create.linked_extractor.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.linked_extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", - "block.create.linked_extractor.tooltip.control2": "Clic droit sur l'espace des fréquences", - "block.create.linked_extractor.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, cet extracteur s'arrête.", + "block.create.linked_extractor.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_extractor.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, cet extracteur s'arrête.", - "block.create.linked_transposer.tooltip": "TRANSPOSEUR LIÉ", - "block.create.linked_transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_transposer.tooltip": "TRANSPOSEUR LIÉ", + "block.create.linked_transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", "block.create.linked_transposer.tooltip.condition1": "Lorsque la liaison redstone est active", "block.create.linked_transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", "block.create.linked_transposer.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.linked_transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", - "block.create.linked_transposer.tooltip.control2": "Clic droit sur l'espace des fréquences", - "block.create.linked_transposer.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, ce transposeur s'arrête.", + "block.create.linked_transposer.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_transposer.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, ce transposeur s'arrête.", - "block.create.funnel.tooltip": "ENTONNOIR AMÉLIORÉ", - "block.create.funnel.tooltip.summary": "_Collecte_ les _objets_ en _approche_ et les insère dans _l'inventaire_ attaché si possible. Peut collecter des objets dans le _monde_ et des objets sur un _tapis_ _roulant_.", + "block.create.funnel.tooltip": "ENTONNOIR AMÉLIORÉ", + "block.create.funnel.tooltip.summary": "_Collecte_ les _objets_ en _approche_ et les insère dans _l'inventaire_ attaché si possible. Peut collecter des objets dans le _monde_ et des objets sur un _tapis_ _roulant_.", "block.create.funnel.tooltip.condition1": "Passage de tapis roulant passif", - "block.create.funnel.tooltip.behaviour1": "Les entonnoirs améliorés peuvent extraire des éléments _des_ _tapis_ _roulant_ lorsqu'ils sont placés au-dessus d'eux, latéralement ou à l'extrémité. Lorsqu'un entonnoir amélioré latéral est sauvegardé, les éléments sur le _tapis_ roulant_ _ne_ _vont_ _pas_ _caler_.", + "block.create.funnel.tooltip.behaviour1": "Les entonnoirs améliorés peuvent extraire des éléments _des_ _tapis_ _roulant_ lorsqu'ils sont placés au-dessus d'eux, latéralement ou à l'extrémité. Lorsqu'un entonnoir amélioré latéral est sauvegardé, les éléments sur le _tapis_ roulant_ _ne_ _vont_ _pas_ _caler_.", "block.create.belt_tunnel.tooltip": "TUNNEL DE TAPIS ROULANT", - "block.create.belt_tunnel.tooltip.summary": "Une option esthétique pour faire passer vos _tapis_ _roulants_ _mécaniques_ à travers les murs. Les tapis roulants doivent être renforcées avec des _boîtiers_ _en_ _laiton_. Les tunnels peuvent se _synchroniser_ avec _leurs_voisins_, ne laissant passer les éléments que si tous les tunnels du groupe ont un en attente. [Ctrl]", - "block.create.belt_tunnel.tooltip.control1": "Clic droit avec une clé devant", - "block.create.belt_tunnel.tooltip.action1": "Active le _comportement_ _synchronisé_. Les tunnels synchronisés contiennent des objets jusqu'à ce que leurs voisins en aient également.", - "block.create.belt_tunnel.tooltip.control2": "Clic droit avec une clé sur les côtés", - "block.create.belt_tunnel.tooltip.action2": "_Ajuste_ _les_ _volets_ _des_ _fenêtres_ si le tunnel a une fenêtre sur cette face.", + "block.create.belt_tunnel.tooltip.summary": "Une option esthétique pour faire passer vos _tapis_ _roulants_ _mécaniques_ à travers les murs. Les tapis roulants doivent être renforcées avec des _boîtiers_ _en_ _laiton_. Les tunnels peuvent se _synchroniser_ avec _leurs_voisins_, ne laissant passer les éléments que si tous les tunnels du groupe ont un en attente. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "Clic droit avec une clé devant", + "block.create.belt_tunnel.tooltip.action1": "Active le _comportement_ _synchronisé_. Les tunnels synchronisés contiennent des objets jusqu'à ce que leurs voisins en aient également.", + "block.create.belt_tunnel.tooltip.control2": "Clic droit avec une clé sur les côtés", + "block.create.belt_tunnel.tooltip.action2": "_Ajuste_ _les_ _volets_ _des_ _fenêtres_ si le tunnel a une fenêtre sur cette face.", - "block.create.brass_casing.tooltip": "BOÎTIER EN LAITON", - "block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", - "block.create.brass_casing.tooltip.condition1": "Lorsqu'utilisé sur un tapis roulant mécanique", - "block.create.brass_casing.tooltip.behaviour1": "_Renforce_ les _tapis_ _roulants_ avec une fondation en laiton. Les tapis roulants renforcées peuvent prendre en charge les _tunnels_, _extracteurs_, _entonnoir améliorés_ et _transposeurs_ interagissant avec le tapis roulant sur les côtés et en dessous.", + "block.create.brass_casing.tooltip": "BOÃŽTIER EN LAITON", + "block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", + "block.create.brass_casing.tooltip.condition1": "Lorsqu'utilisé sur un tapis roulant mécanique", + "block.create.brass_casing.tooltip.behaviour1": "_Renforce_ les _tapis_ _roulants_ avec une fondation en laiton. Les tapis roulants renforcées peuvent prendre en charge les _tunnels_, _extracteurs_, _entonnoir améliorés_ et _transposeurs_ interagissant avec le tapis roulant sur les côtés et en dessous.", "block.create.belt_observer.tooltip": "OBSERVATEUR DE TAPIS ROULANT", - "block.create.belt_observer.tooltip.summary": "Détecte les éléments et les entités passant sur un _tapis_ _roulant_ _mécanique_ devant lui. Utilisez une _clé_ pour faire défiler son comportement. Les non-éléments seront toujours traités en mode détection quel que soit le paramètre.", - "block.create.belt_observer.tooltip.condition1": "Mode détection", - "block.create.belt_observer.tooltip.behaviour1": "Fournit un redstone _pendant_ qu'un _objet_ _correspondant_ _soit_ sur le segment de tapis roulant observé.", + "block.create.belt_observer.tooltip.summary": "Détecte les éléments et les entités passant sur un _tapis_ _roulant_ _mécanique_ devant lui. Utilisez une _clé_ pour faire défiler son comportement. Les non-éléments seront toujours traités en mode détection quel que soit le paramètre.", + "block.create.belt_observer.tooltip.condition1": "Mode détection", + "block.create.belt_observer.tooltip.behaviour1": "Fournit un redstone _pendant_ qu'un _objet_ _correspondant_ _soit_ sur le segment de tapis roulant observé.", "block.create.belt_observer.tooltip.condition2": "Mode impulsion", - "block.create.belt_observer.tooltip.behaviour2": "Émet une _impulsion_ lorsqu'un _objet_ _correspondant_ _passe_ au centre du segment de tapis roulant observé.", - "block.create.belt_observer.tooltip.condition3": "Mode éjection", - "block.create.belt_observer.tooltip.behaviour3": "_Éject_ les _objets_ _correspondants_ sur le côté. Si le tapis roulant ou l'espace cible est _occupé_, l'objet sera _tenu_ _en_ _place_.", + "block.create.belt_observer.tooltip.behaviour2": "Émet une _impulsion_ lorsqu'un _objet_ _correspondant_ _passe_ au centre du segment de tapis roulant observé.", + "block.create.belt_observer.tooltip.condition3": "Mode éjection", + "block.create.belt_observer.tooltip.behaviour3": "_Éject_ les _objets_ _correspondants_ sur le côté. Si le tapis roulant ou l'espace cible est _occupé_, l'objet sera _tenu_ _en_ _place_.", "block.create.belt_observer.tooltip.condition4": "Mode partage", - "block.create.belt_observer.tooltip.behaviour4": "_Partage_ une _pile_ _d'objets_ _correspondants_ et _éjecte_ _la_ _moitié_ de celui-ci sur le côté.", + "block.create.belt_observer.tooltip.behaviour4": "_Partage_ une _pile_ _d'objets_ _correspondants_ et _éjecte_ _la_ _moitié_ de celui-ci sur le côté.", - "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", - "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", + "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", + "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", - "block.create.adjustable_repeater.tooltip": "RÉPÉTEUR RÉGLABLE", - "block.create.adjustable_repeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + "block.create.adjustable_repeater.tooltip": "RÉPÉTEUR RÉGLABLE", + "block.create.adjustable_repeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", - "block.create.adjustable_pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", - "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + "block.create.adjustable_pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", + "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", "block.create.analog_lever.tooltip": "LEVIER ANALOGIQUE", - "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", + "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", - "block.create.powered_toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", - "block.create.powered_toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", + "block.create.powered_toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", + "block.create.powered_toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", - "block.create.powered_latch.tooltip": "VERROU ALIMENTÉ", - "block.create.powered_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", + "block.create.powered_latch.tooltip": "VERROU ALIMENTÉ", + "block.create.powered_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", "block.create.speedometer.tooltip": "COMPTEUR DE VITESSE", - "block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.speedometer.tooltip.condition1": "Lorsque tourné", - "block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", + "block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.speedometer.tooltip.condition1": "Lorsque tourné", + "block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", - "block.create.stressometer.tooltip": "STRESSOMÈTRE", - "block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.stressometer.tooltip.condition1": "Lorsque tourné", - "block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", + "block.create.stressometer.tooltip": "STRESSOMÈTRE", + "block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.stressometer.tooltip.condition1": "Lorsque tourné", + "block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", @@ -1344,26 +1344,26 @@ "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", - "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", - "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", + "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", + "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", "item.create.shadow_steel.tooltip": "ACIER SOMBRE", - "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", + "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", "item.create.crafter_slot_cover.tooltip": "COUVERCLE D'EMPLACEMENT", - "item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", + "item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", "create.tooltip.wip": "En cours", "create.tooltip.workInProgress": "En cours!", - "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", - "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", - "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", + "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", + "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", + "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", "create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agites les doigts* veuillez vous disperser.", - "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", + "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", "create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.", - "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", - "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", - "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", + "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", + "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", + "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index e477c8700..1358feb95 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -49,7 +49,7 @@ "block.create.creative_motor": "Motore", "block.create.crushing_wheel": "Ruota di Frantumazione", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "Orologio a Cucù", + "block.create.cuckoo_clock": "Orologio a Cucù", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.dark_scoria": "Scoria Scura", @@ -294,7 +294,7 @@ "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "Corda", "block.create.rope_pulley": "Puleggia della Corda", - "block.create.rotation_speed_controller": "Regolatore di Velocità di Rotazione", + "block.create.rotation_speed_controller": "Regolatore di Velocità di Rotazione", "block.create.schematic_table": "Banco Schematico", "block.create.schematicannon": "Cannoneschematico", "block.create.scoria": "Scoria", @@ -487,12 +487,12 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s è stato elaborato dala Ruota di Frantumazione", - "death.attack.create.fan_fire": "%1$s è stato bruciato a morte da aria calda", - "death.attack.create.fan_lava": "%1$s è stato bruciato a morte dal ventilatore di lava", - "death.attack.create.mechanical_drill": "%1$s è stato impalato dal Trapano Meccanico", - "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla Sega Meccanica", - "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria dall'orologio a cucù manomesso", + "death.attack.create.crush": "%1$s è stato elaborato dala Ruota di Frantumazione", + "death.attack.create.fan_fire": "%1$s è stato bruciato a morte da aria calda", + "death.attack.create.fan_lava": "%1$s è stato bruciato a morte dal ventilatore di lava", + "death.attack.create.mechanical_drill": "%1$s è stato impalato dal Trapano Meccanico", + "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla Sega Meccanica", + "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria dall'orologio a cucù manomesso", "create.block.deployer.damage_source_name": "un Disadattato", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", @@ -515,22 +515,22 @@ "create.recipe.sandpaper_polishing": "Carta Vetrata Levigata", "create.recipe.mystery_conversion": "Metamorfosi Cromatica", "create.recipe.processing.catalyst": "Catalizzatore", - "create.recipe.processing.chance": "%1$s%% Possibilità", - "create.recipe.processing.chanceToReturn": "%1$s%% Possibilità di Ritorno", + "create.recipe.processing.chance": "%1$s%% Possibilità", + "create.recipe.processing.chanceToReturn": "%1$s%% Possibilità di Ritorno", "create.generic.range": "Gamma", "create.generic.radius": "Raggio", "create.generic.width": "Larghezza", "create.generic.height": "Altezza", "create.generic.length": "Lunghezza", - "create.generic.speed": "Velocità", + "create.generic.speed": "Velocità", "create.generic.delay": "Ritardo", "create.generic.unit.ticks": "Tick", "create.generic.unit.seconds": "Secondi", "create.generic.unit.minutes": "Minuti", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", "create.action.scroll": "Scorri", "create.action.confirm": "Conferma", @@ -540,13 +540,13 @@ "create.keyinfo.toolmenu": "Focalizza sul Menu Strumento", "create.keyinfo.scrollup": "Simula Rotellina del Mouse Verso Su (nel mondo)", - "create.keyinfo.scrolldown": "Simula Rotellina del Mouse Verso Giù (nel mondo)", + "create.keyinfo.scrolldown": "Simula Rotellina del Mouse Verso Giù (nel mondo)", "create.gui.scrollInput.defaultTitle": "Scegli un Opzione:", "create.gui.scrollInput.scrollToModify": "Scorri per Modificare", "create.gui.scrollInput.scrollToAdjustAmount": "Scorri Fino a Regolare l'Importo", "create.gui.scrollInput.scrollToSelect": "Scorri per Selezionare", - "create.gui.scrollInput.shiftScrollsFaster": "Premi Shift per Scorrere più Velocemente", + "create.gui.scrollInput.shiftScrollsFaster": "Premi Shift per Scorrere più Velocemente", "create.gui.toolmenu.focusKey": "Premi [%1$s] per Aprire il Menu", "create.gui.toolmenu.cycle": "[SCORRI] per navigare", "create.gui.symmetryWand.mirrorType": "Specchio", @@ -563,7 +563,7 @@ "create.orientation.alongX": "Lungo X", "create.gui.blockzapper.title": "Posizionatore di Blocchi", - "create.gui.blockzapper.replaceMode": "Modalità Sostituire", + "create.gui.blockzapper.replaceMode": "Modalità Sostituire", "create.gui.blockzapper.searchDiagonal": "Segui Diagonali", "create.gui.blockzapper.searchFuzzy": "Ignora i Bordi dei Materiali", "create.gui.blockzapper.range": "Gamma Diffusione", @@ -607,11 +607,11 @@ "create.blockzapper.leftClickToSet": "Clic-Sinistro su un blocco per impostare il materiale", "create.blockzapper.empty": "Fuori dai Blocchi!", - "create.contraptions.movement_mode": "Modalità Movimento", - "create.contraptions.movement_mode.move_place": "Posizionare Sempre quando è Fermo", + "create.contraptions.movement_mode": "Modalità Movimento", + "create.contraptions.movement_mode.move_place": "Posizionare Sempre quando è Fermo", "create.contraptions.movement_mode.move_place_returned": "Posiziona solo nella Posizione Iniziale", "create.contraptions.movement_mode.move_never_place": "Posiziona solo quando Ancora Distrutto", - "create.contraptions.movement_mode.rotate_place": "Posiziona Sempre quando è Fermo", + "create.contraptions.movement_mode.rotate_place": "Posiziona Sempre quando è Fermo", "create.contraptions.movement_mode.rotate_place_returned": "Posiziona solo vicino all'Angolo Iniziale", "create.contraptions.movement_mode.rotate_never_place": "Posiziona Solo quando l'Ancora viene Distrutta", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", @@ -625,16 +625,16 @@ "create.gui.goggles.generator_stats": "Statistiche del Generatore:", "create.gui.goggles.kinetic_stats": "Statistiche Cinetiche:", - "create.gui.goggles.at_current_speed": "Alla velocità Attuale", + "create.gui.goggles.at_current_speed": "Alla velocità Attuale", "create.gui.goggles.base_value": "Valore Base", "create.gui.gauge.info_header": "Informazioni sul Calibro:", - "create.gui.speedometer.title": "Velocità di Rotazione", + "create.gui.speedometer.title": "Velocità di Rotazione", "create.gui.stressometer.title": "Stress della Rete", - "create.gui.stressometer.capacity": "Capacità Rimanente", + "create.gui.stressometer.capacity": "Capacità Rimanente", "create.gui.stressometer.overstressed": "Sovrastressato", "create.gui.stressometer.no_rotation": "Nessuna Rotazione", - "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", - "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", + "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", + "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", "create.gui.adjustable_crate.title": "Baule Regolabile", "create.gui.adjustable_crate.storageSpace": "Spazio di Immagazzinamento", "create.gui.stockpile_switch.title": "Interruttore Accumulatore", @@ -653,11 +653,11 @@ "create.gui.sequenced_gearshift.instruction.wait": "Aspetta", "create.gui.sequenced_gearshift.instruction.wait.duration": "Durata", "create.gui.sequenced_gearshift.instruction.end": "Fine", - "create.gui.sequenced_gearshift.speed": "Velocità, Direzione", - "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, Avanti", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, Avanti", - "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, Invertita", - "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, Invertita", + "create.gui.sequenced_gearshift.speed": "Velocità, Direzione", + "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, Avanti", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, Avanti", + "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, Invertita", + "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, Invertita", "create.schematicAndQuill.dimensions": "Dimensione Schematica: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Prima posizione impostata.", @@ -694,7 +694,7 @@ "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", "create.schematic.tool.movey.description.0": "Sposta la Schematica verticalmente.", - "create.schematic.tool.movey.description.1": "[CTRL]-Scorri per spostarla su/giù.", + "create.schematic.tool.movey.description.1": "[CTRL]-Scorri per spostarla su/giù.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", "create.schematic.tool.rotate.description.0": "Ruota la Schematica attorno al suo centro.", @@ -703,7 +703,7 @@ "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Posiziona istantaneamente la struttura nel mondo.", "create.schematic.tool.print.description.1": "[Clic-Destro] per confermare la posizione corrente.", - "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", + "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", "create.schematic.tool.print.description.3": "", "create.schematic.tool.flip.description.0": "Capovolge la schematica lungo la faccia selezionata.", "create.schematic.tool.flip.description.1": "Indica la schematica e [CTRL]-Scorri per capovolgerla.", @@ -711,8 +711,8 @@ "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Sincronizzazione...", - "create.schematics.uploadTooLarge": "La schematica è troppo grande.", - "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", + "create.schematics.uploadTooLarge": "La schematica è troppo grande.", + "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", "create.gui.schematicTable.title": "Banco Schematico", "create.gui.schematicTable.availableSchematics": "Schatiche disponibili", @@ -732,13 +732,13 @@ "create.gui.schematicannon.option.replaceWithAny": "Sostituisci Solidi con Qualsiasi", "create.gui.schematicannon.option.replaceWithEmpty": "Sostituisci Solidi con il Vuoto", "create.gui.schematicannon.option.skipMissing": "Salta i Blocchi Mancanti", - "create.gui.schematicannon.option.skipTileEntities": "Proteggi i Blocchi Entità", - "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", - "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco Solido nella sua area di lavoro, solo non solidi e aria.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", - "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dal aria.", + "create.gui.schematicannon.option.skipTileEntities": "Proteggi i Blocchi Entità", + "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", + "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco Solido nella sua area di lavoro, solo non solidi e aria.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", + "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dal aria.", "create.schematicannon.status.idle": "Inattivo", "create.schematicannon.status.ready": "Pronto", @@ -747,7 +747,7 @@ "create.schematicannon.status.paused": "In Pausa", "create.schematicannon.status.stopped": "Fermato", "create.schematicannon.status.noGunpowder": "Niente Polvere da sparo", - "create.schematicannon.status.targetNotLoaded": "Il Blocco non è Caricato", + "create.schematicannon.status.targetNotLoaded": "Il Blocco non è Caricato", "create.schematicannon.status.targetOutsideRange": "Obbiettivo Troppo Lontano", "create.schematicannon.status.searching": "Ricercando", "create.schematicannon.status.skipping": "Saltando", @@ -767,21 +767,21 @@ "create.gui.filter.ignore_data": "Ignora Dati", "create.gui.filter.ignore_data.description": "Gli oggetti corrispondono indipendentemente dai loro attributi.", - "create.item_attributes.placeable": "è posizionabile", - "create.item_attributes.consumable": "può essere mangiato", - "create.item_attributes.smeltable": "può essere Fuso", - "create.item_attributes.washable": "può essere Lavato", - "create.item_attributes.smokable": "può essere Affumicato", - "create.item_attributes.blastable": "è fondibile in un Forno fusorio", - "create.item_attributes.enchanted": "è incantato", - "create.item_attributes.damaged": "è danneggiato", - "create.item_attributes.badly_damaged": "è gravemente danneggiato", + "create.item_attributes.placeable": "è posizionabile", + "create.item_attributes.consumable": "può essere mangiato", + "create.item_attributes.smeltable": "può essere Fuso", + "create.item_attributes.washable": "può essere Lavato", + "create.item_attributes.smokable": "può essere Affumicato", + "create.item_attributes.blastable": "è fondibile in un Forno fusorio", + "create.item_attributes.enchanted": "è incantato", + "create.item_attributes.damaged": "è danneggiato", + "create.item_attributes.badly_damaged": "è gravemente danneggiato", "create.item_attributes.not_stackable": "non impilabile", - "create.item_attributes.equipable": "può essere equipaggiato", - "create.item_attributes.furnace_fuel": "è il combustibile della fornace", - "create.item_attributes.in_tag": "è etichettato %1$s", + "create.item_attributes.equipable": "può essere equipaggiato", + "create.item_attributes.furnace_fuel": "è il combustibile della fornace", + "create.item_attributes.in_tag": "è etichettato %1$s", "create.item_attributes.in_item_group": "appartiene a %1$s", - "create.item_attributes.added_by": "è stato aggiunto da %1$s", + "create.item_attributes.added_by": "è stato aggiunto da %1$s", "create.gui.attribute_filter.no_selected_attributes": "Nessun attributo selezionato", "create.gui.attribute_filter.selected_attributes": "Attributi selezionati:", @@ -797,7 +797,7 @@ "create.tooltip.holdKeyOrKey": "Premi [%1$s] o [%2$s]", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Velocità Richiesta: %1$s", + "create.tooltip.speedRequirement": "Velocità Richiesta: %1$s", "create.tooltip.speedRequirement.none": "Nessuna", "create.tooltip.speedRequirement.medium": "Moderata", "create.tooltip.speedRequirement.high": "Veloce", @@ -806,7 +806,7 @@ "create.tooltip.stressImpact.medium": "Moderato", "create.tooltip.stressImpact.high": "Alto", "create.tooltip.stressImpact.overstressed": "Sovrastressato", - "create.tooltip.capacityProvided": "Capacità dello Stress: %1$s", + "create.tooltip.capacityProvided": "Capacità dello Stress: %1$s", "create.tooltip.capacityProvided.low": "Piccola", "create.tooltip.capacityProvided.medium": "Media", "create.tooltip.capacityProvided.high": "Grande", @@ -826,10 +826,10 @@ "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps avvia per rallentare artificialmente il tick del server", "create.command.killTPSCommand.argument.tickTime": "tickTime", @@ -917,7 +917,7 @@ "item.create.schematic.tooltip": "SCHEMATICA", "item.create.schematic.tooltip.summary": "Contiene una struttura da posizionare e collocare nel mondo. Posiziona l'ologramma come desiderato e usa un _Cannoneschematico_ per costruirla.", "item.create.schematic.tooltip.condition1": "Quando Tenuto", - "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli Strumenti sullo Schermo.", + "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli Strumenti sullo Schermo.", "item.create.schematic.tooltip.control1": "Clic-Destro da Accovacciato", "item.create.schematic.tooltip.action1": "Apre un'_Interfaccia_ per l'immissione di _Coordinate_ esatte.", @@ -945,19 +945,19 @@ "block.create.schematic_table.tooltip.behaviour1": "Carica un file selezionato dalla cartella Schematics.", "block.create.shaft.tooltip": "ALBERO", - "block.create.shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta.", + "block.create.shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta.", "block.create.cogwheel.tooltip": "RUOTA DENTATA", - "block.create.cogwheel.tooltip.summary": "_Rotazione_ _Relè_ in linea retta e su _Ruote_ _Dentate_ adiacenti.", + "block.create.cogwheel.tooltip.summary": "_Rotazione_ _Relè_ in linea retta e su _Ruote_ _Dentate_ adiacenti.", "block.create.large_cogwheel.tooltip": "RUOTA DENTATA GRANDE", - "block.create.large_cogwheel.tooltip.summary": "Una versione più grande della _Ruota_ _Dentata_, consente di _modificare_ la _Velocità_ _di_ _Rotazione_ quando è collegato alla sua controparte più piccola.", + "block.create.large_cogwheel.tooltip.summary": "Una versione più grande della _Ruota_ _Dentata_, consente di _modificare_ la _Velocità_ _di_ _Rotazione_ quando è collegato alla sua controparte più piccola.", "block.create.encased_shaft.tooltip": "ALBERO INCASSATO", - "block.create.encased_shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta. Adatto per propagare la rotazione attraverso le pareti.", + "block.create.encased_shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta. Adatto per propagare la rotazione attraverso le pareti.", "block.create.gearbox.tooltip": "RIDUTTORE", - "block.create.gearbox.tooltip.summary": "_Rotazione_ _Relè_ in _quatro_ _direzioni_ Inverte le connessioni diritte.", + "block.create.gearbox.tooltip.summary": "_Rotazione_ _Relè_ in _quatro_ _direzioni_ Inverte le connessioni diritte.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", @@ -973,17 +973,17 @@ "block.create.clutch.tooltip.behaviour1": "_Interrompe_ il trasferimento della rotazione dall'altro lato.", "block.create.encased_belt.tooltip": "NASTRO INCASSATO", - "block.create.encased_belt.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_", + "block.create.encased_belt.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_", "block.create.encased_belt.tooltip.condition1": "Quando Connesso", - "block.create.encased_belt.tooltip.behaviour1": "I blocchi collegati avranno la _stessa_ _velocità_ _di_ _rotazione_ e direzione esatte. Non devono affrontare allo stesso modo.", + "block.create.encased_belt.tooltip.behaviour1": "I blocchi collegati avranno la _stessa_ _velocità_ _di_ _rotazione_ e direzione esatte. Non devono affrontare allo stesso modo.", "block.create.adjustable_pulley.tooltip": "PULEGGIA ANALOGICA", - "block.create.adjustable_pulley.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_. I nastri incassati attaccati _ruoteranno_ _più_ _velocemente_ in base al _segnale_ _analogico_ _di_ _redstone_ ricevuto da questo blocco.", + "block.create.adjustable_pulley.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_. I nastri incassati attaccati _ruoteranno_ _più_ _velocemente_ in base al _segnale_ _analogico_ _di_ _redstone_ ricevuto da questo blocco.", "block.create.adjustable_pulley.tooltip.condition1": "Controllo Redstone", - "block.create.adjustable_pulley.tooltip.behaviour1": "Senza un segnale, _non_ _accelererà_ i nastri collegati. Con un segnale a piena forza collegato al nastro, la velocità _raddoppia_.", + "block.create.adjustable_pulley.tooltip.behaviour1": "Senza un segnale, _non_ _accelererà_ i nastri collegati. Con un segnale a piena forza collegato al nastro, la velocità _raddoppia_.", "item.create.belt_connector.tooltip": "NASTRO MECCANICO", - "item.create.belt_connector.tooltip.summary": "Collega due o più _Alberi_ con un _Nastro_ _Meccanico_. Gli alberi collegati avranno la stessa velocità e direzione di rotazione esatte. Il Nastro può fungere da _Trasportatore_ per _Oggetti_ ed _Entità_.", + "item.create.belt_connector.tooltip.summary": "Collega due o più _Alberi_ con un _Nastro_ _Meccanico_. Gli alberi collegati avranno la stessa velocità e direzione di rotazione esatte. Il Nastro può fungere da _Trasportatore_ per _Oggetti_ ed _Entità_.", "item.create.belt_connector.tooltip.control1": "Clic-Destro sui Alberi", "item.create.belt_connector.tooltip.action1": "Seleziona l'albero come una puleggia del Nastro. Entrambi gli Alberi selezionati devono _allinearsi_ _Verticalmente_, _Orizzontalmente_, o _Diagonalmente_ verso la direzione del Nastro.", "item.create.belt_connector.tooltip.control2": "Clic-Destro da Accovacciato", @@ -992,12 +992,12 @@ "item.create.goggles.tooltip": "OCCHIALI DA INGEGNERE", "item.create.goggles.tooltip.summary": "Un paio di occhiali per migliorare la tua visione con utili _informazioni_ _cinetiche_.", "item.create.goggles.tooltip.condition1": "Quando indossati", - "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _Livello_ _di_ _Velocità_ di un componente cinetico posizionato, nonché all'_Impatto_ _dello_ _Stress_ e la capacità dei singoli componenti.", + "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _Livello_ _di_ _Velocità_ di un componente cinetico posizionato, nonché all'_Impatto_ _dello_ _Stress_ e la capacità dei singoli componenti.", "item.create.goggles.tooltip.condition2": "Quando si guarda il calibro", - "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _Velocità_ o lo _Stress_ della rete a cui è collegato il misuratore.", + "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _Velocità_ o lo _Stress_ della rete a cui è collegato il misuratore.", "item.create.wrench.tooltip": "CHIAVE INGLESE", - "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _Ruotare_, _Smontare_ e _Configurare_ i componenti.", + "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _Ruotare_, _Smontare_ e _Configurare_ i componenti.", "item.create.wrench.tooltip.control1": "Clic-Destro su un blocco cinetico", "item.create.wrench.tooltip.action1": "_Ruota_ _i_ _componenti_ verso o lontano dalla faccia con cui hai interagito.", "item.create.wrench.tooltip.control2": "Clic-Destro da Accovacciato", @@ -1010,23 +1010,23 @@ "block.create.water_wheel.tooltip.summary": "Fornisce un _Forza_ _di_ _Rotazione_ prelevata da correnti d'_Acqua_ _Adiacenti_.", "block.create.encased_fan.tooltip": "VENTILATORE INCASSATO", - "block.create.encased_fan.tooltip.summary": "Converte la _Forza_ _di_ _Rotazione_ in _Correnti_ _d'Aria_ e ritorno. Ha una varietà di usi.", + "block.create.encased_fan.tooltip.summary": "Converte la _Forza_ _di_ _Rotazione_ in _Correnti_ _d'Aria_ e ritorno. Ha una varietà di usi.", "block.create.encased_fan.tooltip.condition1": "Quando Alimentato da Redstone", - "block.create.encased_fan.tooltip.behaviour1": "Fornisce _forza_ _di_ _rotazione_ da qualsiasi _fonte_ _di_ _calore_ immediatamente al di sotto di sé. Il ventilatore deve essere rivolto verso il basso.", + "block.create.encased_fan.tooltip.behaviour1": "Fornisce _forza_ _di_ _rotazione_ da qualsiasi _fonte_ _di_ _calore_ immediatamente al di sotto di sé. Il ventilatore deve essere rivolto verso il basso.", "block.create.encased_fan.tooltip.condition2": "Quando in Ruotazione", - "block.create.encased_fan.tooltip.behaviour2": "_Spinge_ o _Tira_ Entità, a seconda della velocità di Rotazione in entrata.", + "block.create.encased_fan.tooltip.behaviour2": "_Spinge_ o _Tira_ Entità, a seconda della velocità di Rotazione in entrata.", "block.create.encased_fan.tooltip.condition3": "Quando soffia attraverso blocchi speciali", - "block.create.encased_fan.tooltip.behaviour3": "_Liquidi_ e particelle di _Fuoco_ vengono emessi nel flusso d'aria. Questo può essere usato per _elaborare_ _oggetti_.", + "block.create.encased_fan.tooltip.behaviour3": "_Liquidi_ e particelle di _Fuoco_ vengono emessi nel flusso d'aria. Questo può essere usato per _elaborare_ _oggetti_.", "block.create.nozzle.tooltip": "UGELLO", - "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _Ventilatore_ _Incassato_ per distribuire il suo effetto sulle Entità in _tutte_ _le_ _direzioni_.", + "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _Ventilatore_ _Incassato_ per distribuire il suo effetto sulle Entità in _tutte_ _le_ _direzioni_.", "block.create.hand_crank.tooltip": "MANOVELLA", "block.create.hand_crank.tooltip.summary": "Una semplice _fonte_ di _Forza_ _di_ _Rotazione_ che richiede l'interazione dei giocatori.", "block.create.hand_crank.tooltip.condition1": "Quando usata", "block.create.hand_crank.tooltip.behaviour1": "Fornisce una _Forza_ _di_ _Rotazione_ a un aggeggio attaccato. _Accovacciati_ _per_ _invertire_ la rotazione.", - "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", + "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", "block.create.cuckoo_clock.tooltip.summary": "Artigianato raffinato per _decorare_ uno spazio e _tener_ _traccia_ _del_ _tempo_.", "block.create.cuckoo_clock.tooltip.condition1": "Quando Ruotato", "block.create.cuckoo_clock.tooltip.behaviour1": "Mostra l'_ora_ _corrente_ e suona una melodia due volte al giorno. Si _attiva_ una volta a mezzogiorno e al crepuscolo, non appena i _giocatori_ _possono_ _dormire_.", @@ -1035,7 +1035,7 @@ "block.create.turntable.tooltip.summary": "Trasforma la _Forza_ _di_ _Rotazione_ in una Raffinata Cinetosi.", "block.create.millstone.tooltip": "MACINA", - "block.create.millstone.tooltip.summary": "Un componente cinetico adatto per la _rettifica_ dei _materiali_ inseriti. Può essere alimentato da una ruota dentata adiacente o collegandosi all'albero nella parte inferiore. I risultati devono essere estratti dal componente.", + "block.create.millstone.tooltip.summary": "Un componente cinetico adatto per la _rettifica_ dei _materiali_ inseriti. Può essere alimentato da una ruota dentata adiacente o collegandosi all'albero nella parte inferiore. I risultati devono essere estratti dal componente.", "block.create.millstone.tooltip.condition1": "Quando Ruotato", "block.create.millstone.tooltip.behaviour1": "Inizia ad applicare le _ricette_ di _fresatura_ a tutti gli elementi inseriti dal lato o dalla parte superiore del blocco.", "block.create.millstone.tooltip.condition2": "Quando Toccato con Clic-Destro", @@ -1044,7 +1044,7 @@ "block.create.crushing_wheel.tooltip": "RUOTA DI FRANTUMAZIONE", "block.create.crushing_wheel.tooltip.summary": "Grandi ruote girevoli che _rompono_ qualsiasi cosa.", "block.create.crushing_wheel.tooltip.condition1": "Se collegata ad altre ruote di frantumazione", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma una frantumatrice per la lavorazione di una varietà di cose. I denti delle ruote devono connettersi e muoversi con la _stessa_ _velocità_ in _direzioni_ _opposte_.", + "block.create.crushing_wheel.tooltip.behaviour1": "Forma una frantumatrice per la lavorazione di una varietà di cose. I denti delle ruote devono connettersi e muoversi con la _stessa_ _velocità_ in _direzioni_ _opposte_.", "block.create.mechanical_press.tooltip": "PRESSA MECCANICA", "block.create.mechanical_press.tooltip.summary": "Un pistone potente per comprimere gli oggetti sottostanti. Richiede una _Forza_ _di_ _Rotazione_ costante.", @@ -1066,12 +1066,12 @@ "block.create.mechanical_mixer.tooltip.condition1": "Quando sopra a una Bacinella", "block.create.mechanical_mixer.tooltip.behaviour1": "Inizia a mescolare gli oggetti nella bacinella ogni volta che sono presenti tutti gli ingredienti necessari.", "block.create.mechanical_mixer.tooltip.condition2": "Se utilizzato con la Chiave Inglese", - "block.create.mechanical_mixer.tooltip.behaviour2": "Configura la quantità minima di _ingredienti_ _totali_ per le ricette applicate. Utilizzare questa opzione per _escludere_ _ricette_ _indesiderate_ con ingredienti simili o meno.", + "block.create.mechanical_mixer.tooltip.behaviour2": "Configura la quantità minima di _ingredienti_ _totali_ per le ricette applicate. Utilizzare questa opzione per _escludere_ _ricette_ _indesiderate_ con ingredienti simili o meno.", "block.create.mechanical_crafter.tooltip": "COSTRUTTORE MECCANICO", "block.create.mechanical_crafter.tooltip.summary": "Un assemblatore cinetico per _automatizzare_ qualsiasi ricetta di _creazione_ _modellata_. Posiziona i _multipli_ _in_ _una_ _griglia_ corrispondente alla tua ricetta, e _disponi_ _i_ _loro_ _nastri_ per creare un _flusso_ che esce dalla griglia su uno degli costruttori.", "block.create.mechanical_crafter.tooltip.condition1": "Quando ruotato", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Inizia_ _il_ _processo_ _di_ _creazione_ non appena a tutti i costruttori della griglia è stato assegnato un oggetto.", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Inizia_ _il_ _processo_ _di_ _creazione_ non appena a tutti i costruttori della griglia è stato assegnato un oggetto.", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", "block.create.mechanical_crafter.tooltip.control1": "Quando Strappato sul Davanti", @@ -1082,32 +1082,32 @@ "block.create.furnace_engine.tooltip": "MOTORE FORNACE", "block.create.furnace_engine.tooltip.summary": "Una potente fonte di _Potenza_ _Rotazionale_ che richiede un _forno_ _funzionante_ per funzionare.", "block.create.furnace_engine.tooltip.condition1": "Se Collegato alla Fornace Accesa", - "block.create.furnace_engine.tooltip.behaviour1": "_Inizia_ _a_ _alimentare_ un _Volano_ posto di fronte (a 1m di distanza). Utilizza un Forno Fusorio per velocità più elevate.", + "block.create.furnace_engine.tooltip.behaviour1": "_Inizia_ _a_ _alimentare_ un _Volano_ posto di fronte (a 1m di distanza). Utilizza un Forno Fusorio per velocità più elevate.", "block.create.flywheel.tooltip": "VOLANO", - "block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1m_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.", + "block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1m_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.", "block.create.flywheel.tooltip.condition1": "Se collegato a un Motore in Funzione", - "block.create.flywheel.tooltip.behaviour1": "Fornisce la _Forza_ _di_ _Rotazione_ a un aggeggio connesso in base alla forza e alla velocità del generatore.", + "block.create.flywheel.tooltip.behaviour1": "Fornisce la _Forza_ _di_ _Rotazione_ a un aggeggio connesso in base alla forza e alla velocità del generatore.", "block.create.portable_storage_interface.tooltip": "INTERFACCIA DI ARCHIVIAZIONE PORTATILE", "block.create.portable_storage_interface.tooltip.summary": "Un punto di interscambio portatile per _spostare_ _oggetti_ da e verso una _struttura_ mossa da un pistone, supporto, carrello da miniera o puleggia.", "block.create.portable_storage_interface.tooltip.condition1": "In Movimento", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interagisce con i _traspositori_ fissi in modo tale che i traspositori _rivolti_ _lontano_ dall'interfaccia _estraggano_ _gli_ _oggetti_, e i traspositori che puntano l'interfaccia _inseriranno_ _gli_ _oggetti_ dall'inventario allegato. Il congegno si arresterà brevemente quando gli oggetti vengono scambiati.", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagisce con i _traspositori_ fissi in modo tale che i traspositori _rivolti_ _lontano_ dall'interfaccia _estraggano_ _gli_ _oggetti_, e i traspositori che puntano l'interfaccia _inseriranno_ _gli_ _oggetti_ dall'inventario allegato. Il congegno si arresterà brevemente quando gli oggetti vengono scambiati.", - "block.create.rotation_speed_controller.tooltip": "REGOLATORE DI VELOCITÀ DI ROTAZIONE", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relè_ _configurabile_ in grado di accelerare o rallentare il componente selezionato a qualsiasi velocità desiderata.", + "block.create.rotation_speed_controller.tooltip": "REGOLATORE DI VELOCITÀ DI ROTAZIONE", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relè_ _configurabile_ in grado di accelerare o rallentare il componente selezionato a qualsiasi velocità desiderata.", "block.create.rotation_speed_controller.tooltip.condition1": "Se collegato a una Ruota Dentata Grande", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Inoltra la forza di rotazione in entrata alla ruota, cercando di far _corrispondere_ la _velocità_ con cui è configurata come obbiettivo. La ruota dentata deve essere fissata sulla parte superiore del controllo.", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Inoltra la forza di rotazione in entrata alla ruota, cercando di far _corrispondere_ la _velocità_ con cui è configurata come obbiettivo. La ruota dentata deve essere fissata sulla parte superiore del controllo.", "block.create.mechanical_piston.tooltip": "PISTOME MECCANICO", - "block.create.mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", + "block.create.mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", "block.create.mechanical_piston.tooltip.condition1": "Quando Ruotato", - "block.create.mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", + "block.create.mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", "block.create.sticky_mechanical_piston.tooltip": "PISTOME MECCANICO APPICCICOSO", - "block.create.sticky_mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_ _Appiccicoso_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_ _Appiccicoso_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Ruotato", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", "block.create.piston_extension_pole.tooltip": "PALO PISTOME", "block.create.piston_extension_pole.tooltip.summary": "Estende la gamma dei _Pistoni_ _Meccanici_.", @@ -1117,19 +1117,19 @@ "block.create.mechanical_bearing.tooltip": "SUPPORTO MECCANICO", "block.create.mechanical_bearing.tooltip.summary": "Utilizzato per ruotare _strutture_ _grandi_ o sfruttare la _Forza_ _di_ _Rotazione_ dal vento.", "block.create.mechanical_bearing.tooltip.condition1": "Quando Ruotato", - "block.create.mechanical_bearing.tooltip.behaviour1": "Inizia a ruotare i blocchi collegati. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", + "block.create.mechanical_bearing.tooltip.behaviour1": "Inizia a ruotare i blocchi collegati. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", "block.create.mechanical_bearing.tooltip.condition2": "Quando Alimentato da Redstone", "block.create.mechanical_bearing.tooltip.behaviour2": "Inizia a fornire _Forza_ _di_ _Rotazione_ generata dalla rotazione della struttura collegata. La struttura deve includere _Blocchi_ _di_ _Vela_ adatti (attualmente qualsiasi blocco di lana).", "block.create.clockwork_bearing.tooltip": "SUPPORTO DEL OROLOGIO", "block.create.clockwork_bearing.tooltip.summary": "Una versione avanzata del _Supporto_ _Meccanico_ per ruotare fino a due _lancette_ in base al _tempo_ _di_ _gioco_ corrente.", "block.create.clockwork_bearing.tooltip.condition1": "Quando Ruotato", - "block.create.clockwork_bearing.tooltip.behaviour1": "Inizia a ruotare la Struttura collegata verso l'_ora_ _corrente_. Se è presente una seconda struttura, fungerà da _lancetta_ _dei_ _minuti_.", + "block.create.clockwork_bearing.tooltip.behaviour1": "Inizia a ruotare la Struttura collegata verso l'_ora_ _corrente_. Se è presente una seconda struttura, fungerà da _lancetta_ _dei_ _minuti_.", "block.create.sequenced_gearshift.tooltip": "CAMBIO SEQUENZIALE", - "block.create.sequenced_gearshift.tooltip.summary": "Un _componente_ _di_ _utilità_ _programmabile_, che può cambiare il suo _throughput_ _rotazionale_ secondo un massimo di _5_ _istruzioni_ _consecutive_. Utilizzalo per alimentare i Supporti Meccanici, Pistoni o Pulegge con un maggiore controllo sui tempi e sulla velocità. Può diventare meno preciso a velocità più elevate.", + "block.create.sequenced_gearshift.tooltip.summary": "Un _componente_ _di_ _utilità_ _programmabile_, che può cambiare il suo _throughput_ _rotazionale_ secondo un massimo di _5_ _istruzioni_ _consecutive_. Utilizzalo per alimentare i Supporti Meccanici, Pistoni o Pulegge con un maggiore controllo sui tempi e sulla velocità. Può diventare meno preciso a velocità più elevate.", "block.create.sequenced_gearshift.tooltip.condition1": "Quando alimentato da Redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Inizia_ _l'esecuzione_ delle istruzioni programmate in base alla velocità in input.", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Inizia_ _l'esecuzione_ delle istruzioni programmate in base alla velocità in input.", "block.create.sequenced_gearshift.tooltip.condition2": "Quando Toccato con Clic-Destro", "block.create.sequenced_gearshift.tooltip.behaviour2": "Apre l'_Interfaccia_ _di_ _Configurazione_", @@ -1145,18 +1145,18 @@ "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "PULEGGIA DELLA CORDA", - "block.create.rope_pulley.tooltip.summary": "Sposta i blocchi e le strutture collegati in verticale. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", + "block.create.rope_pulley.tooltip.summary": "Sposta i blocchi e le strutture collegati in verticale. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", "block.create.rope_pulley.tooltip.condition1": "Quando Ruotato", - "block.create.rope_pulley.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla Velocità di Rotazione in input.", + "block.create.rope_pulley.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla Velocità di Rotazione in input.", "block.create.linear_chassis.tooltip": "TELAIO LINEARE", "block.create.linear_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", "block.create.linear_chassis.tooltip.condition1": "Quando Spostato", - "block.create.linear_chassis.tooltip.behaviour1": "_Sposta_ tutti i _Telai_ _attaccati_ con lo stesso orientamento e una colonna di Blocchi all'interno della sua gamma. I blocchi verranno tirati solo se la faccia del telaio è _Appiccicosa_ (Vedi con [Ctrl]).", + "block.create.linear_chassis.tooltip.behaviour1": "_Sposta_ tutti i _Telai_ _attaccati_ con lo stesso orientamento e una colonna di Blocchi all'interno della sua gamma. I blocchi verranno tirati solo se la faccia del telaio è _Appiccicosa_ (Vedi con [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "Con Chiave Inglese", "block.create.linear_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi CTRL per modificare anche la gamma di tutti i blocchi telaio collegati.", "block.create.linear_chassis.tooltip.control1": "Quando si fa Clic-Destro con la Palla di slime", - "block.create.linear_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", + "block.create.linear_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", "block.create.radial_chassis.tooltip": "TELAIO RADIALE", "block.create.radial_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", @@ -1165,17 +1165,17 @@ "block.create.radial_chassis.tooltip.condition2": "Con Chiave Inglese", "block.create.radial_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi CTRL per modificare anche la gamma di tutti i blocchi telaio collegati.", "block.create.radial_chassis.tooltip.control1": "Quando si fa Clic-Destro con la Palla di slime", - "block.create.radial_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", + "block.create.radial_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", "block.create.mechanical_drill.tooltip": "TRAPANO MECCANICO", - "block.create.mechanical_drill.tooltip.summary": "Un dispositivo meccanico adatto per _rompere_ i _blocchi_. È mobile con _Pistoni_ o _Supporti_ _meccanici_.", + "block.create.mechanical_drill.tooltip.summary": "Un dispositivo meccanico adatto per _rompere_ i _blocchi_. È mobile con _Pistoni_ o _Supporti_ _meccanici_.", "block.create.mechanical_drill.tooltip.condition1": "Quando Ruotato", - "block.create.mechanical_drill.tooltip.behaviour1": "Funziona come un Rompi blocchi _stazionario_. Fa anche _male_ _alle_ _entità_ nella sua area effettiva", + "block.create.mechanical_drill.tooltip.behaviour1": "Funziona come un Rompi blocchi _stazionario_. Fa anche _male_ _alle_ _entità_ nella sua area effettiva", "block.create.mechanical_drill.tooltip.condition2": "In Movimento", "block.create.mechanical_drill.tooltip.behaviour2": "Rompe i blocchi con cui il trapano si scontra.", "block.create.mechanical_harvester.tooltip": "MIETITRICE MECCANICA", - "block.create.mechanical_harvester.tooltip.summary": "Una mietitrice meccanica adatta per l'automazione delle colture di medie dimensioni. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.mechanical_harvester.tooltip.summary": "Una mietitrice meccanica adatta per l'automazione delle colture di medie dimensioni. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", "block.create.mechanical_harvester.tooltip.condition1": "In Movimento", "block.create.mechanical_harvester.tooltip.behaviour1": "_Raccoglie_ tutte le _colture_ _mature_ con cui la lama si scontra e ripristina il loro stato iniziale di crescita.", @@ -1185,7 +1185,7 @@ "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", "block.create.mechanical_saw.tooltip": "SEGA MECCANICA", - "block.create.mechanical_saw.tooltip.summary": "Adatto per _tagliare_ _alberi_ in modo efficace e per _tagliare_ _blocchi_ nelle loro controparti carpentate. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.mechanical_saw.tooltip.summary": "Adatto per _tagliare_ _alberi_ in modo efficace e per _tagliare_ _blocchi_ nelle loro controparti carpentate. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", "block.create.mechanical_saw.tooltip.condition1": "Di fronte", "block.create.mechanical_saw.tooltip.behaviour1": "Applica le _Ricette_ di _Segatura_ e _Lavorazione_ _della_ _Pietra_ agli oggetti rilasciati o inseriti al suo interno. Quando sono possibili gli output, le scorre ciclicamente a meno che non sia assegnato un _filtro_.", "block.create.mechanical_saw.tooltip.condition2": "Di fronte in orizzontale", @@ -1203,13 +1203,13 @@ "block.create.stockpile_switch.tooltip.action1": "Apre l'_Interfaccia_ _di_ _Configurazione_.", "block.create.redstone_link.tooltip": "COLLEGAMENTO REDSTONE", - "block.create.redstone_link.tooltip.summary": "Endpoint per connessioni _Wireless_ _di_ _Redstone_. Le _Frequenze_ possono essere assegnate utilizzando qualsiasi oggetto. La gamma del segnale è limitata, sebbene ragionevolmente lontana.", + "block.create.redstone_link.tooltip.summary": "Endpoint per connessioni _Wireless_ _di_ _Redstone_. Le _Frequenze_ possono essere assegnate utilizzando qualsiasi oggetto. La gamma del segnale è limitata, sebbene ragionevolmente lontana.", "block.create.redstone_link.tooltip.condition1": "Quando Alimentato", - "block.create.redstone_link.tooltip.behaviour1": "La ricezione di collegamenti della stessa _Frequenza_ produrrà un segnale Redstone.", + "block.create.redstone_link.tooltip.behaviour1": "La ricezione di collegamenti della stessa _Frequenza_ produrrà un segnale Redstone.", "block.create.redstone_link.tooltip.control1": "Quando Clic-Destro su un oggetto", - "block.create.redstone_link.tooltip.action1": "Imposta la _Frequenza_ su quell'oggetto. È possibile utilizzare un totale di _due_ _oggetti_ _differenti_ in combinazione per definire una frequenza.", + "block.create.redstone_link.tooltip.action1": "Imposta la _Frequenza_ su quell'oggetto. È possibile utilizzare un totale di _due_ _oggetti_ _differenti_ in combinazione per definire una frequenza.", "block.create.redstone_link.tooltip.control2": "Clic-Destro da Accovacciato", - "block.create.redstone_link.tooltip.action2": "Alterna tra la modalità _Ricevitore_ e _Trasmettitore_.", + "block.create.redstone_link.tooltip.action2": "Alterna tra la modalità _Ricevitore_ e _Trasmettitore_.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,14 +1217,14 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "CONTATTO REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Emette solo un segnale di pietrarossa in coppia. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.redstone_contact.tooltip.summary": "Emette solo un segnale di pietrarossa in coppia. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", "block.create.redstone_contact.tooltip.condition1": "Di fronte ad altri Contatti", "block.create.redstone_contact.tooltip.behaviour1": "Fornisce un _Segnale_ _Redstone_.", "block.create.redstone_contact.tooltip.condition2": "In Movimento", "block.create.redstone_contact.tooltip.behaviour2": "Attiva tutti i contatti fissi che passa.", "block.create.adjustable_crate.tooltip": "BAULE REGOLABILE", - "block.create.adjustable_crate.tooltip.summary": "Questo _Contenitore_ _di_ _Stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _Pile_ di qualsiasi oggetto. Supporta _Comparatori_ _Redstone_.", + "block.create.adjustable_crate.tooltip.summary": "Questo _Contenitore_ _di_ _Stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _Pile_ di qualsiasi oggetto. Supporta _Comparatori_ _Redstone_.", "block.create.adjustable_crate.tooltip.control1": "Quando Cliccato con Clic-Destro", "block.create.adjustable_crate.tooltip.action1": "Apre l'_Interfaccia_.", @@ -1234,42 +1234,42 @@ "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "ESTRATTORE", - "block.create.extractor.tooltip.summary": "_Prende_ _Oggetti_ da un _Inventario _ allegato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.extractor.tooltip.summary": "_Prende_ _Oggetti_ da un _Inventario _ allegato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_.", "block.create.extractor.tooltip.condition1": "Quando alimentato da Redstone", "block.create.extractor.tooltip.behaviour1": "_Ferma_ l'Estrattore.", "block.create.extractor.tooltip.condition2": "Attiva Tiraggio del Nastro", - "block.create.extractor.tooltip.behaviour2": "Gli estrattori possono estrarre oggetti _da_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando l'estrattore è bloccato, il _nastro_ _si_ _arresterà_.", + "block.create.extractor.tooltip.behaviour2": "Gli estrattori possono estrarre oggetti _da_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando l'estrattore è bloccato, il _nastro_ _si_ _arresterà_.", "block.create.extractor.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", - "block.create.extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", "block.create.transposer.tooltip": "TRASPOSITORE", - "block.create.transposer.tooltip.summary": "_Prende_ _oggetti_ da un _inventario_ allegato e li inserisce immediatamente nell'_inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.transposer.tooltip.summary": "_Prende_ _oggetti_ da un _inventario_ allegato e li inserisce immediatamente nell'_inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_.", "block.create.transposer.tooltip.condition1": "Quando Alimentato da Redstone", "block.create.transposer.tooltip.behaviour1": "_Ferma_ il Traspositore.", "block.create.transposer.tooltip.condition2": "Attiva Tiraggio del Nastro", - "block.create.transposer.tooltip.behaviour2": "I Traspositori possono estrarre oggetti _dai_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando viene eseguito il backup del traspositore, il _nastro_ _si_ _arresterà_.", + "block.create.transposer.tooltip.behaviour2": "I Traspositori possono estrarre oggetti _dai_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando viene eseguito il backup del traspositore, il _nastro_ _si_ _arresterà_.", "block.create.transposer.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", - "block.create.transposer.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.transposer.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", "block.create.deployer.tooltip": "INSTALLATORE", - "block.create.deployer.tooltip.summary": "_Punzoni_, _Usi_ e _Attivazioni_. Questa macchina proverà a _imitare_ un _giocatore_ il più possibile. Può _Prendere_ e _depositare_ _oggetti_ nell'_Inventario_ adiacente. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.deployer.tooltip.summary": "_Punzoni_, _Usi_ e _Attivazioni_. Questa macchina proverà a _imitare_ un _giocatore_ il più possibile. Può _Prendere_ e _depositare_ _oggetti_ nell'_Inventario_ adiacente. Può essere assegnata una pila di oggetti come _filtro_.", "block.create.deployer.tooltip.condition1": "Quando Ruotato", - "block.create.deployer.tooltip.behaviour1": "Allunga il braccio e si _attiva_ nello spazio di un blocco _2m_ _davanti_ a sé.", + "block.create.deployer.tooltip.behaviour1": "Allunga il braccio e si _attiva_ nello spazio di un blocco _2m_ _davanti_ a sé.", "block.create.deployer.tooltip.condition2": "Clic-Destro con la Chiave Inglese", - "block.create.deployer.tooltip.behaviour2": "Attiva / disattiva la modalità di perforazione. In _modalità_ _pugno_, l'Installatore tenterà di usare il suo oggetto per _rompere_ _blocchi_ o _ferire_ _entità_.", + "block.create.deployer.tooltip.behaviour2": "Attiva / disattiva la modalità di perforazione. In _modalità_ _pugno_, l'Installatore tenterà di usare il suo oggetto per _rompere_ _blocchi_ o _ferire_ _entità_.", "block.create.linked_extractor.tooltip": "ESTRATTORE CONNESSO", - "block.create.linked_extractor.tooltip.summary": "_Prende_ _gli_ _oggetti_ da un _Inventario_ attaccato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", - "block.create.linked_extractor.tooltip.condition1": "Quando il Collegamento Redstone è attivo", + "block.create.linked_extractor.tooltip.summary": "_Prende_ _gli_ _oggetti_ da un _Inventario_ attaccato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", + "block.create.linked_extractor.tooltip.condition1": "Quando il Collegamento Redstone è attivo", "block.create.linked_extractor.tooltip.behaviour1": "_Ferma_ l'Estrattore.", "block.create.linked_extractor.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", - "block.create.linked_extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.linked_extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", "block.create.linked_extractor.tooltip.control2": "Clic-Destro sullo Spazio di Frequenza", "block.create.linked_extractor.tooltip.action2": "Assegna l'_oggetto_ attualmente _trattenuto_ come parte della Frequenza ascoltata. Ogni volta che viene alimentato un _Collegamento_ _Redstone_ della stessa frequenza di trasmissione, questo estrattore si mette in pausa.", "block.create.linked_transposer.tooltip": "TRASPOSITORE CONNESSO", - "block.create.linked_transposer.tooltip.summary": "_Prende_ _oggetti_ da un _Inventario_ allegato e li inserisce immediatamente nell'_Inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", - "block.create.linked_transposer.tooltip.condition1": "Quando il Collegamento Redstone è Attivo", + "block.create.linked_transposer.tooltip.summary": "_Prende_ _oggetti_ da un _Inventario_ allegato e li inserisce immediatamente nell'_Inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", + "block.create.linked_transposer.tooltip.condition1": "Quando il Collegamento Redstone è Attivo", "block.create.linked_transposer.tooltip.behaviour1": "_Ferma_ il Traspositore.", "block.create.linked_transposer.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", "block.create.linked_transposer.tooltip.action1": "Assegna la _pila_ attualmente _tenuta_ come _Filtro_. Il Traspositore estrae solo gli oggetti che corrispondono al tipo di oggetto e al conteggio della pila di filtri.", @@ -1277,7 +1277,7 @@ "block.create.linked_transposer.tooltip.action2": "Assegna l'_oggetto_ attualmente _tenuto_ come parte della Frequenza ascoltata. Ogni volta che viene alimentato un _Collegamento_ _Redstone_ della stessa frequenza di trasmissione, questo Traspositore si ferma.", "block.create.funnel.tooltip": "IMBUTO", - "block.create.funnel.tooltip.summary": "_Raccoglie_ _gli_ _oggetti_ _in_ _arrivo_ e li inserisce nell'_inventario_ allegato, se possibile. Può raccogliere oggetti nel _mondo_ e oggetti su un _nastro_.", + "block.create.funnel.tooltip.summary": "_Raccoglie_ _gli_ _oggetti_ _in_ _arrivo_ e li inserisce nell'_inventario_ allegato, se possibile. Può raccogliere oggetti nel _mondo_ e oggetti su un _nastro_.", "block.create.funnel.tooltip.condition1": "Tirare il Nastro passivamente", "block.create.funnel.tooltip.behaviour1": "Gli imbuti possono estrarre gli oggetti _dai_ _nastri_ quando vengono posizionati sopra di essi, lateralmente o alla fine. Quando viene eseguito il backup di un imbuto laterale, gli oggetti sul _nastro_ _non_ _si_ _arrestano_.", @@ -1289,20 +1289,20 @@ "block.create.belt_tunnel.tooltip.action2": "_Regola_ _le_ _finestre_ se il tunnel ha una finestra su quella faccia.", "block.create.brass_casing.tooltip": "INVOLUCRO DI OTTONE", - "block.create.brass_casing.tooltip.summary": "Involucro delle macchine robusto con una varietà di usi. Di sicuro per la decorazione.", + "block.create.brass_casing.tooltip.summary": "Involucro delle macchine robusto con una varietà di usi. Di sicuro per la decorazione.", "block.create.brass_casing.tooltip.condition1": "Se utilizzato su un Nastro Meccanico", "block.create.brass_casing.tooltip.behaviour1": "_Rinforza_ _i_ _nastri_ con una base in ottone. I nastri rinforzati possono supportare i _Tunnel_ _Trasportatori_, _Estrattori_, _Imbuti_ e _Traspositori_ interagendo con i nastri dai lati e sotto.", "block.create.belt_observer.tooltip": "OSSERVATORE A CINGHIA", - "block.create.belt_observer.tooltip.summary": "Rileva oggetti ed entità che passano su un _Nastro_ _Meccanico_ di fronte. Usa una _Chiave_ _Inglese_ per scorrere il suo comportamento. I non oggetti verranno sempre gestiti in modalità rilevamento indipendentemente dall'impostazione.", - "block.create.belt_observer.tooltip.condition1": "Modalità di Rilevamento", + "block.create.belt_observer.tooltip.summary": "Rileva oggetti ed entità che passano su un _Nastro_ _Meccanico_ di fronte. Usa una _Chiave_ _Inglese_ per scorrere il suo comportamento. I non oggetti verranno sempre gestiti in modalità rilevamento indipendentemente dall'impostazione.", + "block.create.belt_observer.tooltip.condition1": "Modalità di Rilevamento", "block.create.belt_observer.tooltip.behaviour1": "Fornisce un segnale redstone _mentre_ un _oggetto_ _corrispondente_ si _trova_ nel segmento del nastro osservato.", - "block.create.belt_observer.tooltip.condition2": "Modalità a Impulsi", + "block.create.belt_observer.tooltip.condition2": "Modalità a Impulsi", "block.create.belt_observer.tooltip.behaviour2": "Emette un _impulso_ quando un _oggetto_ _corrispondente_ _passa_ al centro del segmento del nastro osservato.", - "block.create.belt_observer.tooltip.condition3": "Modalità di Espulsione", - "block.create.belt_observer.tooltip.behaviour3": "_Espelle_ _gli_ _oggetti_ _corrispondenti_ dal lato. Se il nastro bersaglio o lo spazio è _occupato_, l'oggetto verrà _tenuto_ _in_ _posizione_.", - "block.create.belt_observer.tooltip.condition4": "Modalità Divisa", - "block.create.belt_observer.tooltip.behaviour4": "_Divide_ una _pila_ _di_ _oggetti_ _corrispondenti_ ed _espelle_ _metà_ di essa dal lato.", + "block.create.belt_observer.tooltip.condition3": "Modalità di Espulsione", + "block.create.belt_observer.tooltip.behaviour3": "_Espelle_ _gli_ _oggetti_ _corrispondenti_ dal lato. Se il nastro bersaglio o lo spazio è _occupato_, l'oggetto verrà _tenuto_ _in_ _posizione_.", + "block.create.belt_observer.tooltip.condition4": "Modalità Divisa", + "block.create.belt_observer.tooltip.behaviour4": "_Divide_ una _pila_ _di_ _oggetti_ _corrispondenti_ ed _espelle_ _metà_ di essa dal lato.", "block.create.pulse_repeater.tooltip": "RIPETITORE DI IMPULSI", "block.create.pulse_repeater.tooltip.summary": "Un semplice circuito per tagliare i segnali redstone di passaggio ad una lunghezza di _1_ _tick_.", @@ -1314,26 +1314,26 @@ "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _Ripetitore_ _di_ _Impulsi_ con un _Ritardo_ _configurabile_ fino a 30 minuti.", "block.create.analog_lever.tooltip": "LEVA ANALOGICA", - "block.create.analog_lever.tooltip.summary": "Una leva con un _controllo_ _più_ _preciso_ sulla _potenza_ _del_ _segnale_ emesso.", + "block.create.analog_lever.tooltip.summary": "Una leva con un _controllo_ _più_ _preciso_ sulla _potenza_ _del_ _segnale_ emesso.", "block.create.powered_toggle_latch.tooltip": "LEVA ALIMENTATA ALTERATA", - "block.create.powered_toggle_latch.tooltip.summary": "Una leva che può essere attivata/disattivata da un _Impulso_ _Redstone_.", + "block.create.powered_toggle_latch.tooltip.summary": "Una leva che può essere attivata/disattivata da un _Impulso_ _Redstone_.", "block.create.powered_latch.tooltip": "LEVA ALIMENTATA", - "block.create.powered_latch.tooltip.summary": "Una leva che può essere controllata dai _Segnali_ _Redstone. Un segnale sul _retro_ _la_ _abilita_, un _segnale_ _laterale_ _la_ _resetterà_ .", + "block.create.powered_latch.tooltip.summary": "Una leva che può essere controllata dai _Segnali_ _Redstone. Un segnale sul _retro_ _la_ _abilita_, un _segnale_ _laterale_ _la_ _resetterà_ .", "block.create.speedometer.tooltip": "TACHIMETRO", - "block.create.speedometer.tooltip.summary": "Misura e visualizza la _velocità_ _di_ _rotazione_ dei componenti cinetici collegati. Supporta _Comparatori_ _Redstone_.", + "block.create.speedometer.tooltip.summary": "Misura e visualizza la _velocità_ _di_ _rotazione_ dei componenti cinetici collegati. Supporta _Comparatori_ _Redstone_.", "block.create.speedometer.tooltip.condition1": "Quando Ruotato", - "block.create.speedometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di velocità. Il _Verde_ indica una rotazione Lenta, _Blu_ Moderata e _Viola_ Veloce. Alcuni componenti meccanici richiedono un livello di velocità sufficiente per funzionare correttamente.", + "block.create.speedometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di velocità. Il _Verde_ indica una rotazione Lenta, _Blu_ Moderata e _Viola_ Veloce. Alcuni componenti meccanici richiedono un livello di velocità sufficiente per funzionare correttamente.", "block.create.stressometer.tooltip": "STRESSOMETRO", "block.create.stressometer.tooltip.summary": "Misura e visualizza lo _stress_ _complessivo_ della rete cinetica collegata. Supporta _Comparatori_ _Redstone_.", "block.create.stressometer.tooltip.condition1": "Quando Ruotato", - "block.create.stressometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di stress. Le _reti_ _troppo_ _stressate_ cesseranno di muoversi. Lo stress può essere alleviato aggiungendo più _fonti_ _di_ _rotazione_ alla rete.", + "block.create.stressometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di stress. Le _reti_ _troppo_ _stressate_ cesseranno di muoversi. Lo stress può essere alleviato aggiungendo più _fonti_ _di_ _rotazione_ alla rete.", "tool.create.sand_paper.tooltip": "CARTA VETRATA", - "tool.create.sand_paper.tooltip.summary": "Una carta ruvida che può essere utilizzata per _levigare_ _materiali_ o affilare i tuoi _strumenti_.", + "tool.create.sand_paper.tooltip.summary": "Una carta ruvida che può essere utilizzata per _levigare_ _materiali_ o affilare i tuoi _strumenti_.", "tool.create.sand_paper.tooltip.condition1": "Quando Usata", "tool.create.sand_paper.tooltip.behaviour1": "Applica la lucidatura agli oggetti _tenuti_ _in_ _mano_ o distesi a _terra_ quando _li_ _guardi_", @@ -1351,16 +1351,16 @@ "item.create.shadow_steel.tooltip.summary": "Un Materiale Cromatico forgiato _nel_ _vuoto_.", "item.create.crafter_slot_cover.tooltip": "RIVESTIMENTO SLOT CREAZIONE", - "item.create.crafter_slot_cover.tooltip.summary": "Utilizzato per coprire uno slot vuoto in un _Costruttore_ _Meccanico_ in una ricetta. I Costruttori non devono necessariamente formare una griglia quadrata completa. Questo è utile quando ci sono ricette in cui gli _ingredienti_ _sono_ _in_ _diagonale_ tra loro.", + "item.create.crafter_slot_cover.tooltip.summary": "Utilizzato per coprire uno slot vuoto in un _Costruttore_ _Meccanico_ in una ricetta. I Costruttori non devono necessariamente formare una griglia quadrata completa. Questo è utile quando ci sono ricette in cui gli _ingredienti_ _sono_ _in_ _diagonale_ tra loro.", "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "Work in progress!", "create.tooltip.randomWipDescription0": "Si prega di tenere questo oggetto lontano dai bambini.", "create.tooltip.randomWipDescription1": "Un cucciolo di panda muore ogni volta che usi questo oggetto. Ogni. Volta.", "create.tooltip.randomWipDescription2": "Da utilizzare a proprio rischio.", - "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* perfavore dispartene.", - "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Credimi, è inutile.", + "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* perfavore dispartene.", + "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Credimi, è inutile.", "create.tooltip.randomWipDescription6": "Utilizzando questo articolo, acconsenti al nostro disclaimer e accetti i suoi termini.", "create.tooltip.randomWipDescription7": "Questo forse non fa per te. Che ne dici di quello?", "create.tooltip.randomWipDescription8": "Usalo e rimpiangi immediatamente la tua decisione.", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index eb1aba63d..8774371a5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -5,31 +5,31 @@ "block.create.acacia_window": "UNLOCALIZED: Acacia Window", "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_crate": "調整可能なクレート", - "block.create.adjustable_pulley": "アナログベルトプーリー", - "block.create.adjustable_pulse_repeater": "調整可能なパルスリピーター", - "block.create.adjustable_repeater": "調整可能なリピーター", - "block.create.analog_lever": "アナログレバー", - "block.create.andesite_bricks": "安山岩レンガ", + "block.create.adjustable_crate": "調整å�¯èƒ½ã�ªã‚¯ãƒ¬ãƒ¼ãƒˆ", + "block.create.adjustable_pulley": "アナログベルトプーリー", + "block.create.adjustable_pulse_repeater": "調整å�¯èƒ½ã�ªãƒ‘ルスリピーター", + "block.create.adjustable_repeater": "調整å�¯èƒ½ã�ªãƒªãƒ”ーター", + "block.create.analog_lever": "アナログレãƒ�ー", + "block.create.andesite_bricks": "安山岩レンガ", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "安山岩ケーシング", + "block.create.andesite_casing": "安山岩ケーシング", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", - "block.create.basin": "鉢", - "block.create.belt": "メカニカルベルト", + "block.create.basin": "鉢", + "block.create.belt": "メカニカルベルト", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "ベルトオブザーバー", - "block.create.belt_tunnel": "コンベアトンネル", + "block.create.belt_observer": "ベルトオブザーãƒ�ー", + "block.create.belt_tunnel": "コンベアトンãƒ�ル", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.brass_block": "真鍮ブロック", - "block.create.brass_casing": "真鍮ケーシング", - "block.create.cart_assembler": "カートアセンブラ", + "block.create.brass_block": "真é�®ãƒ–ロック", + "block.create.brass_casing": "真é�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°", + "block.create.cart_assembler": "カートアセンブラ", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", @@ -38,33 +38,33 @@ "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "時計仕掛けのベアリング", - "block.create.clutch": "クラッチ", - "block.create.cogwheel": "歯車", - "block.create.copper_block": "銅ブロック", - "block.create.copper_casing": "銅ケーシング", - "block.create.copper_ore": "銅鉱石", - "block.create.copper_shingles": "銅のこけら板", - "block.create.creative_crate": "概略図砲クリエティフィアー", - "block.create.creative_motor": "モーター", - "block.create.crushing_wheel": "破砕ホイール", + "block.create.clockwork_bearing": "時計仕掛ã�‘ã�®ãƒ™ã‚¢ãƒªãƒ³ã‚°", + "block.create.clutch": "クラッãƒ�", + "block.create.cogwheel": "歯車", + "block.create.copper_block": "銅ブロック", + "block.create.copper_casing": "銅ケーシング", + "block.create.copper_ore": "銅鉱石", + "block.create.copper_shingles": "銅ã�®ã�“ã�‘らæ�¿", + "block.create.creative_crate": "概略図砲クリエティフィアー", + "block.create.creative_motor": "モーター", + "block.create.crushing_wheel": "破砕ホイール", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "鳩時計", + "block.create.cuckoo_clock": "鳩時計", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "ダークスコリア", - "block.create.dark_scoria_bricks": "ダークスコリアレンガ", - "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガのハーフブロック", - "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガの階段", - "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガの塀", + "block.create.dark_scoria": "ダークスコリア", + "block.create.dark_scoria_bricks": "ダークスコリアレンガ", + "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガã�®ãƒ�ーフブロック", + "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガã�®éšŽæ®µ", + "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガã�®å¡€", "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "デプロイヤー", + "block.create.deployer": "デプロイヤー", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "閃緑岩レンガ", + "block.create.diorite_bricks": "閃緑岩レンガ", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", @@ -73,20 +73,20 @@ "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "苦灰石", - "block.create.dolomite_bricks": "苦灰石レンガ", - "block.create.dolomite_bricks_slab": "苦灰石レンガのハーフブロック", - "block.create.dolomite_bricks_stairs": "苦灰石レンガの階段", - "block.create.dolomite_bricks_wall": "苦灰石レンガの塀", + "block.create.dolomite": "苦ç�°çŸ³", + "block.create.dolomite_bricks": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬", + "block.create.dolomite_bricks_slab": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬ã�®ãƒ�ーフブロック", + "block.create.dolomite_bricks_stairs": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬ã�®éšŽæ®µ", + "block.create.dolomite_bricks_wall": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬ã�®å¡€", "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "苦灰石の柱", - "block.create.encased_belt": "ケース入りベルト", - "block.create.encased_fan": "ケース入りファン", - "block.create.encased_shaft": "ケース入りシャフト", - "block.create.extractor": "エクストラクター", + "block.create.dolomite_pillar": "苦ç�°çŸ³ã�®æŸ±", + "block.create.encased_belt": "ケース入りベルト", + "block.create.encased_fan": "ケース入りファン", + "block.create.encased_shaft": "ケース入りシャフト", + "block.create.extractor": "エクストラクター", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", @@ -125,24 +125,24 @@ "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.flywheel": "勢車", - "block.create.framed_glass": "大きなガラス窓", - "block.create.framed_glass_pane": "大きなガラス窓板", - "block.create.funnel": "漏斗", - "block.create.furnace_engine": "かまどエンジン", - "block.create.gabbro": "斑れい岩", - "block.create.gabbro_bricks": "斑れい岩レンガ", + "block.create.flywheel": "勢車", + "block.create.framed_glass": "大ã��ã�ªã‚¬ãƒ©ã‚¹çª“", + "block.create.framed_glass_pane": "大ã��ã�ªã‚¬ãƒ©ã‚¹çª“æ�¿", + "block.create.funnel": "æ¼�æ–—", + "block.create.furnace_engine": "ã�‹ã�¾ã�©ã‚¨ãƒ³ã‚¸ãƒ³", + "block.create.gabbro": "æ–‘ã‚Œã�„岩", + "block.create.gabbro_bricks": "æ–‘ã‚Œã�„岩レンガ", "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "斑れい岩レンガの階段", - "block.create.gabbro_bricks_wall": "斑れい岩レンガの塀", + "block.create.gabbro_bricks_stairs": "æ–‘ã‚Œã�„岩レンガã�®éšŽæ®µ", + "block.create.gabbro_bricks_wall": "æ–‘ã‚Œã�„岩レンガã�®å¡€", "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "ギアボックス", - "block.create.gearshift": "ギアシフト", - "block.create.granite_bricks": "花崗岩レンガ", + "block.create.gearbox": "ギアボックス", + "block.create.gearshift": "ギアシフト", + "block.create.granite_bricks": "花崗岩レンガ", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", @@ -151,12 +151,12 @@ "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.hand_crank": "ハンドクランク", - "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", + "block.create.hand_crank": "ãƒ�ンドクランク", + "block.create.horizontal_framed_glass": "横型ガラス窓", + "block.create.horizontal_framed_glass_pane": "横型ガラス窓æ�¿", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "大きな歯車", + "block.create.large_cogwheel": "大ã��ã�ªæ­¯è»Š", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -166,33 +166,33 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "石灰砕砂", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩レンガ", - "block.create.limestone_bricks_slab": "石灰岩レンガのハーフブロック", - "block.create.limestone_bricks_stairs": "石灰岩レンガの階段", - "block.create.limestone_bricks_wall": "石灰岩レンガの塀", + "block.create.limesand": "石ç�°ç •ç ‚", + "block.create.limestone": "石ç�°å²©", + "block.create.limestone_bricks": "石ç�°å²©ãƒ¬ãƒ³ã‚¬", + "block.create.limestone_bricks_slab": "石ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®ãƒ�ーフブロック", + "block.create.limestone_bricks_stairs": "石ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®éšŽæ®µ", + "block.create.limestone_bricks_wall": "石ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®å¡€", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "石灰岩の柱", - "block.create.linear_chassis": "リニアシャーシ", - "block.create.linked_extractor": "リンクされたエクストラクター", - "block.create.linked_transposer": "リンクされたトランスポーザー", + "block.create.limestone_pillar": "石ç�°å²©ã�®æŸ±", + "block.create.linear_chassis": "リニアシャーシ", + "block.create.linked_extractor": "リンクã�•ã‚Œã�Ÿã‚¨ã‚¯ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ¼", + "block.create.linked_transposer": "リンクã�•ã‚Œã�Ÿãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザー", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "メカニカルベアリング", - "block.create.mechanical_crafter": "メカニカルクラフター", - "block.create.mechanical_drill": "メカニカルドリル", - "block.create.mechanical_harvester": "メカニカルハーベスター", - "block.create.mechanical_mixer": "メカニカルミキサー", - "block.create.mechanical_piston": "メカニカルピストン", - "block.create.mechanical_piston_head": "メカニカルピストンヘッド", + "block.create.mechanical_bearing": "メカニカルベアリング", + "block.create.mechanical_crafter": "メカニカルクラフター", + "block.create.mechanical_drill": "メカニカルドリル", + "block.create.mechanical_harvester": "メカニカルãƒ�ーベスター", + "block.create.mechanical_mixer": "メカニカルミキサー", + "block.create.mechanical_piston": "メカニカルピストン", + "block.create.mechanical_piston_head": "メカニカルピストンヘッド", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "メカニカルプレス", + "block.create.mechanical_press": "メカニカルプレス", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "メカニカル鋸", - "block.create.millstone": "石臼", + "block.create.mechanical_saw": "メカニカル鋸", + "block.create.millstone": "石臼", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", @@ -204,9 +204,9 @@ "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "自然スコリア", + "block.create.natural_scoria": "自然スコリア", "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "ノズル", + "block.create.nozzle": "ノズル", "block.create.oak_window": "UNLOCALIZED: Oak Window", "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", @@ -257,48 +257,48 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "ピストン延長ポール", - "block.create.polished_dark_scoria": "磨かれたダークスコリア", + "block.create.piston_extension_pole": "ピストン延長ãƒ�ール", + "block.create.polished_dark_scoria": "磨ã�‹ã‚Œã�Ÿãƒ€ãƒ¼ã‚¯ã‚¹ã‚³ãƒªã‚¢", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "磨かれた苦灰石", + "block.create.polished_dolomite": "磨ã�‹ã‚Œã�Ÿè‹¦ç�°çŸ³", "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "磨かれた斑れい岩", + "block.create.polished_gabbro": "磨ã�‹ã‚Œã�Ÿæ–‘ã‚Œã�„岩", "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "磨かれた石灰岩", - "block.create.polished_limestone_slab": "磨かれた石灰岩のハーフブロック", + "block.create.polished_limestone": "磨ã�‹ã‚Œã�ŸçŸ³ç�°å²©", + "block.create.polished_limestone_slab": "磨ã�‹ã‚Œã�ŸçŸ³ç�°å²©ã�®ãƒ�ーフブロック", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "磨かれたスコリア", - "block.create.polished_scoria_slab": "磨かれたスコリアのハーフブロック", + "block.create.polished_scoria": "磨ã�‹ã‚Œã�Ÿã‚¹ã‚³ãƒªã‚¢", + "block.create.polished_scoria_slab": "磨ã�‹ã‚Œã�Ÿã‚¹ã‚³ãƒªã‚¢ã�®ãƒ�ーフブロック", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "磨かれた風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨かれた風化石灰岩のハーフブロック", + "block.create.polished_weathered_limestone": "磨ã�‹ã‚Œã�Ÿé¢¨åŒ–石ç�°å²©", + "block.create.polished_weathered_limestone_slab": "磨ã�‹ã‚Œã�Ÿé¢¨åŒ–石ç�°å²©ã�®ãƒ�ーフブロック", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_storage_interface": "ポータブルストレージインターフェイス", - "block.create.powered_latch": "パワードラッチ", - "block.create.powered_toggle_latch": "パワードトグルラッチ", - "block.create.pulley_magnet": "プーリーマグネット", - "block.create.pulse_repeater": "パルスリピーター", - "block.create.radial_chassis": "ラジアルシャーシ", + "block.create.portable_storage_interface": "ãƒ�ータブルストレージインターフェイス", + "block.create.powered_latch": "パワードラッãƒ�", + "block.create.powered_toggle_latch": "パワードトグルラッãƒ�", + "block.create.pulley_magnet": "プーリーマグãƒ�ット", + "block.create.pulse_repeater": "パルスリピーター", + "block.create.radial_chassis": "ラジアルシャーシ", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "レッドストーンコンタクト", - "block.create.redstone_link": "レッドストーンリンク", + "block.create.redstone_contact": "レッドストーンコンタクト", + "block.create.redstone_link": "レッドストーンリンク", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "ロープ", - "block.create.rope_pulley": "ローププーリー", - "block.create.rotation_speed_controller": "回転速度制御器", - "block.create.schematic_table": "概略図テーブル", - "block.create.schematicannon": "概略図砲", - "block.create.scoria": "スコリア", - "block.create.scoria_bricks": "スコリアレンガ", + "block.create.rope": "ロープ", + "block.create.rope_pulley": "ローププーリー", + "block.create.rotation_speed_controller": "回転速度制御器", + "block.create.schematic_table": "概略図テーブル", + "block.create.schematicannon": "概略図砲", + "block.create.scoria": "スコリア", + "block.create.scoria_bricks": "スコリアレンガ", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", @@ -306,96 +306,96 @@ "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "スコリアの柱", + "block.create.scoria_pillar": "スコリアã�®æŸ±", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "シーケンスギアシフト", - "block.create.shaft": "軸", - "block.create.speedometer": "スピードメーター", + "block.create.sequenced_gearshift": "シーケンスギアシフト", + "block.create.shaft": "軸", + "block.create.speedometer": "スピードメーター", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "粘着メカニカルピストン", - "block.create.stockpile_switch": "在庫スイッチ", - "block.create.stressometer": "ストレスメーター", - "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイルガラス板", - "block.create.transposer": "トランスポーザー", - "block.create.turntable": "ターンテーブル", + "block.create.sticky_mechanical_piston": "粘ç�€ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ”ストン", + "block.create.stockpile_switch": "在庫スイッãƒ�", + "block.create.stressometer": "ストレスメーター", + "block.create.tiled_glass": "タイルガラス", + "block.create.tiled_glass_pane": "タイルガラスæ�¿", + "block.create.transposer": "トランスãƒ�ーザー", + "block.create.turntable": "ターンテーブル", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", - "block.create.vertical_framed_glass": "垂直ガラス窓", - "block.create.vertical_framed_glass_pane": "垂直ガラス窓板", + "block.create.vertical_framed_glass": "垂直ガラス窓", + "block.create.vertical_framed_glass_pane": "垂直ガラス窓æ�¿", "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化した石灰岩", - "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", - "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", - "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", - "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの塀", + "block.create.water_wheel": "水車", + "block.create.weathered_limestone": "風化ã�—ã�ŸçŸ³ç�°å²©", + "block.create.weathered_limestone_bricks": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬", + "block.create.weathered_limestone_bricks_slab": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®ãƒ�ーフブロック", + "block.create.weathered_limestone_bricks_stairs": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®éšŽæ®µ", + "block.create.weathered_limestone_bricks_wall": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®å¡€", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", - "block.create.zinc_block": "亜鉛ブロック", - "block.create.zinc_ore": "亜鉛鉱石", + "block.create.weathered_limestone_pillar": "風化ã�—ã�ŸçŸ³ç�°å²©ã�®æŸ±", + "block.create.zinc_block": "亜鉛ブロック", + "block.create.zinc_ore": "亜鉛鉱石", "entity.create.contraption": "UNLOCALIZED: Contraption", "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.andesite_alloy": "安山岩合金", - "item.create.attribute_filter": "属性フィルター", - "item.create.belt_connector": "メカニカルベルト", - "item.create.brass_hand": "手", - "item.create.brass_ingot": "真鍮インゴット", - "item.create.brass_nugget": "真鍮ナゲット", - "item.create.brass_sheet": "真鍮シート", - "item.create.chromatic_compound": "色彩の化合物", - "item.create.copper_ingot": "銅インゴット", - "item.create.copper_nugget": "銅塊", - "item.create.copper_sheet": "銅板", - "item.create.crafter_slot_cover": "クラフタースロットカバー", - "item.create.crushed_brass": "砕いた真鍮", + "item.create.andesite_alloy": "安山岩å�ˆé‡‘", + "item.create.attribute_filter": "属性フィルター", + "item.create.belt_connector": "メカニカルベルト", + "item.create.brass_hand": "手", + "item.create.brass_ingot": "真é�®ã‚¤ãƒ³ã‚´ãƒƒãƒˆ", + "item.create.brass_nugget": "真é�®ãƒŠã‚²ãƒƒãƒˆ", + "item.create.brass_sheet": "真é�®ã‚·ãƒ¼ãƒˆ", + "item.create.chromatic_compound": "色彩ã�®åŒ–å�ˆç‰©", + "item.create.copper_ingot": "銅インゴット", + "item.create.copper_nugget": "銅塊", + "item.create.copper_sheet": "銅æ�¿", + "item.create.crafter_slot_cover": "クラフタースロットカãƒ�ー", + "item.create.crushed_brass": "ç •ã�„ã�ŸçœŸé�®", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "デフォレスター", - "item.create.dough": "生地", - "item.create.electron_tube": "電子管", - "item.create.empty_schematic": "空の概略図", + "item.create.deforester": "デフォレスター", + "item.create.dough": "生地", + "item.create.electron_tube": "é›»å­�管", + "item.create.empty_schematic": "空ã�®æ¦‚略図", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "フィルター", + "item.create.filter": "フィルター", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "エンジニアのゴーグル", + "item.create.goggles": "エンジニアã�®ã‚´ãƒ¼ã‚°ãƒ«", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "携帯型ブロックザッパー", - "item.create.handheld_worldshaper": "携帯型ワールドシェイパー", - "item.create.integrated_circuit": "集積回路", - "item.create.iron_sheet": "鉄板", + "item.create.handheld_blockzapper": "æ�ºå¸¯åž‹ãƒ–ロックザッパー", + "item.create.handheld_worldshaper": "æ�ºå¸¯åž‹ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚·ã‚§ã‚¤ãƒ‘ー", + "item.create.integrated_circuit": "集ç©�回路", + "item.create.iron_sheet": "鉄æ�¿", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", - "item.create.polished_rose_quartz": "磨かれたローズクォーツ", + "item.create.polished_rose_quartz": "磨ã�‹ã‚Œã�Ÿãƒ­ãƒ¼ã‚ºã‚¯ã‚©ãƒ¼ãƒ„", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "プロペラ", - "item.create.red_sand_paper": "赤い紙やすり", - "item.create.refined_radiance": "洗練された輝き", - "item.create.rose_quartz": "ローズクォーツ", - "item.create.sand_paper": "紙やすり", - "item.create.schematic": "概略図", - "item.create.schematic_and_quill": "概略図と羽根ペン", - "item.create.shadow_steel": "シャドウスチール", + "item.create.propeller": "プロペラ", + "item.create.red_sand_paper": "赤ã�„紙やã�™ã‚Š", + "item.create.refined_radiance": "æ´—ç·´ã�•ã‚Œã�Ÿè¼�ã��", + "item.create.rose_quartz": "ローズクォーツ", + "item.create.sand_paper": "紙やã�™ã‚Š", + "item.create.schematic": "概略図", + "item.create.schematic_and_quill": "概略図ã�¨ç¾½æ ¹ãƒšãƒ³", + "item.create.shadow_steel": "シャドウスãƒ�ール", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "木の肥料", + "item.create.tree_fertilizer": "木ã�®è‚¥æ–™", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "対称の杖", + "item.create.wand_of_symmetry": "対称ã�®æ�–", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", - "item.create.whisk": "泡立て器", - "item.create.wrench": "レンチ", - "item.create.zinc_ingot": "亜鉛棒", - "item.create.zinc_nugget": "亜鉛塊", + "item.create.whisk": "泡立ã�¦å™¨", + "item.create.wrench": "レンãƒ�", + "item.create.zinc_ingot": "亜鉛棒", + "item.create.zinc_nugget": "亜鉛塊", "_": "->------------------------] Advancements [------------------------<-", @@ -487,334 +487,334 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s は破砕ホイールによって処理されました", - "death.attack.create.fan_fire": "%1$s は熱風で焼死した", - "death.attack.create.fan_lava": "%1$s は溶岩ファンによって焼死した", - "death.attack.create.mechanical_drill": "%1$s はメカニカルドリルに突き刺さった", - "death.attack.create.mechanical_saw": "%1$s はメカニカル鋸で半分にカットされた", - "death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された", + "death.attack.create.crush": "%1$s ã�¯ç ´ç •ãƒ›ã‚¤ãƒ¼ãƒ«ã�«ã‚ˆã�£ã�¦å‡¦ç�†ã�•ã‚Œã�¾ã�—ã�Ÿ", + "death.attack.create.fan_fire": "%1$s ã�¯ç†±é¢¨ã�§ç„¼æ­»ã�—ã�Ÿ", + "death.attack.create.fan_lava": "%1$s ã�¯æº¶å²©ãƒ•ã‚¡ãƒ³ã�«ã‚ˆã�£ã�¦ç„¼æ­»ã�—ã�Ÿ", + "death.attack.create.mechanical_drill": "%1$s ã�¯ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ‰ãƒªãƒ«ã�«çª�ã��刺ã�•ã�£ã�Ÿ", + "death.attack.create.mechanical_saw": "%1$s ã�¯ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«é‹¸ã�§å�Šåˆ†ã�«ã‚«ãƒƒãƒˆã�•ã‚Œã�Ÿ", + "death.attack.create.cuckoo_clock_explosion": "%1$s ã�¯æ”¹ã�–ã‚“ã�•ã‚Œã�Ÿé³©æ™‚計ã�«çˆ†ç ´ã�•ã‚Œã�Ÿ", - "create.block.deployer.damage_source_name": "悪いデプロイヤー", + "create.block.deployer.damage_source_name": "悪ã�„デプロイヤー", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "粉砕", - "create.recipe.milling": "製粉", - "create.recipe.splashing": "一括洗浄", - "create.recipe.splashing.fan": "流れる水の後ろにファンを置く", - "create.recipe.smoking_via_fan": "一括燻製", - "create.recipe.smoking_via_fan.fan": "炎の後ろにファンを置く", - "create.recipe.blasting_via_fan": "一括製錬", - "create.recipe.blasting_via_fan.fan": "溶岩の後ろにファンを置く", - "create.recipe.pressing": "押しつぶし", - "create.recipe.mixing": "混合", - "create.recipe.packing": "圧縮", - "create.recipe.mechanical_sawing": "製材", - "create.recipe.mechanical_crafting": "メカニカルクラフト", - "create.recipe.block_cutting": "ブロックカット", - "create.recipe.blockzapper_upgrade": "携帯型ブロックザッパー", - "create.recipe.sandpaper_polishing": "紙やすりでの研磨", - "create.recipe.mystery_conversion": "色彩変態", - "create.recipe.processing.catalyst": "触媒", - "create.recipe.processing.chance": "%1$s%%チャンス", - "create.recipe.processing.chanceToReturn": "%1$s%%チャンスで戻る", + "create.recipe.crushing": "粉砕", + "create.recipe.milling": "製粉", + "create.recipe.splashing": "一括洗浄", + "create.recipe.splashing.fan": "æµ�れる水ã�®å¾Œã‚�ã�«ãƒ•ã‚¡ãƒ³ã‚’ç½®ã��", + "create.recipe.smoking_via_fan": "一括燻製", + "create.recipe.smoking_via_fan.fan": "ç‚Žã�®å¾Œã‚�ã�«ãƒ•ã‚¡ãƒ³ã‚’ç½®ã��", + "create.recipe.blasting_via_fan": "一括製錬", + "create.recipe.blasting_via_fan.fan": "溶岩ã�®å¾Œã‚�ã�«ãƒ•ã‚¡ãƒ³ã‚’ç½®ã��", + "create.recipe.pressing": "押ã�—ã�¤ã�¶ã�—", + "create.recipe.mixing": "æ··å�ˆ", + "create.recipe.packing": "圧縮", + "create.recipe.mechanical_sawing": "製æ��", + "create.recipe.mechanical_crafting": "メカニカルクラフト", + "create.recipe.block_cutting": "ブロックカット", + "create.recipe.blockzapper_upgrade": "æ�ºå¸¯åž‹ãƒ–ロックザッパー", + "create.recipe.sandpaper_polishing": "紙やã�™ã‚Šã�§ã�®ç ”磨", + "create.recipe.mystery_conversion": "色彩変態", + "create.recipe.processing.catalyst": "触媒", + "create.recipe.processing.chance": "%1$s%%ãƒ�ャンス", + "create.recipe.processing.chanceToReturn": "%1$s%%ãƒ�ャンスã�§æˆ»ã‚‹", - "create.generic.range": "範囲", - "create.generic.radius": "半径", - "create.generic.width": "幅", - "create.generic.height": "高さ", - "create.generic.length": "長さ", - "create.generic.speed": "速度", - "create.generic.delay": "遅延", - "create.generic.unit.ticks": "ティック", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分", + "create.generic.range": "範囲", + "create.generic.radius": "å�Šå¾„", + "create.generic.width": "å¹…", + "create.generic.height": "高ã�•", + "create.generic.length": "é•·ã�•", + "create.generic.speed": "速度", + "create.generic.delay": "é�…延", + "create.generic.unit.ticks": "ティック", + "create.generic.unit.seconds": "秒", + "create.generic.unit.minutes": "分", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "スクロール", - "create.action.confirm": "確認", - "create.action.abort": "中止", - "create.action.saveToFile": "保存", - "create.action.discard": "捨てる", + "create.action.scroll": "スクロール", + "create.action.confirm": "確èª�", + "create.action.abort": "中止", + "create.action.saveToFile": "ä¿�å­˜", + "create.action.discard": "æ�¨ã�¦ã‚‹", - "create.keyinfo.toolmenu": "フォーカスツールメニュー", - "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", - "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", + "create.keyinfo.toolmenu": "フォーカスツールメニュー", + "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(ã�“ã�®ä¸–ç•Œã�§)", + "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(ã�“ã�®ä¸–ç•Œã�§)", - "create.gui.scrollInput.defaultTitle": "オプションを選択:", - "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして金額を調整", - "create.gui.scrollInput.scrollToSelect": "スクロールして選択", - "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", - "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカス", - "create.gui.toolmenu.cycle": "[SCROLL] でサイクル", - "create.gui.symmetryWand.mirrorType": "ミラー", - "create.gui.symmetryWand.orientation": "オリエンテーション", + "create.gui.scrollInput.defaultTitle": "オプションをé�¸æŠž:", + "create.gui.scrollInput.scrollToModify": "スクロールã�—ã�¦å¤‰æ›´", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールã�—ã�¦é‡‘é¡�を調整", + "create.gui.scrollInput.scrollToSelect": "スクロールã�—ã�¦é�¸æŠž", + "create.gui.scrollInput.shiftScrollsFaster": "シフトを押ã�—ã�¦ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã‚’加速", + "create.gui.toolmenu.focusKey": "[%1$s] 長押ã�—ã�§ãƒ•ã‚©ãƒ¼ã‚«ã‚¹", + "create.gui.toolmenu.cycle": "[SCROLL] ã�§ã‚µã‚¤ã‚¯ãƒ«", + "create.gui.symmetryWand.mirrorType": "ミラー", + "create.gui.symmetryWand.orientation": "オリエンテーション", - "create.symmetry.mirror.plane": "線対称", - "create.symmetry.mirror.doublePlane": "長方形", - "create.symmetry.mirror.triplePlane": "八角形", + "create.symmetry.mirror.plane": "線対称", + "create.symmetry.mirror.doublePlane": "長方形", + "create.symmetry.mirror.triplePlane": "八角形", - "create.orientation.orthogonal": "直交", - "create.orientation.diagonal": "対角線", - "create.orientation.horizontal": "横型", - "create.orientation.alongZ": "Zに沿る", - "create.orientation.alongX": "Xに沿る", + "create.orientation.orthogonal": "直交", + "create.orientation.diagonal": "対角線", + "create.orientation.horizontal": "横型", + "create.orientation.alongZ": "Zã�«æ²¿ã‚‹", + "create.orientation.alongX": "Xã�«æ²¿ã‚‹", - "create.gui.blockzapper.title": "携帯型ブロックザッパー", - "create.gui.blockzapper.replaceMode": "置換モード", - "create.gui.blockzapper.searchDiagonal": "対角線にフォロー", - "create.gui.blockzapper.searchFuzzy": "マテリアルの境界を無視", - "create.gui.blockzapper.range": "範囲", - "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードが必要", - "create.gui.blockzapper.patternSection": "模様", - "create.gui.blockzapper.pattern.solid": "敷き詰め", - "create.gui.blockzapper.pattern.checkered": "チェッカーボード", - "create.gui.blockzapper.pattern.inversecheckered": "逆チェッカーボード", - "create.gui.blockzapper.pattern.chance25": "25% ロール", - "create.gui.blockzapper.pattern.chance50": "50% ロール", - "create.gui.blockzapper.pattern.chance75": "75% ロール", - "create.gui.terrainzapper.title": "携帯型ワールドシェイパー", - "create.gui.terrainzapper.placement": "配置", - "create.gui.terrainzapper.placement.merged": "合併", - "create.gui.terrainzapper.placement.attached": "添える", - "create.gui.terrainzapper.placement.inserted": "挿入", - "create.gui.terrainzapper.brush": "磨き", - "create.gui.terrainzapper.brush.cuboid": "立方体", - "create.gui.terrainzapper.brush.sphere": "球体", - "create.gui.terrainzapper.brush.cylinder": "円筒", - "create.gui.terrainzapper.tool": "ツール", - "create.gui.terrainzapper.tool.fill": "埋立", - "create.gui.terrainzapper.tool.place": "設置", - "create.gui.terrainzapper.tool.replace": "置換", - "create.gui.terrainzapper.tool.clear": "削除", - "create.gui.terrainzapper.tool.overlay": "重ねる", - "create.gui.terrainzapper.tool.flatten": "平坦化", + "create.gui.blockzapper.title": "æ�ºå¸¯åž‹ãƒ–ロックザッパー", + "create.gui.blockzapper.replaceMode": "ç½®æ�›ãƒ¢ãƒ¼ãƒ‰", + "create.gui.blockzapper.searchDiagonal": "対角線ã�«ãƒ•ã‚©ãƒ­ãƒ¼", + "create.gui.blockzapper.searchFuzzy": "マテリアルã�®å¢ƒç•Œã‚’無視", + "create.gui.blockzapper.range": "範囲", + "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードã�Œå¿…è¦�", + "create.gui.blockzapper.patternSection": "模様", + "create.gui.blockzapper.pattern.solid": "æ•·ã��è©°ã‚�", + "create.gui.blockzapper.pattern.checkered": "ãƒ�ェッカーボード", + "create.gui.blockzapper.pattern.inversecheckered": "逆ãƒ�ェッカーボード", + "create.gui.blockzapper.pattern.chance25": "25% ロール", + "create.gui.blockzapper.pattern.chance50": "50% ロール", + "create.gui.blockzapper.pattern.chance75": "75% ロール", + "create.gui.terrainzapper.title": "æ�ºå¸¯åž‹ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚·ã‚§ã‚¤ãƒ‘ー", + "create.gui.terrainzapper.placement": "é…�ç½®", + "create.gui.terrainzapper.placement.merged": "å�ˆä½µ", + "create.gui.terrainzapper.placement.attached": "æ·»ã�ˆã‚‹", + "create.gui.terrainzapper.placement.inserted": "挿入", + "create.gui.terrainzapper.brush": "磨ã��", + "create.gui.terrainzapper.brush.cuboid": "立方体", + "create.gui.terrainzapper.brush.sphere": "ç�ƒä½“", + "create.gui.terrainzapper.brush.cylinder": "円筒", + "create.gui.terrainzapper.tool": "ツール", + "create.gui.terrainzapper.tool.fill": "埋立", + "create.gui.terrainzapper.tool.place": "設置", + "create.gui.terrainzapper.tool.replace": "ç½®æ�›", + "create.gui.terrainzapper.tool.clear": "削除", + "create.gui.terrainzapper.tool.overlay": "é‡�ã�­ã‚‹", + "create.gui.terrainzapper.tool.flatten": "å¹³å�¦åŒ–", - "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", + "create.terrainzapper.shiftRightClickToSet": "シフト-å�³ã‚¯ãƒªãƒƒã‚¯ã�§å½¢çŠ¶ã‚’é�¸æŠž", - "create.blockzapper.usingBlock": "使用中: %1$s", - "create.blockzapper.componentUpgrades": "コンポーネントアップグレード:", - "create.blockzapper.component.body": "ボディー", - "create.blockzapper.component.amplifier": "増幅", - "create.blockzapper.component.accelerator": "加速", - "create.blockzapper.component.retriever": "レトリーバー", - "create.blockzapper.component.scope": "範囲", - "create.blockzapper.componentTier.none": "無し", - "create.blockzapper.componentTier.brass": "真鍮", - "create.blockzapper.componentTier.chromatic": "色彩", - "create.blockzapper.leftClickToSet": "ブロックをシフト-左クリックでマテリアルを選択", - "create.blockzapper.empty": "ブロック不足!", + "create.blockzapper.usingBlock": "使用中: %1$s", + "create.blockzapper.componentUpgrades": "コンãƒ�ーãƒ�ントアップグレード:", + "create.blockzapper.component.body": "ボディー", + "create.blockzapper.component.amplifier": "増幅", + "create.blockzapper.component.accelerator": "加速", + "create.blockzapper.component.retriever": "レトリーãƒ�ー", + "create.blockzapper.component.scope": "範囲", + "create.blockzapper.componentTier.none": "ç„¡ã�—", + "create.blockzapper.componentTier.brass": "真é�®", + "create.blockzapper.componentTier.chromatic": "色彩", + "create.blockzapper.leftClickToSet": "ブロックをシフト-左クリックã�§ãƒžãƒ†ãƒªã‚¢ãƒ«ã‚’é�¸æŠž", + "create.blockzapper.empty": "ブロックä¸�足!", - "create.contraptions.movement_mode": "移動モード", - "create.contraptions.movement_mode.move_place": "停止時に常に配置", - "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", - "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", - "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", - "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", + "create.contraptions.movement_mode": "移動モード", + "create.contraptions.movement_mode.move_place": "å�œæ­¢æ™‚ã�«å¸¸ã�«é…�ç½®", + "create.contraptions.movement_mode.move_place_returned": "開始ä½�ç½®ã�®ã�¿ã�«é…�ç½®", + "create.contraptions.movement_mode.move_never_place": "アンカーã�Œç ´å£Šã�•ã‚Œã�Ÿã�¨ã��ã�«ã�®ã�¿é…�ç½®", + "create.contraptions.movement_mode.rotate_place": "å�œæ­¢æ™‚ã�«å¸¸ã�«é…�ç½®", + "create.contraptions.movement_mode.rotate_place_returned": "åˆ�期角度付近ã�®ã�¿é…�ç½®", + "create.contraptions.movement_mode.rotate_never_place": "アンカーã�Œç ´å£Šã�•ã‚Œã�Ÿã�¨ã��ã�«ã�®ã�¿é…�ç½®", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.logistics.filter": "フィルタ", + "create.logistics.filter": "フィルタ", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", - "create.gui.goggles.generator_stats": "ジェネレータの統計:", - "create.gui.goggles.kinetic_stats": "動力の統計:", - "create.gui.goggles.at_current_speed": "現在の速度", - "create.gui.goggles.base_value": "基本値", - "create.gui.gauge.info_header": "計器の情報:", - "create.gui.speedometer.title": "回転速度", - "create.gui.stressometer.title": "ネットワークの応力", - "create.gui.stressometer.capacity": "残りの容量", - "create.gui.stressometer.overstressed": "超過応力", - "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", - "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらにソースを追加するか、コンポーネントに_負荷をかけ_応力の影響を大きくします。", - "create.gui.adjustable_crate.title": "調整可能なクレート", - "create.gui.adjustable_crate.storageSpace": "収納スペース", - "create.gui.stockpile_switch.title": "在庫スイッチ", - "create.gui.stockpile_switch.lowerLimit": "下限しきい値", - "create.gui.stockpile_switch.upperLimit": "上限しきい値", - "create.gui.stockpile_switch.startAt": "開始信号", - "create.gui.stockpile_switch.startAbove": "以上の開始信号", - "create.gui.stockpile_switch.stopAt": "停止信号", - "create.gui.stockpile_switch.stopBelow": "以下の停止信号", - "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", - "create.gui.sequenced_gearshift.instruction": "命令", - "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", - "create.gui.sequenced_gearshift.instruction.wait": "待機", - "create.gui.sequenced_gearshift.instruction.wait.duration": "期間", - "create.gui.sequenced_gearshift.instruction.end": "終了", - "create.gui.sequenced_gearshift.speed": "速度, 方向", - "create.gui.sequenced_gearshift.speed.forward": "入力速度, フォワード", - "create.gui.sequenced_gearshift.speed.forward_fast": "倍速, フォワード", - "create.gui.sequenced_gearshift.speed.back": "入力速度, 反転", - "create.gui.sequenced_gearshift.speed.back_fast": "倍速, 反転", + "create.gui.goggles.generator_stats": "ジェãƒ�レータã�®çµ±è¨ˆ:", + "create.gui.goggles.kinetic_stats": "動力ã�®çµ±è¨ˆ:", + "create.gui.goggles.at_current_speed": "ç�¾åœ¨ã�®é€Ÿåº¦", + "create.gui.goggles.base_value": "基本値", + "create.gui.gauge.info_header": "計器ã�®æƒ…å ±:", + "create.gui.speedometer.title": "回転速度", + "create.gui.stressometer.title": "ãƒ�ットワークã�®å¿œåŠ›", + "create.gui.stressometer.capacity": "残りã�®å®¹é‡�", + "create.gui.stressometer.overstressed": "超é�Žå¿œåŠ›", + "create.gui.stressometer.no_rotation": "回転ã�ªã�—", + "create.gui.contraptions.not_fast_enough": "ã�“ã�® %1$s ã�¯_å��分ã�ª_回転を_ã�—ã�¦ã�„ã�ªã�„_よã�†ã�§ã�™ã€‚", + "create.gui.contraptions.network_overstressed": "ã�“ã�®ä»•æŽ›ã�‘ã�¯_超é�Žå¿œåŠ›_ã�®ã‚ˆã�†ã�§ã�™ã€‚ã�•ã‚‰ã�«ã‚½ãƒ¼ã‚¹ã‚’追加ã�™ã‚‹ã�‹ã€�コンãƒ�ーãƒ�ントã�«_è² è�·ã‚’ã�‹ã�‘_応力ã�®å½±éŸ¿ã‚’大ã��ã��ã�—ã�¾ã�™ã€‚", + "create.gui.adjustable_crate.title": "調整å�¯èƒ½ã�ªã‚¯ãƒ¬ãƒ¼ãƒˆ", + "create.gui.adjustable_crate.storageSpace": "å�Žç´�スペース", + "create.gui.stockpile_switch.title": "在庫スイッãƒ�", + "create.gui.stockpile_switch.lowerLimit": "下é™�ã�—ã��ã�„値", + "create.gui.stockpile_switch.upperLimit": "上é™�ã�—ã��ã�„値", + "create.gui.stockpile_switch.startAt": "開始信å�·", + "create.gui.stockpile_switch.startAbove": "以上ã�®é–‹å§‹ä¿¡å�·", + "create.gui.stockpile_switch.stopAt": "å�œæ­¢ä¿¡å�·", + "create.gui.stockpile_switch.stopBelow": "以下ã�®å�œæ­¢ä¿¡å�·", + "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", + "create.gui.sequenced_gearshift.instruction": "命令", + "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "è·�離", + "create.gui.sequenced_gearshift.instruction.wait": "å¾…æ©Ÿ", + "create.gui.sequenced_gearshift.instruction.wait.duration": "期間", + "create.gui.sequenced_gearshift.instruction.end": "終了", + "create.gui.sequenced_gearshift.speed": "速度, æ–¹å�‘", + "create.gui.sequenced_gearshift.speed.forward": "入力速度, フォワード", + "create.gui.sequenced_gearshift.speed.forward_fast": "å€�速, フォワード", + "create.gui.sequenced_gearshift.speed.back": "入力速度, å��転", + "create.gui.sequenced_gearshift.speed.back_fast": "å€�速, å��転", - "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "最初の位置セット。", - "create.schematicAndQuill.secondPos": "2番目の位置セット。", - "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", - "create.schematicAndQuill.abort": "選択を削除しました。", - "create.schematicAndQuill.prompt": "概略図の名前を入力してください:", + "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "最åˆ�ã�®ä½�置セット。", + "create.schematicAndQuill.secondPos": "2番目ã�®ä½�置セット。", + "create.schematicAndQuill.noTarget": "[Ctrl] を押ã�—ã�Ÿã�¾ã�¾ã�§ç©ºæ°—ブロックをé�¸æŠžã�—ã�¾ã�™", + "create.schematicAndQuill.abort": "é�¸æŠžã‚’削除ã�—ã�¾ã�—ã�Ÿã€‚", + "create.schematicAndQuill.prompt": "概略図ã�®å��å‰�を入力ã�—ã�¦ã��ã� ã�•ã�„:", "create.schematicAndQuill.fallbackName": "My Schematic", - "create.schematicAndQuill.saved": "%1$s として保存しました", + "create.schematicAndQuill.saved": "%1$s ã�¨ã�—ã�¦ä¿�å­˜ã�—ã�¾ã�—ã�Ÿ", - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使用してください", - "create.schematic.position": "位置", - "create.schematic.rotation": "回転", - "create.schematic.rotation.none": "無し", - "create.schematic.rotation.cw90": "時計回りに90", - "create.schematic.rotation.cw180": "時計回りに180", - "create.schematic.rotation.cw270": "時計回りに270", - "create.schematic.mirror": "ミラー", - "create.schematic.mirror.none": "無し", - "create.schematic.mirror.frontBack": "正面-背面", - "create.schematic.mirror.leftRight": "左-右", - "create.schematic.tool.deploy": "配置する", - "create.schematic.tool.move": "XZを移動", - "create.schematic.tool.movey": "Yを移動", - "create.schematic.tool.rotate": "回転", - "create.schematic.tool.print": "印刷", - "create.schematic.tool.flip": "フリップ", - "create.schematic.tool.deploy.description.0": "構造を特定の場所に移動します。", - "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します。", - "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します。", - "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します。", - "create.schematic.tool.move.description.0": "概略図を水平に動かします。", - "create.schematic.tool.move.description.1": "概略図をポイントし、 [Ctrl]-スクロールして押し出します。", + "create.schematic.invalid": "[!] 無効ã�ªã‚¢ã‚¤ãƒ†ãƒ -代ã‚�ã‚Šã�«æ¦‚略図テーブルを使用ã�—ã�¦ã��ã� ã�•ã�„", + "create.schematic.position": "ä½�ç½®", + "create.schematic.rotation": "回転", + "create.schematic.rotation.none": "ç„¡ã�—", + "create.schematic.rotation.cw90": "時計回りã�«90", + "create.schematic.rotation.cw180": "時計回りã�«180", + "create.schematic.rotation.cw270": "時計回りã�«270", + "create.schematic.mirror": "ミラー", + "create.schematic.mirror.none": "ç„¡ã�—", + "create.schematic.mirror.frontBack": "æ­£é�¢-背é�¢", + "create.schematic.mirror.leftRight": "å·¦-å�³", + "create.schematic.tool.deploy": "é…�ç½®ã�™ã‚‹", + "create.schematic.tool.move": "XZを移動", + "create.schematic.tool.movey": "Yを移動", + "create.schematic.tool.rotate": "回転", + "create.schematic.tool.print": "å�°åˆ·", + "create.schematic.tool.flip": "フリップ", + "create.schematic.tool.deploy.description.0": "構造を特定ã�®å ´æ‰€ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.deploy.description.1": "地é�¢ã‚’å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦é…�ç½®ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.deploy.description.2": "[Ctrl] を押ã�—ã�Ÿã�¾ã�¾ã€�一定ã�®è·�離ã�§é�¸æŠžã�—ã�¾ã�™ã€‚", + "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールã�—ã�¦è·�離を変更ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.move.description.0": "概略図を水平ã�«å‹•ã�‹ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.move.description.1": "概略図をãƒ�イントã�—ã€� [Ctrl]-スクロールã�—ã�¦æŠ¼ã�—出ã�—ã�¾ã�™ã€‚", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "概略図を垂直に動かします。", - "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します。", + "create.schematic.tool.movey.description.0": "概略図を垂直ã�«å‹•ã�‹ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールã�—ã�¦ä¸Šä¸‹ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます。", - "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します。", + "create.schematic.tool.rotate.description.0": "概略図をã��ã�®ä¸­å¿ƒã‚’中心ã�«å›žè»¢ã�•ã�›ã�¾ã�™ã€‚", + "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールã�—ã�¦90度回転ã�—ã�¾ã�™ã€‚", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します。", - "create.schematic.tool.print.description.1": "[右クリック] して、現在の場所への配置を確認します。", - "create.schematic.tool.print.description.2": "このツールはクリエイティブモード専用です。", + "create.schematic.tool.print.description.0": "構造物をå�³åº§ã�«ãƒ¯ãƒ¼ãƒ«ãƒ‰ã�«é…�ç½®ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.print.description.1": "[å�³ã‚¯ãƒªãƒƒã‚¯] ã�—ã�¦ã€�ç�¾åœ¨ã�®å ´æ‰€ã�¸ã�®é…�置を確èª�ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.print.description.2": "ã�“ã�®ãƒ„ールã�¯ã‚¯ãƒªã‚¨ã‚¤ãƒ†ã‚£ãƒ–モード専用ã�§ã�™ã€‚", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "選択した面に沿って概略図を反転します。", - "create.schematic.tool.flip.description.1": "概略図をポイントし、 [CTRL]-スクロールして反転します。", + "create.schematic.tool.flip.description.0": "é�¸æŠžã�—ã�Ÿé�¢ã�«æ²¿ã�£ã�¦æ¦‚略図をå��転ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.flip.description.1": "概略図をãƒ�イントã�—ã€� [CTRL]-スクロールã�—ã�¦å��転ã�—ã�¾ã�™ã€‚", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "同期しています...", - "create.schematics.uploadTooLarge": "概略図が大きすぎます。", - "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", + "create.schematics.synchronizing": "å�ŒæœŸã�—ã�¦ã�„ã�¾ã�™...", + "create.schematics.uploadTooLarge": "概略図ã�Œå¤§ã��ã�™ã�Žã�¾ã�™ã€‚", + "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズã�¯:", - "create.gui.schematicTable.title": "概略図テーブル", - "create.gui.schematicTable.availableSchematics": "利用可能な概略図", - "create.gui.schematicTable.noSchematics": "保存された概略図はありません", - "create.gui.schematicTable.uploading": "アップロードしています...", - "create.gui.schematicTable.finished": "アップロードが完了しました!", - "create.gui.schematicannon.title": "概略図砲", - "create.gui.schematicannon.settingsTitle": "配置設定", - "create.gui.schematicannon.listPrinter": "材料リストプリンター", - "create.gui.schematicannon.gunpowderLevel": "火薬はあと %1$s%% 残っています", - "create.gui.schematicannon.shotsRemaining": "残りのショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップあり: %1$s", - "create.gui.schematicannon.optionEnabled": "現在有効", - "create.gui.schematicannon.optionDisabled": "現在無効", - "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", - "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", - "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", - "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", - "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", - "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", - "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", - "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業領域の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", - "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置にソリッドブロックが含まれている場合にのみ、その作業領域のソリッドブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithAny.description": "概略図のロケーションにブロックが含まれている場合、大砲はその作業領域の個体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", + "create.gui.schematicTable.title": "概略図テーブル", + "create.gui.schematicTable.availableSchematics": "利用å�¯èƒ½ã�ªæ¦‚略図", + "create.gui.schematicTable.noSchematics": "ä¿�å­˜ã�•ã‚Œã�Ÿæ¦‚略図ã�¯ã�‚ã‚Šã�¾ã�›ã‚“", + "create.gui.schematicTable.uploading": "アップロードã�—ã�¦ã�„ã�¾ã�™...", + "create.gui.schematicTable.finished": "アップロードã�Œå®Œäº†ã�—ã�¾ã�—ã�Ÿï¼�", + "create.gui.schematicannon.title": "概略図砲", + "create.gui.schematicannon.settingsTitle": "é…�置設定", + "create.gui.schematicannon.listPrinter": "æ��料リストプリンター", + "create.gui.schematicannon.gunpowderLevel": "ç�«è–¬ã�¯ã�‚ã�¨ %1$s%% 残ã�£ã�¦ã�„ã�¾ã�™", + "create.gui.schematicannon.shotsRemaining": "残りã�®ã‚·ãƒ§ãƒƒãƒˆæ•°: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "ãƒ�ックアップã�‚ã‚Š: %1$s", + "create.gui.schematicannon.optionEnabled": "ç�¾åœ¨æœ‰åŠ¹", + "create.gui.schematicannon.optionDisabled": "ç�¾åœ¨ç„¡åŠ¹", + "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置ã��æ�›ã�ˆã�ªã�„", + "create.gui.schematicannon.option.replaceWithSolid": "固体を固体ã�«ç½®ã��æ�›ã�ˆã‚‹", + "create.gui.schematicannon.option.replaceWithAny": "固体を任æ„�ã�®ã‚‚ã�®ã�«ç½®ã��æ�›ã�ˆã‚‹", + "create.gui.schematicannon.option.replaceWithEmpty": "空ã�®å›ºä½“ã�¨äº¤æ�›", + "create.gui.schematicannon.option.skipMissing": "ä¸�足ã�—ã�¦ã�„るブロックをスキップ", + "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティをä¿�è­·ã�™ã‚‹", + "create.gui.schematicannon.option.skipMissing.description": "大砲ã�Œé…�ç½®ã�«å¿…è¦�ã�ªãƒ–ロックを見ã�¤ã�‘られã�ªã�„å ´å�ˆã€�次ã�®å ´æ‰€ã�«é€²ã�¿ã�¾ã�™ã€‚", + "create.gui.schematicannon.option.skipTileEntities.description": "大砲ã�¯ã€�ãƒ�ェストã�ªã�©ã�®ãƒ‡ãƒ¼ã‚¿ä¿�æŒ�ブロックã�®äº¤æ�›ã‚’回é�¿ã�—ã�¾ã�™ã€‚", + "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲ã�¯ã€�ã��ã�®ä½œæ¥­é ˜åŸŸã�®å›ºä½“ブロックを置ã��æ�›ã�ˆã‚‹ã�“ã�¨ã�¯ã�ªã��ã€�é�žå›ºä½“ã�¨ç©ºæ°—ã�®ã�¿ã‚’ç½®ã��æ�›ã�ˆã�¾ã�™ã€‚", + "create.gui.schematicannon.option.replaceWithSolid.description": "大砲ã�¯ã€�概略図ã�®ä½�ç½®ã�«ã‚½ãƒªãƒƒãƒ‰ãƒ–ロックã�Œå�«ã�¾ã‚Œã�¦ã�„ã‚‹å ´å�ˆã�«ã�®ã�¿ã€�ã��ã�®ä½œæ¥­é ˜åŸŸã�®ã‚½ãƒªãƒƒãƒ‰ãƒ–ロックを置ã��æ�›ã�ˆã�¾ã�™ã€‚", + "create.gui.schematicannon.option.replaceWithAny.description": "概略図ã�®ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã�«ãƒ–ロックã�Œå�«ã�¾ã‚Œã�¦ã�„ã‚‹å ´å�ˆã€�大砲ã�¯ã��ã�®ä½œæ¥­é ˜åŸŸã�®å€‹ä½“ブロックを置ã��æ�›ã�ˆã�¾ã�™ã€‚", + "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲ã�¯ã€�空気ã�«ç½®ã��æ�›ã�ˆã‚‰ã‚Œã�Ÿã‚‚ã�®ã‚’å�«ã‚�ã€�ã��ã�®ä½œæ¥­ã‚¨ãƒªã‚¢å†…ã�®ã�™ã�¹ã�¦ã�®ãƒ–ロックを一掃ã�—ã�¾ã�™ã€‚", - "create.schematicannon.status.idle": "停止中", - "create.schematicannon.status.ready": "準備完了", - "create.schematicannon.status.running": "稼働中", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "一時停止中", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火薬不足", - "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", - "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", - "create.schematicannon.status.searching": "検索中", - "create.schematicannon.status.skipping": "スキップ", - "create.schematicannon.status.missingBlock": "不明なブロック:", - "create.schematicannon.status.placing": "配置中", - "create.schematicannon.status.clearing": "ブロックをクリア中", - "create.schematicannon.status.schematicInvalid": "概略図が無効です", - "create.schematicannon.status.schematicNotPlaced": "配置されていない概略図です", - "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", + "create.schematicannon.status.idle": "å�œæ­¢ä¸­", + "create.schematicannon.status.ready": "準備完了", + "create.schematicannon.status.running": "稼åƒ�中", + "create.schematicannon.status.finished": "完æˆ�", + "create.schematicannon.status.paused": "一時å�œæ­¢ä¸­", + "create.schematicannon.status.stopped": "å�œæ­¢", + "create.schematicannon.status.noGunpowder": "ç�«è–¬ä¸�足", + "create.schematicannon.status.targetNotLoaded": "ブロックã�Œèª­ã�¿è¾¼ã�¾ã‚Œã�¦ã�„ã�¾ã�›ã‚“", + "create.schematicannon.status.targetOutsideRange": "ターゲットã�Œé� ã�™ã�Žã�¾ã�™", + "create.schematicannon.status.searching": "検索中", + "create.schematicannon.status.skipping": "スキップ", + "create.schematicannon.status.missingBlock": "ä¸�明ã�ªãƒ–ロック:", + "create.schematicannon.status.placing": "é…�置中", + "create.schematicannon.status.clearing": "ブロックをクリア中", + "create.schematicannon.status.schematicInvalid": "概略図ã�Œç„¡åŠ¹ã�§ã�™", + "create.schematicannon.status.schematicNotPlaced": "é…�ç½®ã�•ã‚Œã�¦ã�„ã�ªã�„概略図ã�§ã�™", + "create.schematicannon.status.schematicExpired": "概略図ファイルã�ŒæœŸé™�切れã�§ã�™", - "create.gui.filter.blacklist": "ブラックリスト", - "create.gui.filter.blacklist.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。 空のブラックリストはすべてを受け入れます。", - "create.gui.filter.whitelist": "ホワイトリスト", - "create.gui.filter.whitelist.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。 空のホワイトリストはすべてを拒否します。", - "create.gui.filter.respect_data": "データを重視", - "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", - "create.gui.filter.ignore_data": "データを無視", - "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", + "create.gui.filter.blacklist": "ブラックリスト", + "create.gui.filter.blacklist.description": "上記ã�®ã�„ã�šã‚Œã�«ã‚‚一致ã�—ã�ªã�„å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚ 空ã�®ãƒ–ラックリストã�¯ã�™ã�¹ã�¦ã‚’å�—ã�‘入れã�¾ã�™ã€‚", + "create.gui.filter.whitelist": "ホワイトリスト", + "create.gui.filter.whitelist.description": "上記ã�®ã�„ã�šã‚Œã�‹ã�«ä¸€è‡´ã�—ã�Ÿå ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚ 空ã�®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã�¯ã�™ã�¹ã�¦ã‚’æ‹’å�¦ã�—ã�¾ã�™ã€‚", + "create.gui.filter.respect_data": "データをé‡�視", + "create.gui.filter.respect_data.description": "アイテムã�¯ã€�è€�久性ã€�エンãƒ�ャントã€�ã��ã�®ä»–ã�®å±žæ€§ã‚‚一致ã�™ã‚‹å ´å�ˆã�«ã�®ã�¿ä¸€è‡´ã�—ã�¾ã�™ã€‚", + "create.gui.filter.ignore_data": "データを無視", + "create.gui.filter.ignore_data.description": "アイテムã�¯å±žæ€§ã�«é–¢ä¿‚ã�ªã��一致ã�—ã�¾ã�™ã€‚", - "create.item_attributes.placeable": "設置可能か", - "create.item_attributes.consumable": "食べられるか", - "create.item_attributes.smeltable": "精錬可能か", - "create.item_attributes.washable": "洗えるか", - "create.item_attributes.smokable": "燻製可能か", - "create.item_attributes.blastable": "高炉で製錬可能か", - "create.item_attributes.enchanted": "エンチャント済みか", - "create.item_attributes.damaged": "破損してるか", - "create.item_attributes.badly_damaged": "ひどく損傷してるか", - "create.item_attributes.not_stackable": "スタック可能か", - "create.item_attributes.equipable": "装備可能か", - "create.item_attributes.furnace_fuel": "かまどの燃料か", - "create.item_attributes.in_tag": "%1$s のタグが付けられてるか", - "create.item_attributes.in_item_group": "%1$s に属してるか", - "create.item_attributes.added_by": "%1$s によって追加されたか", + "create.item_attributes.placeable": "設置å�¯èƒ½ã�‹", + "create.item_attributes.consumable": "食ã�¹ã‚‰ã‚Œã‚‹ã�‹", + "create.item_attributes.smeltable": "精錬å�¯èƒ½ã�‹", + "create.item_attributes.washable": "æ´—ã�ˆã‚‹ã�‹", + "create.item_attributes.smokable": "燻製å�¯èƒ½ã�‹", + "create.item_attributes.blastable": "高炉ã�§è£½éŒ¬å�¯èƒ½ã�‹", + "create.item_attributes.enchanted": "エンãƒ�ャント済ã�¿ã�‹", + "create.item_attributes.damaged": "ç ´æ��ã�—ã�¦ã‚‹ã�‹", + "create.item_attributes.badly_damaged": "ã�²ã�©ã��æ��å‚·ã�—ã�¦ã‚‹ã�‹", + "create.item_attributes.not_stackable": "スタックå�¯èƒ½ã�‹", + "create.item_attributes.equipable": "装備å�¯èƒ½ã�‹", + "create.item_attributes.furnace_fuel": "ã�‹ã�¾ã�©ã�®ç‡ƒæ–™ã�‹", + "create.item_attributes.in_tag": "%1$s ã�®ã‚¿ã‚°ã�Œä»˜ã�‘られã�¦ã‚‹ã�‹", + "create.item_attributes.in_item_group": "%1$s ã�«å±žã�—ã�¦ã‚‹ã�‹", + "create.item_attributes.added_by": "%1$s ã�«ã‚ˆã�£ã�¦è¿½åŠ ã�•ã‚Œã�Ÿã�‹", - "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", - "create.gui.attribute_filter.selected_attributes": "選択された属性:", - "create.gui.attribute_filter.whitelist_disjunctive": "ホワイトリスト(どれか)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.whitelist_conjunctive": "ホワイトリスト(全て)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.blacklist": "ブラックリスト", - "create.gui.attribute_filter.blacklist.description": "選択された属性を持たない場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", + "create.gui.attribute_filter.no_selected_attributes": "属性ã�Œé�¸æŠžã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“", + "create.gui.attribute_filter.selected_attributes": "é�¸æŠžã�•ã‚Œã�Ÿå±žæ€§:", + "create.gui.attribute_filter.whitelist_disjunctive": "ホワイトリスト(ã�©ã‚Œã�‹ï¼‰", + "create.gui.attribute_filter.whitelist_disjunctive.description": "é�¸æŠžã�—ã�Ÿå±žæ€§ã�®ã�„ã�šã‚Œã�‹ã‚’æŒ�ã�£ã�¦ã�„ã‚‹å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚", + "create.gui.attribute_filter.whitelist_conjunctive": "ホワイトリスト(全ã�¦ï¼‰", + "create.gui.attribute_filter.whitelist_conjunctive.description": "é�¸æŠžã�—ã�Ÿå±žæ€§ã‚’ã�™ã�¹ã�¦ã‚’æŒ�ã�£ã�¦ã�„ã‚‹å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚", + "create.gui.attribute_filter.blacklist": "ブラックリスト", + "create.gui.attribute_filter.blacklist.description": "é�¸æŠžã�•ã‚Œã�Ÿå±žæ€§ã‚’æŒ�ã�Ÿã�ªã�„å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚", + "create.gui.attribute_filter.add_reference_item": "å�‚照アイテムを追加", - "create.tooltip.holdKey": "[%1$s] を長押し", - "create.tooltip.holdKeyOrKey": "[%1$s] または [%2$s] を長押し", + "create.tooltip.holdKey": "[%1$s] を長押ã�—", + "create.tooltip.holdKeyOrKey": "[%1$s] ã�¾ã�Ÿã�¯ [%2$s] を長押ã�—", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "スピード要件: %1$s", - "create.tooltip.speedRequirement.none": "無し", - "create.tooltip.speedRequirement.medium": "中速", - "create.tooltip.speedRequirement.high": "高速", - "create.tooltip.stressImpact": "応力への影響: %1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "超過応力", - "create.tooltip.capacityProvided": "応力許容量: %1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.capacityProvided.asGenerator": "(ジェネレータとして)", - "create.tooltip.generationSpeed": "%1$s %2$sを生成", - "create.tooltip.analogStrength": "アナログ強度: %1$s/15", + "create.tooltip.speedRequirement": "スピードè¦�件: %1$s", + "create.tooltip.speedRequirement.none": "ç„¡ã�—", + "create.tooltip.speedRequirement.medium": "中速", + "create.tooltip.speedRequirement.high": "高速", + "create.tooltip.stressImpact": "応力ã�¸ã�®å½±éŸ¿: %1$s", + "create.tooltip.stressImpact.low": "低", + "create.tooltip.stressImpact.medium": "中", + "create.tooltip.stressImpact.high": "高", + "create.tooltip.stressImpact.overstressed": "超é�Žå¿œåŠ›", + "create.tooltip.capacityProvided": "応力許容é‡�: %1$s", + "create.tooltip.capacityProvided.low": "å°�", + "create.tooltip.capacityProvided.medium": "中", + "create.tooltip.capacityProvided.high": "大", + "create.tooltip.capacityProvided.asGenerator": "(ジェãƒ�レータã�¨ã�—ã�¦)", + "create.tooltip.generationSpeed": "%1$s %2$sを生æˆ�", + "create.tooltip.analogStrength": "アナログ強度: %1$s/15", - "create.mechanical_mixer.min_ingredients": "最小 材料", + "create.mechanical_mixer.min_ingredients": "最å°� æ��æ–™", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -826,317 +826,317 @@ "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーバーティックが通常の速度に戻りました:D", - "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用してサーバーのティックを通常の速度に戻します", - "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーãƒ�ーティックã�¯ç�¾åœ¨ %s ms é�…ã��ã�ªã�£ã�¦ã�„ã�¾ã�™ :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーãƒ�ーティックã�Œ %s ms é�…ã��ã�ªã‚Šã�¾ã�—ã�Ÿ >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーãƒ�ーティックã�Œé€šå¸¸ã�®é€Ÿåº¦ã�«æˆ»ã‚Šã�¾ã�—ã�Ÿ:D", + "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用ã�—ã�¦ã‚µãƒ¼ãƒ�ーã�®ãƒ†ã‚£ãƒƒã‚¯ã‚’通常ã�®é€Ÿåº¦ã�«æˆ»ã�—ã�¾ã�™", + "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用ã�—ã�¦ã€�サーãƒ�ーã�®ãƒ†ã‚£ãƒƒã‚¯ã‚’æ„�図的ã�«é�…ã��ã�—ã�¾ã�™", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", - "create.subtitle.schematicannon_finish": "概略図砲が終了する", - "create.subtitle.slime_added": "スライムスクイーズ", - "create.subtitle.mechanical_press_activation": "メカニカルプレスが作動する", - "create.subtitle.mechanical_press_item_break": "金属クランク", - "create.subtitle.blockzapper_place": "ブロックザップされる", - "create.subtitle.blockzapper_confirm": "アファーマティブディン", - "create.subtitle.blockzapper_deny": "衰退するブープ", - "create.subtitle.block_funnel_eat": "ファンネルCHOMPS", + "create.subtitle.schematicannon_launch_block": "概略図砲ã�Œç™ºå°„ã�™ã‚‹", + "create.subtitle.schematicannon_finish": "概略図砲ã�Œçµ‚了ã�™ã‚‹", + "create.subtitle.slime_added": "スライムスクイーズ", + "create.subtitle.mechanical_press_activation": "メカニカルプレスã�Œä½œå‹•ã�™ã‚‹", + "create.subtitle.mechanical_press_item_break": "金属クランク", + "create.subtitle.blockzapper_place": "ブロックザップã�•ã‚Œã‚‹", + "create.subtitle.blockzapper_confirm": "アファーマティブディン", + "create.subtitle.blockzapper_deny": "衰退ã�™ã‚‹ãƒ–ープ", + "create.subtitle.block_funnel_eat": "ファンãƒ�ルCHOMPS", "_": "->------------------------] Item Descriptions [------------------------<-", - "item.create.example_item.tooltip": "アイテムの例(このツールチップが存在する単なるマーカー)", - "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。 _アンダースコア_用語を強調表示します。", - "item.create.example_item.tooltip.condition1": "これは", - "item.create.example_item.tooltip.behaviour1": "次に、このアイテムはこれを行います。 (行動はシフトで示されます)", - "item.create.example_item.tooltip.condition2": "そしてこれは", - "item.create.example_item.tooltip.behaviour2": "あなたは好きなだけ行動を追加することができます", - "item.create.example_item.tooltip.control1": "Ctrlを押したとき", - "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", + "item.create.example_item.tooltip": "アイテムã�®ä¾‹ï¼ˆã�“ã�®ãƒ„ールãƒ�ップã�Œå­˜åœ¨ã�™ã‚‹å�˜ã�ªã‚‹ãƒžãƒ¼ã‚«ãƒ¼ï¼‰", + "item.create.example_item.tooltip.summary": "アイテムã�®ç°¡å�˜ã�ªèª¬æ˜Žã€‚ _アンダースコア_用語を強調表示ã�—ã�¾ã�™ã€‚", + "item.create.example_item.tooltip.condition1": "ã�“ã‚Œã�¯", + "item.create.example_item.tooltip.behaviour1": "次ã�«ã€�ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�¯ã�“れを行ã�„ã�¾ã�™ã€‚ (行動ã�¯ã‚·ãƒ•ãƒˆã�§ç¤ºã�•ã‚Œã�¾ã�™ï¼‰", + "item.create.example_item.tooltip.condition2": "ã��ã�—ã�¦ã�“ã‚Œã�¯", + "item.create.example_item.tooltip.behaviour2": "ã�‚ã�ªã�Ÿã�¯å¥½ã��ã�ªã� ã�‘行動を追加ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™", + "item.create.example_item.tooltip.control1": "Ctrlを押ã�—ã�Ÿã�¨ã��", + "item.create.example_item.tooltip.action1": "ã�“れらã�®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã�Œè¡¨ç¤ºã�•ã‚Œã�¾ã�™ã€‚", - "item.create.wand_of_symmetry.tooltip": "対称性が必要", - "item.create.wand_of_symmetry.tooltip.summary": "構成されたプレーン全体のブロック配置を完全にミラーリングします。", - "item.create.wand_of_symmetry.tooltip.condition1": "ホットバーにあるとき", - "item.create.wand_of_symmetry.tooltip.behaviour1": "アクティブのまま", - "item.create.wand_of_symmetry.tooltip.control1": "地面を右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action1": "ミラーを_作成_または_移動_", - "item.create.wand_of_symmetry.tooltip.control2": "空中を右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action2": "アクティブなミラーを_削除_", - "item.create.wand_of_symmetry.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_を開きます", + "item.create.wand_of_symmetry.tooltip": "対称性ã�Œå¿…è¦�", + "item.create.wand_of_symmetry.tooltip.summary": "構æˆ�ã�•ã‚Œã�Ÿãƒ—レーン全体ã�®ãƒ–ロックé…�置を完全ã�«ãƒŸãƒ©ãƒ¼ãƒªãƒ³ã‚°ã�—ã�¾ã�™ã€‚", + "item.create.wand_of_symmetry.tooltip.condition1": "ホットãƒ�ーã�«ã�‚ã‚‹ã�¨ã��", + "item.create.wand_of_symmetry.tooltip.behaviour1": "アクティブã�®ã�¾ã�¾", + "item.create.wand_of_symmetry.tooltip.control1": "地é�¢ã‚’å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.wand_of_symmetry.tooltip.action1": "ミラーを_作æˆ�_ã�¾ã�Ÿã�¯_移動_", + "item.create.wand_of_symmetry.tooltip.control2": "空中をå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.wand_of_symmetry.tooltip.action2": "アクティブã�ªãƒŸãƒ©ãƒ¼ã‚’_削除_", + "item.create.wand_of_symmetry.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "item.create.handheld_blockzapper.tooltip": "ブロックザッパー", - "item.create.handheld_blockzapper.tooltip.summary": "離れた場所にブロックを配置または交換するための新しいガジェット。", - "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", - "item.create.handheld_blockzapper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_配置_または_置換_します。", - "item.create.handheld_blockzapper.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_を開きます", + "item.create.handheld_blockzapper.tooltip": "ブロックザッパー", + "item.create.handheld_blockzapper.tooltip.summary": "離れã�Ÿå ´æ‰€ã�«ãƒ–ロックをé…�ç½®ã�¾ã�Ÿã�¯äº¤æ�›ã�™ã‚‹ã�Ÿã‚�ã�®æ–°ã�—ã�„ガジェット。", + "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックã�—ã�Ÿã�¨ã��", + "item.create.handheld_blockzapper.tooltip.action1": "ターゲットã�®ãƒ–ロックをã�“ã�®ãƒ„ールã�«è¨­å®šã�—ã�¾ã�™ã€‚", + "item.create.handheld_blockzapper.tooltip.control2": "ブロックをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_é…�ç½®_ã�¾ã�Ÿã�¯_ç½®æ�›_ã�—ã�¾ã�™ã€‚", + "item.create.handheld_blockzapper.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "item.create.handheld_worldshaper.tooltip": "ハンドヘルドワールドシェーパー", - "item.create.handheld_worldshaper.tooltip.summary": "_風景_や_地形の特徴_を作成するための便利なツール。", - "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", - "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_をターゲットの場所に適用します。", - "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_を開きます", + "item.create.handheld_worldshaper.tooltip": "ãƒ�ンドヘルドワールドシェーパー", + "item.create.handheld_worldshaper.tooltip.summary": "_風景_ã‚„_地形ã�®ç‰¹å¾´_を作æˆ�ã�™ã‚‹ã�Ÿã‚�ã�®ä¾¿åˆ©ã�ªãƒ„ール。", + "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックã�—ã�Ÿã�¨ã��", + "item.create.handheld_worldshaper.tooltip.action1": "ターゲットã�®ãƒ–ロックをã�“ã�®ãƒ„ールã�«è¨­å®šã�—ã�¾ã�™ã€‚", + "item.create.handheld_worldshaper.tooltip.control2": "ブロックをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.handheld_worldshaper.tooltip.action2": "ç�¾åœ¨é�¸æŠžã�•ã‚Œã�¦ã�„ã‚‹_ブラシ_ã�¨_ツール_をターゲットã�®å ´æ‰€ã�«é�©ç”¨ã�—ã�¾ã�™ã€‚", + "item.create.handheld_worldshaper.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "item.create.tree_fertilizer.tooltip": "木質肥料", - "item.create.tree_fertilizer.tooltip.summary": "一般的な木の種類の成長を加速するのに適したミネラルの強力な組み合わせ。", - "item.create.tree_fertilizer.tooltip.condition1": "苗木に使用したとき", - "item.create.tree_fertilizer.tooltip.behaviour1": "_間隔の条件_に_関係なく_ツリーを成長させる", + "item.create.tree_fertilizer.tooltip": "木質肥料", + "item.create.tree_fertilizer.tooltip.summary": "一般的ã�ªæœ¨ã�®ç¨®é¡žã�®æˆ�長を加速ã�™ã‚‹ã�®ã�«é�©ã�—ã�ŸãƒŸãƒ�ラルã�®å¼·åŠ›ã�ªçµ„ã�¿å�ˆã‚�ã�›ã€‚", + "item.create.tree_fertilizer.tooltip.condition1": "苗木ã�«ä½¿ç”¨ã�—ã�Ÿã�¨ã��", + "item.create.tree_fertilizer.tooltip.behaviour1": "_é–“éš”ã�®æ�¡ä»¶_ã�«_関係ã�ªã��_ツリーをæˆ�é•·ã�•ã�›ã‚‹", - "item.create.deforester.tooltip": "デフォレスター", - "item.create.deforester.tooltip.summary": "一瞬で木を切り倒すことができる_輝く斧_。", + "item.create.deforester.tooltip": "デフォレスター", + "item.create.deforester.tooltip.summary": "一瞬ã�§æœ¨ã‚’切り倒ã�™ã�“ã�¨ã�Œã�§ã��ã‚‹_è¼�ã��æ–§_。", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", - "item.create.filter.tooltip": "フィルタ", - "item.create.filter.tooltip.summary": "ロジスティックデバイスの_出力_と_入力_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_ネストされたフィルター_と照合します。", - "item.create.filter.tooltip.condition1": "フィルタースロットにセットしたとき", - "item.create.filter.tooltip.behaviour1": "_構成_に応じてアイテムの流れを_制御_します。", - "item.create.filter.tooltip.condition2": "右クリックしたとき", - "item.create.filter.tooltip.behaviour2": "_設定インターフェース_を開きます", + "item.create.filter.tooltip": "フィルタ", + "item.create.filter.tooltip.summary": "ロジスティックデãƒ�イスã�®_出力_ã�¨_入力_をより_正確_ã�«_制御_ã�—ã€�_アイテムã�®ã‚»ãƒƒãƒˆ_ã�¾ã�Ÿã�¯ã�„ã��ã�¤ã�‹ã�®_ãƒ�ストã�•ã‚Œã�Ÿãƒ•ã‚£ãƒ«ã‚¿ãƒ¼_ã�¨ç…§å�ˆã�—ã�¾ã�™ã€‚", + "item.create.filter.tooltip.condition1": "フィルタースロットã�«ã‚»ãƒƒãƒˆã�—ã�Ÿã�¨ã��", + "item.create.filter.tooltip.behaviour1": "_構æˆ�_ã�«å¿œã�˜ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã�®æµ�れを_制御_ã�—ã�¾ã�™ã€‚", + "item.create.filter.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.filter.tooltip.behaviour2": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "item.create.attribute_filter.tooltip": "属性フィルター", - "item.create.attribute_filter.tooltip.summary": "ロジスティックデバイスの_出力_と_入力_をより_正確_に_制御_し、アイテムの_属性_と_カテゴリのセット_と照合します。", - "item.create.attribute_filter.tooltip.condition1": "フィルタースロットにセットしたとき", - "item.create.attribute_filter.tooltip.behaviour1": "_構成_に応じてアイテムの流れを_制御_します。", - "item.create.attribute_filter.tooltip.condition2": "右クリックしたとき", - "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_を開きます", + "item.create.attribute_filter.tooltip": "属性フィルター", + "item.create.attribute_filter.tooltip.summary": "ロジスティックデãƒ�イスã�®_出力_ã�¨_入力_をより_正確_ã�«_制御_ã�—ã€�アイテムã�®_属性_ã�¨_カテゴリã�®ã‚»ãƒƒãƒˆ_ã�¨ç…§å�ˆã�—ã�¾ã�™ã€‚", + "item.create.attribute_filter.tooltip.condition1": "フィルタースロットã�«ã‚»ãƒƒãƒˆã�—ã�Ÿã�¨ã��", + "item.create.attribute_filter.tooltip.behaviour1": "_構æˆ�_ã�«å¿œã�˜ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã�®æµ�れを_制御_ã�—ã�¾ã�™ã€‚", + "item.create.attribute_filter.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "item.create.empty_schematic.tooltip": "空のスキーマ", - "item.create.empty_schematic.tooltip.summary": "レシピの材料として、および_概略図テーブル_での記述に使用されます。", + "item.create.empty_schematic.tooltip": "空ã�®ã‚¹ã‚­ãƒ¼ãƒž", + "item.create.empty_schematic.tooltip.summary": "レシピã�®æ��æ–™ã�¨ã�—ã�¦ã€�ã�Šã‚ˆã�³_概略図テーブル_ã�§ã�®è¨˜è¿°ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚", - "item.create.schematic.tooltip": "概略図", - "item.create.schematic.tooltip.summary": "ワールドに配置および配置される構造を保持します。 ホログラムを必要に応じて配置し、_概略図砲_を使用して作成します。", - "item.create.schematic.tooltip.condition1": "持ったとき", - "item.create.schematic.tooltip.behaviour1": "画面上のツールを使用して配置できます。", - "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", - "item.create.schematic.tooltip.action1": "正確な_座標_を入力するための_インターフェース_を開きます。", + "item.create.schematic.tooltip": "概略図", + "item.create.schematic.tooltip.summary": "ワールドã�«é…�ç½®ã�Šã‚ˆã�³é…�ç½®ã�•ã‚Œã‚‹æ§‹é€ ã‚’ä¿�æŒ�ã�—ã�¾ã�™ã€‚ ホログラムを必è¦�ã�«å¿œã�˜ã�¦é…�ç½®ã�—ã€�_概略図砲_を使用ã�—ã�¦ä½œæˆ�ã�—ã�¾ã�™ã€‚", + "item.create.schematic.tooltip.condition1": "æŒ�ã�£ã�Ÿã�¨ã��", + "item.create.schematic.tooltip.behaviour1": "ç”»é�¢ä¸Šã�®ãƒ„ールを使用ã�—ã�¦é…�ç½®ã�§ã��ã�¾ã�™ã€‚", + "item.create.schematic.tooltip.control1": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.schematic.tooltip.action1": "正確ã�ª_座標_を入力ã�™ã‚‹ã�Ÿã‚�ã�®_インターフェース_ã‚’é–‹ã��ã�¾ã�™ã€‚", - "item.create.schematic_and_quill.tooltip": "概略図と羽根ペン", - "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存するために使用されます。", - "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", - "item.create.schematic_and_quill.tooltip.behaviour1": "右クリックして2つのコーナーポイントを選択します。", - "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。 もう一度右クリックして保存します。", - "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", - "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", - "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", - "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。 _スクロール_して距離を調整します。", - "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", + "item.create.schematic_and_quill.tooltip": "概略図ã�¨ç¾½æ ¹ãƒšãƒ³", + "item.create.schematic_and_quill.tooltip.summary": "ワールドã�®æ§‹é€ ç‰©ã‚’.nbtファイルã�«ä¿�å­˜ã�™ã‚‹ã�Ÿã‚�ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚", + "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", + "item.create.schematic_and_quill.tooltip.behaviour1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦2ã�¤ã�®ã‚³ãƒ¼ãƒŠãƒ¼ãƒ�イントをé�¸æŠžã�—ã�¾ã�™ã€‚", + "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押ã�—ã�ªã�Œã‚‰ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«_ã�—ã�¦ã€�サイズを調整ã�—ã�¾ã�™ã€‚ ã‚‚ã�†ä¸€åº¦å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦ä¿�å­˜ã�—ã�¾ã�™ã€‚", + "item.create.schematic_and_quill.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.schematic_and_quill.tooltip.action1": "コーナーãƒ�イントをé�¸æŠž/ä¿�存を確èª�ã�—ã�¾ã�™ã€‚", + "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押ã�—ã�¦ã‚‹ã�¨ã��", + "item.create.schematic_and_quill.tooltip.action2": "_空中_ã�§ãƒ�イントをé�¸æŠžã�—ã�¾ã�™ã€‚ _スクロール_ã�—ã�¦è·�離を調整ã�—ã�¾ã�™ã€‚", + "item.create.schematic_and_quill.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.schematic_and_quill.tooltip.action3": "é�¸æŠžã‚’_リセット_ã�—ã�¦å‰Šé™¤ã�—ã�¾ã�™ã€‚", - "block.create.schematicannon.tooltip": "スキーマキャノン", - "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。 隣接するインベントリからのアイテムを供給し、_火薬_を燃料として使用します。", - "block.create.schematicannon.tooltip.control1": "右クリックしたとき", - "block.create.schematicannon.tooltip.action1": "_インターフェイス_を開きます", + "block.create.schematicannon.tooltip": "スキーマキャノン", + "block.create.schematicannon.tooltip.summary": "ブロックを撃ã�£ã�¦ã€�展開ã�•ã‚Œã�Ÿ_概略図_ã‚’ã‚‚ã�¨ã�«ãƒ¯ãƒ¼ãƒ«ãƒ‰ã�«è¨­ç½®ã�—ã�¾ã�™ã€‚ 隣接ã�™ã‚‹ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’供給ã�—ã€�_ç�«è–¬_を燃料ã�¨ã�—ã�¦ä½¿ç”¨ã�—ã�¾ã�™ã€‚", + "block.create.schematicannon.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.schematicannon.tooltip.action1": "_インターフェイス_ã‚’é–‹ã��ã�¾ã�™", - "block.create.schematic_table.tooltip": "概略図テーブル", - "block.create.schematic_table.tooltip.summary": "保存された概略図を_空の概略図_に書き込みます。", - "block.create.schematic_table.tooltip.condition1": "空の概略図が与えられたとき", - "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", + "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip.summary": "ä¿�å­˜ã�•ã‚Œã�Ÿæ¦‚略図を_空ã�®æ¦‚略図_ã�«æ›¸ã��è¾¼ã�¿ã�¾ã�™ã€‚", + "block.create.schematic_table.tooltip.condition1": "空ã�®æ¦‚略図ã�Œä¸Žã�ˆã‚‰ã‚Œã�Ÿã�¨ã��", + "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダã�‹ã‚‰é�¸æŠžã�—ã�Ÿãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã�—ã�¾ã�™ã€‚", - "block.create.shaft.tooltip": "軸", - "block.create.shaft.tooltip.summary": "_回転_を直線で_中継_します。", + "block.create.shaft.tooltip": "軸", + "block.create.shaft.tooltip.summary": "_回転_ã‚’ç›´ç·šã�§_中継_ã�—ã�¾ã�™ã€‚", - "block.create.cogwheel.tooltip": "コグホイール", - "block.create.cogwheel.tooltip.summary": "_回転_を直線で、隣接する_歯車_に_中継_します。", + "block.create.cogwheel.tooltip": "コグホイール", + "block.create.cogwheel.tooltip.summary": "_回転_ã‚’ç›´ç·šã�§ã€�隣接ã�™ã‚‹_歯車_ã�«_中継_ã�—ã�¾ã�™ã€‚", - "block.create.large_cogwheel.tooltip": "大型コグホイール", - "block.create.large_cogwheel.tooltip.summary": "より大きなバージョンの_歯車_により、小さな対応物に接続したときに_回転速度_を_変更_できます。", + "block.create.large_cogwheel.tooltip": "大型コグホイール", + "block.create.large_cogwheel.tooltip.summary": "より大ã��ã�ªãƒ�ージョンã�®_歯車_ã�«ã‚ˆã‚Šã€�å°�ã�•ã�ªå¯¾å¿œç‰©ã�«æŽ¥ç¶šã�—ã�Ÿã�¨ã��ã�«_回転速度_ã‚’_変更_ã�§ã��ã�¾ã�™ã€‚", - "block.create.encased_shaft.tooltip": "内蔵シャフト", - "block.create.encased_shaft.tooltip.summary": "_回転_を直線で_中継_します。 壁を通過する回転の伝播に適しています。", + "block.create.encased_shaft.tooltip": "内蔵シャフト", + "block.create.encased_shaft.tooltip.summary": "_回転_ã‚’ç›´ç·šã�§_中継_ã�—ã�¾ã�™ã€‚ å£�を通é�Žã�™ã‚‹å›žè»¢ã�®ä¼�æ’­ã�«é�©ã�—ã�¦ã�„ã�¾ã�™ã€‚", - "block.create.gearbox.tooltip": "ギアボックス", - "block.create.gearbox.tooltip.summary": "_中継_する_4方向_の_回転_直線接続を逆にします。", + "block.create.gearbox.tooltip": "ギアボックス", + "block.create.gearbox.tooltip.summary": "_中継_ã�™ã‚‹_4æ–¹å�‘_ã�®_回転_直線接続を逆ã�«ã�—ã�¾ã�™ã€‚", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", - "block.create.gearshift.tooltip": "ギアシフト", - "block.create.gearshift.tooltip.summary": "接続されたシャフトの回転方向を切り替えるコントロール。", - "block.create.gearshift.tooltip.condition1": "パワーが入ってるとき", - "block.create.gearshift.tooltip.behaviour1": "出て行く回転を_逆_にします。", + "block.create.gearshift.tooltip": "ギアシフト", + "block.create.gearshift.tooltip.summary": "接続ã�•ã‚Œã�Ÿã‚·ãƒ£ãƒ•ãƒˆã�®å›žè»¢æ–¹å�‘を切り替ã�ˆã‚‹ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã€‚", + "block.create.gearshift.tooltip.condition1": "パワーã�Œå…¥ã�£ã�¦ã‚‹ã�¨ã��", + "block.create.gearshift.tooltip.behaviour1": "出ã�¦è¡Œã��回転を_逆_ã�«ã�—ã�¾ã�™ã€‚", - "block.create.clutch.tooltip": "クラッチ", - "block.create.clutch.tooltip.summary": "接続されたシャフトの回転をオン/オフするコントロール。", - "block.create.clutch.tooltip.condition1": "パワーが入ってるとき", - "block.create.clutch.tooltip.behaviour1": "反対側への回転の伝達を_停止_します。", + "block.create.clutch.tooltip": "クラッãƒ�", + "block.create.clutch.tooltip.summary": "接続ã�•ã‚Œã�Ÿã‚·ãƒ£ãƒ•ãƒˆã�®å›žè»¢ã‚’オン/オフã�™ã‚‹ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã€‚", + "block.create.clutch.tooltip.condition1": "パワーã�Œå…¥ã�£ã�¦ã‚‹ã�¨ã��", + "block.create.clutch.tooltip.behaviour1": "å��対å�´ã�¸ã�®å›žè»¢ã�®ä¼�é�”ã‚’_å�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.encased_belt.tooltip": "ケース入りベルト", - "block.create.encased_belt.tooltip.summary": "_回転_をそのブロックと接続された_ケース入りベルト_に_中継_します。", - "block.create.encased_belt.tooltip.condition1": "接続したとき", - "block.create.encased_belt.tooltip.behaviour1": "アタッチされたブロックの_回転速度_と方向はまったく_同じ_です。 彼らは同じように向き合う必要はありません。", + "block.create.encased_belt.tooltip": "ケース入りベルト", + "block.create.encased_belt.tooltip.summary": "_回転_ã‚’ã��ã�®ãƒ–ロックã�¨æŽ¥ç¶šã�•ã‚Œã�Ÿ_ケース入りベルト_ã�«_中継_ã�—ã�¾ã�™ã€‚", + "block.create.encased_belt.tooltip.condition1": "接続ã�—ã�Ÿã�¨ã��", + "block.create.encased_belt.tooltip.behaviour1": "アタッãƒ�ã�•ã‚Œã�Ÿãƒ–ロックã�®_回転速度_ã�¨æ–¹å�‘ã�¯ã�¾ã�£ã�Ÿã��_å�Œã�˜_ã�§ã�™ã€‚ 彼らã�¯å�Œã�˜ã‚ˆã�†ã�«å�‘ã��å�ˆã�†å¿…è¦�ã�¯ã�‚ã‚Šã�¾ã�›ã‚“。", - "block.create.adjustable_pulley.tooltip": "アナログベルトプーリー", - "block.create.adjustable_pulley.tooltip.summary": "ブロックを介して_回転を中継_し、取り付けられた_ケース入りベルト_に伝達します。 取り付けられた包み込まれたベルトは、このブロックが受信する_アナログレッドストーン信号_に基づいて_より速く回転_します。", - "block.create.adjustable_pulley.tooltip.condition1": "レッドストーンコントロール", - "block.create.adjustable_pulley.tooltip.behaviour1": "信号がないと、接続されているベルトの_速度が上がりません_。 フルストレングスシグナル接続ベルトにより、_速度は2倍になります_。", + "block.create.adjustable_pulley.tooltip": "アナログベルトプーリー", + "block.create.adjustable_pulley.tooltip.summary": "ブロックを介ã�—ã�¦_回転を中継_ã�—ã€�å�–り付ã�‘られã�Ÿ_ケース入りベルト_ã�«ä¼�é�”ã�—ã�¾ã�™ã€‚ å�–り付ã�‘られã�ŸåŒ…ã�¿è¾¼ã�¾ã‚Œã�Ÿãƒ™ãƒ«ãƒˆã�¯ã€�ã�“ã�®ãƒ–ロックã�Œå�—ä¿¡ã�™ã‚‹_アナログレッドストーン信å�·_ã�«åŸºã�¥ã�„ã�¦_より速ã��回転_ã�—ã�¾ã�™ã€‚", + "block.create.adjustable_pulley.tooltip.condition1": "レッドストーンコントロール", + "block.create.adjustable_pulley.tooltip.behaviour1": "ä¿¡å�·ã�Œã�ªã�„ã�¨ã€�接続ã�•ã‚Œã�¦ã�„るベルトã�®_速度ã�Œä¸Šã�Œã‚Šã�¾ã�›ã‚“_。 フルストレングスシグナル接続ベルトã�«ã‚ˆã‚Šã€�_速度ã�¯2å€�ã�«ã�ªã‚Šã�¾ã�™_。", - "item.create.belt_connector.tooltip": "ベルトコネクター", - "item.create.belt_connector.tooltip.summary": "2つ以上の_シャフト_を_メカニカルベルト_で接続します。 接続されたシャフトの回転速度と方向はまったく同じです。 ベルトは、_アイテム_と_エンティティ_の_コンベア_として機能できます。", - "item.create.belt_connector.tooltip.control1": "シャフトを右クリックしたとき", - "item.create.belt_connector.tooltip.action1": "ベルトの1つのプーリーとしてシャフトを選択します。 選択した両方のシャフトは、_ベルトの方向_に向かって_垂直_、_水平_、または_斜め_に整列する必要があります。", - "item.create.belt_connector.tooltip.control2": "スニークしながらシャフトを右クリックしたとき", - "item.create.belt_connector.tooltip.action2": "ベルトの最初に選択された位置を_リセット_します。", + "item.create.belt_connector.tooltip": "ベルトコãƒ�クター", + "item.create.belt_connector.tooltip.summary": "2ã�¤ä»¥ä¸Šã�®_シャフト_ã‚’_メカニカルベルト_ã�§æŽ¥ç¶šã�—ã�¾ã�™ã€‚ 接続ã�•ã‚Œã�Ÿã‚·ãƒ£ãƒ•ãƒˆã�®å›žè»¢é€Ÿåº¦ã�¨æ–¹å�‘ã�¯ã�¾ã�£ã�Ÿã��å�Œã�˜ã�§ã�™ã€‚ ベルトã�¯ã€�_アイテム_ã�¨_エンティティ_ã�®_コンベア_ã�¨ã�—ã�¦æ©Ÿèƒ½ã�§ã��ã�¾ã�™ã€‚", + "item.create.belt_connector.tooltip.control1": "シャフトをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.belt_connector.tooltip.action1": "ベルトã�®1ã�¤ã�®ãƒ—ーリーã�¨ã�—ã�¦ã‚·ãƒ£ãƒ•ãƒˆã‚’é�¸æŠžã�—ã�¾ã�™ã€‚ é�¸æŠžã�—ã�Ÿä¸¡æ–¹ã�®ã‚·ãƒ£ãƒ•ãƒˆã�¯ã€�_ベルトã�®æ–¹å�‘_ã�«å�‘ã�‹ã�£ã�¦_åž‚ç›´_ã€�_æ°´å¹³_ã€�ã�¾ã�Ÿã�¯_æ–œã‚�_ã�«æ•´åˆ—ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "item.create.belt_connector.tooltip.control2": "スニークã�—ã�ªã�Œã‚‰ã‚·ãƒ£ãƒ•ãƒˆã‚’å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.belt_connector.tooltip.action2": "ベルトã�®æœ€åˆ�ã�«é�¸æŠžã�•ã‚Œã�Ÿä½�置を_リセット_ã�—ã�¾ã�™ã€‚", - "item.create.goggles.tooltip": "ゴーグル", - "item.create.goggles.tooltip.summary": "有用な動力情報で視覚を強化するための眼鏡。", - "item.create.goggles.tooltip.condition1": "着用したとき", - "item.create.goggles.tooltip.behaviour1": "配置されたキネティックコンポーネントの_速度レベル_に対応する_色付きのインジケーター_と、個々のコンポーネント_の応力の影響_と_容量_を表示します。", - "item.create.goggles.tooltip.condition2": "計器を見たとき", - "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの速度または応力に関する詳細情報を表示します。", + "item.create.goggles.tooltip": "ゴーグル", + "item.create.goggles.tooltip.summary": "有用ã�ªå‹•åŠ›æƒ…å ±ã�§è¦–覚を強化ã�™ã‚‹ã�Ÿã‚�ã�®çœ¼é�¡ã€‚", + "item.create.goggles.tooltip.condition1": "ç�€ç”¨ã�—ã�Ÿã�¨ã��", + "item.create.goggles.tooltip.behaviour1": "é…�ç½®ã�•ã‚Œã�Ÿã‚­ãƒ�ティックコンãƒ�ーãƒ�ントã�®_速度レベル_ã�«å¯¾å¿œã�™ã‚‹_色付ã��ã�®ã‚¤ãƒ³ã‚¸ã‚±ãƒ¼ã‚¿ãƒ¼_ã�¨ã€�個々ã�®ã‚³ãƒ³ãƒ�ーãƒ�ント_ã�®å¿œåŠ›ã�®å½±éŸ¿_ã�¨_容é‡�_を表示ã�—ã�¾ã�™ã€‚", + "item.create.goggles.tooltip.condition2": "計器を見ã�Ÿã�¨ã��", + "item.create.goggles.tooltip.behaviour2": "計器ã�ŒæŽ¥ç¶šã�•ã‚Œã�¦ã�„ã‚‹ãƒ�ットワークã�®é€Ÿåº¦ã�¾ã�Ÿã�¯å¿œåŠ›ã�«é–¢ã�™ã‚‹è©³ç´°æƒ…報を表示ã�—ã�¾ã�™ã€‚", - "item.create.wrench.tooltip": "レンチ", - "item.create.wrench.tooltip.summary": "動力論的からくりに取り組むための便利なツール。 コンポーネントの_回転_、_解体_、_設定_に使用できます。", - "item.create.wrench.tooltip.control1": "動力ブロックを右クリックしたとき", - "item.create.wrench.tooltip.action1": "_操作した面に向かって、または面から離れるように_コンポーネントを回転させます_。", - "item.create.wrench.tooltip.control2": "スニークしながら右クリックしたとき", - "item.create.wrench.tooltip.action2": "_動力コンポーネントを分解_し、_インベントリ_に戻します。", + "item.create.wrench.tooltip": "レンãƒ�", + "item.create.wrench.tooltip.summary": "動力論的ã�‹ã‚‰ã��ã‚Šã�«å�–り組むã�Ÿã‚�ã�®ä¾¿åˆ©ã�ªãƒ„ール。 コンãƒ�ーãƒ�ントã�®_回転_ã€�_解体_ã€�_設定_ã�«ä½¿ç”¨ã�§ã��ã�¾ã�™ã€‚", + "item.create.wrench.tooltip.control1": "動力ブロックをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.wrench.tooltip.action1": "_æ“�作ã�—ã�Ÿé�¢ã�«å�‘ã�‹ã�£ã�¦ã€�ã�¾ã�Ÿã�¯é�¢ã�‹ã‚‰é›¢ã‚Œã‚‹ã‚ˆã�†ã�«_コンãƒ�ーãƒ�ントを回転ã�•ã�›ã�¾ã�™_。", + "item.create.wrench.tooltip.control2": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "item.create.wrench.tooltip.action2": "_動力コンãƒ�ーãƒ�ントを分解_ã�—ã€�_インベントリ_ã�«æˆ»ã�—ã�¾ã�™ã€‚", - "block.create.creative_motor.tooltip": "クリエイティブモーター", - "block.create.creative_motor.tooltip.summary": "_回転力_を設定可能なソース。", + "block.create.creative_motor.tooltip": "クリエイティブモーター", + "block.create.creative_motor.tooltip.summary": "_回転力_を設定å�¯èƒ½ã�ªã‚½ãƒ¼ã‚¹ã€‚", - "block.create.water_wheel.tooltip": "水車", - "block.create.water_wheel.tooltip.summary": "_隣接する水流_から取得される_回転力_を提供します。", + "block.create.water_wheel.tooltip": "水車", + "block.create.water_wheel.tooltip.summary": "_隣接ã�™ã‚‹æ°´æµ�_ã�‹ã‚‰å�–å¾—ã�•ã‚Œã‚‹_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚", - "block.create.encased_fan.tooltip": "内蔵ファン", - "block.create.encased_fan.tooltip.summary": "_回転力_を_気流_に変換し、戻します。さまざまな用途があります。", - "block.create.encased_fan.tooltip.condition1": "レッドストーン動力を与えたとき", - "block.create.encased_fan.tooltip.behaviour1": "直下の_熱源_から_回転力_を提供します。 ファンは下向きにする必要があります。", - "block.create.encased_fan.tooltip.condition2": "回転したとき", - "block.create.encased_fan.tooltip.behaviour2": "入力回転速度に応じて、エンティティを_押す_または_引き戻_します。", - "block.create.encased_fan.tooltip.condition3": "特別なブロックを吹き抜けるとき", - "block.create.encased_fan.tooltip.behaviour3": "_液体_と_炎_の粒子が空気の流れに放出されます。 これは、_アイテムの処理_に使用できます。", + "block.create.encased_fan.tooltip": "内蔵ファン", + "block.create.encased_fan.tooltip.summary": "_回転力_ã‚’_æ°—æµ�_ã�«å¤‰æ�›ã�—ã€�戻ã�—ã�¾ã�™ã€‚ã�•ã�¾ã�–ã�¾ã�ªç”¨é€”ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.encased_fan.tooltip.condition1": "レッドストーン動力を与ã�ˆã�Ÿã�¨ã��", + "block.create.encased_fan.tooltip.behaviour1": "直下ã�®_熱æº�_ã�‹ã‚‰_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚ ファンã�¯ä¸‹å�‘ã��ã�«ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.encased_fan.tooltip.condition2": "回転ã�—ã�Ÿã�¨ã��", + "block.create.encased_fan.tooltip.behaviour2": "入力回転速度ã�«å¿œã�˜ã�¦ã€�エンティティを_押ã�™_ã�¾ã�Ÿã�¯_引ã��戻_ã�—ã�¾ã�™ã€‚", + "block.create.encased_fan.tooltip.condition3": "特別ã�ªãƒ–ロックをå�¹ã��抜ã�‘ã‚‹ã�¨ã��", + "block.create.encased_fan.tooltip.behaviour3": "_液体_ã�¨_ç‚Ž_ã�®ç²’å­�ã�Œç©ºæ°—ã�®æµ�ã‚Œã�«æ”¾å‡ºã�•ã‚Œã�¾ã�™ã€‚ ã�“ã‚Œã�¯ã€�_アイテムã�®å‡¦ç�†_ã�«ä½¿ç”¨ã�§ã��ã�¾ã�™ã€‚", - "block.create.nozzle.tooltip": "ノズル", - "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", + "block.create.nozzle.tooltip": "ノズル", + "block.create.nozzle.tooltip.summary": "_ケース入りファン_ã�®å‰�é�¢ã�«å�–り付ã�‘ã�¦ã€�エンティティã�¸ã�®å½±éŸ¿ã‚’_全方å�‘_ã�«åˆ†æ•£ã�—ã�¾ã�™ã€‚", - "block.create.hand_crank.tooltip": "ハンドクランク", - "block.create.hand_crank.tooltip.summary": "プレイヤーの相互作用を必要とする_回転力の単純な情報源_。", - "block.create.hand_crank.tooltip.condition1": "使用してるとき", - "block.create.hand_crank.tooltip.behaviour1": "付属の仕掛けに_回転力_を提供します。 _スニークで回転を逆_にします。", + "block.create.hand_crank.tooltip": "ãƒ�ンドクランク", + "block.create.hand_crank.tooltip.summary": "プレイヤーã�®ç›¸äº’作用を必è¦�ã�¨ã�™ã‚‹_回転力ã�®å�˜ç´”ã�ªæƒ…å ±æº�_。", + "block.create.hand_crank.tooltip.condition1": "使用ã�—ã�¦ã‚‹ã�¨ã��", + "block.create.hand_crank.tooltip.behaviour1": "付属ã�®ä»•æŽ›ã�‘ã�«_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚ _スニークã�§å›žè»¢ã‚’逆_ã�«ã�—ã�¾ã�™ã€‚", - "block.create.cuckoo_clock.tooltip": "鳩時計", - "block.create.cuckoo_clock.tooltip.summary": "空間を_飾り_、_時間を追跡する_ための素晴らしい職人技。", - "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", - "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。 _プレイヤーが眠れるようになる_とすぐに、_正午_と夕暮れに1回_アクティブ_になります。", + "block.create.cuckoo_clock.tooltip": "鳩時計", + "block.create.cuckoo_clock.tooltip.summary": "空間を_飾り_ã€�_時間を追跡ã�™ã‚‹_ã�Ÿã‚�ã�®ç´ æ™´ã‚‰ã�—ã�„è�·äººæŠ€ã€‚", + "block.create.cuckoo_clock.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.cuckoo_clock.tooltip.behaviour1": "_ç�¾åœ¨ã�®æ™‚刻_を表示ã�—ã€�1æ—¥ã�«2回曲をå†�生ã�—ã�¾ã�™ã€‚ _プレイヤーã�Œçœ ã‚Œã‚‹ã‚ˆã�†ã�«ã�ªã‚‹_ã�¨ã�™ã��ã�«ã€�_æ­£å�ˆ_ã�¨å¤•æš®ã‚Œã�«1回_アクティブ_ã�«ã�ªã‚Šã�¾ã�™ã€‚", - "block.create.turntable.tooltip": "ターンテーブル", - "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", + "block.create.turntable.tooltip": "ターンテーブル", + "block.create.turntable.tooltip.summary": "_回転力_ã‚’æ´—ç·´ã�•ã‚Œã�Ÿä¹—り物酔ã�„ã�«å¤‰ã�ˆã�¾ã�™ã€‚", - "block.create.millstone.tooltip": "石臼", - "block.create.millstone.tooltip.summary": "挿入された_材料_の_研削_に適したキネティックコンポーネント。 隣接する歯車によって、または下部のシャフトに接続することによって、動力を供給できます。 結果はコンポーネントから抽出する必要があります。", - "block.create.millstone.tooltip.condition1": "回転したとき", - "block.create.millstone.tooltip.behaviour1": "ブロックの側面または上面から挿入されたアイテムを_粉砕_を開始します。", - "block.create.millstone.tooltip.condition2": "右クリックしたとき", - "block.create.millstone.tooltip.behaviour2": "出力物を手動で収集します。", + "block.create.millstone.tooltip": "石臼", + "block.create.millstone.tooltip.summary": "挿入ã�•ã‚Œã�Ÿ_æ��æ–™_ã�®_研削_ã�«é�©ã�—ã�Ÿã‚­ãƒ�ティックコンãƒ�ーãƒ�ント。 隣接ã�™ã‚‹æ­¯è»Šã�«ã‚ˆã�£ã�¦ã€�ã�¾ã�Ÿã�¯ä¸‹éƒ¨ã�®ã‚·ãƒ£ãƒ•ãƒˆã�«æŽ¥ç¶šã�™ã‚‹ã�“ã�¨ã�«ã‚ˆã�£ã�¦ã€�動力を供給ã�§ã��ã�¾ã�™ã€‚ çµ�æžœã�¯ã‚³ãƒ³ãƒ�ーãƒ�ントã�‹ã‚‰æŠ½å‡ºã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.millstone.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.millstone.tooltip.behaviour1": "ブロックã�®å�´é�¢ã�¾ã�Ÿã�¯ä¸Šé�¢ã�‹ã‚‰æŒ¿å…¥ã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ã‚’_粉砕_を開始ã�—ã�¾ã�™ã€‚", + "block.create.millstone.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.millstone.tooltip.behaviour2": "出力物を手動ã�§å�Žé›†ã�—ã�¾ã�™ã€‚", - "block.create.crushing_wheel.tooltip": "クラッシングホイール", - "block.create.crushing_wheel.tooltip.summary": "何かを_分解_する大きな回転可能なホイール。", - "block.create.crushing_wheel.tooltip.condition1": "他の破砕ホイールに取り付けたとき", - "block.create.crushing_wheel.tooltip.behaviour1": "様々な物を処理するための破砕機を形成します。 ホイールの歯は、同じ速度で接続し、反対方向に動く必要があります。", + "block.create.crushing_wheel.tooltip": "クラッシングホイール", + "block.create.crushing_wheel.tooltip.summary": "何ã�‹ã‚’_分解_ã�™ã‚‹å¤§ã��ã�ªå›žè»¢å�¯èƒ½ã�ªãƒ›ã‚¤ãƒ¼ãƒ«ã€‚", + "block.create.crushing_wheel.tooltip.condition1": "ä»–ã�®ç ´ç •ãƒ›ã‚¤ãƒ¼ãƒ«ã�«å�–り付ã�‘ã�Ÿã�¨ã��", + "block.create.crushing_wheel.tooltip.behaviour1": "様々ã�ªç‰©ã‚’処ç�†ã�™ã‚‹ã�Ÿã‚�ã�®ç ´ç •æ©Ÿã‚’å½¢æˆ�ã�—ã�¾ã�™ã€‚ ホイールã�®æ­¯ã�¯ã€�å�Œã�˜é€Ÿåº¦ã�§æŽ¥ç¶šã�—ã€�å��対方å�‘ã�«å‹•ã��å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.mechanical_press.tooltip": "メカニカルプレス", - "block.create.mechanical_press.tooltip.summary": "その下のアイテムを圧縮するための強力なピストン。 一定の_回転力_が必要です。", - "block.create.mechanical_press.tooltip.condition1": "レッドストーン動力を受けたとき", - "block.create.mechanical_press.tooltip.behaviour1": "その下にドロップされたアイテムの圧縮を_開始_します。", - "block.create.mechanical_press.tooltip.condition2": "メカニカルベルトの上にあるとき", - "block.create.mechanical_press.tooltip.behaviour2": "ベルト上のバイパスアイテムを_自動的_に圧縮します。", + "block.create.mechanical_press.tooltip": "メカニカルプレス", + "block.create.mechanical_press.tooltip.summary": "ã��ã�®ä¸‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’圧縮ã�™ã‚‹ã�Ÿã‚�ã�®å¼·åŠ›ã�ªãƒ”ストン。 一定ã�®_回転力_ã�Œå¿…è¦�ã�§ã�™ã€‚", + "block.create.mechanical_press.tooltip.condition1": "レッドストーン動力をå�—ã�‘ã�Ÿã�¨ã��", + "block.create.mechanical_press.tooltip.behaviour1": "ã��ã�®ä¸‹ã�«ãƒ‰ãƒ­ãƒƒãƒ—ã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ã�®åœ§ç¸®ã‚’_開始_ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_press.tooltip.condition2": "メカニカルベルトã�®ä¸Šã�«ã�‚ã‚‹ã�¨ã��", + "block.create.mechanical_press.tooltip.behaviour2": "ベルト上ã�®ãƒ�イパスアイテムを_自動的_ã�«åœ§ç¸®ã�—ã�¾ã�™ã€‚", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", - "block.create.basin.tooltip": "鉢", - "block.create.basin.tooltip.summary": "_メカニカルミキサー_と_メカニカルプレス_での処理に使用される便利な_アイテムの入れ物_。_レッドストーンコンパレータ_をサポートします。", + "block.create.basin.tooltip": "鉢", + "block.create.basin.tooltip.summary": "_メカニカルミキサー_ã�¨_メカニカルプレス_ã�§ã�®å‡¦ç�†ã�«ä½¿ç”¨ã�•ã‚Œã‚‹ä¾¿åˆ©ã�ª_アイテムã�®å…¥ã‚Œç‰©_。_レッドストーンコンパレータ_をサãƒ�ートã�—ã�¾ã�™ã€‚", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", - "block.create.mechanical_mixer.tooltip": "メカニカルミキサー", - "block.create.mechanical_mixer.tooltip.summary": "その下のアイテムに形状のない製作レシピを適用するための動力ミキサー。 一定の_回転力_と下に配置された_鉢_が必要です(間にギャップがあります)。", - "block.create.mechanical_mixer.tooltip.condition1": "鉢の上にあるとき", - "block.create.mechanical_mixer.tooltip.behaviour1": "必要なすべての成分が存在するときはいつでも、鉢のアイテムの混合を開始します。", - "block.create.mechanical_mixer.tooltip.condition2": "レンチと併用したとき", - "block.create.mechanical_mixer.tooltip.behaviour2": "適用されるレシピの_総材料_の最小量を_構成_します。 このオプションを使用して、似ているが成分が少ない_不要なレシピを除外_します。", + "block.create.mechanical_mixer.tooltip": "メカニカルミキサー", + "block.create.mechanical_mixer.tooltip.summary": "ã��ã�®ä¸‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�«å½¢çŠ¶ã�®ã�ªã�„製作レシピをé�©ç”¨ã�™ã‚‹ã�Ÿã‚�ã�®å‹•åŠ›ãƒŸã‚­ã‚µãƒ¼ã€‚ 一定ã�®_回転力_ã�¨ä¸‹ã�«é…�ç½®ã�•ã‚Œã�Ÿ_鉢_ã�Œå¿…è¦�ã�§ã�™ï¼ˆé–“ã�«ã‚®ãƒ£ãƒƒãƒ—ã�Œã�‚ã‚Šã�¾ã�™ï¼‰ã€‚", + "block.create.mechanical_mixer.tooltip.condition1": "鉢ã�®ä¸Šã�«ã�‚ã‚‹ã�¨ã��", + "block.create.mechanical_mixer.tooltip.behaviour1": "å¿…è¦�ã�ªã�™ã�¹ã�¦ã�®æˆ�分ã�Œå­˜åœ¨ã�™ã‚‹ã�¨ã��ã�¯ã�„ã�¤ã�§ã‚‚ã€�鉢ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�®æ··å�ˆã‚’開始ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_mixer.tooltip.condition2": "レンãƒ�ã�¨ä½µç”¨ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_mixer.tooltip.behaviour2": "é�©ç”¨ã�•ã‚Œã‚‹ãƒ¬ã‚·ãƒ”ã�®_ç·�æ��æ–™_ã�®æœ€å°�é‡�ã‚’_構æˆ�_ã�—ã�¾ã�™ã€‚ ã�“ã�®ã‚ªãƒ—ションを使用ã�—ã�¦ã€�ä¼¼ã�¦ã�„ã‚‹ã�Œæˆ�分ã�Œå°‘ã�ªã�„_ä¸�è¦�ã�ªãƒ¬ã‚·ãƒ”を除外_ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_crafter.tooltip": "メカニカルクラフト", - "block.create.mechanical_crafter.tooltip.summary": "_あらゆる形状の製作レシピ_を自動化するための動的アセンブラー。 _レシピに対応するグリッドに複数を配置_し、_フェアベルトを配置して_、いずれかのクラフターのグリッドから出る_流れ_を作成します。", - "block.create.mechanical_crafter.tooltip.condition1": "回転したとき", - "block.create.mechanical_crafter.tooltip.behaviour1": "グリッド内の_すべてのクラフター_にテンプレートが_与えられる_とすぐに、_生産プロセスを開始_します。", + "block.create.mechanical_crafter.tooltip": "メカニカルクラフト", + "block.create.mechanical_crafter.tooltip.summary": "_ã�‚らゆる形状ã�®è£½ä½œãƒ¬ã‚·ãƒ”_を自動化ã�™ã‚‹ã�Ÿã‚�ã�®å‹•çš„アセンブラー。 _レシピã�«å¯¾å¿œã�™ã‚‹ã‚°ãƒªãƒƒãƒ‰ã�«è¤‡æ•°ã‚’é…�ç½®_ã�—ã€�_フェアベルトをé…�ç½®ã�—ã�¦_ã€�ã�„ã�šã‚Œã�‹ã�®ã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�®ã‚°ãƒªãƒƒãƒ‰ã�‹ã‚‰å‡ºã‚‹_æµ�ã‚Œ_を作æˆ�ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_crafter.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_crafter.tooltip.behaviour1": "グリッド内ã�®_ã�™ã�¹ã�¦ã�®ã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼_ã�«ãƒ†ãƒ³ãƒ—レートã�Œ_与ã�ˆã‚‰ã‚Œã‚‹_ã�¨ã�™ã��ã�«ã€�_生産プロセスを開始_ã�—ã�¾ã�™ã€‚", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", - "block.create.mechanical_crafter.tooltip.control1": "フロントでレンチしたとき", - "block.create.mechanical_crafter.tooltip.action1": "_個々の生産者が_アイテムを移動_する_方向_を循環させます。 作業グリッドを形成するには、すべてのアイテムを最終的なクラフターに向かって_移動させる流れ_に_ベルト_を配置します。 最終的なクラフターはグリッドから_離れる_方向を指さなければなりません。", - "block.create.mechanical_crafter.tooltip.control2": "後ろでレンチしたとき", - "block.create.mechanical_crafter.tooltip.action2": "隣接するクラフターの_入力インベントリ_を_接続_します。 これを使用して、クラフトグリッドの_スロットを結合_し、_入力作業を節約_します。", + "block.create.mechanical_crafter.tooltip.control1": "フロントã�§ãƒ¬ãƒ³ãƒ�ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_crafter.tooltip.action1": "_個々ã�®ç”Ÿç”£è€…ã�Œ_アイテムを移動_ã�™ã‚‹_æ–¹å�‘_を循環ã�•ã�›ã�¾ã�™ã€‚ 作業グリッドを形æˆ�ã�™ã‚‹ã�«ã�¯ã€�ã�™ã�¹ã�¦ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’最終的ã�ªã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�«å�‘ã�‹ã�£ã�¦_移動ã�•ã�›ã‚‹æµ�ã‚Œ_ã�«_ベルト_ã‚’é…�ç½®ã�—ã�¾ã�™ã€‚ 最終的ã�ªã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�¯ã‚°ãƒªãƒƒãƒ‰ã�‹ã‚‰_離れる_æ–¹å�‘を指ã�•ã�ªã�‘ã‚Œã�°ã�ªã‚Šã�¾ã�›ã‚“。", + "block.create.mechanical_crafter.tooltip.control2": "後ã‚�ã�§ãƒ¬ãƒ³ãƒ�ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_crafter.tooltip.action2": "隣接ã�™ã‚‹ã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�®_入力インベントリ_ã‚’_接続_ã�—ã�¾ã�™ã€‚ ã�“れを使用ã�—ã�¦ã€�クラフトグリッドã�®_スロットをçµ�å�ˆ_ã�—ã€�_入力作業を節約_ã�—ã�¾ã�™ã€‚", - "block.create.furnace_engine.tooltip": "かまどエンジン", - "block.create.furnace_engine.tooltip.summary": "_稼働するかまど_が機能することを必要とする強力な_回転動力源_。", - "block.create.furnace_engine.tooltip.condition1": "燃えてるかまどに取り付けたとき", - "block.create.furnace_engine.tooltip.behaviour1": "その前(1m離れて)に配置された_フライホイールへの動力供給を開始_します。 高速化するには高炉を使用してください。", + "block.create.furnace_engine.tooltip": "ã�‹ã�¾ã�©ã‚¨ãƒ³ã‚¸ãƒ³", + "block.create.furnace_engine.tooltip.summary": "_稼åƒ�ã�™ã‚‹ã�‹ã�¾ã�©_ã�Œæ©Ÿèƒ½ã�™ã‚‹ã�“ã�¨ã‚’å¿…è¦�ã�¨ã�™ã‚‹å¼·åŠ›ã�ª_回転動力æº�_。", + "block.create.furnace_engine.tooltip.condition1": "燃ã�ˆã�¦ã‚‹ã�‹ã�¾ã�©ã�«å�–り付ã�‘ã�Ÿã�¨ã��", + "block.create.furnace_engine.tooltip.behaviour1": "ã��ã�®å‰�(1m離れã�¦ï¼‰ã�«é…�ç½®ã�•ã‚Œã�Ÿ_フライホイールã�¸ã�®å‹•åŠ›ä¾›çµ¦ã‚’開始_ã�—ã�¾ã�™ã€‚ 高速化ã�™ã‚‹ã�«ã�¯é«˜ç‚‰ã‚’使用ã�—ã�¦ã��ã� ã�•ã�„。", - "block.create.flywheel.tooltip": "勢車", - "block.create.flywheel.tooltip.summary": "_取り付けたのエンジン_が発生する_力を利用して安定_させる大型の金属ホイール。 勢車が_1 m離れていて_、_互いに90°の角度にある_場合、エンジンに接続します。", - "block.create.flywheel.tooltip.condition1": "実行中のエンジンに取り付けられてるとき", - "block.create.flywheel.tooltip.behaviour1": "ジェネレータの強度と速度に基づいて、取り付けた仕掛けに_回転力_を提供します。", + "block.create.flywheel.tooltip": "勢車", + "block.create.flywheel.tooltip.summary": "_å�–り付ã�‘ã�Ÿã�®ã‚¨ãƒ³ã‚¸ãƒ³_ã�Œç™ºç”Ÿã�™ã‚‹_力を利用ã�—ã�¦å®‰å®š_ã�•ã�›ã‚‹å¤§åž‹ã�®é‡‘属ホイール。 勢車ã�Œ_1 m離れã�¦ã�„ã�¦_ã€�_互ã�„ã�«90°ã�®è§’度ã�«ã�‚ã‚‹_å ´å�ˆã€�エンジンã�«æŽ¥ç¶šã�—ã�¾ã�™ã€‚", + "block.create.flywheel.tooltip.condition1": "実行中ã�®ã‚¨ãƒ³ã‚¸ãƒ³ã�«å�–り付ã�‘られã�¦ã‚‹ã�¨ã��", + "block.create.flywheel.tooltip.behaviour1": "ジェãƒ�レータã�®å¼·åº¦ã�¨é€Ÿåº¦ã�«åŸºã�¥ã�„ã�¦ã€�å�–り付ã�‘ã�Ÿä»•æŽ›ã�‘ã�«_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚", - "block.create.portable_storage_interface.tooltip": "ポータブルストレージインターフェイス", - "block.create.portable_storage_interface.tooltip.summary": "ピストン、ベアリング、トロッコ、またはプーリーによって移動される_構造物_との間で_アイテムを移動_するためのポータブル交換ポイント。", - "block.create.portable_storage_interface.tooltip.condition1": "移動してるとき", - "block.create.portable_storage_interface.tooltip.behaviour1": "インターフェースの_反対側_にある_トランスポーザー_が_アイテムを引っ張り_、インターフェースをターゲットとするトランスポーザーが接続されたインベントリから_アイテムを挿入_するように、固定トランスポーザーと相互作用します。 アイテムが交換されると、からくりは一時的に停止します。", + "block.create.portable_storage_interface.tooltip": "ãƒ�ータブルストレージインターフェイス", + "block.create.portable_storage_interface.tooltip.summary": "ピストンã€�ベアリングã€�トロッコã€�ã�¾ã�Ÿã�¯ãƒ—ーリーã�«ã‚ˆã�£ã�¦ç§»å‹•ã�•ã‚Œã‚‹_構造物_ã�¨ã�®é–“ã�§_アイテムを移動_ã�™ã‚‹ã�Ÿã‚�ã�®ãƒ�ータブル交æ�›ãƒ�イント。", + "block.create.portable_storage_interface.tooltip.condition1": "移動ã�—ã�¦ã‚‹ã�¨ã��", + "block.create.portable_storage_interface.tooltip.behaviour1": "インターフェースã�®_å��対å�´_ã�«ã�‚ã‚‹_トランスãƒ�ーザー_ã�Œ_アイテムを引ã�£å¼µã‚Š_ã€�インターフェースをターゲットã�¨ã�™ã‚‹ãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザーã�ŒæŽ¥ç¶šã�•ã‚Œã�Ÿã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰_アイテムを挿入_ã�™ã‚‹ã‚ˆã�†ã�«ã€�固定トランスãƒ�ーザーã�¨ç›¸äº’作用ã�—ã�¾ã�™ã€‚ アイテムã�Œäº¤æ�›ã�•ã‚Œã‚‹ã�¨ã€�ã�‹ã‚‰ã��ã‚Šã�¯ä¸€æ™‚çš„ã�«å�œæ­¢ã�—ã�¾ã�™ã€‚", - "block.create.rotation_speed_controller.tooltip": "回転速度コントローラー", - "block.create.rotation_speed_controller.tooltip.summary": "ターゲットコンポーネントを任意の速度に加速または減速できる_構成可能な中継_。", - "block.create.rotation_speed_controller.tooltip.condition1": "大きな歯車に取り付けたとき", - "block.create.rotation_speed_controller.tooltip.behaviour1": "入ってくる回転力をホイールに中継し、目標とするように構成された_速度に一致_させようとします。 _歯車はコントローラーの上に取り付ける_必要があります。", + "block.create.rotation_speed_controller.tooltip": "回転速度コントローラー", + "block.create.rotation_speed_controller.tooltip.summary": "ターゲットコンãƒ�ーãƒ�ントを任æ„�ã�®é€Ÿåº¦ã�«åŠ é€Ÿã�¾ã�Ÿã�¯æ¸›é€Ÿã�§ã��ã‚‹_構æˆ�å�¯èƒ½ã�ªä¸­ç¶™_。", + "block.create.rotation_speed_controller.tooltip.condition1": "大ã��ã�ªæ­¯è»Šã�«å�–り付ã�‘ã�Ÿã�¨ã��", + "block.create.rotation_speed_controller.tooltip.behaviour1": "å…¥ã�£ã�¦ã��る回転力をホイールã�«ä¸­ç¶™ã�—ã€�目標ã�¨ã�™ã‚‹ã‚ˆã�†ã�«æ§‹æˆ�ã�•ã‚Œã�Ÿ_速度ã�«ä¸€è‡´_ã�•ã�›ã‚ˆã�†ã�¨ã�—ã�¾ã�™ã€‚ _歯車ã�¯ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãƒ¼ã�®ä¸Šã�«å�–り付ã�‘ã‚‹_å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.mechanical_piston.tooltip": "メカニカルピストン", - "block.create.mechanical_piston.tooltip.summary": "_ピストン_より高度なもの。 _回転力_を使用して、取り付けられた構造物を正確に移動します。 背面の_ピストン延長極_は、このデバイスの_範囲_を定義します。 延長がないと、ピストンは動きません。 _シャーシ_または_スライムブロック_を使用して、1行以上のブロックを移動します。", - "block.create.mechanical_piston.tooltip.condition1": "回転したとき", - "block.create.mechanical_piston.tooltip.behaviour1": "取り付けられた構造物の移動を開始します。 速度と方向は、入力される回転速度と相関します。", + "block.create.mechanical_piston.tooltip": "メカニカルピストン", + "block.create.mechanical_piston.tooltip.summary": "_ピストン_より高度ã�ªã‚‚ã�®ã€‚ _回転力_を使用ã�—ã�¦ã€�å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã‚’正確ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ 背é�¢ã�®_ピストン延長極_ã�¯ã€�ã�“ã�®ãƒ‡ãƒ�イスã�®_範囲_を定義ã�—ã�¾ã�™ã€‚ 延長ã�Œã�ªã�„ã�¨ã€�ピストンã�¯å‹•ã��ã�¾ã�›ã‚“。 _シャーシ_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�1行以上ã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_piston.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_piston.tooltip.behaviour1": "å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã�®ç§»å‹•ã‚’開始ã�—ã�¾ã�™ã€‚ 速度ã�¨æ–¹å�‘ã�¯ã€�入力ã�•ã‚Œã‚‹å›žè»¢é€Ÿåº¦ã�¨ç›¸é–¢ã�—ã�¾ã�™ã€‚", - "block.create.sticky_mechanical_piston.tooltip": "粘着メカニカルピストン", - "block.create.sticky_mechanical_piston.tooltip.summary": "_粘着ピストン_より高度なもの。 _回転力_を使用して、取り付けられた構造物を正確に移動します。 背面の_ピストン延長極_は、このデバイスの_範囲_を定義します。 延長がないと、ピストンは動きません。 _シャーシ_または_スライムブロック_を使用して、1行以上のブロックを移動します。", - "block.create.sticky_mechanical_piston.tooltip.condition1": "回転したとき", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "取り付けられた構造物の移動を開始します。 速度と方向は、入力される回転速度と相関します。", + "block.create.sticky_mechanical_piston.tooltip": "粘ç�€ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ”ストン", + "block.create.sticky_mechanical_piston.tooltip.summary": "_粘ç�€ãƒ”ストン_より高度ã�ªã‚‚ã�®ã€‚ _回転力_を使用ã�—ã�¦ã€�å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã‚’正確ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ 背é�¢ã�®_ピストン延長極_ã�¯ã€�ã�“ã�®ãƒ‡ãƒ�イスã�®_範囲_を定義ã�—ã�¾ã�™ã€‚ 延長ã�Œã�ªã�„ã�¨ã€�ピストンã�¯å‹•ã��ã�¾ã�›ã‚“。 _シャーシ_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�1行以上ã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", + "block.create.sticky_mechanical_piston.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã�®ç§»å‹•ã‚’開始ã�—ã�¾ã�™ã€‚ 速度ã�¨æ–¹å�‘ã�¯ã€�入力ã�•ã‚Œã‚‹å›žè»¢é€Ÿåº¦ã�¨ç›¸é–¢ã�—ã�¾ã�™ã€‚", - "block.create.piston_extension_pole.tooltip": "ピストンポール", - "block.create.piston_extension_pole.tooltip.summary": "メカニカルピストンの範囲を拡張します。", - "block.create.piston_extension_pole.tooltip.condition1": "メカニカルピストンに取り付けたとき", - "block.create.piston_extension_pole.tooltip.behaviour1": "ピストンの範囲を1ブロック拡張", + "block.create.piston_extension_pole.tooltip": "ピストンãƒ�ール", + "block.create.piston_extension_pole.tooltip.summary": "メカニカルピストンã�®ç¯„囲を拡張ã�—ã�¾ã�™ã€‚", + "block.create.piston_extension_pole.tooltip.condition1": "メカニカルピストンã�«å�–り付ã�‘ã�Ÿã�¨ã��", + "block.create.piston_extension_pole.tooltip.behaviour1": "ピストンã�®ç¯„囲を1ブロック拡張", - "block.create.mechanical_bearing.tooltip": "メカニカルベアリング", - "block.create.mechanical_bearing.tooltip.summary": "_大きな構造物_を回転させたり、風からの_回転力_を利用したりするために使用されます。", - "block.create.mechanical_bearing.tooltip.condition1": "回転したとき", - "block.create.mechanical_bearing.tooltip.behaviour1": "アタッチされたブロックの回転を開始します。_シャーシ_または_スライムブロック_を使用して、複数のブロックを移動します。", - "block.create.mechanical_bearing.tooltip.condition2": "レッドストーン動力を与えたとき", - "block.create.mechanical_bearing.tooltip.behaviour2": "取り付けた構造物の回転から生成される_回転力_の提供を開始します。 構造には、適切な_帆ブロック_(現在はすべてのウールブロック)を含める必要があります。", + "block.create.mechanical_bearing.tooltip": "メカニカルベアリング", + "block.create.mechanical_bearing.tooltip.summary": "_大ã��ã�ªæ§‹é€ ç‰©_を回転ã�•ã�›ã�Ÿã‚Šã€�風ã�‹ã‚‰ã�®_回転力_を利用ã�—ã�Ÿã‚Šã�™ã‚‹ã�Ÿã‚�ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚", + "block.create.mechanical_bearing.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_bearing.tooltip.behaviour1": "アタッãƒ�ã�•ã‚Œã�Ÿãƒ–ロックã�®å›žè»¢ã‚’開始ã�—ã�¾ã�™ã€‚_シャーシ_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�複数ã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_bearing.tooltip.condition2": "レッドストーン動力を与ã�ˆã�Ÿã�¨ã��", + "block.create.mechanical_bearing.tooltip.behaviour2": "å�–り付ã�‘ã�Ÿæ§‹é€ ç‰©ã�®å›žè»¢ã�‹ã‚‰ç”Ÿæˆ�ã�•ã‚Œã‚‹_回転力_ã�®æ��供を開始ã�—ã�¾ã�™ã€‚ 構造ã�«ã�¯ã€�é�©åˆ‡ã�ª_帆ブロック_(ç�¾åœ¨ã�¯ã�™ã�¹ã�¦ã�®ã‚¦ãƒ¼ãƒ«ãƒ–ロック)をå�«ã‚�ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.clockwork_bearing.tooltip": "時計仕掛けベアリング", - "block.create.clockwork_bearing.tooltip.summary": "現在の_ゲーム内時間_に応じて最大2つの_時計の針_を回転させる、_メカニカルベアリング_より高度なもの。", - "block.create.clockwork_bearing.tooltip.condition1": "回転したとき", - "block.create.clockwork_bearing.tooltip.behaviour1": "現在の時間に向かって取り付けた構造物の回転を開始します。 2番目の構造が存在する場合、それは分針として機能します。", + "block.create.clockwork_bearing.tooltip": "時計仕掛ã�‘ベアリング", + "block.create.clockwork_bearing.tooltip.summary": "ç�¾åœ¨ã�®_ゲーム内時間_ã�«å¿œã�˜ã�¦æœ€å¤§2ã�¤ã�®_時計ã�®é‡�_を回転ã�•ã�›ã‚‹ã€�_メカニカルベアリング_より高度ã�ªã‚‚ã�®ã€‚", + "block.create.clockwork_bearing.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.clockwork_bearing.tooltip.behaviour1": "ç�¾åœ¨ã�®æ™‚é–“ã�«å�‘ã�‹ã�£ã�¦å�–り付ã�‘ã�Ÿæ§‹é€ ç‰©ã�®å›žè»¢ã‚’開始ã�—ã�¾ã�™ã€‚ 2番目ã�®æ§‹é€ ã�Œå­˜åœ¨ã�™ã‚‹å ´å�ˆã€�ã��ã‚Œã�¯åˆ†é‡�ã�¨ã�—ã�¦æ©Ÿèƒ½ã�—ã�¾ã�™ã€‚", - "block.create.sequenced_gearshift.tooltip": "順次ギアシフト", - "block.create.sequenced_gearshift.tooltip.summary": "最大_5つの連続する命令_に従って_回転スループット_を変更できる_プログラム可能_な_ユーティリティコンポーネント_。 これを使用して、メカニカルベアリング、ピストン、またはプーリーに動力を供給し、タイミングと速度をより細かく制御します。 高速では精度が低下する可能性があります。", - "block.create.sequenced_gearshift.tooltip.condition1": "レッドストーン信号を与えたとき", - "block.create.sequenced_gearshift.tooltip.behaviour1": "入力速度に基づいてプログラムされた命令の実行を開始します。", - "block.create.sequenced_gearshift.tooltip.condition2": "右クリックしたとき", - "block.create.sequenced_gearshift.tooltip.behaviour2": "_設定インターフェース_を開きます", + "block.create.sequenced_gearshift.tooltip": "順次ギアシフト", + "block.create.sequenced_gearshift.tooltip.summary": "最大_5ã�¤ã�®é€£ç¶šã�™ã‚‹å‘½ä»¤_ã�«å¾“ã�£ã�¦_回転スループット_を変更ã�§ã��ã‚‹_プログラムå�¯èƒ½_ã�ª_ユーティリティコンãƒ�ーãƒ�ント_。 ã�“れを使用ã�—ã�¦ã€�メカニカルベアリングã€�ピストンã€�ã�¾ã�Ÿã�¯ãƒ—ーリーã�«å‹•åŠ›ã‚’供給ã�—ã€�タイミングã�¨é€Ÿåº¦ã‚’より細ã�‹ã��制御ã�—ã�¾ã�™ã€‚ 高速ã�§ã�¯ç²¾åº¦ã�Œä½Žä¸‹ã�™ã‚‹å�¯èƒ½æ€§ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.sequenced_gearshift.tooltip.condition1": "レッドストーン信å�·ã‚’与ã�ˆã�Ÿã�¨ã��", + "block.create.sequenced_gearshift.tooltip.behaviour1": "入力速度ã�«åŸºã�¥ã�„ã�¦ãƒ—ログラムã�•ã‚Œã�Ÿå‘½ä»¤ã�®å®Ÿè¡Œã‚’開始ã�—ã�¾ã�™ã€‚", + "block.create.sequenced_gearshift.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.sequenced_gearshift.tooltip.behaviour2": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "block.create.cart_assembler.tooltip": "カートアッセンブラー", - "block.create.cart_assembler.tooltip.summary": "接続された構造物を_通過するトロッコ_に取り付けます。", - "block.create.cart_assembler.tooltip.condition1": "レッドストーン信号を与えたとき", - "block.create.cart_assembler.tooltip.behaviour1": "_通過するカート_のマウントされた構造物を_分解_し、それらをワールドに戻します。", + "block.create.cart_assembler.tooltip": "カートアッセンブラー", + "block.create.cart_assembler.tooltip.summary": "接続ã�•ã‚Œã�Ÿæ§‹é€ ç‰©ã‚’_通é�Žã�™ã‚‹ãƒˆãƒ­ãƒƒã‚³_ã�«å�–り付ã�‘ã�¾ã�™ã€‚", + "block.create.cart_assembler.tooltip.condition1": "レッドストーン信å�·ã‚’与ã�ˆã�Ÿã�¨ã��", + "block.create.cart_assembler.tooltip.behaviour1": "_通é�Žã�™ã‚‹ã‚«ãƒ¼ãƒˆ_ã�®ãƒžã‚¦ãƒ³ãƒˆã�•ã‚Œã�Ÿæ§‹é€ ç‰©ã‚’_分解_ã�—ã€�ã��れらをワールドã�«æˆ»ã�—ã�¾ã�™ã€‚", "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", @@ -1144,198 +1144,198 @@ "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", - "block.create.rope_pulley.tooltip": "ローププーリー", - "block.create.rope_pulley.tooltip.summary": "取り付けた_ブロックと構造物を垂直_に移動します。 _シャーシブロック_または_スライムブロック_を使用して、1つ以上のブロックを移動します。", - "block.create.rope_pulley.tooltip.condition1": "回転したとき", - "block.create.rope_pulley.tooltip.behaviour1": "取り付けた構造物の移動を開始します。 速度と方向は、入力される回転速度に相関します。", + "block.create.rope_pulley.tooltip": "ローププーリー", + "block.create.rope_pulley.tooltip.summary": "å�–り付ã�‘ã�Ÿ_ブロックã�¨æ§‹é€ ç‰©ã‚’åž‚ç›´_ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ _シャーシブロック_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�1ã�¤ä»¥ä¸Šã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", + "block.create.rope_pulley.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.rope_pulley.tooltip.behaviour1": "å�–り付ã�‘ã�Ÿæ§‹é€ ç‰©ã�®ç§»å‹•ã‚’開始ã�—ã�¾ã�™ã€‚ 速度ã�¨æ–¹å�‘ã�¯ã€�入力ã�•ã‚Œã‚‹å›žè»¢é€Ÿåº¦ã�«ç›¸é–¢ã�—ã�¾ã�™ã€‚", - "block.create.linear_chassis.tooltip": "トランスシャーシ", - "block.create.linear_chassis.tooltip.summary": "移動用の構造を接続する構成可能なベースブロック。", - "block.create.linear_chassis.tooltip.condition1": "移動したとき", - "block.create.linear_chassis.tooltip.behaviour1": "_取り付けられるすべてのシャーシ_を同じ方向に移動し、ブロックの列をその範囲内に移動します。 ブロックは、シャーシの表面が_粘着性_がある場合にのみ引っ張られます([Ctrl]を参照)。", - "block.create.linear_chassis.tooltip.condition2": "レンチしたとき", - "block.create.linear_chassis.tooltip.behaviour2": "このシャーシブロックの_範囲_を構成します。 CTRLキーを押したまま、接続されているすべてのシャーシブロックの範囲も変更します。", - "block.create.linear_chassis.tooltip.control1": "スライムボールで右クリックしたとき", - "block.create.linear_chassis.tooltip.action1": "クリックした面を_粘着性_にします。 移動すると、シャーシは移動方向に関係なく、取り付けられたブロックを_引っ張り_ます。", + "block.create.linear_chassis.tooltip": "トランスシャーシ", + "block.create.linear_chassis.tooltip.summary": "移動用ã�®æ§‹é€ ã‚’接続ã�™ã‚‹æ§‹æˆ�å�¯èƒ½ã�ªãƒ™ãƒ¼ã‚¹ãƒ–ロック。", + "block.create.linear_chassis.tooltip.condition1": "移動ã�—ã�Ÿã�¨ã��", + "block.create.linear_chassis.tooltip.behaviour1": "_å�–り付ã�‘られるã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·_ã‚’å�Œã�˜æ–¹å�‘ã�«ç§»å‹•ã�—ã€�ブロックã�®åˆ—ã‚’ã��ã�®ç¯„囲内ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ ブロックã�¯ã€�シャーシã�®è¡¨é�¢ã�Œ_粘ç�€æ€§_ã�Œã�‚ã‚‹å ´å�ˆã�«ã�®ã�¿å¼•ã�£å¼µã‚‰ã‚Œã�¾ã�™ï¼ˆ[Ctrl]ã‚’å�‚照)。", + "block.create.linear_chassis.tooltip.condition2": "レンãƒ�ã�—ã�Ÿã�¨ã��", + "block.create.linear_chassis.tooltip.behaviour2": "ã�“ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®_範囲_を構æˆ�ã�—ã�¾ã�™ã€‚ CTRLキーを押ã�—ã�Ÿã�¾ã�¾ã€�接続ã�•ã‚Œã�¦ã�„ã‚‹ã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®ç¯„囲も変更ã�—ã�¾ã�™ã€‚", + "block.create.linear_chassis.tooltip.control1": "スライムボールã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.linear_chassis.tooltip.action1": "クリックã�—ã�Ÿé�¢ã‚’_粘ç�€æ€§_ã�«ã�—ã�¾ã�™ã€‚ 移動ã�™ã‚‹ã�¨ã€�シャーシã�¯ç§»å‹•æ–¹å�‘ã�«é–¢ä¿‚ã�ªã��ã€�å�–り付ã�‘られã�Ÿãƒ–ロックを_引ã�£å¼µã‚Š_ã�¾ã�™ã€‚", - "block.create.radial_chassis.tooltip": "回転シャーシ", - "block.create.radial_chassis.tooltip.summary": "移動用の構造を取り付ける構成可能なベースブロック。", - "block.create.radial_chassis.tooltip.condition1": "動かしたとき", - "block.create.radial_chassis.tooltip.behaviour1": "列に_取り付けられてるすべてのシャーシ_、およびそれ自体の周りのブロックのシリンダーを_移動_します。 周囲のブロックは、範囲内にあり、粘着面に接続されている場合にのみ移動されます([Ctrl]を参照)。", - "block.create.radial_chassis.tooltip.condition2": "レンチを使ったとき", - "block.create.radial_chassis.tooltip.behaviour2": "このシャーシブロックの_範囲_を構成します。 CTRLキーを押したまま、接続されているすべてのシャーシブロックの範囲も変更します。", - "block.create.radial_chassis.tooltip.control1": "スライムボールで右クリックしたとき", - "block.create.radial_chassis.tooltip.action1": "クリックした面を_粘着性_にします。 シャーシが移動すると、粘着面に接続されているすべての指定ブロックが一緒に移動します。", + "block.create.radial_chassis.tooltip": "回転シャーシ", + "block.create.radial_chassis.tooltip.summary": "移動用ã�®æ§‹é€ ã‚’å�–り付ã�‘る構æˆ�å�¯èƒ½ã�ªãƒ™ãƒ¼ã‚¹ãƒ–ロック。", + "block.create.radial_chassis.tooltip.condition1": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", + "block.create.radial_chassis.tooltip.behaviour1": "列ã�«_å�–り付ã�‘られã�¦ã‚‹ã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·_ã€�ã�Šã‚ˆã�³ã��れ自体ã�®å‘¨ã‚Šã�®ãƒ–ロックã�®ã‚·ãƒªãƒ³ãƒ€ãƒ¼ã‚’_移動_ã�—ã�¾ã�™ã€‚ 周囲ã�®ãƒ–ロックã�¯ã€�範囲内ã�«ã�‚ã‚Šã€�粘ç�€é�¢ã�«æŽ¥ç¶šã�•ã‚Œã�¦ã�„ã‚‹å ´å�ˆã�«ã�®ã�¿ç§»å‹•ã�•ã‚Œã�¾ã�™ï¼ˆ[Ctrl]ã‚’å�‚照)。", + "block.create.radial_chassis.tooltip.condition2": "レンãƒ�を使ã�£ã�Ÿã�¨ã��", + "block.create.radial_chassis.tooltip.behaviour2": "ã�“ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®_範囲_を構æˆ�ã�—ã�¾ã�™ã€‚ CTRLキーを押ã�—ã�Ÿã�¾ã�¾ã€�接続ã�•ã‚Œã�¦ã�„ã‚‹ã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®ç¯„囲も変更ã�—ã�¾ã�™ã€‚", + "block.create.radial_chassis.tooltip.control1": "スライムボールã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.radial_chassis.tooltip.action1": "クリックã�—ã�Ÿé�¢ã‚’_粘ç�€æ€§_ã�«ã�—ã�¾ã�™ã€‚ シャーシã�Œç§»å‹•ã�™ã‚‹ã�¨ã€�粘ç�€é�¢ã�«æŽ¥ç¶šã�•ã‚Œã�¦ã�„ã‚‹ã�™ã�¹ã�¦ã�®æŒ‡å®šãƒ–ロックã�Œä¸€ç·’ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_drill.tooltip": "機械ドリル", - "block.create.mechanical_drill.tooltip.summary": "_ブロックを壊す_のに適した機械装置。 _メカニカルピストン_または_ベアリング_で移動可能です。", - "block.create.mechanical_drill.tooltip.condition1": "回転したとき", - "block.create.mechanical_drill.tooltip.behaviour1": "_静止_したブロックブレーカーとして機能します。 また、有効領域の_エンティティを傷つけます_。", - "block.create.mechanical_drill.tooltip.condition2": "動かしたとき", - "block.create.mechanical_drill.tooltip.behaviour2": "ドリルが衝突するブロックを壊します。", + "block.create.mechanical_drill.tooltip": "機械ドリル", + "block.create.mechanical_drill.tooltip.summary": "_ブロックを壊ã�™_ã�®ã�«é�©ã�—ã�Ÿæ©Ÿæ¢°è£…置。 _メカニカルピストン_ã�¾ã�Ÿã�¯_ベアリング_ã�§ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", + "block.create.mechanical_drill.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_drill.tooltip.behaviour1": "_é�™æ­¢_ã�—ã�Ÿãƒ–ロックブレーカーã�¨ã�—ã�¦æ©Ÿèƒ½ã�—ã�¾ã�™ã€‚ ã�¾ã�Ÿã€�有効領域ã�®_エンティティを傷ã�¤ã�‘ã�¾ã�™_。", + "block.create.mechanical_drill.tooltip.condition2": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_drill.tooltip.behaviour2": "ドリルã�Œè¡�çª�ã�™ã‚‹ãƒ–ロックを壊ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_harvester.tooltip": "メカニカルハーベスター", - "block.create.mechanical_harvester.tooltip.summary": "中規模の作物の自動化に適した機械式植物カッター。 _メカニカルピストン_または_ベアリング_で移動可能です。", - "block.create.mechanical_harvester.tooltip.condition1": "動かしたとき", - "block.create.mechanical_harvester.tooltip.behaviour1": "ブレードが衝突する_すべての成熟した作物を収穫_し、それらを初期の成長状態にリセットします。", + "block.create.mechanical_harvester.tooltip": "メカニカルãƒ�ーベスター", + "block.create.mechanical_harvester.tooltip.summary": "中è¦�模ã�®ä½œç‰©ã�®è‡ªå‹•åŒ–ã�«é�©ã�—ã�Ÿæ©Ÿæ¢°å¼�æ¤�物カッター。 _メカニカルピストン_ã�¾ã�Ÿã�¯_ベアリング_ã�§ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", + "block.create.mechanical_harvester.tooltip.condition1": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_harvester.tooltip.behaviour1": "ブレードã�Œè¡�çª�ã�™ã‚‹_ã�™ã�¹ã�¦ã�®æˆ�熟ã�—ã�Ÿä½œç‰©ã‚’å�Žç©«_ã�—ã€�ã��れらをåˆ�期ã�®æˆ�長状態ã�«ãƒªã‚»ãƒƒãƒˆã�—ã�¾ã�™ã€‚", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", - "block.create.mechanical_saw.tooltip": "メカニカル鋸", - "block.create.mechanical_saw.tooltip.summary": "木を効果的に切断したり、大工したものにブロックを切断したりするのに適しています。 メカニカルピストンまたはベアリングを使用して移動可能です。", - "block.create.mechanical_saw.tooltip.condition1": "上向きのとき", - "block.create.mechanical_saw.tooltip.behaviour1": "そこにドロップまたは挿入されたアイテムに_製材_およびストーンカッティングレシピを適用します。 複数の出力が可能な場合、フィルターが割り当てられていない限り、出力が循環します。", - "block.create.mechanical_saw.tooltip.condition2": "横向きの場合", - "block.create.mechanical_saw.tooltip.behaviour2": "その前で_原木を分割_します。 原木がそれ自体でツリーをサポートしていた場合、_木はのこぎりから離れて崩壊_します。", - "block.create.mechanical_saw.tooltip.condition3": "動かしたとき", - "block.create.mechanical_saw.tooltip.behaviour3": "のこぎりが衝突する_すべての木を切り倒します_。", + "block.create.mechanical_saw.tooltip": "メカニカル鋸", + "block.create.mechanical_saw.tooltip.summary": "木を効果的ã�«åˆ‡æ–­ã�—ã�Ÿã‚Šã€�大工ã�—ã�Ÿã‚‚ã�®ã�«ãƒ–ロックを切断ã�—ã�Ÿã‚Šã�™ã‚‹ã�®ã�«é�©ã�—ã�¦ã�„ã�¾ã�™ã€‚ メカニカルピストンã�¾ã�Ÿã�¯ãƒ™ã‚¢ãƒªãƒ³ã‚°ã‚’使用ã�—ã�¦ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", + "block.create.mechanical_saw.tooltip.condition1": "上å�‘ã��ã�®ã�¨ã��", + "block.create.mechanical_saw.tooltip.behaviour1": "ã��ã�“ã�«ãƒ‰ãƒ­ãƒƒãƒ—ã�¾ã�Ÿã�¯æŒ¿å…¥ã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ã�«_製æ��_ã�Šã‚ˆã�³ã‚¹ãƒˆãƒ¼ãƒ³ã‚«ãƒƒãƒ†ã‚£ãƒ³ã‚°ãƒ¬ã‚·ãƒ”ã‚’é�©ç”¨ã�—ã�¾ã�™ã€‚ 複数ã�®å‡ºåŠ›ã�Œå�¯èƒ½ã�ªå ´å�ˆã€�フィルターã�Œå‰²ã‚Šå½“ã�¦ã‚‰ã‚Œã�¦ã�„ã�ªã�„é™�ã‚Šã€�出力ã�Œå¾ªç’°ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_saw.tooltip.condition2": "横å�‘ã��ã�®å ´å�ˆ", + "block.create.mechanical_saw.tooltip.behaviour2": "ã��ã�®å‰�ã�§_原木を分割_ã�—ã�¾ã�™ã€‚ 原木ã�Œã��れ自体ã�§ãƒ„リーをサãƒ�ートã�—ã�¦ã�„ã�Ÿå ´å�ˆã€�_木ã�¯ã�®ã�“ã�Žã‚Šã�‹ã‚‰é›¢ã‚Œã�¦å´©å£Š_ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_saw.tooltip.condition3": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", + "block.create.mechanical_saw.tooltip.behaviour3": "ã�®ã�“ã�Žã‚Šã�Œè¡�çª�ã�™ã‚‹_ã�™ã�¹ã�¦ã�®æœ¨ã‚’切り倒ã�—ã�¾ã�™_。", - "block.create.stockpile_switch.tooltip": "在庫スイッチ", - "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。", - "block.create.stockpile_switch.tooltip.condition1": "下限を下回ったとき", - "block.create.stockpile_switch.tooltip.behaviour1": "レッドストーン信号を停止", - "block.create.stockpile_switch.tooltip.condition2": "上限を超えたとき。", - "block.create.stockpile_switch.tooltip.behaviour2": "再び下限に達するまで、レッドストーン信号の提供を開始します。", - "block.create.stockpile_switch.tooltip.control1": "右クリックしたとき", - "block.create.stockpile_switch.tooltip.action1": "_設定インターフェース_を開きます", + "block.create.stockpile_switch.tooltip": "在庫スイッãƒ�", + "block.create.stockpile_switch.tooltip.summary": "接続ã�•ã‚Œã�Ÿã‚³ãƒ³ãƒ†ãƒŠã�®_空ã��容é‡�_ã�«åŸºã�¥ã�„ã�¦ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ä¿¡å�·ã‚’切り替ã�ˆã�¾ã�™ã€‚", + "block.create.stockpile_switch.tooltip.condition1": "下é™�を下回ã�£ã�Ÿã�¨ã��", + "block.create.stockpile_switch.tooltip.behaviour1": "レッドストーン信å�·ã‚’å�œæ­¢", + "block.create.stockpile_switch.tooltip.condition2": "上é™�を超ã�ˆã�Ÿã�¨ã��。", + "block.create.stockpile_switch.tooltip.behaviour2": "å†�ã�³ä¸‹é™�ã�«é�”ã�™ã‚‹ã�¾ã�§ã€�レッドストーン信å�·ã�®æ��供を開始ã�—ã�¾ã�™ã€‚", + "block.create.stockpile_switch.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.stockpile_switch.tooltip.action1": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "block.create.redstone_link.tooltip": "レッドストーンリンク", - "block.create.redstone_link.tooltip.summary": "_ワイヤレスレッドストーン_接続のエンドポイント。 任意のアイテムを使用して_周波数_を割り当てることができます。 信号範囲は限られていますが、かなり離れています。", - "block.create.redstone_link.tooltip.condition1": "入力があるとき", - "block.create.redstone_link.tooltip.behaviour1": "同じ周波数のリンクを受信すると、レッドストーン信号が生成されます。", - "block.create.redstone_link.tooltip.control1": "アイテムで右クリックしたとき", - "block.create.redstone_link.tooltip.action1": "_周波数_をそのアイテムに設定します。 周波数を定義するために、_合計2つの異なるアイテム_を組み合わせて使用できます。", - "block.create.redstone_link.tooltip.control2": "スニークしながら右クリックしたとき", - "block.create.redstone_link.tooltip.action2": "_受信機_モードと_送信機_モードを切り替えます。", + "block.create.redstone_link.tooltip": "レッドストーンリンク", + "block.create.redstone_link.tooltip.summary": "_ワイヤレスレッドストーン_接続ã�®ã‚¨ãƒ³ãƒ‰ãƒ�イント。 ä»»æ„�ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�—ã�¦_周波数_を割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ ä¿¡å�·ç¯„囲ã�¯é™�られã�¦ã�„ã�¾ã�™ã�Œã€�ã�‹ã�ªã‚Šé›¢ã‚Œã�¦ã�„ã�¾ã�™ã€‚", + "block.create.redstone_link.tooltip.condition1": "入力ã�Œã�‚ã‚‹ã�¨ã��", + "block.create.redstone_link.tooltip.behaviour1": "å�Œã�˜å‘¨æ³¢æ•°ã�®ãƒªãƒ³ã‚¯ã‚’å�—ä¿¡ã�™ã‚‹ã�¨ã€�レッドストーン信å�·ã�Œç”Ÿæˆ�ã�•ã‚Œã�¾ã�™ã€‚", + "block.create.redstone_link.tooltip.control1": "アイテムã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.redstone_link.tooltip.action1": "_周波数_ã‚’ã��ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�«è¨­å®šã�—ã�¾ã�™ã€‚ 周波数を定義ã�™ã‚‹ã�Ÿã‚�ã�«ã€�_å�ˆè¨ˆ2ã�¤ã�®ç•°ã�ªã‚‹ã‚¢ã‚¤ãƒ†ãƒ _を組ã�¿å�ˆã‚�ã�›ã�¦ä½¿ç”¨ã�§ã��ã�¾ã�™ã€‚", + "block.create.redstone_link.tooltip.control2": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.redstone_link.tooltip.action2": "_å�—ä¿¡æ©Ÿ_モードã�¨_é€�ä¿¡æ©Ÿ_モードを切り替ã�ˆã�¾ã�™ã€‚", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", - "block.create.redstone_contact.tooltip": "レッドストーンコンタクト", - "block.create.redstone_contact.tooltip.summary": "レッドストーンパワーのみをペアで放出します。 _メカニカルピストン_または_ベアリング_で移動可能です。", - "block.create.redstone_contact.tooltip.condition1": "他のコンタクトに直面したとき", - "block.create.redstone_contact.tooltip.behaviour1": "レッドストーン信号を提供します。", - "block.create.redstone_contact.tooltip.condition2": "動かしたとき", - "block.create.redstone_contact.tooltip.behaviour2": "通過するすべての固定接点をトリガーします。", + "block.create.redstone_contact.tooltip": "レッドストーンコンタクト", + "block.create.redstone_contact.tooltip.summary": "レッドストーンパワーã�®ã�¿ã‚’ペアã�§æ”¾å‡ºã�—ã�¾ã�™ã€‚ _メカニカルピストン_ã�¾ã�Ÿã�¯_ベアリング_ã�§ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", + "block.create.redstone_contact.tooltip.condition1": "ä»–ã�®ã‚³ãƒ³ã‚¿ã‚¯ãƒˆã�«ç›´é�¢ã�—ã�Ÿã�¨ã��", + "block.create.redstone_contact.tooltip.behaviour1": "レッドストーン信å�·ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚", + "block.create.redstone_contact.tooltip.condition2": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", + "block.create.redstone_contact.tooltip.behaviour2": "通é�Žã�™ã‚‹ã�™ã�¹ã�¦ã�®å›ºå®šæŽ¥ç‚¹ã‚’トリガーã�—ã�¾ã�™ã€‚", - "block.create.adjustable_crate.tooltip": "調整可能なクレート", - "block.create.adjustable_crate.tooltip.summary": "この_ストレージコンテナ_では、容量を手動で制御できます。 任意のアイテムの最大_16スタック_を保持できます。 _レッドストーンコンパレータ_をサポートします。", - "block.create.adjustable_crate.tooltip.control1": "右クリックしたとき", - "block.create.adjustable_crate.tooltip.action1": "_インターフェース_を開きます", + "block.create.adjustable_crate.tooltip": "調整å�¯èƒ½ã�ªã‚¯ãƒ¬ãƒ¼ãƒˆ", + "block.create.adjustable_crate.tooltip.summary": "ã�“ã�®_ストレージコンテナ_ã�§ã�¯ã€�容é‡�を手動ã�§åˆ¶å¾¡ã�§ã��ã�¾ã�™ã€‚ ä»»æ„�ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�®æœ€å¤§_16スタック_ã‚’ä¿�æŒ�ã�§ã��ã�¾ã�™ã€‚ _レッドストーンコンパレータ_をサãƒ�ートã�—ã�¾ã�™ã€‚", + "block.create.adjustable_crate.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.adjustable_crate.tooltip.action1": "_インターフェース_ã‚’é–‹ã��ã�¾ã�™", - "block.create.creative_crate.tooltip": "クリエイティブクレート", - "block.create.creative_crate.tooltip.summary": "隣接する概略図砲へブロックの無限に供給します。", + "block.create.creative_crate.tooltip": "クリエイティブクレート", + "block.create.creative_crate.tooltip.summary": "隣接ã�™ã‚‹æ¦‚略図砲ã�¸ãƒ–ロックã�®ç„¡é™�ã�«ä¾›çµ¦ã�—ã�¾ã�™ã€‚", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", - "block.create.extractor.tooltip": "抽出器", - "block.create.extractor.tooltip.summary": "付属のインベントリから_アイテムを取り_、地面にドロップします。 スペースが空いていない限り、アイテムはドロップされません。 _フィルター_としてアイテムスタックを割り当てることができます。", - "block.create.extractor.tooltip.condition1": "レッドストーン信号があるとき", - "block.create.extractor.tooltip.behaviour1": "エクストラクタを_一時停止_します。", - "block.create.extractor.tooltip.condition2": "アクティブベルト牽引されたとき", - "block.create.extractor.tooltip.behaviour2": "エクストラクタは、_真ちゅう製のケーシング_で補強された_ベルトから_アイテムを引き出すことができます。 エクストラクタが詰まると、_ベルトが停止_します。", - "block.create.extractor.tooltip.control1": "フィルタースペースを右クリック", - "block.create.extractor.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 エクストラクターは、アイテム_タイプ_とフィルタースタックの_数_を排他的に取得します。", + "block.create.extractor.tooltip": "抽出器", + "block.create.extractor.tooltip.summary": "付属ã�®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰_アイテムをå�–ã‚Š_ã€�地é�¢ã�«ãƒ‰ãƒ­ãƒƒãƒ—ã�—ã�¾ã�™ã€‚ スペースã�Œç©ºã�„ã�¦ã�„ã�ªã�„é™�ã‚Šã€�アイテムã�¯ãƒ‰ãƒ­ãƒƒãƒ—ã�•ã‚Œã�¾ã�›ã‚“。 _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", + "block.create.extractor.tooltip.condition1": "レッドストーン信å�·ã�Œã�‚ã‚‹ã�¨ã��", + "block.create.extractor.tooltip.behaviour1": "エクストラクタを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.extractor.tooltip.condition2": "アクティブベルト牽引ã�•ã‚Œã�Ÿã�¨ã��", + "block.create.extractor.tooltip.behaviour2": "エクストラクタã�¯ã€�_真ã�¡ã‚…ã�†è£½ã�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°_ã�§è£œå¼·ã�•ã‚Œã�Ÿ_ベルトã�‹ã‚‰_アイテムを引ã��出ã�™ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ エクストラクタã�Œè©°ã�¾ã‚‹ã�¨ã€�_ベルトã�Œå�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.extractor.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯", + "block.create.extractor.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚ エクストラクターã�¯ã€�アイテム_タイプ_ã�¨ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚¹ã‚¿ãƒƒã‚¯ã�®_æ•°_を排他的ã�«å�–å¾—ã�—ã�¾ã�™ã€‚", - "block.create.transposer.tooltip": "トランスポーザー", - "block.create.transposer.tooltip.summary": "取り付けされたインベントリから_アイテムを取得_し、すぐにターゲット_インベントリ_に入れます。 _フィルター_としてアイテムスタックを割り当てることができます。", - "block.create.transposer.tooltip.condition1": "レッドストーン信号があるとき", - "block.create.transposer.tooltip.behaviour1": "トランスポーザを_一時停止_します。", - "block.create.transposer.tooltip.condition2": "アクティブベルト牽引されたとき", - "block.create.transposer.tooltip.behaviour2": "トランスポーザーは、_真鍮のケーシングで補強_された_ベルトからアイテム_を引っ張ることができます。 トランスポーザがバックアップされると、_ベルトが停止_します。", - "block.create.transposer.tooltip.control1": "フィルタースペースを右クリック", - "block.create.transposer.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。トランスポーザーは、フィルタースタックのアイテムタイプと_カウント_を排他的にプルします。", + "block.create.transposer.tooltip": "トランスãƒ�ーザー", + "block.create.transposer.tooltip.summary": "å�–り付ã�‘ã�•ã‚Œã�Ÿã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰_アイテムをå�–å¾—_ã�—ã€�ã�™ã��ã�«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ_インベントリ_ã�«å…¥ã‚Œã�¾ã�™ã€‚ _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", + "block.create.transposer.tooltip.condition1": "レッドストーン信å�·ã�Œã�‚ã‚‹ã�¨ã��", + "block.create.transposer.tooltip.behaviour1": "トランスãƒ�ーザを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.transposer.tooltip.condition2": "アクティブベルト牽引ã�•ã‚Œã�Ÿã�¨ã��", + "block.create.transposer.tooltip.behaviour2": "トランスãƒ�ーザーã�¯ã€�_真é�®ã�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°ã�§è£œå¼·_ã�•ã‚Œã�Ÿ_ベルトã�‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ _を引ã�£å¼µã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ トランスãƒ�ーザã�Œãƒ�ックアップã�•ã‚Œã‚‹ã�¨ã€�_ベルトã�Œå�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.transposer.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯", + "block.create.transposer.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚トランスãƒ�ーザーã�¯ã€�フィルタースタックã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚¿ã‚¤ãƒ—ã�¨_カウント_を排他的ã�«ãƒ—ルã�—ã�¾ã�™ã€‚", - "block.create.deployer.tooltip": "デプロイヤ", - "block.create.deployer.tooltip.summary": "_パンチ_、_使用_、_有効化_。 このマシンは、_プレイヤー_をできるだけ_真似_しようとします。 隣接するインベントリの_アイテムを受け取り_、_預ける_ことができます。 _フィルター_としてアイテムスタックを割り当てることができます。", - "block.create.deployer.tooltip.condition1": "回転したとき", - "block.create.deployer.tooltip.behaviour1": "腕を伸ばし、_2m先_のブロックスペースで_発動_。", - "block.create.deployer.tooltip.condition2": "レンチで右クリックしたとき", - "block.create.deployer.tooltip.behaviour2": "パンチモードを切り替えます。 _パンチモード_では、デプロイヤはそのアイテムを使用して_ブロックを壊したりエンティティを傷つけ_たりしようとします。", + "block.create.deployer.tooltip": "デプロイヤ", + "block.create.deployer.tooltip.summary": "_パンãƒ�_ã€�_使用_ã€�_有効化_。 ã�“ã�®ãƒžã‚·ãƒ³ã�¯ã€�_プレイヤー_ã‚’ã�§ã��ã‚‹ã� ã�‘_真似_ã�—よã�†ã�¨ã�—ã�¾ã�™ã€‚ 隣接ã�™ã‚‹ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�®_アイテムをå�—ã�‘å�–ã‚Š_ã€�_é �ã�‘ã‚‹_ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", + "block.create.deployer.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.deployer.tooltip.behaviour1": "腕を伸ã�°ã�—ã€�_2må…ˆ_ã�®ãƒ–ロックスペースã�§_発動_。", + "block.create.deployer.tooltip.condition2": "レンãƒ�ã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.deployer.tooltip.behaviour2": "パンãƒ�モードを切り替ã�ˆã�¾ã�™ã€‚ _パンãƒ�モード_ã�§ã�¯ã€�デプロイヤã�¯ã��ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�—ã�¦_ブロックを壊ã�—ã�Ÿã‚Šã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’å‚·ã�¤ã�‘_ã�Ÿã‚Šã�—よã�†ã�¨ã�—ã�¾ã�™ã€‚", - "block.create.linked_extractor.tooltip": "リンクエクストラクター", - "block.create.linked_extractor.tooltip.summary": "取り付けてる_インベントリ_から_アイテムを取り_、それらを地面に落とします。 スペースが空いていない限り、アイテムはドロップされません。 _フィルター_としてアイテムスタックを割り当てることができます。 _レッドストーンリンク_を介してリモートで制御できます。", - "block.create.linked_extractor.tooltip.condition1": "レッドストーンリンクがアクティブな場合", - "block.create.linked_extractor.tooltip.behaviour1": "エクストラクタを_一時停止_します。", - "block.create.linked_extractor.tooltip.control1": "フィルタースペースを右クリックしたとき", - "block.create.linked_extractor.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 エクストラクターは、_アイテムタイプ_とフィルタースタックの_数_を排他的に取得します。", - "block.create.linked_extractor.tooltip.control2": "周波数スペースを右クリックしたとき", - "block.create.linked_extractor.tooltip.action2": "リッスンされている周波数の一部として_現在保持_されているアイテムを割り当てます。 同じ周波数の送信_レッドストーンリンク_に動力が供給されると、このエクストラクターは一時停止します。", + "block.create.linked_extractor.tooltip": "リンクエクストラクター", + "block.create.linked_extractor.tooltip.summary": "å�–り付ã�‘ã�¦ã‚‹_インベントリ_ã�‹ã‚‰_アイテムをå�–ã‚Š_ã€�ã��れらを地é�¢ã�«è�½ã�¨ã�—ã�¾ã�™ã€‚ スペースã�Œç©ºã�„ã�¦ã�„ã�ªã�„é™�ã‚Šã€�アイテムã�¯ãƒ‰ãƒ­ãƒƒãƒ—ã�•ã‚Œã�¾ã�›ã‚“。 _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ _レッドストーンリンク_を介ã�—ã�¦ãƒªãƒ¢ãƒ¼ãƒˆã�§åˆ¶å¾¡ã�§ã��ã�¾ã�™ã€‚", + "block.create.linked_extractor.tooltip.condition1": "レッドストーンリンクã�Œã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã�ªå ´å�ˆ", + "block.create.linked_extractor.tooltip.behaviour1": "エクストラクタを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.linked_extractor.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.linked_extractor.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚ エクストラクターã�¯ã€�_アイテムタイプ_ã�¨ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚¹ã‚¿ãƒƒã‚¯ã�®_æ•°_を排他的ã�«å�–å¾—ã�—ã�¾ã�™ã€‚", + "block.create.linked_extractor.tooltip.control2": "周波数スペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.linked_extractor.tooltip.action2": "リッスンã�•ã‚Œã�¦ã�„る周波数ã�®ä¸€éƒ¨ã�¨ã�—ã�¦_ç�¾åœ¨ä¿�æŒ�_ã�•ã‚Œã�¦ã�„るアイテムを割り当ã�¦ã�¾ã�™ã€‚ å�Œã�˜å‘¨æ³¢æ•°ã�®é€�ä¿¡_レッドストーンリンク_ã�«å‹•åŠ›ã�Œä¾›çµ¦ã�•ã‚Œã‚‹ã�¨ã€�ã�“ã�®ã‚¨ã‚¯ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ¼ã�¯ä¸€æ™‚å�œæ­¢ã�—ã�¾ã�™ã€‚", - "block.create.linked_transposer.tooltip": "リンクされたトランスポーザー", - "block.create.linked_transposer.tooltip.summary": "取り付けてる_インベントリ_から_アイテムを取得_し、すぐにターゲット_インベントリ_に入れます。 フィルターとしてアイテムスタックを割り当てることができます。 _レッドストーンリンク_を介してリモートで制御できます。", - "block.create.linked_transposer.tooltip.condition1": "レッドストーンリンクがアクティブのとき", - "block.create.linked_transposer.tooltip.behaviour1": "トランスポーザを_一時停止_します。", - "block.create.linked_transposer.tooltip.control1": "フィルタースペースを右クリックしたとき", - "block.create.linked_transposer.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 トランスポーザーは、アイテム_タイプ_とフィルター_スタック_の数に一致するアイテムのみをプルします。", - "block.create.linked_transposer.tooltip.control2": "周波数スペースを右クリックしたとき", - "block.create.linked_transposer.tooltip.action2": "聴いてる周波数の一部として現在_保持されているアイテム_を割り当てます。 同じ周波数の送信レッドストーンリンクに動力が供給されると、このトランスポーザーは一時停止します。", + "block.create.linked_transposer.tooltip": "リンクã�•ã‚Œã�Ÿãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザー", + "block.create.linked_transposer.tooltip.summary": "å�–り付ã�‘ã�¦ã‚‹_インベントリ_ã�‹ã‚‰_アイテムをå�–å¾—_ã�—ã€�ã�™ã��ã�«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ_インベントリ_ã�«å…¥ã‚Œã�¾ã�™ã€‚ フィルターã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ _レッドストーンリンク_を介ã�—ã�¦ãƒªãƒ¢ãƒ¼ãƒˆã�§åˆ¶å¾¡ã�§ã��ã�¾ã�™ã€‚", + "block.create.linked_transposer.tooltip.condition1": "レッドストーンリンクã�Œã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã�®ã�¨ã��", + "block.create.linked_transposer.tooltip.behaviour1": "トランスãƒ�ーザを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.linked_transposer.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.linked_transposer.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚ トランスãƒ�ーザーã�¯ã€�アイテム_タイプ_ã�¨ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼_スタック_ã�®æ•°ã�«ä¸€è‡´ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�®ã�¿ã‚’プルã�—ã�¾ã�™ã€‚", + "block.create.linked_transposer.tooltip.control2": "周波数スペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", + "block.create.linked_transposer.tooltip.action2": "è�´ã�„ã�¦ã‚‹å‘¨æ³¢æ•°ã�®ä¸€éƒ¨ã�¨ã�—ã�¦ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るアイテム_を割り当ã�¦ã�¾ã�™ã€‚ å�Œã�˜å‘¨æ³¢æ•°ã�®é€�信レッドストーンリンクã�«å‹•åŠ›ã�Œä¾›çµ¦ã�•ã‚Œã‚‹ã�¨ã€�ã�“ã�®ãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザーã�¯ä¸€æ™‚å�œæ­¢ã�—ã�¾ã�™ã€‚", - "block.create.funnel.tooltip": "漏斗", - "block.create.funnel.tooltip.summary": "_入力アイテムを収集_し、可能な場合はそれらを取り付けた_インベントリ_に挿入します。 _世界_のアイテムや_ベルト_のアイテムを集めることができます。", - "block.create.funnel.tooltip.condition1": "パッシブベルト引っ張り", - "block.create.funnel.tooltip.behaviour1": "漏斗は、_ベルトの上_から横または端に配置すると、ベルトからアイテムを引き出すことができます。 横向きのファンネルをバックアップすると、_ベルト上のアイテムが停止することはありません_。", + "block.create.funnel.tooltip": "æ¼�æ–—", + "block.create.funnel.tooltip.summary": "_入力アイテムをå�Žé›†_ã�—ã€�å�¯èƒ½ã�ªå ´å�ˆã�¯ã��れらをå�–り付ã�‘ã�Ÿ_インベントリ_ã�«æŒ¿å…¥ã�—ã�¾ã�™ã€‚ _世界_ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚„_ベルト_ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’集ã‚�ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", + "block.create.funnel.tooltip.condition1": "パッシブベルト引ã�£å¼µã‚Š", + "block.create.funnel.tooltip.behaviour1": "æ¼�æ–—ã�¯ã€�_ベルトã�®ä¸Š_ã�‹ã‚‰æ¨ªã�¾ã�Ÿã�¯ç«¯ã�«é…�ç½®ã�™ã‚‹ã�¨ã€�ベルトã�‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’引ã��出ã�™ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ 横å�‘ã��ã�®ãƒ•ã‚¡ãƒ³ãƒ�ルをãƒ�ックアップã�™ã‚‹ã�¨ã€�_ベルト上ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�Œå�œæ­¢ã�™ã‚‹ã�“ã�¨ã�¯ã�‚ã‚Šã�¾ã�›ã‚“_。", - "block.create.belt_tunnel.tooltip": "ベルトトンネル", - "block.create.belt_tunnel.tooltip.summary": "_メカニカルベルト_を壁に通すための美的なオプション。 ベルトは真鍮の_ケーシング_で_補強_する必要があります。 トンネルは_隣接_グループと同期でき、グループ内のすべてのトンネルに1つの待機がある場合にのみアイテムを通過させます。 [Ctrl]", - "block.create.belt_tunnel.tooltip.control1": "前面をレンチで右クリック", - "block.create.belt_tunnel.tooltip.action1": "_同期動作_を切り替えます。 同期されたトンネルは、ネイバーがアイテムを取得するまでアイテムを保持します。", - "block.create.belt_tunnel.tooltip.control2": "横面をレンチで右クリック", - "block.create.belt_tunnel.tooltip.action2": "トンネルにその面に窓がある場合、_窓シャッターを調整_します。", + "block.create.belt_tunnel.tooltip": "ベルトトンãƒ�ル", + "block.create.belt_tunnel.tooltip.summary": "_メカニカルベルト_ã‚’å£�ã�«é€šã�™ã�Ÿã‚�ã�®ç¾Žçš„ã�ªã‚ªãƒ—ション。 ベルトã�¯çœŸé�®ã�®_ケーシング_ã�§_補強_ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚ トンãƒ�ルã�¯_隣接_グループã�¨å�ŒæœŸã�§ã��ã€�グループ内ã�®ã�™ã�¹ã�¦ã�®ãƒˆãƒ³ãƒ�ルã�«1ã�¤ã�®å¾…æ©Ÿã�Œã�‚ã‚‹å ´å�ˆã�«ã�®ã�¿ã‚¢ã‚¤ãƒ†ãƒ ã‚’通é�Žã�•ã�›ã�¾ã�™ã€‚ [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "å‰�é�¢ã‚’レンãƒ�ã�§å�³ã‚¯ãƒªãƒƒã‚¯", + "block.create.belt_tunnel.tooltip.action1": "_å�ŒæœŸå‹•ä½œ_を切り替ã�ˆã�¾ã�™ã€‚ å�ŒæœŸã�•ã‚Œã�Ÿãƒˆãƒ³ãƒ�ルã�¯ã€�ãƒ�イãƒ�ーã�Œã‚¢ã‚¤ãƒ†ãƒ ã‚’å�–å¾—ã�™ã‚‹ã�¾ã�§ã‚¢ã‚¤ãƒ†ãƒ ã‚’ä¿�æŒ�ã�—ã�¾ã�™ã€‚", + "block.create.belt_tunnel.tooltip.control2": "横é�¢ã‚’レンãƒ�ã�§å�³ã‚¯ãƒªãƒƒã‚¯", + "block.create.belt_tunnel.tooltip.action2": "トンãƒ�ルã�«ã��ã�®é�¢ã�«çª“ã�Œã�‚ã‚‹å ´å�ˆã€�_窓シャッターを調整_ã�—ã�¾ã�™ã€‚", - "block.create.brass_casing.tooltip": "真ちゅうのケーシング", - "block.create.brass_casing.tooltip.summary": "さまざまな用途に使用できる頑丈な機械ケーシング。 装飾用にも安全です。", - "block.create.brass_casing.tooltip.condition1": "メカニカルベルトに使用したとき", - "block.create.brass_casing.tooltip.behaviour1": "真鍮製のファンデーションでベルトを補強します。 強化ベルトは、ベルトトンネル、エクストラクタ、ファンネル、およびトランスポーザをベルトの側面および下から相互作用することをサポートできます。", + "block.create.brass_casing.tooltip": "真ã�¡ã‚…ã�†ã�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°", + "block.create.brass_casing.tooltip.summary": "ã�•ã�¾ã�–ã�¾ã�ªç”¨é€”ã�«ä½¿ç”¨ã�§ã��る頑丈ã�ªæ©Ÿæ¢°ã‚±ãƒ¼ã‚·ãƒ³ã‚°ã€‚ 装飾用ã�«ã‚‚安全ã�§ã�™ã€‚", + "block.create.brass_casing.tooltip.condition1": "メカニカルベルトã�«ä½¿ç”¨ã�—ã�Ÿã�¨ã��", + "block.create.brass_casing.tooltip.behaviour1": "真é�®è£½ã�®ãƒ•ã‚¡ãƒ³ãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã�§ãƒ™ãƒ«ãƒˆã‚’補強ã�—ã�¾ã�™ã€‚ 強化ベルトã�¯ã€�ベルトトンãƒ�ルã€�エクストラクタã€�ファンãƒ�ルã€�ã�Šã‚ˆã�³ãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザをベルトã�®å�´é�¢ã�Šã‚ˆã�³ä¸‹ã�‹ã‚‰ç›¸äº’作用ã�™ã‚‹ã�“ã�¨ã‚’サãƒ�ートã�§ã��ã�¾ã�™ã€‚", - "block.create.belt_observer.tooltip": "ベルトオブザーバー", - "block.create.belt_observer.tooltip.summary": "その前のメカニカルベルト上を通り過ぎるアイテムとエンティティを検出します。 レンチを使用して、その動作を循環させます。 非アイテムは、設定に関係なく常に検出モードで処理されます。", - "block.create.belt_observer.tooltip.condition1": "検出モード", - "block.create.belt_observer.tooltip.behaviour1": "_一致するアイテムが観測_されたベルトセグメントにある間、レッドストーンを出力します。", - "block.create.belt_observer.tooltip.condition2": "パルスモード", - "block.create.belt_observer.tooltip.behaviour2": "一致するアイテムが観測_されたベルトセグメントの中心を通過するときに_パルス_を発します。", - "block.create.belt_observer.tooltip.condition3": "イジェクトモード", - "block.create.belt_observer.tooltip.behaviour3": "_一致するアイテム_を側面から排出します。 対象のベルトやスペースが占有されている場合、アイテムは_所定の位置に保持_されます。", - "block.create.belt_observer.tooltip.condition4": "分割モード", - "block.create.belt_observer.tooltip.behaviour4": "_一致するアイテムスタック_を分割し、その_半分_を側面から_排出_します。", + "block.create.belt_observer.tooltip": "ベルトオブザーãƒ�ー", + "block.create.belt_observer.tooltip.summary": "ã��ã�®å‰�ã�®ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ™ãƒ«ãƒˆä¸Šã‚’通りé�Žã�Žã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�¨ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’検出ã�—ã�¾ã�™ã€‚ レンãƒ�を使用ã�—ã�¦ã€�ã��ã�®å‹•ä½œã‚’循環ã�•ã�›ã�¾ã�™ã€‚ é�žã‚¢ã‚¤ãƒ†ãƒ ã�¯ã€�設定ã�«é–¢ä¿‚ã�ªã��常ã�«æ¤œå‡ºãƒ¢ãƒ¼ãƒ‰ã�§å‡¦ç�†ã�•ã‚Œã�¾ã�™ã€‚", + "block.create.belt_observer.tooltip.condition1": "検出モード", + "block.create.belt_observer.tooltip.behaviour1": "_一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�Œè¦³æ¸¬_ã�•ã‚Œã�Ÿãƒ™ãƒ«ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆã�«ã�‚ã‚‹é–“ã€�レッドストーンを出力ã�—ã�¾ã�™ã€‚", + "block.create.belt_observer.tooltip.condition2": "パルスモード", + "block.create.belt_observer.tooltip.behaviour2": "一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�Œè¦³æ¸¬_ã�•ã‚Œã�Ÿãƒ™ãƒ«ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆã�®ä¸­å¿ƒã‚’通é�Žã�™ã‚‹ã�¨ã��ã�«_パルス_を発ã�—ã�¾ã�™ã€‚", + "block.create.belt_observer.tooltip.condition3": "イジェクトモード", + "block.create.belt_observer.tooltip.behaviour3": "_一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ _ã‚’å�´é�¢ã�‹ã‚‰æŽ’出ã�—ã�¾ã�™ã€‚ 対象ã�®ãƒ™ãƒ«ãƒˆã‚„スペースã�Œå� æœ‰ã�•ã‚Œã�¦ã�„ã‚‹å ´å�ˆã€�アイテムã�¯_所定ã�®ä½�ç½®ã�«ä¿�æŒ�_ã�•ã‚Œã�¾ã�™ã€‚", + "block.create.belt_observer.tooltip.condition4": "分割モード", + "block.create.belt_observer.tooltip.behaviour4": "_一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯_を分割ã�—ã€�ã��ã�®_å�Šåˆ†_ã‚’å�´é�¢ã�‹ã‚‰_排出_ã�—ã�¾ã�™ã€‚", - "block.create.pulse_repeater.tooltip": "パルスリピーター", - "block.create.pulse_repeater.tooltip.summary": "通過するレッドストーン信号を_1ティック_の長さにカットする簡単な回路。", + "block.create.pulse_repeater.tooltip": "パルスリピーター", + "block.create.pulse_repeater.tooltip.summary": "通é�Žã�™ã‚‹ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ä¿¡å�·ã‚’_1ティック_ã�®é•·ã�•ã�«ã‚«ãƒƒãƒˆã�™ã‚‹ç°¡å�˜ã�ªå›žè·¯ã€‚", - "block.create.adjustable_repeater.tooltip": "フレックスリピーター", - "block.create.adjustable_repeater.tooltip.summary": "最大_30分_の遅延を_設定可能_な高度な_レッドストーンリピーター_。", + "block.create.adjustable_repeater.tooltip": "フレックスリピーター", + "block.create.adjustable_repeater.tooltip.summary": "最大_30分_ã�®é�…延を_設定å�¯èƒ½_ã�ªé«˜åº¦ã�ª_レッドストーンリピーター_。", - "block.create.adjustable_pulse_repeater.tooltip": "フレックスパルスリピーター", - "block.create.adjustable_pulse_repeater.tooltip.summary": "最大_30分_の遅延を_設定可能_な_パルスリピーター_。", + "block.create.adjustable_pulse_repeater.tooltip": "フレックスパルスリピーター", + "block.create.adjustable_pulse_repeater.tooltip.summary": "最大_30分_ã�®é�…延を_設定å�¯èƒ½_ã�ª_パルスリピーター_。", - "block.create.analog_lever.tooltip": "アナログレバー", - "block.create.analog_lever.tooltip.summary": "_発信信号強度_をより_正確に制御_するレバー。", + "block.create.analog_lever.tooltip": "アナログレãƒ�ー", + "block.create.analog_lever.tooltip.summary": "_発信信å�·å¼·åº¦_をより_正確ã�«åˆ¶å¾¡_ã�™ã‚‹ãƒ¬ãƒ�ー。", - "block.create.powered_toggle_latch.tooltip": "パワードトグルラッチ", - "block.create.powered_toggle_latch.tooltip.summary": "レッドストーンパルスによってトグルできるレバー。", + "block.create.powered_toggle_latch.tooltip": "パワードトグルラッãƒ�", + "block.create.powered_toggle_latch.tooltip.summary": "レッドストーンパルスã�«ã‚ˆã�£ã�¦ãƒˆã‚°ãƒ«ã�§ã��るレãƒ�ー。", - "block.create.powered_latch.tooltip": "パワードラッチ", - "block.create.powered_latch.tooltip.summary": "_レッドストーン信号_で制御できるレバー。 _背面の信号_はそれを可能にし、_側面からの信号_はそれをリセットします。", + "block.create.powered_latch.tooltip": "パワードラッãƒ�", + "block.create.powered_latch.tooltip.summary": "_レッドストーン信å�·_ã�§åˆ¶å¾¡ã�§ã��るレãƒ�ー。 _背é�¢ã�®ä¿¡å�·_ã�¯ã��れをå�¯èƒ½ã�«ã�—ã€�_å�´é�¢ã�‹ã‚‰ã�®ä¿¡å�·_ã�¯ã��れをリセットã�—ã�¾ã�™ã€‚", - "block.create.speedometer.tooltip": "スピードメーター", - "block.create.speedometer.tooltip.summary": "接続された動力コンポーネントの_回転速度_を測定して表示します。 _レッドストーンコンパレータ_をサポートします。", - "block.create.speedometer.tooltip.condition1": "回転したとき", - "block.create.speedometer.tooltip.behaviour1": "速度のレベルに対応する色を示します。 _緑_は低速、_青_は中程度、_紫_は高速回転を示します。 一部の機械コンポーネントは、適切に機能するために十分なレベルの速度を必要とします。", + "block.create.speedometer.tooltip": "スピードメーター", + "block.create.speedometer.tooltip.summary": "接続ã�•ã‚Œã�Ÿå‹•åŠ›ã‚³ãƒ³ãƒ�ーãƒ�ントã�®_回転速度_を測定ã�—ã�¦è¡¨ç¤ºã�—ã�¾ã�™ã€‚ _レッドストーンコンパレータ_をサãƒ�ートã�—ã�¾ã�™ã€‚", + "block.create.speedometer.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.speedometer.tooltip.behaviour1": "速度ã�®ãƒ¬ãƒ™ãƒ«ã�«å¯¾å¿œã�™ã‚‹è‰²ã‚’示ã�—ã�¾ã�™ã€‚ _ç·‘_ã�¯ä½Žé€Ÿã€�_é�’_ã�¯ä¸­ç¨‹åº¦ã€�_ç´«_ã�¯é«˜é€Ÿå›žè»¢ã‚’示ã�—ã�¾ã�™ã€‚ 一部ã�®æ©Ÿæ¢°ã‚³ãƒ³ãƒ�ーãƒ�ントã�¯ã€�é�©åˆ‡ã�«æ©Ÿèƒ½ã�™ã‚‹ã�Ÿã‚�ã�«å��分ã�ªãƒ¬ãƒ™ãƒ«ã�®é€Ÿåº¦ã‚’å¿…è¦�ã�¨ã�—ã�¾ã�™ã€‚", - "block.create.stressometer.tooltip": "ストレスメーター", - "block.create.stressometer.tooltip.summary": "接続された動力ネットワークの全体的な応力を測定して表示します。 レッドストーンコンパレータをサポートします。", - "block.create.stressometer.tooltip.condition1": "回転したとき", - "block.create.stressometer.tooltip.behaviour1": "応力のレベルに対応する色を示します。 _過度に応力がかかったネットワーク_は動きを止めます。 ネットワークに_回転源_を追加することで、応力を軽減できます。", + "block.create.stressometer.tooltip": "ストレスメーター", + "block.create.stressometer.tooltip.summary": "接続ã�•ã‚Œã�Ÿå‹•åŠ›ãƒ�ットワークã�®å…¨ä½“çš„ã�ªå¿œåŠ›ã‚’測定ã�—ã�¦è¡¨ç¤ºã�—ã�¾ã�™ã€‚ レッドストーンコンパレータをサãƒ�ートã�—ã�¾ã�™ã€‚", + "block.create.stressometer.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", + "block.create.stressometer.tooltip.behaviour1": "応力ã�®ãƒ¬ãƒ™ãƒ«ã�«å¯¾å¿œã�™ã‚‹è‰²ã‚’示ã�—ã�¾ã�™ã€‚ _é�Žåº¦ã�«å¿œåŠ›ã�Œã�‹ã�‹ã�£ã�Ÿãƒ�ットワーク_ã�¯å‹•ã��ã‚’æ­¢ã‚�ã�¾ã�™ã€‚ ãƒ�ットワークã�«_回転æº�_を追加ã�™ã‚‹ã�“ã�¨ã�§ã€�応力を軽減ã�§ã��ã�¾ã�™ã€‚", - "tool.create.sand_paper.tooltip": "サンドペーパー", - "tool.create.sand_paper.tooltip.summary": "_素材を磨いたり_、_道具_を研ぐために使用できる粗い紙。", - "tool.create.sand_paper.tooltip.condition1": "使用したとき", - "tool.create.sand_paper.tooltip.behaviour1": "オフハンドで持っているアイテムや地面に落ちているアイテムを見ると研磨します", + "tool.create.sand_paper.tooltip": "サンドペーパー", + "tool.create.sand_paper.tooltip.summary": "_ç´ æ��を磨ã�„ã�Ÿã‚Š_ã€�_é�“å…·_ã‚’ç ”ã��ã�Ÿã‚�ã�«ä½¿ç”¨ã�§ã��ã‚‹ç²—ã�„紙。", + "tool.create.sand_paper.tooltip.condition1": "使用ã�—ã�Ÿã�¨ã��", + "tool.create.sand_paper.tooltip.behaviour1": "オフãƒ�ンドã�§æŒ�ã�£ã�¦ã�„るアイテムや地é�¢ã�«è�½ã�¡ã�¦ã�„るアイテムを見るã�¨ç ”磨ã�—ã�¾ã�™", "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", @@ -1344,26 +1344,26 @@ "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", - "item.create.refined_radiance.tooltip": "洗練された放射", - "item.create.refined_radiance.tooltip.summary": "_吸収された光_から鍛造されたクロマチックマテリアル。", + "item.create.refined_radiance.tooltip": "æ´—ç·´ã�•ã‚Œã�Ÿæ”¾å°„", + "item.create.refined_radiance.tooltip.summary": "_å�¸å�Žã�•ã‚Œã�Ÿå…‰_ã�‹ã‚‰é�›é€ ã�•ã‚Œã�Ÿã‚¯ãƒ­ãƒžãƒ�ックマテリアル。", - "item.create.shadow_steel.tooltip": "シャドウスチール", - "item.create.shadow_steel.tooltip.summary": "_虚無_から鍛造されたクロマティックマテリアル。", + "item.create.shadow_steel.tooltip": "シャドウスãƒ�ール", + "item.create.shadow_steel.tooltip.summary": "_虚無_ã�‹ã‚‰é�›é€ ã�•ã‚Œã�Ÿã‚¯ãƒ­ãƒžãƒ†ã‚£ãƒƒã‚¯ãƒžãƒ†ãƒªã‚¢ãƒ«ã€‚", - "item.create.crafter_slot_cover.tooltip": "スロットカバー", - "item.create.crafter_slot_cover.tooltip.summary": "_メカニカルクラフター_でレシピの空のスロットとしてマークするために使用されます。 クラフターは必ずしも完全な正方格子を形成する必要はありません。 これは、_成分が互いに対角線_であるレシピがある場合に役立ちます。", + "item.create.crafter_slot_cover.tooltip": "スロットカãƒ�ー", + "item.create.crafter_slot_cover.tooltip.summary": "_メカニカルクラフター_ã�§ãƒ¬ã‚·ãƒ”ã�®ç©ºã�®ã‚¹ãƒ­ãƒƒãƒˆã�¨ã�—ã�¦ãƒžãƒ¼ã‚¯ã�™ã‚‹ã�Ÿã‚�ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚ クラフターã�¯å¿…ã�šã�—も完全ã�ªæ­£æ–¹æ ¼å­�ã‚’å½¢æˆ�ã�™ã‚‹å¿…è¦�ã�¯ã�‚ã‚Šã�¾ã�›ã‚“。 ã�“ã‚Œã�¯ã€�_æˆ�分ã�Œäº’ã�„ã�«å¯¾è§’ç·š_ã�§ã�‚るレシピã�Œã�‚ã‚‹å ´å�ˆã�«å½¹ç«‹ã�¡ã�¾ã�™ã€‚", "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "作業中です!", - "create.tooltip.randomWipDescription0": "お子様の手の届かないところに保管してください。", - "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使用するたびに死にます。そう、すべての時間。", - "create.tooltip.randomWipDescription2": "自己責任。", - "create.tooltip.randomWipDescription3": "これはあなたが探しているアイテムではありません。* finger-wiggles *を分散させてください。", - "create.tooltip.randomWipDescription4": "このアイテムは10秒で自己破壊します。 10、9、8 ...", - "create.tooltip.randomWipDescription5": "私を信じて、それは無駄だ。", - "create.tooltip.randomWipDescription6": "このアイテムを使用することにより、お客様はここに免責事項に同意し、その条件に同意するものとします。", - "create.tooltip.randomWipDescription7": "これはあなたのためではないかもしれません。 あれはどう??", - "create.tooltip.randomWipDescription8": "それを使ってすぐに決断したことに後悔してください。", + "create.tooltip.workInProgress": "作業中ã�§ã�™ï¼�", + "create.tooltip.randomWipDescription0": "ã�Šå­�様ã�®æ‰‹ã�®å±Šã�‹ã�ªã�„ã�¨ã�“ã‚�ã�«ä¿�管ã�—ã�¦ã��ã� ã�•ã�„。", + "create.tooltip.randomWipDescription1": "赤ã�¡ã‚ƒã‚“パンダã�¯ã€�ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�™ã‚‹ã�Ÿã�³ã�«æ­»ã�«ã�¾ã�™ã€‚ã��ã�†ã€�ã�™ã�¹ã�¦ã�®æ™‚間。", + "create.tooltip.randomWipDescription2": "自己責任。", + "create.tooltip.randomWipDescription3": "ã�“ã‚Œã�¯ã�‚ã�ªã�Ÿã�ŒæŽ¢ã�—ã�¦ã�„るアイテムã�§ã�¯ã�‚ã‚Šã�¾ã�›ã‚“。* finger-wiggles *を分散ã�•ã�›ã�¦ã��ã� ã�•ã�„。", + "create.tooltip.randomWipDescription4": "ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�¯10秒ã�§è‡ªå·±ç ´å£Šã�—ã�¾ã�™ã€‚ 10ã€�9ã€�8 ...", + "create.tooltip.randomWipDescription5": "ç§�ã‚’ä¿¡ã�˜ã�¦ã€�ã��ã‚Œã�¯ç„¡é§„ã� ã€‚", + "create.tooltip.randomWipDescription6": "ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�™ã‚‹ã�“ã�¨ã�«ã‚ˆã‚Šã€�ã�Šå®¢æ§˜ã�¯ã�“ã�“ã�«å…�責事項ã�«å�Œæ„�ã�—ã€�ã��ã�®æ�¡ä»¶ã�«å�Œæ„�ã�™ã‚‹ã‚‚ã�®ã�¨ã�—ã�¾ã�™ã€‚", + "create.tooltip.randomWipDescription7": "ã�“ã‚Œã�¯ã�‚ã�ªã�Ÿã�®ã�Ÿã‚�ã�§ã�¯ã�ªã�„ã�‹ã‚‚ã�—ã‚Œã�¾ã�›ã‚“。 ã�‚ã‚Œã�¯ã�©ã�†ï¼Ÿï¼Ÿ", + "create.tooltip.randomWipDescription8": "ã��れを使ã�£ã�¦ã�™ã��ã�«æ±ºæ–­ã�—ã�Ÿã�“ã�¨ã�«å¾Œæ‚”ã�—ã�¦ã��ã� ã�•ã�„。", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index a46b6bf9b..f3196e08e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -5,31 +5,31 @@ "block.create.acacia_window": "UNLOCALIZED: Acacia Window", "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_crate": "가변 창고", - "block.create.adjustable_pulley": "덮힌 벨트 변속기", - "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", - "block.create.adjustable_repeater": "가변 리피터", - "block.create.analog_lever": "아날로그 레버", - "block.create.andesite_bricks": "안산안 벽돌", + "block.create.adjustable_crate": "가변 창고", + "block.create.adjustable_pulley": "ë�®ížŒ 벨트 ë³€ì†�기", + "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", + "block.create.adjustable_repeater": "가변 리피터", + "block.create.analog_lever": "아날로그 레버", + "block.create.andesite_bricks": "안산안 ë²½ë�Œ", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "안산암 케이스", + "block.create.andesite_casing": "안산암 ì¼€ì�´ìŠ¤", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", - "block.create.basin": "대야", - "block.create.belt": "컨베이어 벨트", + "block.create.basin": "대야", + "block.create.belt": "컨베ì�´ì–´ 벨트", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "벨트 감지기", - "block.create.belt_tunnel": "컨베이어 벨트 터널", + "block.create.belt_observer": "벨트 ê°�지기", + "block.create.belt_tunnel": "컨베ì�´ì–´ 벨트 í„°ë„�", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.brass_block": "황동 블럭", - "block.create.brass_casing": "황동 케이스", - "block.create.cart_assembler": "카트 조립기", + "block.create.brass_block": "황ë�™ 블럭", + "block.create.brass_casing": "황ë�™ ì¼€ì�´ìŠ¤", + "block.create.cart_assembler": "카트 조립기", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", @@ -38,33 +38,33 @@ "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "시계 베어링", - "block.create.clutch": "클러치", - "block.create.cogwheel": "톱나버퀴", - "block.create.copper_block": "구리 블럭", - "block.create.copper_casing": "구리 케이스", - "block.create.copper_ore": "구리 광석", - "block.create.copper_shingles": "구리 판자", - "block.create.creative_crate": "청사진 대포 지원기", - "block.create.creative_motor": "모터", - "block.create.crushing_wheel": "분쇄 휠", + "block.create.clockwork_bearing": "시계 ë² ì–´ë§�", + "block.create.clutch": "í�´ëŸ¬ì¹˜", + "block.create.cogwheel": "톱나버퀴", + "block.create.copper_block": "구리 블럭", + "block.create.copper_casing": "구리 ì¼€ì�´ìŠ¤", + "block.create.copper_ore": "구리 ê´‘ì„�", + "block.create.copper_shingles": "구리 íŒ�ìž�", + "block.create.creative_crate": "청사진 대í�¬ 지ì›�기", + "block.create.creative_motor": "모터", + "block.create.crushing_wheel": "분쇄 휠", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "뻐꾸기 시계", + "block.create.cuckoo_clock": "ë»�꾸기 시계", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "짙은 스코리아", - "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", - "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", - "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", - "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", + "block.create.dark_scoria": "짙ì�€ 스코리아", + "block.create.dark_scoria_bricks": "짙ì�€ 스코리아 ë²½ë�Œ", + "block.create.dark_scoria_bricks_slab": "짙ì�€ 스코리아 ë²½ë�Œ ë°˜ 블ë¡�", + "block.create.dark_scoria_bricks_stairs": "짙ì�€ 스코리아 ë²½ë�Œ 계단", + "block.create.dark_scoria_bricks_wall": "짙ì�€ 스코리아 ë²½ë�Œ 담장", "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "배포기", + "block.create.deployer": "ë°°í�¬ê¸°", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "섬록암 벽돌", + "block.create.diorite_bricks": "섬ë¡�ì•” ë²½ë�Œ", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", @@ -73,20 +73,20 @@ "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "백운암", - "block.create.dolomite_bricks": "백운암 벽돌", - "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", - "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", - "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", + "block.create.dolomite": "백운암", + "block.create.dolomite_bricks": "백운암 ë²½ë�Œ", + "block.create.dolomite_bricks_slab": "백운암 ë²½ë�Œ ë°˜ 블ë¡�", + "block.create.dolomite_bricks_stairs": "백운암 ë²½ë�Œ 계단", + "block.create.dolomite_bricks_wall": "백운암 ë²½ë�Œ 담장", "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "백운암 기둥", - "block.create.encased_belt": "덮힌 벨트", - "block.create.encased_fan": "덮힌 환풍기", - "block.create.encased_shaft": "덮힌 축", - "block.create.extractor": "추출기", + "block.create.dolomite_pillar": "백운암 기둥", + "block.create.encased_belt": "ë�®ížŒ 벨트", + "block.create.encased_fan": "ë�®ížŒ 환í’�기", + "block.create.encased_shaft": "ë�®ížŒ 축", + "block.create.extractor": "추출기", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", @@ -125,24 +125,24 @@ "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.flywheel": "플라이휠", - "block.create.framed_glass": "큰 유리", - "block.create.framed_glass_pane": "큰 유리판", - "block.create.funnel": "깔대기", - "block.create.furnace_engine": "화로 엔진", - "block.create.gabbro": "반려암", - "block.create.gabbro_bricks": "반려암 벽돌", + "block.create.flywheel": "플ë�¼ì�´íœ ", + "block.create.framed_glass": "í�° 유리", + "block.create.framed_glass_pane": "í�° 유리íŒ�", + "block.create.funnel": "깔대기", + "block.create.furnace_engine": "화로 엔진", + "block.create.gabbro": "반려암", + "block.create.gabbro_bricks": "반려암 ë²½ë�Œ", "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", - "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", + "block.create.gabbro_bricks_stairs": "반려암 ë²½ë�Œ 계단", + "block.create.gabbro_bricks_wall": "반려암 ë²½ë�Œ 담장", "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "기어박스", - "block.create.gearshift": "기어쉬프트", - "block.create.granite_bricks": "화강암 벽돌", + "block.create.gearbox": "기어박스", + "block.create.gearshift": "기어쉬프트", + "block.create.granite_bricks": "화강암 ë²½ë�Œ", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", @@ -151,12 +151,12 @@ "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.hand_crank": "핸드 크랭크", - "block.create.horizontal_framed_glass": "수평 유리", - "block.create.horizontal_framed_glass_pane": "수평 유리판", + "block.create.hand_crank": "핸드 í�¬ëž­í�¬", + "block.create.horizontal_framed_glass": "수í�‰ 유리", + "block.create.horizontal_framed_glass_pane": "수í�‰ 유리íŒ�", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "큰 톱니바퀴", + "block.create.large_cogwheel": "í�° 톱니바퀴", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -166,33 +166,33 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "석회모래", - "block.create.limestone": "석회암", - "block.create.limestone_bricks": "석회암 벽돌", - "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", - "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", - "block.create.limestone_bricks_wall": "석회암 벽돌 담장", + "block.create.limesand": "ì„�회모래", + "block.create.limestone": "ì„�회암", + "block.create.limestone_bricks": "ì„�회암 ë²½ë�Œ", + "block.create.limestone_bricks_slab": "ì„�회암 ë²½ë�Œ ë°˜ 블ë¡�", + "block.create.limestone_bricks_stairs": "ì„�회암 ë²½ë�Œ 계단", + "block.create.limestone_bricks_wall": "ì„�회암 ë²½ë�Œ 담장", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "석회암 기둥", - "block.create.linear_chassis": "직선 섀시", - "block.create.linked_extractor": "무선 추출기", - "block.create.linked_transposer": "무선 트랜스포저", + "block.create.limestone_pillar": "ì„�회암 기둥", + "block.create.linear_chassis": "ì§�ì„  섀시", + "block.create.linked_extractor": "무선 추출기", + "block.create.linked_transposer": "무선 트랜스í�¬ì €", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "베어링", - "block.create.mechanical_crafter": "기계식 조합기", - "block.create.mechanical_drill": "드릴", - "block.create.mechanical_harvester": "수확기", - "block.create.mechanical_mixer": "믹서", - "block.create.mechanical_piston": "기계식 피스톤", - "block.create.mechanical_piston_head": "기계식 피스톤 머리", + "block.create.mechanical_bearing": "ë² ì–´ë§�", + "block.create.mechanical_crafter": "기계ì‹� 조합기", + "block.create.mechanical_drill": "드릴", + "block.create.mechanical_harvester": "수확기", + "block.create.mechanical_mixer": "믹서", + "block.create.mechanical_piston": "기계ì‹� 피스톤", + "block.create.mechanical_piston_head": "기계ì‹� 피스톤 머리", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "압착기", + "block.create.mechanical_press": "압착기", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "톱", - "block.create.millstone": "맷돌", + "block.create.mechanical_saw": "톱", + "block.create.millstone": "맷ë�Œ", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", @@ -204,9 +204,9 @@ "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "자연 스코리아", + "block.create.natural_scoria": "ìž�ì—° 스코리아", "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "노즐", + "block.create.nozzle": "ë…¸ì¦�", "block.create.oak_window": "UNLOCALIZED: Oak Window", "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", @@ -257,48 +257,48 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", + "block.create.piston_extension_pole": "피스톤 연장 축", + "block.create.polished_dark_scoria": "윤나는 짙ì�€ 스코리아", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "윤나는 백운암", + "block.create.polished_dolomite": "윤나는 백운암", "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "윤나는 반려암", + "block.create.polished_gabbro": "윤나는 반려암", "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "윤나는 석회암", - "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", + "block.create.polished_limestone": "윤나는 ì„�회암", + "block.create.polished_limestone_slab": "윤나는 ì„�회암 ë°˜ 블ë¡�", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "윤나는 스코리아", - "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", + "block.create.polished_scoria": "윤나는 스코리아", + "block.create.polished_scoria_slab": "윤나는 스코리아 ë°˜ 블ë¡�", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", - "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", + "block.create.polished_weathered_limestone": "윤나는 í’�í™”ë�œ ì„�회암", + "block.create.polished_weathered_limestone_slab": "윤나는 í’�í™”ë�œ ì„�회암 ë°˜ 블ë¡�", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_storage_interface": "이동식 저장소 인터페이스", - "block.create.powered_latch": "레드스톤 걸쇠", - "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", - "block.create.pulley_magnet": "도르래 자석", - "block.create.pulse_repeater": "펄스 리피터", - "block.create.radial_chassis": "원형 섀시", + "block.create.portable_storage_interface": "ì�´ë�™ì‹� 저장소 ì�¸í„°íŽ˜ì�´ìŠ¤", + "block.create.powered_latch": "레드스톤 걸쇠", + "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", + "block.create.pulley_magnet": "ë�„르래 ìž�ì„�", + "block.create.pulse_repeater": "펄스 리피터", + "block.create.radial_chassis": "ì›�형 섀시", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "동형 감지기", - "block.create.redstone_link": "레드스톤 링크", + "block.create.redstone_contact": "ë�™í˜• ê°�지기", + "block.create.redstone_link": "레드스톤 ë§�í�¬", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "밧줄", - "block.create.rope_pulley": "밧줄 도르래", - "block.create.rotation_speed_controller": "회전 속도 컨트롤러", - "block.create.schematic_table": "청사진 테이블", - "block.create.schematicannon": "청사진 대포", - "block.create.scoria": "스코리아", - "block.create.scoria_bricks": "스코리아 벽돌", + "block.create.rope": "밧줄", + "block.create.rope_pulley": "밧줄 ë�„르래", + "block.create.rotation_speed_controller": "회전 ì†�ë�„ 컨트롤러", + "block.create.schematic_table": "청사진 í…Œì�´ë¸”", + "block.create.schematicannon": "청사진 대í�¬", + "block.create.scoria": "스코리아", + "block.create.scoria_bricks": "스코리아 ë²½ë�Œ", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", @@ -306,96 +306,96 @@ "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "스코리아 기둥", + "block.create.scoria_pillar": "스코리아 기둥", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "순서 기어쉬프트", - "block.create.shaft": "축", - "block.create.speedometer": "속도 계측기", + "block.create.sequenced_gearshift": "순서 기어쉬프트", + "block.create.shaft": "축", + "block.create.speedometer": "ì†�ë�„ 계측기", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "끈끈이 기계식 피스톤", - "block.create.stockpile_switch": "수량 스위치", - "block.create.stressometer": "피로도 계측기", - "block.create.tiled_glass": "타일 유리", - "block.create.tiled_glass_pane": "타일 유리판", - "block.create.transposer": "트랜스포저", - "block.create.turntable": "돌림판", + "block.create.sticky_mechanical_piston": "ë�ˆë�ˆì�´ 기계ì‹� 피스톤", + "block.create.stockpile_switch": "수량 스위치", + "block.create.stressometer": "피로ë�„ 계측기", + "block.create.tiled_glass": "타ì�¼ 유리", + "block.create.tiled_glass_pane": "타ì�¼ 유리íŒ�", + "block.create.transposer": "트랜스í�¬ì €", + "block.create.turntable": "ë�Œë¦¼íŒ�", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", - "block.create.vertical_framed_glass": "수직 유리", - "block.create.vertical_framed_glass_pane": "수직 유리판", + "block.create.vertical_framed_glass": "수ì§� 유리", + "block.create.vertical_framed_glass_pane": "수ì§� 유리íŒ�", "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "물레방아", - "block.create.weathered_limestone": "풍화된 석회암", - "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", - "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", - "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", - "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", + "block.create.water_wheel": "물레방아", + "block.create.weathered_limestone": "í’�í™”ë�œ ì„�회암", + "block.create.weathered_limestone_bricks": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ", + "block.create.weathered_limestone_bricks_slab": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ ë°˜ 블ë¡�", + "block.create.weathered_limestone_bricks_stairs": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ 계단", + "block.create.weathered_limestone_bricks_wall": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ 담장", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", - "block.create.zinc_block": "아연 블럭", - "block.create.zinc_ore": "아연 광석", + "block.create.weathered_limestone_pillar": "í’�í™”ë�œ ì„�회암 기둥", + "block.create.zinc_block": "ì•„ì—° 블럭", + "block.create.zinc_ore": "ì•„ì—° ê´‘ì„�", "entity.create.contraption": "UNLOCALIZED: Contraption", "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.andesite_alloy": "안산암 합금", - "item.create.attribute_filter": "속성 필터 틀", - "item.create.belt_connector": "기계식 벨트", - "item.create.brass_hand": "황동 손", - "item.create.brass_ingot": "황동 주괴", - "item.create.brass_nugget": "황동 조각", - "item.create.brass_sheet": "황동 판", - "item.create.chromatic_compound": "색채 혼합물", - "item.create.copper_ingot": "구리 주괴", - "item.create.copper_nugget": "구리 조각", - "item.create.copper_sheet": "구리 판", - "item.create.crafter_slot_cover": "작업대 슬롯 덮개", - "item.create.crushed_brass": "분쇄된 황동", + "item.create.andesite_alloy": "안산암 합금", + "item.create.attribute_filter": "ì†�성 í•„í„° í‹€", + "item.create.belt_connector": "기계ì‹� 벨트", + "item.create.brass_hand": "황ë�™ ì†�", + "item.create.brass_ingot": "황ë�™ 주괴", + "item.create.brass_nugget": "황ë�™ ì¡°ê°�", + "item.create.brass_sheet": "황ë�™ íŒ�", + "item.create.chromatic_compound": "색채 혼합물", + "item.create.copper_ingot": "구리 주괴", + "item.create.copper_nugget": "구리 ì¡°ê°�", + "item.create.copper_sheet": "구리 íŒ�", + "item.create.crafter_slot_cover": "작업대 슬롯 ë�®ê°œ", + "item.create.crushed_brass": "분쇄ë�œ 황ë�™", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "산림파괴자", - "item.create.dough": "반죽", - "item.create.electron_tube": "전지 튜브", - "item.create.empty_schematic": "빈 청사진", + "item.create.deforester": "산림파괴ìž�", + "item.create.dough": "반죽", + "item.create.electron_tube": "전지 튜브", + "item.create.empty_schematic": "빈 청사진", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "필터 틀", + "item.create.filter": "í•„í„° í‹€", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "엔지니어의 고글", + "item.create.goggles": "엔지니어ì�˜ 고글", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "휴대용 블럭발사기", - "item.create.handheld_worldshaper": "휴대용 세계편집기", - "item.create.integrated_circuit": "집적 회로", - "item.create.iron_sheet": "철 판", + "item.create.handheld_blockzapper": "휴대용 블럭발사기", + "item.create.handheld_worldshaper": "휴대용 세계편집기", + "item.create.integrated_circuit": "집ì � 회로", + "item.create.iron_sheet": "ì²  íŒ�", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", - "item.create.polished_rose_quartz": "윤나는 장밋빛 석영", + "item.create.polished_rose_quartz": "윤나는 장밋빛 ì„�ì˜�", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "프로펠러", - "item.create.red_sand_paper": "붉은 사포", - "item.create.refined_radiance": "정제된 광채", - "item.create.rose_quartz": "장밋빛 석영", - "item.create.sand_paper": "사포", - "item.create.schematic": "청사진", - "item.create.schematic_and_quill": "청사진과 깃펜", - "item.create.shadow_steel": "그림자 강철", + "item.create.propeller": "프로펠러", + "item.create.red_sand_paper": "붉ì�€ 사í�¬", + "item.create.refined_radiance": "ì •ì œë�œ 광채", + "item.create.rose_quartz": "장밋빛 ì„�ì˜�", + "item.create.sand_paper": "사í�¬", + "item.create.schematic": "청사진", + "item.create.schematic_and_quill": "청사진과 깃펜", + "item.create.shadow_steel": "그림ìž� ê°•ì² ", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "나무 비료", + "item.create.tree_fertilizer": "나무 비료", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "대칭의 지팡이", + "item.create.wand_of_symmetry": "대칭ì�˜ 지팡ì�´", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", - "item.create.whisk": "혼합기", - "item.create.wrench": "렌치", - "item.create.zinc_ingot": "아연 주괴", - "item.create.zinc_nugget": "아연 조각", + "item.create.whisk": "혼합기", + "item.create.wrench": "렌치", + "item.create.zinc_ingot": "ì•„ì—° 주괴", + "item.create.zinc_nugget": "ì•„ì—° ì¡°ê°�", "_": "->------------------------] Advancements [------------------------<-", @@ -487,334 +487,334 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s이(가) 분쇄 휠에 의해 가공되었습니다", - "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람으로 타버렸습니다", - "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 타버렸습니다", - "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", - "death.attack.create.mechanical_saw": "%1$s이(가) 톱날에 반으로 갈라져 죽었습니다", - "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", + "death.attack.create.crush": "%1$sì�´(ê°€) 분쇄 휠ì—� ì�˜í•´ 가공ë�˜ì—ˆìŠµë‹ˆë‹¤", + "death.attack.create.fan_fire": "%1$sì�´(ê°€) 뜨거운 바람으로 타버렸습니다", + "death.attack.create.fan_lava": "%1$sì�´(ê°€) ìš©ì•” 바람으로 타버렸습니다", + "death.attack.create.mechanical_drill": "%1$sì�´(ê°€) 드릴ì—� 관통당했습니다", + "death.attack.create.mechanical_saw": "%1$sì�´(ê°€) 톱날ì—� 반으로 ê°ˆë�¼ì ¸ 죽었습니다", + "death.attack.create.cuckoo_clock_explosion": "%1$sì�´(ê°€) ì¡°ìž‘ë�œ ë»�꾸기 시계ì—� ì�˜í•´ í�­íŒŒë‹¹í–ˆìŠµë‹ˆë‹¤", - "create.block.deployer.damage_source_name": "순수한 배포기", + "create.block.deployer.damage_source_name": "순수한 ë°°í�¬ê¸°", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "분쇄", - "create.recipe.milling": "맷돌질", - "create.recipe.splashing": "세척", - "create.recipe.splashing.fan": "물과 환풍기", + "create.recipe.crushing": "분쇄", + "create.recipe.milling": "맷ë�Œì§ˆ", + "create.recipe.splashing": "세척", + "create.recipe.splashing.fan": "물과 환í’�기", "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "압착", - "create.recipe.mixing": "혼합", - "create.recipe.packing": "압축", - "create.recipe.mechanical_sawing": "제재", - "create.recipe.mechanical_crafting": "기계 조합", - "create.recipe.block_cutting": "블럭 절단", + "create.recipe.pressing": "ì••ì°©", + "create.recipe.mixing": "혼합", + "create.recipe.packing": "압축", + "create.recipe.mechanical_sawing": "제재", + "create.recipe.mechanical_crafting": "기계 ì¡°í•©", + "create.recipe.block_cutting": "블럭 절단", "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", - "create.recipe.sandpaper_polishing": "사포 연마", + "create.recipe.sandpaper_polishing": "사í�¬ 연마", "create.recipe.mystery_conversion": "?", - "create.recipe.processing.catalyst": "촉매", - "create.recipe.processing.chance": "%1$s%% 확률", - "create.recipe.processing.chanceToReturn": "%1$s%% 확률로 반환", + "create.recipe.processing.catalyst": "촉매", + "create.recipe.processing.chance": "%1$s%% 확률", + "create.recipe.processing.chanceToReturn": "%1$s%% 확률로 반환", - "create.generic.range": "범위", - "create.generic.radius": "반지름", - "create.generic.width": "폭", - "create.generic.height": "높이", - "create.generic.length": "길이", - "create.generic.speed": "속도", - "create.generic.delay": "딜레이", - "create.generic.unit.ticks": "틱", - "create.generic.unit.seconds": "초", - "create.generic.unit.minutes": "분", + "create.generic.range": "범위", + "create.generic.radius": "반지름", + "create.generic.width": "í�­", + "create.generic.height": "높ì�´", + "create.generic.length": "길ì�´", + "create.generic.speed": "ì†�ë�„", + "create.generic.delay": "딜레ì�´", + "create.generic.unit.ticks": "틱", + "create.generic.unit.seconds": "ì´ˆ", + "create.generic.unit.minutes": "분", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "스크롤하세요", - "create.action.confirm": "확인", - "create.action.abort": "중단", - "create.action.saveToFile": "저장", - "create.action.discard": "삭제", + "create.action.scroll": "스í�¬ë¡¤í•˜ì„¸ìš”", + "create.action.confirm": "확ì�¸", + "create.action.abort": "중단", + "create.action.saveToFile": "저장", + "create.action.discard": "ì‚­ì œ", - "create.keyinfo.toolmenu": "메뉴 세부정보 보기", + "create.keyinfo.toolmenu": "메뉴 세부정보 보기", "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "옵션을 선택하세요:", - "create.gui.scrollInput.scrollToModify": "스크롤로 수정하기", - "create.gui.scrollInput.scrollToAdjustAmount": "스크롤로 수량 조절하기", - "create.gui.scrollInput.scrollToSelect": "스크롤로 선택", - "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기", - "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", - "create.gui.toolmenu.cycle": "스크롤로 순환", - "create.gui.symmetryWand.mirrorType": "반사", - "create.gui.symmetryWand.orientation": "방위", + "create.gui.scrollInput.defaultTitle": "옵션ì�„ ì„ íƒ�하세요:", + "create.gui.scrollInput.scrollToModify": "스í�¬ë¡¤ë¡œ 수정하기", + "create.gui.scrollInput.scrollToAdjustAmount": "스í�¬ë¡¤ë¡œ 수량 조절하기", + "create.gui.scrollInput.scrollToSelect": "스í�¬ë¡¤ë¡œ ì„ íƒ�", + "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스í�¬ë¡¤ë¡œ 빨리 수정하기", + "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", + "create.gui.toolmenu.cycle": "스í�¬ë¡¤ë¡œ 순환", + "create.gui.symmetryWand.mirrorType": "반사", + "create.gui.symmetryWand.orientation": "방위", - "create.symmetry.mirror.plane": "거울 모드", - "create.symmetry.mirror.doublePlane": "사각형 모드", - "create.symmetry.mirror.triplePlane": "팔각형 모드", + "create.symmetry.mirror.plane": "거울 모드", + "create.symmetry.mirror.doublePlane": "사ê°�형 모드", + "create.symmetry.mirror.triplePlane": "팔ê°�형 모드", - "create.orientation.orthogonal": "수직으로", - "create.orientation.diagonal": "대각선으로", - "create.orientation.horizontal": "수평으로", - "create.orientation.alongZ": "Z좌표를 따라", - "create.orientation.alongX": "X좌표를 따라", + "create.orientation.orthogonal": "수ì§�으로", + "create.orientation.diagonal": "대ê°�선으로", + "create.orientation.horizontal": "수í�‰ìœ¼ë¡œ", + "create.orientation.alongZ": "Z좌표를 ë”°ë�¼", + "create.orientation.alongX": "X좌표를 ë”°ë�¼", - "create.gui.blockzapper.title": "휴대용 블럭발사기", - "create.gui.blockzapper.replaceMode": "대체 모드", - "create.gui.blockzapper.searchDiagonal": "대각선을 따라", - "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", - "create.gui.blockzapper.range": "범위", - "create.gui.blockzapper.needsUpgradedAmplifier": "업그레이드가 필요합니다", - "create.gui.blockzapper.patternSection": "패턴 설정", - "create.gui.blockzapper.pattern.solid": "원형", - "create.gui.blockzapper.pattern.checkered": "체스판", - "create.gui.blockzapper.pattern.inversecheckered": "반전된 체스판", - "create.gui.blockzapper.pattern.chance25": "램덤으로 25% 채우기", - "create.gui.blockzapper.pattern.chance50": "램덤으로 50% 채우기", - "create.gui.blockzapper.pattern.chance75": "랜덤으로 75% 채우기", - "create.gui.terrainzapper.title": "휴대용 세계편집기", - "create.gui.terrainzapper.placement": "설치방식", - "create.gui.terrainzapper.placement.merged": "선택한 블럭에", - "create.gui.terrainzapper.placement.attached": "선택한 블럭 옆에", - "create.gui.terrainzapper.placement.inserted": "선택한 블럭 안에", - "create.gui.terrainzapper.brush": "브러쉬", - "create.gui.terrainzapper.brush.cuboid": "정육면체", - "create.gui.terrainzapper.brush.sphere": "구", - "create.gui.terrainzapper.brush.cylinder": "원통", - "create.gui.terrainzapper.tool": "도구", - "create.gui.terrainzapper.tool.fill": "채우기", - "create.gui.terrainzapper.tool.place": "설치", - "create.gui.terrainzapper.tool.replace": "대체", - "create.gui.terrainzapper.tool.clear": "지우기", - "create.gui.terrainzapper.tool.overlay": "덮어씌우기", - "create.gui.terrainzapper.tool.flatten": "평탄화", + "create.gui.blockzapper.title": "휴대용 블럭발사기", + "create.gui.blockzapper.replaceMode": "대체 모드", + "create.gui.blockzapper.searchDiagonal": "대ê°�ì„ ì�„ ë”°ë�¼", + "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", + "create.gui.blockzapper.range": "범위", + "create.gui.blockzapper.needsUpgradedAmplifier": "업그레ì�´ë“œê°€ 필요합니다", + "create.gui.blockzapper.patternSection": "패턴 설정", + "create.gui.blockzapper.pattern.solid": "ì›�형", + "create.gui.blockzapper.pattern.checkered": "체스íŒ�", + "create.gui.blockzapper.pattern.inversecheckered": "반전ë�œ 체스íŒ�", + "create.gui.blockzapper.pattern.chance25": "램ë�¤ìœ¼ë¡œ 25% 채우기", + "create.gui.blockzapper.pattern.chance50": "램ë�¤ìœ¼ë¡œ 50% 채우기", + "create.gui.blockzapper.pattern.chance75": "ëžœë�¤ìœ¼ë¡œ 75% 채우기", + "create.gui.terrainzapper.title": "휴대용 세계편집기", + "create.gui.terrainzapper.placement": "설치방ì‹�", + "create.gui.terrainzapper.placement.merged": "ì„ íƒ�í•œ 블럭ì—�", + "create.gui.terrainzapper.placement.attached": "ì„ íƒ�í•œ 블럭 옆ì—�", + "create.gui.terrainzapper.placement.inserted": "ì„ íƒ�í•œ 블럭 안ì—�", + "create.gui.terrainzapper.brush": "브러쉬", + "create.gui.terrainzapper.brush.cuboid": "정육면체", + "create.gui.terrainzapper.brush.sphere": "구", + "create.gui.terrainzapper.brush.cylinder": "ì›�통", + "create.gui.terrainzapper.tool": "ë�„구", + "create.gui.terrainzapper.tool.fill": "채우기", + "create.gui.terrainzapper.tool.place": "설치", + "create.gui.terrainzapper.tool.replace": "대체", + "create.gui.terrainzapper.tool.clear": "지우기", + "create.gui.terrainzapper.tool.overlay": "ë�®ì–´ì”Œìš°ê¸°", + "create.gui.terrainzapper.tool.flatten": "í�‰íƒ„í™”", - "create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기", + "create.terrainzapper.shiftRightClickToSet": "쉬프트-ìš°í�´ë¦­ìœ¼ë¡œ 모양 설정하기", - "create.blockzapper.usingBlock": "현재 블럭: %1$s", - "create.blockzapper.componentUpgrades": "부품 업그레이드:", - "create.blockzapper.component.body": "몸통", - "create.blockzapper.component.amplifier": "증폭기", - "create.blockzapper.component.accelerator": "가속기", - "create.blockzapper.component.retriever": "회수기", - "create.blockzapper.component.scope": "스코프", - "create.blockzapper.componentTier.none": "없음", - "create.blockzapper.componentTier.brass": "황동", - "create.blockzapper.componentTier.chromatic": "혼돈의 결정체", - "create.blockzapper.leftClickToSet": "좌클릭으로 블럭 설정하기", - "create.blockzapper.empty": "블럭이 없습니다!", + "create.blockzapper.usingBlock": "현재 블럭: %1$s", + "create.blockzapper.componentUpgrades": "부품 업그레ì�´ë“œ:", + "create.blockzapper.component.body": "몸통", + "create.blockzapper.component.amplifier": "ì¦�í�­ê¸°", + "create.blockzapper.component.accelerator": "ê°€ì†�기", + "create.blockzapper.component.retriever": "회수기", + "create.blockzapper.component.scope": "스코프", + "create.blockzapper.componentTier.none": "ì—†ì�Œ", + "create.blockzapper.componentTier.brass": "황ë�™", + "create.blockzapper.componentTier.chromatic": "혼ë�ˆì�˜ ê²°ì •ì²´", + "create.blockzapper.leftClickToSet": "좌í�´ë¦­ìœ¼ë¡œ 블럭 설정하기", + "create.blockzapper.empty": "블럭ì�´ 없습니다!", - "create.contraptions.movement_mode": "이동 설정", - "create.contraptions.movement_mode.move_place": "멈췄을때 항상 블럭 설치하기", - "create.contraptions.movement_mode.move_place_returned": "멈췄을떄 최초 위치에서만 블럭 설치하기", - "create.contraptions.movement_mode.move_never_place": "멈춰도 블럭 설치하지 않기", - "create.contraptions.movement_mode.rotate_place": "멈췄을때 항상 블럭 설치하기", - "create.contraptions.movement_mode.rotate_place_returned": "멈췄을떄 최초 각도에서만 블럭 설치하기", - "create.contraptions.movement_mode.rotate_never_place": "멈춰도 블럭 설치하지 않기", + "create.contraptions.movement_mode": "ì�´ë�™ 설정", + "create.contraptions.movement_mode.move_place": "멈췄ì�„ë•Œ í•­ìƒ� 블럭 설치하기", + "create.contraptions.movement_mode.move_place_returned": "멈췄ì�„ë–„ 최초 위치ì—�서만 블럭 설치하기", + "create.contraptions.movement_mode.move_never_place": "멈춰ë�„ 블럭 설치하지 않기", + "create.contraptions.movement_mode.rotate_place": "멈췄ì�„ë•Œ í•­ìƒ� 블럭 설치하기", + "create.contraptions.movement_mode.rotate_place_returned": "멈췄ì�„ë–„ 최초 ê°�ë�„ì—�서만 블럭 설치하기", + "create.contraptions.movement_mode.rotate_never_place": "멈춰ë�„ 블럭 설치하지 않기", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.logistics.filter": "필터", - "create.logistics.firstFrequency": "주파수. #1", - "create.logistics.secondFrequency": "주파수. #2", + "create.logistics.filter": "í•„í„°", + "create.logistics.firstFrequency": "주파수. #1", + "create.logistics.secondFrequency": "주파수. #2", - "create.gui.goggles.generator_stats": "발전 상태:", - "create.gui.goggles.kinetic_stats": "가동 상태:", - "create.gui.goggles.at_current_speed": "현재 속도", - "create.gui.goggles.base_value": "기본 수치", - "create.gui.gauge.info_header": "게이지 정보:", - "create.gui.speedometer.title": "회전 속도", - "create.gui.stressometer.title": "네트워크 부하", - "create.gui.stressometer.capacity": "용량", - "create.gui.stressometer.overstressed": "과부하됨", - "create.gui.stressometer.no_rotation": "회전없음", - "create.gui.contraptions.not_fast_enough": "이 %1$s은(는) 작동하기에 _회전 속도_가 _부족합니다_", - "create.gui.contraptions.network_overstressed": "이 장치는 _과부하_되었습니다. _높은 피로도_ 용량을 가진 발전기를 추가로 설치하거나 장치 _속도_를 _늦추세요_.", - "create.gui.adjustable_crate.title": "가변 창고 ", - "create.gui.adjustable_crate.storageSpace": "저장 공간", - "create.gui.stockpile_switch.title": "수량 스위치", - "create.gui.stockpile_switch.lowerLimit": "최소 신호 유지수량", - "create.gui.stockpile_switch.upperLimit": "최초 신호 발동수량", - "create.gui.stockpile_switch.startAt": "다음 수량에 신호 주기", - "create.gui.stockpile_switch.startAbove": "다음 수량이상일떄 신호 주기", - "create.gui.stockpile_switch.stopAt": "다음 수량에 신호 멈추기", - "create.gui.stockpile_switch.stopBelow": "다음 수량이하일때 신호 멈추기", - "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", - "create.gui.sequenced_gearshift.instruction": "설명", - "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "각도", - "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", - "create.gui.sequenced_gearshift.instruction.wait": "정지", - "create.gui.sequenced_gearshift.instruction.wait.duration": "지속시간", - "create.gui.sequenced_gearshift.instruction.end": "마침", - "create.gui.sequenced_gearshift.speed": "속도, 방향", - "create.gui.sequenced_gearshift.speed.forward": "입력된 속도, 그대로 회전", - "create.gui.sequenced_gearshift.speed.forward_fast": "입력된 속도의 2배, 그대로 회전", - "create.gui.sequenced_gearshift.speed.back": "입력된 속도, 반대로 회전", - "create.gui.sequenced_gearshift.speed.back_fast": "입력된 속도의 2배, 반대로 회전", + "create.gui.goggles.generator_stats": "발전 ìƒ�태:", + "create.gui.goggles.kinetic_stats": "ê°€ë�™ ìƒ�태:", + "create.gui.goggles.at_current_speed": "현재 ì†�ë�„", + "create.gui.goggles.base_value": "기본 수치", + "create.gui.gauge.info_header": "게ì�´ì§€ ì •ë³´:", + "create.gui.speedometer.title": "회전 ì†�ë�„", + "create.gui.stressometer.title": "네트워í�¬ 부하", + "create.gui.stressometer.capacity": "용량", + "create.gui.stressometer.overstressed": "과부하ë�¨", + "create.gui.stressometer.no_rotation": "회전없ì�Œ", + "create.gui.contraptions.not_fast_enough": "ì�´ %1$sì�€(는) ìž‘ë�™í•˜ê¸°ì—� _회전 ì†�ë�„_ê°€ _부족합니다_", + "create.gui.contraptions.network_overstressed": "ì�´ 장치는 _과부하_ë�˜ì—ˆìŠµë‹ˆë‹¤. _높ì�€ 피로ë�„_ 용량ì�„ 가진 발전기를 추가로 설치하거나 장치 _ì†�ë�„_를 _늦추세요_.", + "create.gui.adjustable_crate.title": "가변 창고 ", + "create.gui.adjustable_crate.storageSpace": "저장 공간", + "create.gui.stockpile_switch.title": "수량 스위치", + "create.gui.stockpile_switch.lowerLimit": "최소 신호 유지수량", + "create.gui.stockpile_switch.upperLimit": "최초 신호 ë°œë�™ìˆ˜ëŸ‰", + "create.gui.stockpile_switch.startAt": "다ì�Œ 수량ì—� 신호 주기", + "create.gui.stockpile_switch.startAbove": "다ì�Œ 수량ì�´ìƒ�ì�¼ë–„ 신호 주기", + "create.gui.stockpile_switch.stopAt": "다ì�Œ 수량ì—� 신호 멈추기", + "create.gui.stockpile_switch.stopBelow": "다ì�Œ 수량ì�´í•˜ì�¼ë•Œ 신호 멈추기", + "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", + "create.gui.sequenced_gearshift.instruction": "설명", + "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "ê°�ë�„", + "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", + "create.gui.sequenced_gearshift.instruction.wait": "정지", + "create.gui.sequenced_gearshift.instruction.wait.duration": "지ì†�시간", + "create.gui.sequenced_gearshift.instruction.end": "마침", + "create.gui.sequenced_gearshift.speed": "ì†�ë�„, ë°©í–¥", + "create.gui.sequenced_gearshift.speed.forward": "ìž…ë ¥ë�œ ì†�ë�„, 그대로 회전", + "create.gui.sequenced_gearshift.speed.forward_fast": "ìž…ë ¥ë�œ ì†�ë�„ì�˜ 2ë°°, 그대로 회전", + "create.gui.sequenced_gearshift.speed.back": "ìž…ë ¥ë�œ ì†�ë�„, 반대로 회전", + "create.gui.sequenced_gearshift.speed.back_fast": "ìž…ë ¥ë�œ ì†�ë�„ì�˜ 2ë°°, 반대로 회전", - "create.schematicAndQuill.dimensions": "청사진 크기: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정됨.", - "create.schematicAndQuill.secondPos": "두번째 위치 지정됨.", - "create.schematicAndQuill.noTarget": "[Ctrl]을 눌러 공기 블럭을 선택하기.", - "create.schematicAndQuill.abort": "위치 제거됨.", - "create.schematicAndQuill.prompt": "청사진의 제목을 작성하기:", - "create.schematicAndQuill.fallbackName": "내 청사진", - "create.schematicAndQuill.saved": "%1$s로 저장됨", + "create.schematicAndQuill.dimensions": "청사진 í�¬ê¸°: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정ë�¨.", + "create.schematicAndQuill.secondPos": "ë‘�번째 위치 지정ë�¨.", + "create.schematicAndQuill.noTarget": "[Ctrl]ì�„ 눌러 공기 블럭ì�„ ì„ íƒ�하기.", + "create.schematicAndQuill.abort": "위치 제거ë�¨.", + "create.schematicAndQuill.prompt": "청사진ì�˜ 제목ì�„ 작성하기:", + "create.schematicAndQuill.fallbackName": "ë‚´ 청사진", + "create.schematicAndQuill.saved": "%1$së¡œ 저장ë�¨", - "create.schematic.invalid": "[!] 없는 아이템 - 청사진 테이블을 이용하세요", - "create.schematic.position": "위치", - "create.schematic.rotation": "회전", - "create.schematic.rotation.none": "없음", - "create.schematic.rotation.cw90": "90도 시계방향 회전", - "create.schematic.rotation.cw180": "180도 시계방향 회전", - "create.schematic.rotation.cw270": "270도 시계방향 회전", - "create.schematic.mirror": "거울", - "create.schematic.mirror.none": "없음", - "create.schematic.mirror.frontBack": "전-후", - "create.schematic.mirror.leftRight": "좌-우", - "create.schematic.tool.deploy": "전개", - "create.schematic.tool.move": "X/Z좌표 이동", - "create.schematic.tool.movey": "Y좌표 이동", - "create.schematic.tool.rotate": "회전", - "create.schematic.tool.print": "설치", - "create.schematic.tool.flip": "뒤집기", - "create.schematic.tool.deploy.description.0": "구조물을 해당 위치로 고정합니다.", - "create.schematic.tool.deploy.description.1": "땅에다 우클릭으로 설치합니다.", - "create.schematic.tool.deploy.description.2": "[Ctrl]을 눌러 플레이어-청사진의 거리를 설정합니다.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-스크롤로 거리를 조정합니다.", - "create.schematic.tool.move.description.0": "청사진을 수평 이동시킵니다.", - "create.schematic.tool.move.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", + "create.schematic.invalid": "[!] 없는 ì•„ì�´í…œ - 청사진 í…Œì�´ë¸”ì�„ ì�´ìš©í•˜ì„¸ìš”", + "create.schematic.position": "위치", + "create.schematic.rotation": "회전", + "create.schematic.rotation.none": "ì—†ì�Œ", + "create.schematic.rotation.cw90": "90ë�„ 시계방향 회전", + "create.schematic.rotation.cw180": "180ë�„ 시계방향 회전", + "create.schematic.rotation.cw270": "270ë�„ 시계방향 회전", + "create.schematic.mirror": "거울", + "create.schematic.mirror.none": "ì—†ì�Œ", + "create.schematic.mirror.frontBack": "ì „-후", + "create.schematic.mirror.leftRight": "좌-ìš°", + "create.schematic.tool.deploy": "ì „ê°œ", + "create.schematic.tool.move": "X/Z좌표 ì�´ë�™", + "create.schematic.tool.movey": "Y좌표 ì�´ë�™", + "create.schematic.tool.rotate": "회전", + "create.schematic.tool.print": "설치", + "create.schematic.tool.flip": "뒤집기", + "create.schematic.tool.deploy.description.0": "구조물ì�„ 해당 위치로 고정합니다.", + "create.schematic.tool.deploy.description.1": "ë•…ì—�다 ìš°í�´ë¦­ìœ¼ë¡œ 설치합니다.", + "create.schematic.tool.deploy.description.2": "[Ctrl]ì�„ 눌러 플레ì�´ì–´-청사진ì�˜ 거리를 설정합니다.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-스í�¬ë¡¤ë¡œ 거리를 조정합니다.", + "create.schematic.tool.move.description.0": "청사진ì�„ 수í�‰ ì�´ë�™ì‹œí‚µë‹ˆë‹¤.", + "create.schematic.tool.move.description.1": "청사진ì�„ ë³´ê³  [CTRL]-스í�¬ë¡¤ë¡œ 밉니다.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "청사진을 수직 이동시킵니다.", - "create.schematic.tool.movey.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", + "create.schematic.tool.movey.description.0": "청사진ì�„ 수ì§� ì�´ë�™ì‹œí‚µë‹ˆë‹¤.", + "create.schematic.tool.movey.description.1": "청사진ì�„ ë³´ê³  [CTRL]-스í�¬ë¡¤ë¡œ 밉니다.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "청사진을 돌립니다.", - "create.schematic.tool.rotate.description.1": "[CTRL]-스크롤로 90도 돌립니다.", + "create.schematic.tool.rotate.description.0": "청사진ì�„ ë�Œë¦½ë‹ˆë‹¤.", + "create.schematic.tool.rotate.description.1": "[CTRL]-스í�¬ë¡¤ë¡œ 90ë�„ ë�Œë¦½ë‹ˆë‹¤.", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "구조물을 즉시 설치합니다.", - "create.schematic.tool.print.description.1": "[우클릭]으로 현재 지점에 설치를 허가합니다.", - "create.schematic.tool.print.description.2": "이 도구는 크리에이티브 모드 전용입니다.", + "create.schematic.tool.print.description.0": "구조물ì�„ 즉시 설치합니다.", + "create.schematic.tool.print.description.1": "[ìš°í�´ë¦­]으로 현재 지ì �ì—� 설치를 허가합니다.", + "create.schematic.tool.print.description.2": "ì�´ ë�„구는 í�¬ë¦¬ì—�ì�´í‹°ë¸Œ 모드 전용입니다.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "당신이 보는 면으로 청사진을 뒤집습니다.", - "create.schematic.tool.flip.description.1": "청사진을 보고 [CTRL]-스크롤로 뒤집습니다.", + "create.schematic.tool.flip.description.0": "당신ì�´ 보는 면으로 청사진ì�„ 뒤집습니다.", + "create.schematic.tool.flip.description.1": "청사진ì�„ ë³´ê³  [CTRL]-스í�¬ë¡¤ë¡œ 뒤집습니다.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "동기화 중...", - "create.schematics.uploadTooLarge": "청사진이 너무 큽니다!.", - "create.schematics.maxAllowedSize": "최대 청사진 파일 크기는:", + "create.schematics.synchronizing": "ë�™ê¸°í™” 중...", + "create.schematics.uploadTooLarge": "청사진ì�´ 너무 í�½ë‹ˆë‹¤!.", + "create.schematics.maxAllowedSize": "최대 청사진 파ì�¼ í�¬ê¸°ëŠ”:", - "create.gui.schematicTable.title": "청사진 테이블", - "create.gui.schematicTable.availableSchematics": "이용가능한 청사진", - "create.gui.schematicTable.noSchematics": "저장된 청사진 없음", - "create.gui.schematicTable.uploading": "업로딩 중...", - "create.gui.schematicTable.finished": "업로드 완료!", - "create.gui.schematicannon.title": "청사진 대포", - "create.gui.schematicannon.settingsTitle": "설치 설정", - "create.gui.schematicannon.listPrinter": "재료 목록 프린터", - "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", - "create.gui.schematicannon.shotsRemaining": "남은 발포 수 : %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", - "create.gui.schematicannon.optionEnabled": "현재 활성화 됨", - "create.gui.schematicannon.optionDisabled": "현재 비활성화 됨", - "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블럭을 대체하지 않음", - "create.gui.schematicannon.option.replaceWithSolid": "온전한 블럭을 재료로 대체함", - "create.gui.schematicannon.option.replaceWithAny": "온전한 블럭을 아무 재료로 대체함", - "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블럭을 공기로 채움", - "create.gui.schematicannon.option.skipMissing": "부족한 블럭을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", - "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블럭을 찾지 못할 경우,건너뛰고 다음 블럭 설치를 진행합니다.", - "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블럭을 대체하지 않습니다.", - "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블럭을 대포가 가진 재료로 대체합니다.", - "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블럭을 대포가 가진 어떠한 재료로든 대체합니다.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "대포가 작업구역의 블럭들을 제거하고 공기로 채웁니다.", + "create.gui.schematicTable.title": "청사진 í…Œì�´ë¸”", + "create.gui.schematicTable.availableSchematics": "ì�´ìš©ê°€ëŠ¥í•œ 청사진", + "create.gui.schematicTable.noSchematics": "저장ë�œ 청사진 ì—†ì�Œ", + "create.gui.schematicTable.uploading": "업로딩 중...", + "create.gui.schematicTable.finished": "업로드 완료!", + "create.gui.schematicannon.title": "청사진 대í�¬", + "create.gui.schematicannon.settingsTitle": "설치 설정", + "create.gui.schematicannon.listPrinter": "재료 목ë¡� 프린터", + "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "남ì�€ ë°œí�¬ 수 : %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", + "create.gui.schematicannon.optionEnabled": "현재 활성화 ë�¨", + "create.gui.schematicannon.optionDisabled": "현재 비활성화 ë�¨", + "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블럭ì�„ 대체하지 ì•Šì�Œ", + "create.gui.schematicannon.option.replaceWithSolid": "온전한 블럭ì�„ 재료로 대체함", + "create.gui.schematicannon.option.replaceWithAny": "온전한 블럭ì�„ 아무 재료로 대체함", + "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블럭ì�„ 공기로 채움", + "create.gui.schematicannon.option.skipMissing": "부족한 블럭ì�„ 무시하고 진행", + "create.gui.schematicannon.option.skipTileEntities": "타ì�¼ 엔티티를 보호", + "create.gui.schematicannon.option.skipMissing.description": "만약 대í�¬ê°€ 설치ì—� 필요한 블럭ì�„ 찾지 못할 경우,건너뛰고 다ì�Œ 블럭 설치를 진행합니다.", + "create.gui.schematicannon.option.skipTileEntities.description": "대í�¬ê°€ ìƒ�세정보가 ë“  ìƒ�ìž�ê°™ì�€ 타ì�¼ 엔티티 설치를 무시합니다.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "대í�¬ê°€ 작업구역ì�˜ 온전한 블럭ì�„ 대체하지 않습니다.", + "create.gui.schematicannon.option.replaceWithSolid.description": "대í�¬ê°€ 작업구역ì�˜ 온전한 블럭ì�„ 대í�¬ê°€ 가진 재료로 대체합니다.", + "create.gui.schematicannon.option.replaceWithAny.description": "대í�¬ê°€ 작업구역ì�˜ 온전한 블럭ì�„ 대í�¬ê°€ 가진 ì–´ë– í•œ 재료로든 대체합니다.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "대í�¬ê°€ 작업구역ì�˜ 블럭들ì�„ 제거하고 공기로 채ì›�니다.", - "create.schematicannon.status.idle": "휴식", - "create.schematicannon.status.ready": "준비됨", - "create.schematicannon.status.running": "가동 중", - "create.schematicannon.status.finished": "완료", - "create.schematicannon.status.paused": "멈춤", - "create.schematicannon.status.stopped": "중단됨", - "create.schematicannon.status.noGunpowder": "화약이 부족함", - "create.schematicannon.status.targetNotLoaded": "블럭이 준비되지 않음", - "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", - "create.schematicannon.status.searching": "검색 중", - "create.schematicannon.status.skipping": "건너뛰는 중", - "create.schematicannon.status.missingBlock": "부족한 블럭:", - "create.schematicannon.status.placing": "설치 중", - "create.schematicannon.status.clearing": "블럭을 제거하는 중", - "create.schematicannon.status.schematicInvalid": "청사진 없음", - "create.schematicannon.status.schematicNotPlaced": "청사진이 전개되지 않음", - "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", + "create.schematicannon.status.idle": "휴ì‹�", + "create.schematicannon.status.ready": "준비ë�¨", + "create.schematicannon.status.running": "ê°€ë�™ 중", + "create.schematicannon.status.finished": "완료", + "create.schematicannon.status.paused": "멈춤", + "create.schematicannon.status.stopped": "중단ë�¨", + "create.schematicannon.status.noGunpowder": "화약ì�´ 부족함", + "create.schematicannon.status.targetNotLoaded": "블럭ì�´ 준비ë�˜ì§€ ì•Šì�Œ", + "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", + "create.schematicannon.status.searching": "검색 중", + "create.schematicannon.status.skipping": "건너뛰는 중", + "create.schematicannon.status.missingBlock": "부족한 블럭:", + "create.schematicannon.status.placing": "설치 중", + "create.schematicannon.status.clearing": "블럭ì�„ 제거하는 중", + "create.schematicannon.status.schematicInvalid": "청사진 ì—†ì�Œ", + "create.schematicannon.status.schematicNotPlaced": "청사진ì�´ ì „ê°œë�˜ì§€ ì•Šì�Œ", + "create.schematicannon.status.schematicExpired": "청사진 파ì�¼ì�´ 제거ë�¨", - "create.gui.filter.blacklist": "블랙리스트", - "create.gui.filter.blacklist.description": "위 목록에 맞지않는 아이템이면 통과합니다. 빈 블랙리스트는 모두 통과시킵니다.", - "create.gui.filter.whitelist": "화이트리스트", - "create.gui.filter.whitelist.description": "위 목록에 맞는 아이템이면 통과합니다. 빈 화이트리스트는 모두 통과시키지 않습니다.", - "create.gui.filter.respect_data": "상세정보 일치", - "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", - "create.gui.filter.ignore_data": "상세정보 무시", - "create.gui.filter.ignore_data.description": "상세정보와 상관없이 아이템 종류만 일치한다면 통과시킵니다.", + "create.gui.filter.blacklist": "블랙리스트", + "create.gui.filter.blacklist.description": "위 목ë¡�ì—� 맞지않는 ì•„ì�´í…œì�´ë©´ 통과합니다. 빈 블랙리스트는 모ë‘� 통과시킵니다.", + "create.gui.filter.whitelist": "í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸", + "create.gui.filter.whitelist.description": "위 목ë¡�ì—� 맞는 ì•„ì�´í…œì�´ë©´ 통과합니다. 빈 í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸ëŠ” 모ë‘� 통과시키지 않습니다.", + "create.gui.filter.respect_data": "ìƒ�세정보 ì�¼ì¹˜", + "create.gui.filter.respect_data.description": "위 목ë¡� ì•„ì�´í…œì�˜ 내구ë�„, 마법부여, 그리고 다른 NBT와 ì�¼ì¹˜í•  ë•Œ 통과시킵니다.", + "create.gui.filter.ignore_data": "ìƒ�세정보 무시", + "create.gui.filter.ignore_data.description": "ìƒ�세정보와 ìƒ�관없ì�´ ì•„ì�´í…œ 종류만 ì�¼ì¹˜í•œë‹¤ë©´ 통과시킵니다.", - "create.item_attributes.placeable": "설치할 수 있음", - "create.item_attributes.consumable": "먹을 수 있음", - "create.item_attributes.smeltable": "구워질 수 있음", - "create.item_attributes.washable": "세척될 수 있음", - "create.item_attributes.smokable": "훈연될 수 있음", - "create.item_attributes.blastable": "용광로에 녹일 수 있음", - "create.item_attributes.enchanted": "마법부여됨", - "create.item_attributes.damaged": "내구도가 닮", - "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", - "create.item_attributes.not_stackable": "겹쳐질 수 없음", - "create.item_attributes.equipable": "장착할 수 있음", - "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있음", - "create.item_attributes.in_tag": "%1$s로 등록됨", - "create.item_attributes.in_item_group": "%1$s탭에 속함", - "create.item_attributes.added_by": "%1$s가 추가함", + "create.item_attributes.placeable": "설치할 수 있ì�Œ", + "create.item_attributes.consumable": "먹ì�„ 수 있ì�Œ", + "create.item_attributes.smeltable": "구워질 수 있ì�Œ", + "create.item_attributes.washable": "세척ë�  수 있ì�Œ", + "create.item_attributes.smokable": "훈연ë�  수 있ì�Œ", + "create.item_attributes.blastable": "ìš©ê´‘ë¡œì—� ë…¹ì�¼ 수 있ì�Œ", + "create.item_attributes.enchanted": "마법부여ë�¨", + "create.item_attributes.damaged": "내구ë�„ê°€ ë‹®", + "create.item_attributes.badly_damaged": "심ê°�하게 내구ë�„ê°€ ë‹®", + "create.item_attributes.not_stackable": "ê²¹ì³�질 수 ì—†ì�Œ", + "create.item_attributes.equipable": "장착할 수 있ì�Œ", + "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있ì�Œ", + "create.item_attributes.in_tag": "%1$së¡œ 등ë¡�ë�¨", + "create.item_attributes.in_item_group": "%1$s탭ì—� ì†�함", + "create.item_attributes.added_by": "%1$sê°€ 추가함", - "create.gui.attribute_filter.no_selected_attributes": "속성이 선택되지 않음", - "create.gui.attribute_filter.selected_attributes": "선택된 속성:", - "create.gui.attribute_filter.whitelist_disjunctive": "화이트리스트 (최소)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "아이템이 선택된 속성 중 하나라도 가지고 있다면 통과시킵니다.", - "create.gui.attribute_filter.whitelist_conjunctive": "화이트리스트 (모두)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "아이템이 선택된 속성 모두를 가지고 있어야 통과시킵니다.", - "create.gui.attribute_filter.blacklist": "블랙리스트", - "create.gui.attribute_filter.blacklist.description": "아이템이 선택된 속성이 없다면 통과시킵니다.", - "create.gui.attribute_filter.add_reference_item": "참고할 아이템을 추가하기", + "create.gui.attribute_filter.no_selected_attributes": "ì†�성ì�´ ì„ íƒ�ë�˜ì§€ ì•Šì�Œ", + "create.gui.attribute_filter.selected_attributes": "ì„ íƒ�ë�œ ì†�성:", + "create.gui.attribute_filter.whitelist_disjunctive": "í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸ (최소)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "ì•„ì�´í…œì�´ ì„ íƒ�ë�œ ì†�성 중 하나ë�¼ë�„ 가지고 있다면 통과시킵니다.", + "create.gui.attribute_filter.whitelist_conjunctive": "í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸ (모ë‘�)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "ì•„ì�´í…œì�´ ì„ íƒ�ë�œ ì†�성 모ë‘�를 가지고 있어야 통과시킵니다.", + "create.gui.attribute_filter.blacklist": "블랙리스트", + "create.gui.attribute_filter.blacklist.description": "ì•„ì�´í…œì�´ ì„ íƒ�ë�œ ì†�성ì�´ 없다면 통과시킵니다.", + "create.gui.attribute_filter.add_reference_item": "참고할 ì•„ì�´í…œì�„ 추가하기", - "create.tooltip.holdKey": "[%1$s]를 눌러 설명보기", - "create.tooltip.holdKeyOrKey": "[%1$s] 또는 [%2$s]를 눌러 설명보기", + "create.tooltip.holdKey": "[%1$s]를 눌러 설명보기", + "create.tooltip.holdKeyOrKey": "[%1$s] ë˜�는 [%2$s]를 눌러 설명보기", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "회전속도 요구: %1$s", - "create.tooltip.speedRequirement.none": "없음", - "create.tooltip.speedRequirement.medium": "보통", - "create.tooltip.speedRequirement.high": "빠름", - "create.tooltip.stressImpact": "피로도 부하: %1$s", - "create.tooltip.stressImpact.low": "낮음", - "create.tooltip.stressImpact.medium": "보통", - "create.tooltip.stressImpact.high": "높음", - "create.tooltip.stressImpact.overstressed": "과부하됨", - "create.tooltip.capacityProvided": "피로도 용량: %1$s", - "create.tooltip.capacityProvided.low": "적음", - "create.tooltip.capacityProvided.medium": "보통", - "create.tooltip.capacityProvided.high": "큼", - "create.tooltip.capacityProvided.asGenerator": "(발전기로써)", - "create.tooltip.generationSpeed": "%1$s %2$s만큼 발전함", - "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", + "create.tooltip.speedRequirement": "회전ì†�ë�„ 요구: %1$s", + "create.tooltip.speedRequirement.none": "ì—†ì�Œ", + "create.tooltip.speedRequirement.medium": "보통", + "create.tooltip.speedRequirement.high": "빠름", + "create.tooltip.stressImpact": "피로ë�„ 부하: %1$s", + "create.tooltip.stressImpact.low": "ë‚®ì�Œ", + "create.tooltip.stressImpact.medium": "보통", + "create.tooltip.stressImpact.high": "높ì�Œ", + "create.tooltip.stressImpact.overstressed": "과부하ë�¨", + "create.tooltip.capacityProvided": "피로ë�„ 용량: %1$s", + "create.tooltip.capacityProvided.low": "ì �ì�Œ", + "create.tooltip.capacityProvided.medium": "보통", + "create.tooltip.capacityProvided.high": "í�¼", + "create.tooltip.capacityProvided.asGenerator": "(발전기로ì�¨)", + "create.tooltip.generationSpeed": "%1$s %2$s만í�¼ 발전함", + "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", - "create.mechanical_mixer.min_ingredients": "최소 재료 종류", + "create.mechanical_mixer.min_ingredients": "최소 재료 종류", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -833,15 +833,15 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", - "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", - "create.subtitle.slime_added": "슬라임이 철퍽거림", - "create.subtitle.mechanical_press_activation": "압착기가 가동됨", - "create.subtitle.mechanical_press_item_break": "금속이 부딫힘", - "create.subtitle.blockzapper_place": "블럭이 순간이동됨", - "create.subtitle.blockzapper_confirm": "확인 효과음", - "create.subtitle.blockzapper_deny": "취소 효과음", - "create.subtitle.block_funnel_eat": "깔때기가 흡입함", + "create.subtitle.schematicannon_launch_block": "청사진 대í�¬ê°€ ë°œí�¬í•¨", + "create.subtitle.schematicannon_finish": "청사진 대í�¬ê°€ ë��남", + "create.subtitle.slime_added": "슬ë�¼ìž„ì�´ ì² í�½ê±°ë¦¼", + "create.subtitle.mechanical_press_activation": "압착기가 ê°€ë�™ë�¨", + "create.subtitle.mechanical_press_item_break": "금ì†�ì�´ 부딫힘", + "create.subtitle.blockzapper_place": "블럭ì�´ 순간ì�´ë�™ë�¨", + "create.subtitle.blockzapper_confirm": "확ì�¸ 효과ì�Œ", + "create.subtitle.blockzapper_deny": "취소 효과ì�Œ", + "create.subtitle.block_funnel_eat": "깔때기가 í�¡ìž…함", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -856,41 +856,41 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "설정된 반사 모드에 따라 블럭 설치를 똑같이 재현합니다.", - "item.create.wand_of_symmetry.tooltip.condition1": "단축바에 있을 때", - "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", - "item.create.wand_of_symmetry.tooltip.control1": "땅에다 우클릭", - "item.create.wand_of_symmetry.tooltip.action1": "거울을 _생성하거나_ _옮깁니다_.", - "item.create.wand_of_symmetry.tooltip.control2": "공중에 우클릭", - "item.create.wand_of_symmetry.tooltip.action2": "활성화된 거을을 _제거합니다_.", - "item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.", + "item.create.wand_of_symmetry.tooltip.summary": "설정ë�œ 반사 모드ì—� ë”°ë�¼ 블럭 설치를 똑같ì�´ 재현합니다.", + "item.create.wand_of_symmetry.tooltip.condition1": "단축바ì—� 있ì�„ ë•Œ", + "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", + "item.create.wand_of_symmetry.tooltip.control1": "ë•…ì—�다 ìš°í�´ë¦­", + "item.create.wand_of_symmetry.tooltip.action1": "거울ì�„ _ìƒ�성하거나_ _옮ê¹�니다_.", + "item.create.wand_of_symmetry.tooltip.control2": "공중ì—� ìš°í�´ë¦­", + "item.create.wand_of_symmetry.tooltip.action2": "활성화ë�œ ê±°ì�„ì�„ _제거합니다_.", + "item.create.wand_of_symmetry.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _ì°½_ì�„ 엽니다.", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블럭을 교체, 설치하는 놀라운 도구입니다.", - "item.create.handheld_blockzapper.tooltip.control1": "블럭을 보고 좌클릭", - "item.create.handheld_blockzapper.tooltip.action1": "이 도구로 설치할 블럭을 설정합니다.", - "item.create.handheld_blockzapper.tooltip.control2": "블럭을 보고 우클릭", - "item.create.handheld_blockzapper.tooltip.action2": "해당 위치에 설정된 블럭으로 설치하거나 교체합니다.", - "item.create.handheld_blockzapper.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _창_을 엽니다.", + "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블럭ì�„ êµ�ì²´, 설치하는 놀ë�¼ìš´ ë�„구입니다.", + "item.create.handheld_blockzapper.tooltip.control1": "블럭ì�„ ë³´ê³  좌í�´ë¦­", + "item.create.handheld_blockzapper.tooltip.action1": "ì�´ ë�„구로 설치할 블럭ì�„ 설정합니다.", + "item.create.handheld_blockzapper.tooltip.control2": "블럭ì�„ ë³´ê³  ìš°í�´ë¦­", + "item.create.handheld_blockzapper.tooltip.action2": "해당 위치ì—� 설정ë�œ 블럭으로 설치하거나 êµ�체합니다.", + "item.create.handheld_blockzapper.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _ì°½_ì�„ 엽니다.", "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.", - "item.create.handheld_worldshaper.tooltip.control1": "블럭을 보고 좌클릭", - "item.create.handheld_worldshaper.tooltip.action1": "이 도구로 설치할 블럭을 설정합니다.", - "item.create.handheld_worldshaper.tooltip.control2": "블럭을 보고 우클릭", - "item.create.handheld_worldshaper.tooltip.action2": "해당 위치에 설정된 _브러쉬_ 와 _도구_를 적용합니다.", - "item.create.handheld_worldshaper.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _창_을 엽니다.", + "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_ì�„ 만들 ë•Œ 좋ì�€ 간편한 ë�„구입니다.", + "item.create.handheld_worldshaper.tooltip.control1": "블럭ì�„ ë³´ê³  좌í�´ë¦­", + "item.create.handheld_worldshaper.tooltip.action1": "ì�´ ë�„구로 설치할 블럭ì�„ 설정합니다.", + "item.create.handheld_worldshaper.tooltip.control2": "블럭ì�„ ë³´ê³  ìš°í�´ë¦­", + "item.create.handheld_worldshaper.tooltip.action2": "해당 위치ì—� 설정ë�œ _브러쉬_ 와 _ë�„구_를 ì �용합니다.", + "item.create.handheld_worldshaper.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _ì°½_ì�„ 엽니다.", "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "일반적인 나무 종류들의 성장을 촉진시킬 강력한 미네랄의 혼합물입니다.", - "item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때", - "item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.", + "item.create.tree_fertilizer.tooltip.summary": "ì�¼ë°˜ì �ì�¸ 나무 종류들ì�˜ 성장ì�„ 촉진시킬 강력한 미네랄ì�˜ 혼합물입니다.", + "item.create.tree_fertilizer.tooltip.condition1": "묘목ì—� 사용했ì�„ ë•Œ", + "item.create.tree_fertilizer.tooltip.behaviour1": "묘목ì�„ 주위 공간과 _ìƒ�관없ì�´_ 성장시킵니다.", "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "수 초 만에 나무를 쓰러뜨리는 _경이로운_ _도끼_입니다.", + "item.create.deforester.tooltip.summary": "수 ì´ˆ 만ì—� 나무를 쓰러뜨리는 _ê²½ì�´ë¡œìš´_ _ë�„ë�¼_입니다.", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", @@ -898,245 +898,245 @@ "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 정확하게 _조정_합니다.", - "item.create.filter.tooltip.condition1": "필터 슬롯에 있을 때", - "item.create.filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", - "item.create.filter.tooltip.condition2": "우클릭", - "item.create.filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", + "item.create.filter.tooltip.summary": "장치ì�˜ _ìž…ë ¥_ê³¼ _출력_ì�„ í•„í„° _ì•„ì�´í…œ_ 목ë¡�ì—� ë”°ë�¼ 정확하게 _ì¡°ì •_합니다.", + "item.create.filter.tooltip.condition1": "í•„í„° 슬롯ì—� 있ì�„ ë•Œ", + "item.create.filter.tooltip.behaviour1": "í•„í„° _설정_ì—� ë”°ë�¼ ì•„ì�´í…œ í��름ì�„ _ì¡°ì •_합니다.", + "item.create.filter.tooltip.condition2": "ìš°í�´ë¦­", + "item.create.filter.tooltip.behaviour2": "_설정_ _ì°½_ì�„ 엽니다.", "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _속성_ 목록에 따라 정확하게 _조정_합니다.", - "item.create.attribute_filter.tooltip.condition1": "필터 슬롯에 있을 때", - "item.create.attribute_filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", - "item.create.attribute_filter.tooltip.condition2": "우클릭", - "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", + "item.create.attribute_filter.tooltip.summary": "장치ì�˜ _ìž…ë ¥_ê³¼ _출력_ì�„ í•„í„° _ì†�성_ 목ë¡�ì—� ë”°ë�¼ 정확하게 _ì¡°ì •_합니다.", + "item.create.attribute_filter.tooltip.condition1": "í•„í„° 슬롯ì—� 있ì�„ ë•Œ", + "item.create.attribute_filter.tooltip.behaviour1": "í•„í„° _설정_ì—� ë”°ë�¼ ì•„ì�´í…œ í��름ì�„ _ì¡°ì •_합니다.", + "item.create.attribute_filter.tooltip.condition2": "ìš°í�´ë¦­", + "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _ì°½_ì�„ 엽니다.", "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "조합 재료로 쓰이거나 청사진 테이블에서 청사진을 불러올 때 쓰입니다.", + "item.create.empty_schematic.tooltip.summary": "ì¡°í•© 재료로 ì“°ì�´ê±°ë‚˜ 청사진 í…Œì�´ë¸”ì—�ì„œ 청사진ì�„ 불러올 ë•Œ 쓰입니다.", "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "세계에 구조물을 홀로그램으로 불러와 지정하고 설치합니다. 지정된 홀로그램은 청사진 대포의 작업 영역이 됩니다.", - "item.create.schematic.tooltip.condition1": "들고 있을 떄", - "item.create.schematic.tooltip.behaviour1": "UI의 도구로 변경/설치 할 수 있습니다.", - "item.create.schematic.tooltip.control1": "웅크린 상태에서 우클릭", - "item.create.schematic.tooltip.action1": "정확한 _좌표_ 입력을 위한 창을 엽니다.", + "item.create.schematic.tooltip.summary": "세계ì—� 구조물ì�„ 홀로그램으로 불러와 지정하고 설치합니다. 지정ë�œ 홀로그램ì�€ 청사진 대í�¬ì�˜ ìž‘ì—… ì˜�ì—­ì�´ ë�©ë‹ˆë‹¤.", + "item.create.schematic.tooltip.condition1": "들고 있ì�„ ë–„", + "item.create.schematic.tooltip.behaviour1": "UIì�˜ ë�„구로 변경/설치 í•  수 있습니다.", + "item.create.schematic.tooltip.control1": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.schematic.tooltip.action1": "정확한 _좌표_ ìž…ë ¥ì�„ 위한 ì°½ì�„ 엽니다.", "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "세계에 있는 구조물을 .nbt 파일로 저장할 때 쓰입니다.", - "item.create.schematic_and_quill.tooltip.condition1": "1단계", - "item.create.schematic_and_quill.tooltip.behaviour1": "두 모서리를 우클릭으로 선택하세요.", - "item.create.schematic_and_quill.tooltip.condition2": "2단계", - "item.create.schematic_and_quill.tooltip.behaviour2": "면을 바라보고 _Ctrl-스크롤_하여 크기를 조정하세요. 우클릭을 다시 하면 저장됩니다.", - "item.create.schematic_and_quill.tooltip.control1": "우클릭", - "item.create.schematic_and_quill.tooltip.action1": "모서리 선택 / 저장 확인", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있을 때", - "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 이용하여 거리를 조정합니다.", - "item.create.schematic_and_quill.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.schematic_and_quill.tooltip.action3": "선택 영역을 리셋하고 _삭제_합니다.", + "item.create.schematic_and_quill.tooltip.summary": "세계ì—� 있는 구조물ì�„ .nbt 파ì�¼ë¡œ 저장할 ë•Œ 쓰입니다.", + "item.create.schematic_and_quill.tooltip.condition1": "1단계", + "item.create.schematic_and_quill.tooltip.behaviour1": "ë‘� 모서리를 ìš°í�´ë¦­ìœ¼ë¡œ ì„ íƒ�하세요.", + "item.create.schematic_and_quill.tooltip.condition2": "2단계", + "item.create.schematic_and_quill.tooltip.behaviour2": "ë©´ì�„ ë°”ë�¼ë³´ê³  _Ctrl-스í�¬ë¡¤_하여 í�¬ê¸°ë¥¼ 조정하세요. ìš°í�´ë¦­ì�„ 다시 하면 저장ë�©ë‹ˆë‹¤.", + "item.create.schematic_and_quill.tooltip.control1": "ìš°í�´ë¦­", + "item.create.schematic_and_quill.tooltip.action1": "모서리 ì„ íƒ� / 저장 확ì�¸", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있ì�„ ë•Œ", + "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 ì�´ìš©í•˜ì—¬ 거리를 조정합니다.", + "item.create.schematic_and_quill.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.schematic_and_quill.tooltip.action3": "ì„ íƒ� ì˜�ì—­ì�„ 리셋하고 _ì‚­ì œ_합니다.", "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "장착된 청사진을 바탕으로 블럭들을 발포합니다. 화약을 연료로 사용하고 주변 인벤토리 공간에서 아이템을 사용합니다.", - "block.create.schematicannon.tooltip.control1": "우클릭", - "block.create.schematicannon.tooltip.action1": "창을 엽니다.", + "block.create.schematicannon.tooltip.summary": "장착ë�œ 청사진ì�„ 바탕으로 블럭들ì�„ ë°œí�¬í•©ë‹ˆë‹¤. 화약ì�„ 연료로 사용하고 주변 ì�¸ë²¤í† ë¦¬ 공간ì—�ì„œ ì•„ì�´í…œì�„ 사용합니다.", + "block.create.schematicannon.tooltip.control1": "ìš°í�´ë¦­", + "block.create.schematicannon.tooltip.action1": "ì°½ì�„ 엽니다.", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_에 저장된 청사진을 불러옵니다.", - "block.create.schematic_table.tooltip.condition1": "빈 청사진을 넣을 때", - "block.create.schematic_table.tooltip.behaviour1": "Schematics 폴더에서 선택한 파일을 업로드합니다.", + "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_ì—� 저장ë�œ 청사진ì�„ 불러옵니다.", + "block.create.schematic_table.tooltip.condition1": "빈 청사진ì�„ ë„£ì�„ ë•Œ", + "block.create.schematic_table.tooltip.behaviour1": "Schematics í�´ë�”ì—�ì„œ ì„ íƒ�í•œ 파ì�¼ì�„ 업로드합니다.", "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다.", + "block.create.shaft.tooltip.summary": "_ì�¼ì§�ì„ _으로 _회전_ì�„ 전달합니다.", "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": " _일직선_이나 _옆_ _톱니바퀴_로 _회전_을 _전달_합니다.", + "block.create.cogwheel.tooltip.summary": " _ì�¼ì§�ì„ _ì�´ë‚˜ _옆_ _톱니바퀴_ë¡œ _회전_ì�„ _전달_합니다.", "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "큰 톱니바퀴입니다. 작은 톱니바퀴와 맞물렸을때, _회전 속도_가 _변합니다_.", + "block.create.large_cogwheel.tooltip.summary": "í�° 톱니바퀴입니다. ìž‘ì�€ 톱니바퀴와 맞물렸ì�„ë•Œ, _회전 ì†�ë�„_ê°€ _변합니다_.", "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다. _벽을_ _넘어_ 회전을 보낼 때 유용합니다.", + "block.create.encased_shaft.tooltip.summary": "_ì�¼ì§�ì„ _으로 _회전_ì�„ 전달합니다. _ë²½ì�„_ _넘어_ 회전ì�„ 보낼 ë•Œ 유용합니다.", "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "_전후좌우_ / _상하전후_로 회전을 보냅니다. 한번 더 조합해서 설정을 바꿀 수 있습니다.", + "block.create.gearbox.tooltip.summary": "_전후좌우_ / _ìƒ�하전후_ë¡œ 회전ì�„ 보냅니다. 한번 ë�” ì¡°í•©í•´ì„œ 설정ì�„ 바꿀 수 있습니다.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "연결된 축의 회전 방향을 _변경_합니다.", - "block.create.gearshift.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.gearshift.tooltip.behaviour1": "_출력_ 회전 방향을 _반전_시킵니다.", + "block.create.gearshift.tooltip.summary": "ì—°ê²°ë�œ 축ì�˜ 회전 ë°©í–¥ì�„ _변경_합니다.", + "block.create.gearshift.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", + "block.create.gearshift.tooltip.behaviour1": "_출력_ 회전 ë°©í–¥ì�„ _반전_시킵니다.", "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "연결된 축의 회전을 끄고 킬 수 있습니다.", - "block.create.clutch.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.clutch.tooltip.behaviour1": "출력 방향 회전을 멈춥니다.", + "block.create.clutch.tooltip.summary": "ì—°ê²°ë�œ 축ì�˜ 회전ì�„ ë�„ê³  킬 수 있습니다.", + "block.create.clutch.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", + "block.create.clutch.tooltip.behaviour1": "출력 ë°©í–¥ 회전ì�„ 멈춥니다.", "block.create.encased_belt.tooltip": "ENCASED_BELT", - "block.create.encased_belt.tooltip.summary": "연결된 다른 _덮힌 벨트_에 회전을 _연결_합니다.", - "block.create.encased_belt.tooltip.condition1": "축에 연결 되었을 때", - "block.create.encased_belt.tooltip.behaviour1": "연결된 축, 기어, 장치들은 _같은_ _회전_ _속도_와 _방향_을 가집니다. 같은 방향으로 _맞대지_ _않아도_ _됩니다_.", + "block.create.encased_belt.tooltip.summary": "ì—°ê²°ë�œ 다른 _ë�®ížŒ 벨트_ì—� 회전ì�„ _ì—°ê²°_합니다.", + "block.create.encased_belt.tooltip.condition1": "축ì—� ì—°ê²° ë�˜ì—ˆì�„ ë•Œ", + "block.create.encased_belt.tooltip.behaviour1": "ì—°ê²°ë�œ 축, 기어, 장치들ì�€ _ê°™ì�€_ _회전_ _ì†�ë�„_와 _ë°©í–¥_ì�„ 가집니다. ê°™ì�€ 방향으로 _맞대지_ _ì•Šì•„ë�„_ _ë�©ë‹ˆë‹¤_.", "block.create.adjustable_pulley.tooltip": "ANALOG BELT PULLEY", - "block.create.adjustable_pulley.tooltip.summary": "덮힌 벨트와 같은 역할을 가집니다. 또한 입/출력 부분에 설치하고 레드스톤 신호 세기에 따라 _회전_ _속도_를 _조정_할 수 있습니다.", - "block.create.adjustable_pulley.tooltip.condition1": "레드스톤 신호 설정", - "block.create.adjustable_pulley.tooltip.behaviour1": "_입력_ 부분에 설치하면 출력 회전 속도를 _낮추고_ (최대 0.5배), _출력_ 부분에 설치하면 출력 회전 속도를 _증가시킵니다_ (최대 2배).", + "block.create.adjustable_pulley.tooltip.summary": "ë�®ížŒ 벨트와 ê°™ì�€ ì—­í• ì�„ 가집니다. ë˜�í•œ ìž…/출력 부분ì—� 설치하고 레드스톤 신호 세기ì—� ë”°ë�¼ _회전_ _ì†�ë�„_를 _ì¡°ì •_í•  수 있습니다.", + "block.create.adjustable_pulley.tooltip.condition1": "레드스톤 신호 설정", + "block.create.adjustable_pulley.tooltip.behaviour1": "_ìž…ë ¥_ 부분ì—� 설치하면 출력 회전 ì†�ë�„를 _낮추고_ (최대 0.5ë°°), _출력_ 부분ì—� 설치하면 출력 회전 ì†�ë�„를 _ì¦�가시킵니다_ (최대 2ë°°).", "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "두 개 이상의 _축_을 벨트로 연결할 수 있습니다. 연결된 축들은 _모두_ _같은_ _속도_와 _방향_을 가집니다. 벨트는 _아이템_이나 _엔티티_를 _옮길_ _수_ _있습니다_.", - "item.create.belt_connector.tooltip.control1": "축에다 우클릭", - "item.create.belt_connector.tooltip.action1": "첫번째 벨트 끝부분을 설정합니다. 두번째 축은 반드시 _수평_이나 _수직_, _대각선_ 방향에 있는 축에 연결해야합니다.", - "item.create.belt_connector.tooltip.control2": "웅크린 상태에서 우클릭", - "item.create.belt_connector.tooltip.action2": "첫번째 벨트 설정을 초기화합니다.", + "item.create.belt_connector.tooltip.summary": "ë‘� ê°œ ì�´ìƒ�ì�˜ _축_ì�„ 벨트로 ì—°ê²°í•  수 있습니다. ì—°ê²°ë�œ 축들ì�€ _모ë‘�_ _ê°™ì�€_ _ì†�ë�„_와 _ë°©í–¥_ì�„ 가집니다. 벨트는 _ì•„ì�´í…œ_ì�´ë‚˜ _엔티티_를 _옮길_ _수_ _있습니다_.", + "item.create.belt_connector.tooltip.control1": "축ì—�다 ìš°í�´ë¦­", + "item.create.belt_connector.tooltip.action1": "첫번째 벨트 ë��부분ì�„ 설정합니다. ë‘�번째 축ì�€ 반드시 _수í�‰_ì�´ë‚˜ _수ì§�_, _대ê°�ì„ _ ë°©í–¥ì—� 있는 축ì—� 연결해야합니다.", + "item.create.belt_connector.tooltip.control2": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.belt_connector.tooltip.action2": "첫번째 벨트 설정ì�„ 초기화합니다.", "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "장치 정보를 착용자의 시야에 띄어주는 안경입니다.", - "item.create.goggles.tooltip.condition1": "장착했을 때", - "item.create.goggles.tooltip.behaviour1": "해당 장치의 _속도_, _피로도_, _용량_을 레벨에 따라 에 따라 색상 UI를 보여줍니다.", - "item.create.goggles.tooltip.condition2": "계측기를 바라볼 때", - "item.create.goggles.tooltip.behaviour2": "계측기가 연결된 네트워크의 _속도_나 _스트레스_의 자세한 정보를 보여줍니다.", + "item.create.goggles.tooltip.summary": "장치 정보를 ì°©ìš©ìž�ì�˜ 시야ì—� ë�„어주는 안경입니다.", + "item.create.goggles.tooltip.condition1": "장착했ì�„ ë•Œ", + "item.create.goggles.tooltip.behaviour1": "해당 장치ì�˜ _ì†�ë�„_, _피로ë�„_, _용량_ì�„ 레벨ì—� ë”°ë�¼ ì—� ë”°ë�¼ 색ìƒ� UI를 ë³´ì—¬ì¤�니다.", + "item.create.goggles.tooltip.condition2": "계측기를 ë°”ë�¼ë³¼ ë•Œ", + "item.create.goggles.tooltip.behaviour2": "계측기가 ì—°ê²°ë�œ 네트워í�¬ì�˜ _ì†�ë�„_나 _스트레스_ì�˜ ìž�세한 정보를 ë³´ì—¬ì¤�니다.", "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "장치 구성에 유용한 도구입니다. 장치를 _회전_, _설정_, _해체_하는 데 쓰입니다.", - "item.create.wrench.tooltip.control1": "장치에 우클릭", - "item.create.wrench.tooltip.action1": "사용자가 바라보는 _면으로_ 혹은 _반대로_ 장치를 돌립니다.", - "item.create.wrench.tooltip.control2": "웅크린 상태에서 우클릭", - "item.create.wrench.tooltip.action2": "_장치_를 _해체_하고 _즉시_ _인벤토리_로 넣습니다.", + "item.create.wrench.tooltip.summary": "장치 구성ì—� 유용한 ë�„구입니다. 장치를 _회전_, _설정_, _í•´ì²´_하는 ë�° 쓰입니다.", + "item.create.wrench.tooltip.control1": "장치ì—� ìš°í�´ë¦­", + "item.create.wrench.tooltip.action1": "사용ìž�ê°€ ë°”ë�¼ë³´ëŠ” _면으로_ 혹ì�€ _반대로_ 장치를 ë�Œë¦½ë‹ˆë‹¤.", + "item.create.wrench.tooltip.control2": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "item.create.wrench.tooltip.action2": "_장치_를 _í•´ì²´_하고 _즉시_ _ì�¸ë²¤í† ë¦¬_ë¡œ 넣습니다.", "block.create.creative_motor.tooltip": "CREATIVE MOTOR", - "block.create.creative_motor.tooltip.summary": "회전 속도를 _조정_할 수 있는 장치입니다.", + "block.create.creative_motor.tooltip.summary": "회전 ì†�ë�„를 _ì¡°ì •_í•  수 있는 장치입니다.", "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "인접한 _물의_ _흐름_에서 얻은 회전을 제공합니다.", + "block.create.water_wheel.tooltip.summary": "ì�¸ì ‘í•œ _물ì�˜_ _í��름_ì—�ì„œ ì–»ì�€ 회전ì�„ 제공합니다.", "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "회전력을 바람으로 전환합니다. 다양한 용도로 사용 가능합니다.", - "block.create.encased_fan.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.encased_fan.tooltip.behaviour1": "장치 아래의 _열_을 _회전력_으로 _바꾸어_ 제공합니다. 날개가 아래를 바라보아야 합니다.", - "block.create.encased_fan.tooltip.condition2": "돌려질 때", - "block.create.encased_fan.tooltip.behaviour2": "들어오는 회적 속도에 따라 엔티티를 밀거나 당깁니다.", - "block.create.encased_fan.tooltip.condition3": "특정 블럭을 통해 바람을 보낼 때", - "block.create.encased_fan.tooltip.behaviour3": "공기 흐름에 _액체_ 혹은 _불꽃_ 효과가 _추가_됩니다. 이는 아이템을 _공정_하는데 쓰일 수 있습니다.", + "block.create.encased_fan.tooltip.summary": "회전력ì�„ 바람으로 전환합니다. 다양한 ìš©ë�„ë¡œ 사용 가능합니다.", + "block.create.encased_fan.tooltip.condition1": "레드스톤 신호를 ë°›ì�„ ë•Œ", + "block.create.encased_fan.tooltip.behaviour1": "장치 아래ì�˜ _ì—´_ì�„ _회전력_으로 _바꾸어_ 제공합니다. 날개가 아래를 ë°”ë�¼ë³´ì•„야 합니다.", + "block.create.encased_fan.tooltip.condition2": "ë�Œë ¤ì§ˆ ë•Œ", + "block.create.encased_fan.tooltip.behaviour2": "들어오는 회ì � ì†�ë�„ì—� ë”°ë�¼ 엔티티를 밀거나 당ê¹�니다.", + "block.create.encased_fan.tooltip.condition3": "특정 블럭ì�„ 통해 바람ì�„ 보낼 ë•Œ", + "block.create.encased_fan.tooltip.behaviour3": "공기 í��름ì—� _ì•¡ì²´_ 혹ì�€ _불꽃_ 효과가 _추가_ë�©ë‹ˆë‹¤. ì�´ëŠ” ì•„ì�´í…œì�„ _공정_하는ë�° ì“°ì�¼ 수 있습니다.", "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "덮힌 환풍기 _앞_에 붙여 환풍기의 효과를 _전방_으로 _확대_합니다.", + "block.create.nozzle.tooltip.summary": "ë�®ížŒ 환í’�기 _ì•ž_ì—� 붙여 환í’�기ì�˜ 효과를 _ì „ë°©_으로 _확대_합니다.", "block.create.hand_crank.tooltip": "HAND CRANK", - "block.create.hand_crank.tooltip.summary": "간단한 회전력의 원천입니다. 플레이어의 _상호작용_이 필요합니다.", - "block.create.hand_crank.tooltip.condition1": "사용될 때", - "block.create.hand_crank.tooltip.behaviour1": "연결된 장치에 _회전력_을 _제공_합니다. 웅크리면 _반대로_ 회전시킵니다.", + "block.create.hand_crank.tooltip.summary": "간단한 회전력ì�˜ ì›�천입니다. 플레ì�´ì–´ì�˜ _ìƒ�호작용_ì�´ 필요합니다.", + "block.create.hand_crank.tooltip.condition1": "사용ë�  ë•Œ", + "block.create.hand_crank.tooltip.behaviour1": "ì—°ê²°ë�œ 장치ì—� _회전력_ì�„ _제공_합니다. ì›…í�¬ë¦¬ë©´ _반대로_ 회전시킵니다.", "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.", - "block.create.cuckoo_clock.tooltip.condition1": "회전할 때", - "block.create.cuckoo_clock.tooltip.behaviour1": "현재 시각을 보여주고 하루에 두 번 울립니다. 점심과 플레이어가 바로 잘 수 있는 저녁에 울립니다.", + "block.create.cuckoo_clock.tooltip.summary": "_시간ì�˜_ _í��름_ì�„ 알고 공간ì�„ _꾸미는_ ë�° 좋ì�€ 공예품입니다.", + "block.create.cuckoo_clock.tooltip.condition1": "회전할 ë•Œ", + "block.create.cuckoo_clock.tooltip.behaviour1": "현재 ì‹œê°�ì�„ 보여주고 하루ì—� ë‘� 번 울립니다. ì �심과 플레ì�´ì–´ê°€ 바로 잘 수 있는 ì €ë…�ì—� 울립니다.", "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 일으킵니다.", + "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 ì�¼ìœ¼í‚µë‹ˆë‹¤.", "block.create.millstone.tooltip": "MILLSTONE", - "block.create.millstone.tooltip.summary": "투입된 _재료_를 _가는_ 데 좋은 장치입니다. 측면 톱니바퀴나 바닥에 축을 이어 작동합니다. 결과물은 직접 빼내야 합니다.", - "block.create.millstone.tooltip.condition1": "회전 할 때", - "block.create.millstone.tooltip.behaviour1": "옆이나 위에서 투입된 아이템을 _맷돌질_합니다.", - "block.create.millstone.tooltip.condition2": "우클릭할때", - "block.create.millstone.tooltip.behaviour2": "결과물을 직접 꺼냅니다.", + "block.create.millstone.tooltip.summary": "투입ë�œ _재료_를 _가는_ ë�° 좋ì�€ 장치입니다. 측면 톱니바퀴나 바닥ì—� 축ì�„ ì�´ì–´ ìž‘ë�™í•©ë‹ˆë‹¤. 결과물ì�€ ì§�ì ‘ 빼내야 합니다.", + "block.create.millstone.tooltip.condition1": "회전 í•  ë•Œ", + "block.create.millstone.tooltip.behaviour1": "옆ì�´ë‚˜ 위ì—�ì„œ 투입ë�œ ì•„ì�´í…œì�„ _맷ë�Œì§ˆ_합니다.", + "block.create.millstone.tooltip.condition2": "ìš°í�´ë¦­í• ë•Œ", + "block.create.millstone.tooltip.behaviour2": "결과물ì�„ ì§�ì ‘ 꺼냅니다.", "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "모든 것을 _부숴버리는_ 큰 바퀴입니다.", - "block.create.crushing_wheel.tooltip.condition1": "다른 분쇄 휠과 붙어있을 때", - "block.create.crushing_wheel.tooltip.behaviour1": "다양한 것을 _분쇄_하는 분쇄 기계를 형성합니다. 휠의 이빨이 _같은_ _속력_으로, _반대_ _방향_으로 맞물려야합니다.", + "block.create.crushing_wheel.tooltip.summary": "모든 것ì�„ _부숴버리는_ í�° 바퀴입니다.", + "block.create.crushing_wheel.tooltip.condition1": "다른 분쇄 휠과 붙어있ì�„ ë•Œ", + "block.create.crushing_wheel.tooltip.behaviour1": "다양한 것ì�„ _분쇄_하는 분쇄 기계를 형성합니다. 휠ì�˜ ì�´ë¹¨ì�´ _ê°™ì�€_ _ì†�ë ¥_으로, _반대_ _ë°©í–¥_으로 맞물려야합니다.", "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "아래있는 아이템을 _눌러버리는_ 힘센 피스톤입니다. _지속적인_ _회전력_이 필요합니다.", - "block.create.mechanical_press.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.mechanical_press.tooltip.behaviour1": "_아래 있는_ 아이템을 누르기 시작합니다.", - "block.create.mechanical_press.tooltip.condition2": "컨베이어 벨트 위에 있을 때", - "block.create.mechanical_press.tooltip.behaviour2": "_자동으로_ 벨트 위를 지나가는 아이템을 누릅니다.", + "block.create.mechanical_press.tooltip.summary": "아래있는 ì•„ì�´í…œì�„ _눌러버리는_ 힘센 피스톤입니다. _지ì†�ì �ì�¸_ _회전력_ì�´ 필요합니다.", + "block.create.mechanical_press.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", + "block.create.mechanical_press.tooltip.behaviour1": "_아래 있는_ ì•„ì�´í…œì�„ 누르기 시작합니다.", + "block.create.mechanical_press.tooltip.condition2": "컨베ì�´ì–´ 벨트 위ì—� 있ì�„ ë•Œ", + "block.create.mechanical_press.tooltip.behaviour2": "_ìž�ë�™ìœ¼ë¡œ_ 벨트 위를 지나가는 ì•„ì�´í…œì�„ 누릅니다.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", "block.create.basin.tooltip": "BASIN", - "block.create.basin.tooltip.summary": "믹서나 압착기와 같이 쓰이는 간편한 _아이템_ _저장소_입니다. 레드스톤 비교기와 호환됩니다.", + "block.create.basin.tooltip.summary": "믹서나 압착기와 ê°™ì�´ ì“°ì�´ëŠ” 간편한 _ì•„ì�´í…œ_ _저장소_입니다. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", - "block.create.mechanical_mixer.tooltip.summary": "아래있는 아이템을 조합할 혼합기입니다. _지속적인_ _회전력_과 한 칸 아래에 _대야_가 필요합니다.", - "block.create.mechanical_mixer.tooltip.condition1": "대야 위에 있을 때", - "block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 아이템이 준비될 때마다 대야 안의 아이템을 섞기 시작합니다.", - "block.create.mechanical_mixer.tooltip.condition2": "렌치를 사용할 때", - "block.create.mechanical_mixer.tooltip.behaviour2": "필요한 조합법의 _최소_ _재료_ _종류_를 설정합니다. 이는 적은 재료로 _원치_ _않은_ _조합법_이 작동되는 것을 막습니다.", + "block.create.mechanical_mixer.tooltip.summary": "아래있는 ì•„ì�´í…œì�„ ì¡°í•©í•  혼합기입니다. _지ì†�ì �ì�¸_ _회전력_ê³¼ í•œ 칸 아래ì—� _대야_ê°€ 필요합니다.", + "block.create.mechanical_mixer.tooltip.condition1": "대야 위ì—� 있ì�„ ë•Œ", + "block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 ì•„ì�´í…œì�´ 준비ë�  때마다 대야 안ì�˜ ì•„ì�´í…œì�„ 섞기 시작합니다.", + "block.create.mechanical_mixer.tooltip.condition2": "렌치를 사용할 ë•Œ", + "block.create.mechanical_mixer.tooltip.behaviour2": "필요한 조합법ì�˜ _최소_ _재료_ _종류_를 설정합니다. ì�´ëŠ” ì �ì�€ 재료로 _ì›�치_ _ì•Šì�€_ _조합법_ì�´ ìž‘ë�™ë�˜ëŠ” 것ì�„ 막습니다.", "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", - "block.create.mechanical_crafter.tooltip.summary": "모든 조합법을 _자동화_할 장치입니다. 조합법대로 여러개를 _격자_로 설치하고, 화살표를 돌려 _한_ _곳으로_ _모이게_ 설정해야합니다.", - "block.create.mechanical_crafter.tooltip.condition1": "회전할 때", - "block.create.mechanical_crafter.tooltip.behaviour1": "모든 조합칸에 있는 아이템들을 조합하기 시작합니다.", + "block.create.mechanical_crafter.tooltip.summary": "모든 조합법ì�„ _ìž�ë�™í™”_í•  장치입니다. 조합법대로 여러개를 _격ìž�_ë¡œ 설치하고, 화살표를 ë�Œë ¤ _í•œ_ _곳으로_ _모ì�´ê²Œ_ 설정해야합니다.", + "block.create.mechanical_crafter.tooltip.condition1": "회전할 ë•Œ", + "block.create.mechanical_crafter.tooltip.behaviour1": "모든 조합칸ì—� 있는 ì•„ì�´í…œë“¤ì�„ 조합하기 시작합니다.", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", - "block.create.mechanical_crafter.tooltip.control1": "전면을 렌치로 조정할 때", - "block.create.mechanical_crafter.tooltip.action1": "각 기계식 조합기의 아이템 이동 방향을 설정합니다. 모든 조합기의 방향은 _하나의_ _최종_ _조합기_로 이동해야하며, 최종 조합기는 조합기 _바깥으로_ 아이템을 운송해야합니다.", - "block.create.mechanical_crafter.tooltip.control2": "측면/후면에서 렌치로 조정할 때", - "block.create.mechanical_crafter.tooltip.action2": "인접한 조합기와 입력 공간을 _연결_합니다. 이를 통해 일일히 아이템을 넣는 노력을 줄일 수 있습니다.", + "block.create.mechanical_crafter.tooltip.control1": "ì „ë©´ì�„ 렌치로 ì¡°ì •í•  ë•Œ", + "block.create.mechanical_crafter.tooltip.action1": "ê°� 기계ì‹� 조합기ì�˜ ì•„ì�´í…œ ì�´ë�™ ë°©í–¥ì�„ 설정합니다. 모든 조합기ì�˜ ë°©í–¥ì�€ _하나ì�˜_ _최종_ _조합기_ë¡œ ì�´ë�™í•´ì•¼í•˜ë©°, 최종 조합기는 조합기 _바깥으로_ ì•„ì�´í…œì�„ 운송해야합니다.", + "block.create.mechanical_crafter.tooltip.control2": "측면/후면ì—�ì„œ 렌치로 ì¡°ì •í•  ë•Œ", + "block.create.mechanical_crafter.tooltip.action2": "ì�¸ì ‘í•œ 조합기와 ìž…ë ¥ 공간ì�„ _ì—°ê²°_합니다. ì�´ë¥¼ 통해 ì�¼ì�¼ížˆ ì•„ì�´í…œì�„ 넣는 노력ì�„ 줄ì�¼ 수 있습니다.", "block.create.furnace_engine.tooltip": "FURNACE ENGINE", - "block.create.furnace_engine.tooltip.summary": "_화로의_ _작동_을 필요로 하는 강력한 회전 동력원입니다.", - "block.create.furnace_engine.tooltip.condition1": "작동하는 화로에 붙였을 때", - "block.create.furnace_engine.tooltip.behaviour1": "붙어있는(한칸 띄어져있는) _플라이휠_에 동력을 공급합니다. _용광로_는 _두_ _배_의 화력을 냅니다.", + "block.create.furnace_engine.tooltip.summary": "_화로ì�˜_ _ìž‘ë�™_ì�„ 필요로 하는 강력한 회전 ë�™ë ¥ì›�입니다.", + "block.create.furnace_engine.tooltip.condition1": "ìž‘ë�™í•˜ëŠ” 화로ì—� 붙였ì�„ ë•Œ", + "block.create.furnace_engine.tooltip.behaviour1": "붙어있는(한칸 ë�„어져있는) _플ë�¼ì�´íœ _ì—� ë�™ë ¥ì�„ 공급합니다. _ìš©ê´‘ë¡œ_는 _ë‘�_ _ë°°_ì�˜ 화력ì�„ 냅니다.", "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "붙어있는 _화로_ _엔진_에서 생산된 힘을 안정시키고 _동력화_하는 거대한 금속 바퀴입니다. 화로 엔진으로부터 _한_ _칸_ _떨어져_ 설치해야 합니다.", - "block.create.flywheel.tooltip.condition1": "작동하는 엔진에 붙었을 때", - "block.create.flywheel.tooltip.behaviour1": "엔진의 힘에 따라 연결된 장치에 _회전력_을 제공합니다.", + "block.create.flywheel.tooltip.summary": "붙어있는 _화로_ _엔진_ì—�ì„œ ìƒ�ì‚°ë�œ 힘ì�„ 안정시키고 _ë�™ë ¥í™”_하는 거대한 금ì†� 바퀴입니다. 화로 엔진으로부터 _í•œ_ _칸_ _떨어져_ 설치해야 합니다.", + "block.create.flywheel.tooltip.condition1": "ìž‘ë�™í•˜ëŠ” 엔진ì—� 붙었ì�„ ë•Œ", + "block.create.flywheel.tooltip.behaviour1": "엔진ì�˜ 힘ì—� ë”°ë�¼ ì—°ê²°ë�œ 장치ì—� _회전력_ì�„ 제공합니다.", "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", - "block.create.portable_storage_interface.tooltip.summary": "움직이는 피스톤, 베어링, 수레, 밧줄 도르래의 인벤토리에서 _아이템을_ _교환하는_ 휴대용 장치입니다.", - "block.create.portable_storage_interface.tooltip.condition1": "움직일 때", - "block.create.portable_storage_interface.tooltip.behaviour1": "고정된 트랜스포저의 _방향에_ _따라_ 아이템을 _주거나_ _받습니다_. 아이템이 이동하는 동안 움직이는 기기는 _멈춥니다_.", + "block.create.portable_storage_interface.tooltip.summary": "움ì§�ì�´ëŠ” 피스톤, ë² ì–´ë§�, 수레, 밧줄 ë�„르래ì�˜ ì�¸ë²¤í† ë¦¬ì—�ì„œ _ì•„ì�´í…œì�„_ _êµ�환하는_ 휴대용 장치입니다.", + "block.create.portable_storage_interface.tooltip.condition1": "움ì§�ì�¼ ë•Œ", + "block.create.portable_storage_interface.tooltip.behaviour1": "ê³ ì •ë�œ 트랜스í�¬ì €ì�˜ _ë°©í–¥ì—�_ _ë”°ë�¼_ ì•„ì�´í…œì�„ _주거나_ _받습니다_. ì•„ì�´í…œì�´ ì�´ë�™í•˜ëŠ” ë�™ì•ˆ 움ì§�ì�´ëŠ” 기기는 _멈춥니다_.", "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", - "block.create.rotation_speed_controller.tooltip.summary": "해당 톱니바퀴의 속도를 _변경_할 수 있는 컨트롤러입니다.", - "block.create.rotation_speed_controller.tooltip.condition1": "큰 톱니바퀴와 연결되었을 때", - "block.create.rotation_speed_controller.tooltip.behaviour1": "들어오는 회전력을 받아, 대상의 속도를 변경합니다. _큰_ _톱니바퀴_가 컨트롤러 위에 있어야합니다.", + "block.create.rotation_speed_controller.tooltip.summary": "해당 톱니바퀴ì�˜ ì†�ë�„를 _변경_í•  수 있는 컨트롤러입니다.", + "block.create.rotation_speed_controller.tooltip.condition1": "í�° 톱니바퀴와 ì—°ê²°ë�˜ì—ˆì�„ ë•Œ", + "block.create.rotation_speed_controller.tooltip.behaviour1": "들어오는 회전력ì�„ 받아, 대ìƒ�ì�˜ ì†�ë�„를 변경합니다. _í�°_ _톱니바퀴_ê°€ 컨트롤러 위ì—� 있어야합니다.", "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "피스톤의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", - "block.create.mechanical_piston.tooltip.condition1": "회전될 때", - "block.create.mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", + "block.create.mechanical_piston.tooltip.summary": "피스톤ì�˜ 업그레ì�´ë“œ 버전입니다. 회전력ì�„ 사용해 ì—°ê²°ë�œ 구조물ì�„ 옮ê¹�니다. _피스톤_ _연장_ _축_ì�„ 후면ì—� 붙여 ì�´ 장치ì�˜ 사거리를 늘ì�´ê±°ë‚˜ 줄ì�¼ 수 있습니다. 축ì�´ 없다면 움ì§�ì�´ì§€ 않습니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ 붙여 ì�¼ì§�ì„ ì�˜ 블럭들ì�„ 움ì§�ì�¼ 수 있습니다.", + "block.create.mechanical_piston.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.mechanical_piston.tooltip.behaviour1": "붙어있는 구조물ì�„ 움ì§�ì�´ê¸° 시작합니다. ì†�ë�„와 ë°©í–¥ì�€ 들어오는 회전 ì†�ë�„와 ë°©í–¥ì—� ë”°ë�¼ 달ë�¼ì§‘니다.", "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", - "block.create.sticky_mechanical_piston.tooltip.summary": "끈끈이 피스톤의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "회전될 때", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", + "block.create.sticky_mechanical_piston.tooltip.summary": "ë�ˆë�ˆì�´ 피스톤ì�˜ 업그레ì�´ë“œ 버전입니다. 회전력ì�„ 사용해 ì—°ê²°ë�œ 구조물ì�„ 옮ê¹�니다. _피스톤_ _연장_ _축_ì�„ 후면ì—� 붙여 ì�´ 장치ì�˜ 사거리를 늘ì�´ê±°ë‚˜ 줄ì�¼ 수 있습니다. 축ì�´ 없다면 움ì§�ì�´ì§€ 않습니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ 붙여 ì�¼ì§�ì„ ì�˜ 블럭들ì�„ 움ì§�ì�¼ 수 있습니다.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "붙어있는 구조물ì�„ 움ì§�ì�´ê¸° 시작합니다. ì†�ë�„와 ë°©í–¥ì�€ 들어오는 회전 ì†�ë�„와 ë°©í–¥ì—� ë”°ë�¼ 달ë�¼ì§‘니다.", "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "기계식 피스톤의 _사거리_를 늘려줍니다.", - "block.create.piston_extension_pole.tooltip.condition1": "기계식 피스톤에 연결했을 때", - "block.create.piston_extension_pole.tooltip.behaviour1": "피스톤의 사거리를 한 블럭 늘립니다.", + "block.create.piston_extension_pole.tooltip.summary": "기계ì‹� 피스톤ì�˜ _사거리_를 늘려ì¤�니다.", + "block.create.piston_extension_pole.tooltip.condition1": "기계ì‹� 피스톤ì—� ì—°ê²°í–ˆì�„ ë•Œ", + "block.create.piston_extension_pole.tooltip.behaviour1": "피스톤ì�˜ 사거리를 í•œ 블럭 늘립니다.", "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "큰 구조물을 _회전_시키거나 _바람으로부터_ 회전력을 얻습니다.", - "block.create.mechanical_bearing.tooltip.condition1": "회전될 때", - "block.create.mechanical_bearing.tooltip.behaviour1": "연결된 블럭들을 돌리기 시작합니다. _섀시_나 _슬라임_ _블럭_을 이용해 더 많은 블럭을 움직이세요.", - "block.create.mechanical_bearing.tooltip.condition2": "레드스톤 신호를 받을 때", - "block.create.mechanical_bearing.tooltip.behaviour2": "붙어있는 구조물의 회전을 이용하여 회전력을 제공합니다. 구조물은 _날개_에 적합한 블럭이 포함되어야합니다. (현재는 _아무_ _양털_이나 가능합니다).", + "block.create.mechanical_bearing.tooltip.summary": "í�° 구조물ì�„ _회전_시키거나 _바람으로부터_ 회전력ì�„ 얻습니다.", + "block.create.mechanical_bearing.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.mechanical_bearing.tooltip.behaviour1": "ì—°ê²°ë�œ 블럭들ì�„ ë�Œë¦¬ê¸° 시작합니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ ì�´ìš©í•´ ë�” 많ì�€ 블럭ì�„ 움ì§�ì�´ì„¸ìš”.", + "block.create.mechanical_bearing.tooltip.condition2": "레드스톤 신호를 ë°›ì�„ ë•Œ", + "block.create.mechanical_bearing.tooltip.behaviour2": "붙어있는 구조물ì�˜ 회전ì�„ ì�´ìš©í•˜ì—¬ 회전력ì�„ 제공합니다. 구조물ì�€ _ë‚ ê°œ_ì—� ì �í•©í•œ 블럭ì�´ í�¬í•¨ë�˜ì–´ì•¼í•©ë‹ˆë‹¤. (현재는 _아무_ _양털_ì�´ë‚˜ 가능합니다).", "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", - "block.create.clockwork_bearing.tooltip.summary": "현재 _인게임_ _시간_을 알려주는 _시침_, _분침_을 돌리는 업그레이드된 베어링입니다.", - "block.create.clockwork_bearing.tooltip.condition1": "회전될 때", - "block.create.clockwork_bearing.tooltip.behaviour1": "현재 시간에 맞춰 연결된 구조물을 _시침_으로써 돌리기 시작합니다. _다른_ _종류의_ _섀시_가 있다면, _분침_처럼 돌립니다.", + "block.create.clockwork_bearing.tooltip.summary": "현재 _ì�¸ê²Œìž„_ _시간_ì�„ 알려주는 _시침_, _분침_ì�„ ë�Œë¦¬ëŠ” 업그레ì�´ë“œë�œ ë² ì–´ë§�입니다.", + "block.create.clockwork_bearing.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.clockwork_bearing.tooltip.behaviour1": "현재 시간ì—� 맞춰 ì—°ê²°ë�œ 구조물ì�„ _시침_으로ì�¨ ë�Œë¦¬ê¸° 시작합니다. _다른_ _종류ì�˜_ _섀시_ê°€ 있다면, _분침_처럼 ë�Œë¦½ë‹ˆë‹¤.", "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", - "block.create.sequenced_gearshift.tooltip.summary": "연속으로 5개의 회전 명령을 내릴 수 있는 _프로그램이_ _가능한_ 장치입니다. 이것으로 베어링, 피스톤, 도르래의 움직임과 타이밍을 정할 수 있습니다. 빠른 속력에는 부정확해질 수 있습니다.", - "block.create.sequenced_gearshift.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.sequenced_gearshift.tooltip.behaviour1": "입력 속도에 따른 프로그램된 명령들을 수행하기 시작합니다.", - "block.create.sequenced_gearshift.tooltip.condition2": "우클릭했을 때", - "block.create.sequenced_gearshift.tooltip.behaviour2": "설정 창을 엽니다.", + "block.create.sequenced_gearshift.tooltip.summary": "ì—°ì†�으로 5ê°œì�˜ 회전 명령ì�„ 내릴 수 있는 _프로그램ì�´_ _가능한_ 장치입니다. ì�´ê²ƒìœ¼ë¡œ ë² ì–´ë§�, 피스톤, ë�„르래ì�˜ 움ì§�ìž„ê³¼ 타ì�´ë°�ì�„ ì •í•  수 있습니다. 빠른 ì†�ë ¥ì—�는 부정확해질 수 있습니다.", + "block.create.sequenced_gearshift.tooltip.condition1": "레드스톤 신호를 ë°›ì�„ ë•Œ", + "block.create.sequenced_gearshift.tooltip.behaviour1": "ìž…ë ¥ ì†�ë�„ì—� 따른 프로그램ë�œ 명령들ì�„ 수행하기 시작합니다.", + "block.create.sequenced_gearshift.tooltip.condition2": "ìš°í�´ë¦­í–ˆì�„ ë•Œ", + "block.create.sequenced_gearshift.tooltip.behaviour2": "설정 ì°½ì�„ 엽니다.", "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "지나가는 _광산_ _수레_에 연결된 구조물을 붙입니다.", - "block.create.cart_assembler.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.cart_assembler.tooltip.behaviour1": "지나가는 광산 수레에 장착된 구조물을 분리시키고 조립기에 다시 설치합니다.", + "block.create.cart_assembler.tooltip.summary": "지나가는 _ê´‘ì‚°_ _수레_ì—� ì—°ê²°ë�œ 구조물ì�„ 붙입니다.", + "block.create.cart_assembler.tooltip.condition1": "레드스톤 신호를 ë°›ì�„ ë•Œ", + "block.create.cart_assembler.tooltip.behaviour1": "지나가는 ê´‘ì‚° 수레ì—� 장착ë�œ 구조물ì�„ 분리시키고 조립기ì—� 다시 설치합니다.", "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", @@ -1145,39 +1145,39 @@ "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "ROPE PULLEY", - "block.create.rope_pulley.tooltip.summary": "_수직으로_ 붙은 구조물을 움직입니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", - "block.create.rope_pulley.tooltip.condition1": "회전될 때", - "block.create.rope_pulley.tooltip.behaviour1": "연결된 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도, 방향에 따라 다릅니다.", + "block.create.rope_pulley.tooltip.summary": "_수ì§�으로_ 붙ì�€ 구조물ì�„ 움ì§�입니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ 붙여 ì�¼ì§�ì„ ì�˜ 블럭들ì�„ 움ì§�ì�¼ 수 있습니다.", + "block.create.rope_pulley.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.rope_pulley.tooltip.behaviour1": "ì—°ê²°ë�œ 구조물ì�„ 움ì§�ì�´ê¸° 시작합니다. ì†�ë�„와 ë°©í–¥ì�€ 들어오는 회전 ì†�ë�„, ë°©í–¥ì—� ë”°ë�¼ 다릅니다.", "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "연결된 구조물의 이동을 위한 베이스 블럭입니다.", - "block.create.linear_chassis.tooltip.condition1": "움직일 때", - "block.create.linear_chassis.tooltip.behaviour1": "섀시의 _기둥_ _방향_으로 붙어있는 모든 블럭들을 같은 방향으로 옮깁니다. 블럭들은 섀시가 끈끈할 때만 당겨집니다 ([Ctrl]를 누르세요).", - "block.create.linear_chassis.tooltip.condition2": "렌치로 조정할 때", - "block.create.linear_chassis.tooltip.behaviour2": "대상 섀시의 사거리를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", - "block.create.linear_chassis.tooltip.control1": "슬라임 볼로 우클릭", - "block.create.linear_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 섀시는 연결된 _모든_ _블럭_을 움직이는 방향에 상관없이 당깁니다.", + "block.create.linear_chassis.tooltip.summary": "ì—°ê²°ë�œ 구조물ì�˜ ì�´ë�™ì�„ 위한 ë² ì�´ìŠ¤ 블럭입니다.", + "block.create.linear_chassis.tooltip.condition1": "움ì§�ì�¼ ë•Œ", + "block.create.linear_chassis.tooltip.behaviour1": "섀시ì�˜ _기둥_ _ë°©í–¥_으로 붙어있는 모든 블럭들ì�„ ê°™ì�€ 방향으로 옮ê¹�니다. 블럭들ì�€ 섀시가 ë�ˆë�ˆí•  때만 당겨집니다 ([Ctrl]를 누르세요).", + "block.create.linear_chassis.tooltip.condition2": "렌치로 ì¡°ì •í•  ë•Œ", + "block.create.linear_chassis.tooltip.behaviour2": "대ìƒ� 섀시ì�˜ 사거리를 조정합니다. ë˜�는 CTRLì�„ 눌러 ì�¸ì ‘í•œ 모든 섀시ì�˜ 사거리를 조정합니다.", + "block.create.linear_chassis.tooltip.control1": "슬ë�¼ìž„ 볼로 ìš°í�´ë¦­", + "block.create.linear_chassis.tooltip.action1": "대ìƒ� ë©´ì�„ ë�ˆë�ˆí•˜ê²Œ 만듭니다. 당겨질 ë•Œ, 섀시는 ì—°ê²°ë�œ _모든_ _블럭_ì�„ 움ì§�ì�´ëŠ” ë°©í–¥ì—� ìƒ�관없ì�´ 당ê¹�니다.", "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "연결된 구조물의 이동을 위한 베이스 블럭입니다.", - "block.create.radial_chassis.tooltip.condition1": "움직일 때", - "block.create.radial_chassis.tooltip.behaviour1": "섀시의 _원_ _방향_으로 붙어있는 모든 블럭들을 같은 방향으로 옮깁니다. 블럭들이 섀시가 끈끈한 면에 붙어있을 때만 움직입니다 ([Ctrl]를 누르세요).", - "block.create.radial_chassis.tooltip.condition2": "렌치로 조정할 때", - "block.create.radial_chassis.tooltip.behaviour2": "대상 섀시의 사거리를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", - "block.create.radial_chassis.tooltip.control1": "슬라임 볼로 우클릭", - "block.create.radial_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 끈끈한 면에 붙은 _모든_ _블럭_을 움직이게 합니다", + "block.create.radial_chassis.tooltip.summary": "ì—°ê²°ë�œ 구조물ì�˜ ì�´ë�™ì�„ 위한 ë² ì�´ìŠ¤ 블럭입니다.", + "block.create.radial_chassis.tooltip.condition1": "움ì§�ì�¼ ë•Œ", + "block.create.radial_chassis.tooltip.behaviour1": "섀시ì�˜ _ì›�_ _ë°©í–¥_으로 붙어있는 모든 블럭들ì�„ ê°™ì�€ 방향으로 옮ê¹�니다. 블럭들ì�´ 섀시가 ë�ˆë�ˆí•œ ë©´ì—� 붙어있ì�„ 때만 움ì§�입니다 ([Ctrl]를 누르세요).", + "block.create.radial_chassis.tooltip.condition2": "렌치로 ì¡°ì •í•  ë•Œ", + "block.create.radial_chassis.tooltip.behaviour2": "대ìƒ� 섀시ì�˜ 사거리를 조정합니다. ë˜�는 CTRLì�„ 눌러 ì�¸ì ‘í•œ 모든 섀시ì�˜ 사거리를 조정합니다.", + "block.create.radial_chassis.tooltip.control1": "슬ë�¼ìž„ 볼로 ìš°í�´ë¦­", + "block.create.radial_chassis.tooltip.action1": "대ìƒ� ë©´ì�„ ë�ˆë�ˆí•˜ê²Œ 만듭니다. 당겨질 ë•Œ, ë�ˆë�ˆí•œ ë©´ì—� 붙ì�€ _모든_ _블럭_ì�„ 움ì§�ì�´ê²Œ 합니다", "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "블럭을 _파괴하는_ 데 적합한 장치입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_drill.tooltip.condition1": "회전될 때", - "block.create.mechanical_drill.tooltip.behaviour1": "고정되어 블럭을 부숩니다. 또한 해당영역의 엔티티에게 피해를 줍니다.", - "block.create.mechanical_drill.tooltip.condition2": "움직일 때", - "block.create.mechanical_drill.tooltip.behaviour2": "드릴이 부딫히는 모든 블럭을 부숩니다.", + "block.create.mechanical_drill.tooltip.summary": "블럭ì�„ _파괴하는_ ë�° ì �í•©í•œ 장치입니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", + "block.create.mechanical_drill.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.mechanical_drill.tooltip.behaviour1": "ê³ ì •ë�˜ì–´ 블럭ì�„ 부숩니다. ë˜�í•œ 해당ì˜�ì—­ì�˜ 엔티티ì—�게 피해를 ì¤�니다.", + "block.create.mechanical_drill.tooltip.condition2": "움ì§�ì�¼ ë•Œ", + "block.create.mechanical_drill.tooltip.behaviour2": "드릴ì�´ 부딫히는 모든 블럭ì�„ 부숩니다.", "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "중간 크기의 작물 자동화에 적합한 _작물_ _수확기_입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_harvester.tooltip.condition1": "움직일 때", - "block.create.mechanical_harvester.tooltip.behaviour1": "칼날에 닿는 모두 자란 작물을 수확하고 최초 성장 상태로 변경합니다.", + "block.create.mechanical_harvester.tooltip.summary": "중간 í�¬ê¸°ì�˜ 작물 ìž�ë�™í™”ì—� ì �í•©í•œ _작물_ _수확기_입니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", + "block.create.mechanical_harvester.tooltip.condition1": "움ì§�ì�¼ ë•Œ", + "block.create.mechanical_harvester.tooltip.behaviour1": "칼날ì—� 닿는 모ë‘� ìž�란 작물ì�„ 수확하고 최초 성장 ìƒ�태로 변경합니다.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1185,31 +1185,31 @@ "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", - "block.create.mechanical_saw.tooltip.summary": "효율적인 _벌목_과 블럭을 _제재_하는데 적합합니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_saw.tooltip.condition1": "위를 바라볼 때", - "block.create.mechanical_saw.tooltip.behaviour1": "_제재_와 _석재_ _절단_ 조합법을 떨어진/투입된 아이템에 적용합니다. 결과물이 여러 종류고 필터가 적용이 되지 않았다면, 결과물은 _목록_ _순서_대로 배출됩니다.", - "block.create.mechanical_saw.tooltip.condition2": "옆을 바라볼 때", - "block.create.mechanical_saw.tooltip.behaviour2": "앞에 있는 원목을 자릅니다. 나무의 원목이라면, 나무가 쓰러지면서 아이템을 떨굽니다.", - "block.create.mechanical_saw.tooltip.condition3": "움직일 때", - "block.create.mechanical_saw.tooltip.behaviour3": "톱이 만나는 모든 나무를 벱니다.", + "block.create.mechanical_saw.tooltip.summary": "효율ì �ì�¸ _벌목_ê³¼ 블럭ì�„ _제재_하는ë�° ì �합합니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", + "block.create.mechanical_saw.tooltip.condition1": "위를 ë°”ë�¼ë³¼ ë•Œ", + "block.create.mechanical_saw.tooltip.behaviour1": "_제재_와 _ì„�재_ _절단_ 조합법ì�„ 떨어진/투입ë�œ ì•„ì�´í…œì—� ì �용합니다. 결과물ì�´ 여러 종류고 í•„í„°ê°€ ì �ìš©ì�´ ë�˜ì§€ 않았다면, 결과물ì�€ _목ë¡�_ _순서_대로 배출ë�©ë‹ˆë‹¤.", + "block.create.mechanical_saw.tooltip.condition2": "옆ì�„ ë°”ë�¼ë³¼ ë•Œ", + "block.create.mechanical_saw.tooltip.behaviour2": "ì•žì—� 있는 ì›�목ì�„ ìž�릅니다. 나무ì�˜ ì›�목ì�´ë�¼ë©´, 나무가 쓰러지면서 ì•„ì�´í…œì�„ 떨굽니다.", + "block.create.mechanical_saw.tooltip.condition3": "움ì§�ì�¼ ë•Œ", + "block.create.mechanical_saw.tooltip.behaviour3": "톱ì�´ 만나는 모든 나무를 벱니다.", "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_에 _여유_ _공간_을 기반으로 레드스톤 신호를 보냅니다.", - "block.create.stockpile_switch.tooltip.condition1": "_최소_ _경계_보다 낮을 경우", - "block.create.stockpile_switch.tooltip.behaviour1": "레드스톤 신호를 보내지 않습니다.", - "block.create.stockpile_switch.tooltip.condition2": "_최초_ _경계_보다 높을 경우", - "block.create.stockpile_switch.tooltip.behaviour2": "최소 경계에 다시 도달할 때까지 레드스톤 신호를 보냅니다.", - "block.create.stockpile_switch.tooltip.control1": "우클릭했을 때", - "block.create.stockpile_switch.tooltip.action1": "설정 창을 엽니다.", + "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_ì—� _여유_ _공간_ì�„ 기반으로 레드스톤 신호를 보냅니다.", + "block.create.stockpile_switch.tooltip.condition1": "_최소_ _경계_보다 ë‚®ì�„ 경우", + "block.create.stockpile_switch.tooltip.behaviour1": "레드스톤 신호를 보내지 않습니다.", + "block.create.stockpile_switch.tooltip.condition2": "_최초_ _경계_보다 높ì�„ 경우", + "block.create.stockpile_switch.tooltip.behaviour2": "최소 경계ì—� 다시 ë�„달할 때까지 레드스톤 신호를 보냅니다.", + "block.create.stockpile_switch.tooltip.control1": "ìš°í�´ë¦­í–ˆì�„ ë•Œ", + "block.create.stockpile_switch.tooltip.action1": "설정 ì°½ì�„ 엽니다.", "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "_무선_ 레드스톤 단말기입니다. 아무 아이템으로 두 개의 _주파수_를 설정할 수 있습니다. 통신거리는 제한되어 있지만, 그래도 충분히 넓습니다.", - "block.create.redstone_link.tooltip.condition1": "신호를 줄 때", - "block.create.redstone_link.tooltip.behaviour1": "같은 주파주의 다른 단말기에서 레드스톤 신호를 받습니다.", - "block.create.redstone_link.tooltip.control1": "아이템을 들고 우클릭", - "block.create.redstone_link.tooltip.action1": "그 아이템으로 주파수를 설정합니다. 주파수는 최대 두가지 아이템 조합으로 이룰 수 있습니다.", - "block.create.redstone_link.tooltip.control2": "웅크린 상태에서 우클릭", - "block.create.redstone_link.tooltip.action2": "수신/발신 모드로 바꿉니다.", + "block.create.redstone_link.tooltip.summary": "_무선_ 레드스톤 단ë§�기입니다. 아무 ì•„ì�´í…œìœ¼ë¡œ ë‘� ê°œì�˜ _주파수_를 설정할 수 있습니다. 통신거리는 제한ë�˜ì–´ 있지만, 그래ë�„ 충분히 넓습니다.", + "block.create.redstone_link.tooltip.condition1": "신호를 줄 ë•Œ", + "block.create.redstone_link.tooltip.behaviour1": "ê°™ì�€ 주파주ì�˜ 다른 단ë§�기ì—�ì„œ 레드스톤 신호를 받습니다.", + "block.create.redstone_link.tooltip.control1": "ì•„ì�´í…œì�„ 들고 ìš°í�´ë¦­", + "block.create.redstone_link.tooltip.action1": "ê·¸ ì•„ì�´í…œìœ¼ë¡œ 주파수를 설정합니다. 주파수는 최대 ë‘�가지 ì•„ì�´í…œ 조합으로 ì�´ë£° 수 있습니다.", + "block.create.redstone_link.tooltip.control2": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", + "block.create.redstone_link.tooltip.action2": "수신/발신 모드로 바꿉니다.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,125 +1217,125 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", - "block.create.redstone_contact.tooltip.summary": "_한_ _쌍_이 _서로_ _바라보고_ 있을 때 레드스톤 신호를 보냅니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.redstone_contact.tooltip.condition1": "다른 동형 감지기를 맞댈 때", - "block.create.redstone_contact.tooltip.behaviour1": "레드스톤 신호를 보냅니다.", - "block.create.redstone_contact.tooltip.condition2": "움직일 때", - "block.create.redstone_contact.tooltip.behaviour2": "지나가는 모든 고정된 동형 감지기를 작동시킵니다.", + "block.create.redstone_contact.tooltip.summary": "_í•œ_ _ìŒ�_ì�´ _서로_ _ë°”ë�¼ë³´ê³ _ 있ì�„ ë•Œ 레드스톤 신호를 보냅니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", + "block.create.redstone_contact.tooltip.condition1": "다른 ë�™í˜• ê°�지기를 맞댈 ë•Œ", + "block.create.redstone_contact.tooltip.behaviour1": "레드스톤 신호를 보냅니다.", + "block.create.redstone_contact.tooltip.condition2": "움ì§�ì�¼ ë•Œ", + "block.create.redstone_contact.tooltip.behaviour2": "지나가는 모든 ê³ ì •ë�œ ë�™í˜• ê°�지기를 ìž‘ë�™ì‹œí‚µë‹ˆë‹¤.", "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "이 저장소는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", - "block.create.adjustable_crate.tooltip.control1": "우클릭 했을 때", - "block.create.adjustable_crate.tooltip.action1": "창을 엽니다.", + "block.create.adjustable_crate.tooltip.summary": "ì�´ 저장소는 용량ì�„ _ì§�ì ‘_ _ì •í• _ 수 있습니다. 아무아ì�´í…œì�´ë‚˜ 최대 16스íƒ�씩 ë‹´ì�„ 수 있습니다. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", + "block.create.adjustable_crate.tooltip.control1": "ìš°í�´ë¦­ í–ˆì�„ ë•Œ", + "block.create.adjustable_crate.tooltip.action1": "ì°½ì�„ 엽니다.", "block.create.creative_crate.tooltip": "CREATIVE CRATE", - "block.create.creative_crate.tooltip.summary": "옆 _청사진 대포_에 _무한한_ 재료를 공급합니다.", + "block.create.creative_crate.tooltip.summary": "옆 _청사진 대í�¬_ì—� _무한한_ 재료를 공급합니다.", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "_연결된_ _인벤토리_로부터 아이템을 꺼내 땅에 떨어뜨립니다. 공간이 비지 않았다면 아이템을 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다.", - "block.create.extractor.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", - "block.create.extractor.tooltip.condition2": "움직이는 벨트에 연결되었을 때", - "block.create.extractor.tooltip.behaviour2": "추출기는 _황동_ _케이스_가 장착된 _벨트_에서 아이템을 빼낼 수 있습니다. 추출기가 막혔을 때는, 벨트가 _멈춥니다_.", - "block.create.extractor.tooltip.control1": "필터 슬롯을 우클릭할 때", - "block.create.extractor.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 추출기는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + "block.create.extractor.tooltip.summary": "_ì—°ê²°ë�œ_ _ì�¸ë²¤í† ë¦¬_로부터 ì•„ì�´í…œì�„ 꺼내 ë•…ì—� 떨어뜨립니다. 공간ì�´ 비지 않았다면 ì•„ì�´í…œì�„ 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다.", + "block.create.extractor.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", + "block.create.extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", + "block.create.extractor.tooltip.condition2": "움ì§�ì�´ëŠ” 벨트ì—� ì—°ê²°ë�˜ì—ˆì�„ ë•Œ", + "block.create.extractor.tooltip.behaviour2": "추출기는 _황ë�™_ _ì¼€ì�´ìŠ¤_ê°€ 장착ë�œ _벨트_ì—�ì„œ ì•„ì�´í…œì�„ 빼낼 수 있습니다. 추출기가 막혔ì�„ 때는, 벨트가 _멈춥니다_.", + "block.create.extractor.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", + "block.create.extractor.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 추출기는 í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", "block.create.transposer.tooltip": "TRANSPOSER", - "block.create.transposer.tooltip.summary": "연결된 인벤토리로부터 대상 인벤토리로 아이템을 _바로_ _이동_시킵니다. 개수/필터를 설정 가능합니다.", - "block.create.transposer.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.transposer.tooltip.behaviour1": "트랜스포저를 _멈춥니다_.", - "block.create.transposer.tooltip.condition2": "움직이는 벨트에 연결되었을 때", - "block.create.transposer.tooltip.behaviour2": "트랜스포저는 _황동_ _케이스_가 장착된 _벨트_에서 아이템을 빼낼 수 있습니다. 추출기가 막혔을 때는, 벨트가 _멈춥니다_.", - "block.create.transposer.tooltip.control1": "필터 슬롯을 우클릭할 때", - "block.create.transposer.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 트랜스포저는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + "block.create.transposer.tooltip.summary": "ì—°ê²°ë�œ ì�¸ë²¤í† ë¦¬ë¡œë¶€í„° 대ìƒ� ì�¸ë²¤í† ë¦¬ë¡œ ì•„ì�´í…œì�„ _바로_ _ì�´ë�™_시킵니다. 개수/필터를 설정 가능합니다.", + "block.create.transposer.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", + "block.create.transposer.tooltip.behaviour1": "트랜스í�¬ì €ë¥¼ _멈춥니다_.", + "block.create.transposer.tooltip.condition2": "움ì§�ì�´ëŠ” 벨트ì—� ì—°ê²°ë�˜ì—ˆì�„ ë•Œ", + "block.create.transposer.tooltip.behaviour2": "트랜스í�¬ì €ëŠ” _황ë�™_ _ì¼€ì�´ìŠ¤_ê°€ 장착ë�œ _벨트_ì—�ì„œ ì•„ì�´í…œì�„ 빼낼 수 있습니다. 추출기가 막혔ì�„ 때는, 벨트가 _멈춥니다_.", + "block.create.transposer.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", + "block.create.transposer.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 트랜스í�¬ì €ëŠ” í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", "block.create.deployer.tooltip": "DEPLOYER", - "block.create.deployer.tooltip.summary": " _때리고_, _사용하고_ _작동시킵니다_. 이 장치는 _플레이어_를 가능한 한 _흉내내려할_ _것입니다_. 주변 인벤토리에서 아이템을 쓰거나 넣을 수 있습니다. 필터로 사용하는 아이템을 설정할 수 있습니다.", - "block.create.deployer.tooltip.condition1": "회전될 때", - "block.create.deployer.tooltip.behaviour1": "팔을 늘려 한 칸앞에 있는 공간에서 행동합니다.", - "block.create.deployer.tooltip.condition2": "렌치로 우클릭", - "block.create.deployer.tooltip.behaviour2": "_펀치_ _모드_로 바꿉니다. 이 상태에서는 배포기가 아이템을 가지고 _부수거나_ _때리려고_ 할 것입니다.", + "block.create.deployer.tooltip.summary": " _때리고_, _사용하고_ _ìž‘ë�™ì‹œí‚µë‹ˆë‹¤_. ì�´ 장치는 _플레ì�´ì–´_를 가능한 í•œ _í�‰ë‚´ë‚´ë ¤í• _ _것입니다_. 주변 ì�¸ë²¤í† ë¦¬ì—�ì„œ ì•„ì�´í…œì�„ 쓰거나 ë„£ì�„ 수 있습니다. í•„í„°ë¡œ 사용하는 ì•„ì�´í…œì�„ 설정할 수 있습니다.", + "block.create.deployer.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.deployer.tooltip.behaviour1": "팔ì�„ 늘려 í•œ 칸앞ì—� 있는 공간ì—�ì„œ í–‰ë�™í•©ë‹ˆë‹¤.", + "block.create.deployer.tooltip.condition2": "렌치로 ìš°í�´ë¦­", + "block.create.deployer.tooltip.behaviour2": "_펀치_ _모드_ë¡œ 바꿉니다. ì�´ ìƒ�태ì—�서는 ë°°í�¬ê¸°ê°€ ì•„ì�´í…œì�„ 가지고 _부수거나_ _때리려고_ í•  것입니다.", "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "_연결된_ _인벤토리_로부터 아이템을 꺼내 땅에 떨어뜨립니다. 공간이 비지 않았다면 아이템을 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다. 레드스톤 링크를 통해 _무선으로_ 컨트롤 될 수 있습니다.", - "block.create.linked_extractor.tooltip.condition1": "레드스톤 링크 신호를 받았을 때", - "block.create.linked_extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", - "block.create.linked_extractor.tooltip.control1": "필터 슬롯을 우클릭할 때", - "block.create.linked_extractor.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 추출기는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", - "block.create.linked_extractor.tooltip.control2": "아이템을 들고 주파수 슬롯을 우클릭", - "block.create.linked_extractor.tooltip.action2": "그 아이템으로 주파수를 설정합니다. _같은_ _주파수_의 레드스톤 링크가 신호를 보낸다면, 추출기는 멈출 것입니다.", + "block.create.linked_extractor.tooltip.summary": "_ì—°ê²°ë�œ_ _ì�¸ë²¤í† ë¦¬_로부터 ì•„ì�´í…œì�„ 꺼내 ë•…ì—� 떨어뜨립니다. 공간ì�´ 비지 않았다면 ì•„ì�´í…œì�„ 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다. 레드스톤 ë§�í�¬ë¥¼ 통해 _무선으로_ 컨트롤 ë�  수 있습니다.", + "block.create.linked_extractor.tooltip.condition1": "레드스톤 ë§�í�¬ 신호를 받았ì�„ ë•Œ", + "block.create.linked_extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", + "block.create.linked_extractor.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", + "block.create.linked_extractor.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 추출기는 í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", + "block.create.linked_extractor.tooltip.control2": "ì•„ì�´í…œì�„ 들고 주파수 슬롯ì�„ ìš°í�´ë¦­", + "block.create.linked_extractor.tooltip.action2": "ê·¸ ì•„ì�´í…œìœ¼ë¡œ 주파수를 설정합니다. _ê°™ì�€_ _주파수_ì�˜ 레드스톤 ë§�í�¬ê°€ 신호를 보낸다면, 추출기는 멈출 것입니다.", "block.create.linked_transposer.tooltip": "LINKED TRANSPOSER", - "block.create.linked_transposer.tooltip.summary": "연결된 인벤토리로부터 대상 인벤토리로 아이템을 _바로_ _이동_시킵니다. 개수/필터를 설정 가능합니다. 레드스톤 링크를 통해 _무선으로_ 컨트롤 될 수 있습니다.", - "block.create.linked_transposer.tooltip.condition1": "레드스톤 링크 신호를 받았을 때", - "block.create.linked_transposer.tooltip.behaviour1": "트랜스포저를 _멈춥니다_.", - "block.create.linked_transposer.tooltip.control1": "필터 슬롯을 우클릭할 때", - "block.create.linked_transposer.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 트랜스포저는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", - "block.create.linked_transposer.tooltip.control2": "아이템을 들고 주파수 슬롯을 우클릭", - "block.create.linked_transposer.tooltip.action2": "그 아이템으로 주파수를 설정합니다. _같은_ _주파수_의 레드스톤 링크가 신호를 보낸다면, 트랜스포저는 멈출 것입니다.", + "block.create.linked_transposer.tooltip.summary": "ì—°ê²°ë�œ ì�¸ë²¤í† ë¦¬ë¡œë¶€í„° 대ìƒ� ì�¸ë²¤í† ë¦¬ë¡œ ì•„ì�´í…œì�„ _바로_ _ì�´ë�™_시킵니다. 개수/필터를 설정 가능합니다. 레드스톤 ë§�í�¬ë¥¼ 통해 _무선으로_ 컨트롤 ë�  수 있습니다.", + "block.create.linked_transposer.tooltip.condition1": "레드스톤 ë§�í�¬ 신호를 받았ì�„ ë•Œ", + "block.create.linked_transposer.tooltip.behaviour1": "트랜스í�¬ì €ë¥¼ _멈춥니다_.", + "block.create.linked_transposer.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", + "block.create.linked_transposer.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 트랜스í�¬ì €ëŠ” í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", + "block.create.linked_transposer.tooltip.control2": "ì•„ì�´í…œì�„ 들고 주파수 슬롯ì�„ ìš°í�´ë¦­", + "block.create.linked_transposer.tooltip.action2": "ê·¸ ì•„ì�´í…œìœ¼ë¡œ 주파수를 설정합니다. _ê°™ì�€_ _주파수_ì�˜ 레드스톤 ë§�í�¬ê°€ 신호를 보낸다면, 트랜스í�¬ì €ëŠ” 멈출 것입니다.", "block.create.funnel.tooltip": "FUNNEL", - "block.create.funnel.tooltip.summary": "들어오는 아이템을 가능하면 _연결된_ _인벤토리_에 넣습니다. _벨트_ _위_의 아이템도 끌어올 수 있습니다.", - "block.create.funnel.tooltip.condition1": "움직이는 벨트위에 있을 때", - "block.create.funnel.tooltip.behaviour1": "_벨트_의 _중간_, _끝부분_에서 아이템을 끌어올 수 있습니다. 중간에 설치된 깔때기가 _정체_되었을 땐, 벨트가 _멈춥니다_.", + "block.create.funnel.tooltip.summary": "들어오는 ì•„ì�´í…œì�„ 가능하면 _ì—°ê²°ë�œ_ _ì�¸ë²¤í† ë¦¬_ì—� 넣습니다. _벨트_ _위_ì�˜ ì•„ì�´í…œë�„ ë�Œì–´ì˜¬ 수 있습니다.", + "block.create.funnel.tooltip.condition1": "움ì§�ì�´ëŠ” 벨트위ì—� 있ì�„ ë•Œ", + "block.create.funnel.tooltip.behaviour1": "_벨트_ì�˜ _중간_, _ë��부분_ì—�ì„œ ì•„ì�´í…œì�„ ë�Œì–´ì˜¬ 수 있습니다. 중간ì—� 설치ë�œ 깔때기가 _ì •ì²´_ë�˜ì—ˆì�„ ë•�, 벨트가 _멈춥니다_.", "block.create.belt_tunnel.tooltip": "BELT TUNNEL", - "block.create.belt_tunnel.tooltip.summary": "벽을 통과하는 컨베이어 벨트를 _꾸미는_ 옵션 중 하나입니다. 벨트는 _황동_ _케이스_가 장착되어 있어야합니다. 터널은 다른 벨트 라인의 터널과 _동기화_되어 모든 터널이 _같은_ _타이밍_에 아이템을 들어오게 만들 수 있습니다. [Ctrl를 누르세요]", - "block.create.belt_tunnel.tooltip.control1": "전면에 렌치로 우클릭", - "block.create.belt_tunnel.tooltip.action1": "동기화 모드를 킵니다. 동기화된 터널은 다른 동기화된 터널들이 아이템을 인식할 때까지 아이템을 통과시키지 않습니다.", - "block.create.belt_tunnel.tooltip.control2": "륵면을 우클릭", - "block.create.belt_tunnel.tooltip.action2": "터널 측면에 창문이 있다면 창문 셔터를 조절합니다.", + "block.create.belt_tunnel.tooltip.summary": "ë²½ì�„ 통과하는 컨베ì�´ì–´ 벨트를 _꾸미는_ 옵션 중 하나입니다. 벨트는 _황ë�™_ _ì¼€ì�´ìŠ¤_ê°€ 장착ë�˜ì–´ 있어야합니다. í„°ë„�ì�€ 다른 벨트 ë�¼ì�¸ì�˜ í„°ë„�ê³¼ _ë�™ê¸°í™”_ë�˜ì–´ 모든 í„°ë„�ì�´ _ê°™ì�€_ _타ì�´ë°�_ì—� ì•„ì�´í…œì�„ 들어오게 만들 수 있습니다. [Ctrl를 누르세요]", + "block.create.belt_tunnel.tooltip.control1": "ì „ë©´ì—� 렌치로 ìš°í�´ë¦­", + "block.create.belt_tunnel.tooltip.action1": "ë�™ê¸°í™” 모드를 킵니다. ë�™ê¸°í™”ë�œ í„°ë„�ì�€ 다른 ë�™ê¸°í™”ë�œ í„°ë„�들ì�´ ì•„ì�´í…œì�„ ì�¸ì‹�í•  때까지 ì•„ì�´í…œì�„ 통과시키지 않습니다.", + "block.create.belt_tunnel.tooltip.control2": "륵면ì�„ ìš°í�´ë¦­", + "block.create.belt_tunnel.tooltip.action2": "í„°ë„� 측면ì—� 창문ì�´ 있다면 창문 셔터를 조절합니다.", "block.create.brass_casing.tooltip": "BRASS CASING", - "block.create.brass_casing.tooltip.summary": "다양한 용도가 있는 단단한 기계 케이스입니다. 꾸미는 용도로도 사용 가능합니다.", - "block.create.brass_casing.tooltip.condition1": "컨베이어 벨트에 사용할 때", - "block.create.brass_casing.tooltip.behaviour1": "벨트 밑 부분에 황동 케이스를 씌웁니다. 이 상태에선 _벨트_ _터널_, _추출기_, _깔대기_, _트랜스포저_를 벨트 _측면_, _바닥면_에 연결할 수 있습니다.", + "block.create.brass_casing.tooltip.summary": "다양한 ìš©ë�„ê°€ 있는 단단한 기계 ì¼€ì�´ìŠ¤ìž…니다. 꾸미는 ìš©ë�„ë¡œë�„ 사용 가능합니다.", + "block.create.brass_casing.tooltip.condition1": "컨베ì�´ì–´ 벨트ì—� 사용할 ë•Œ", + "block.create.brass_casing.tooltip.behaviour1": "벨트 ë°‘ 부분ì—� 황ë�™ ì¼€ì�´ìŠ¤ë¥¼ 씌ì›�니다. ì�´ ìƒ�태ì—�ì„  _벨트_ _í„°ë„�_, _추출기_, _깔대기_, _트랜스í�¬ì €_를 벨트 _측면_, _바닥면_ì—� ì—°ê²°í•  수 있습니다.", "block.create.belt_observer.tooltip": "BELT OBSERVER", - "block.create.belt_observer.tooltip.summary": "컨베이어 벨트위를 _지나가는_ _엔티티_나 _아이템_을 감지합니다. 렌치를 이용해 _감지시_ _행동_을 바꿉니다. 필터를 설정할 수 있습니다.", - "block.create.belt_observer.tooltip.condition1": "감지 모드", - "block.create.belt_observer.tooltip.behaviour1": "감지기 앞에 아이템이 _지나가는_ _동안_ 레드스톤 신호를 줍니다.", - "block.create.belt_observer.tooltip.condition2": "펄스 모드", - "block.create.belt_observer.tooltip.behaviour2": "감지기 앞에 아이템이 _지나갈_ _때_ 레드스톤 신호를 _1틱_ 줍니다.", - "block.create.belt_observer.tooltip.condition3": "사출 모드", - "block.create.belt_observer.tooltip.behaviour3": "옆으로 아이템을 _밀어냅니다_. 벨트나 밀어내는 공간이 _정체_되어 있다면, 아이템은 감지기 앞에서 _멈춥니다_.", - "block.create.belt_observer.tooltip.condition4": "분리 모드", - "block.create.belt_observer.tooltip.behaviour4": "아이템의 _수_를 _반으로_ _나누어_ 반은 벨트 옆으로 내보냅니다.", + "block.create.belt_observer.tooltip.summary": "컨베ì�´ì–´ 벨트위를 _지나가는_ _엔티티_나 _ì•„ì�´í…œ_ì�„ ê°�지합니다. 렌치를 ì�´ìš©í•´ _ê°�지시_ _í–‰ë�™_ì�„ 바꿉니다. 필터를 설정할 수 있습니다.", + "block.create.belt_observer.tooltip.condition1": "ê°�지 모드", + "block.create.belt_observer.tooltip.behaviour1": "ê°�지기 ì•žì—� ì•„ì�´í…œì�´ _지나가는_ _ë�™ì•ˆ_ 레드스톤 신호를 ì¤�니다.", + "block.create.belt_observer.tooltip.condition2": "펄스 모드", + "block.create.belt_observer.tooltip.behaviour2": "ê°�지기 ì•žì—� ì•„ì�´í…œì�´ _지나갈_ _ë•Œ_ 레드스톤 신호를 _1틱_ ì¤�니다.", + "block.create.belt_observer.tooltip.condition3": "사출 모드", + "block.create.belt_observer.tooltip.behaviour3": "옆으로 ì•„ì�´í…œì�„ _밀어냅니다_. 벨트나 밀어내는 공간ì�´ _ì •ì²´_ë�˜ì–´ 있다면, ì•„ì�´í…œì�€ ê°�지기 ì•žì—�ì„œ _멈춥니다_.", + "block.create.belt_observer.tooltip.condition4": "분리 모드", + "block.create.belt_observer.tooltip.behaviour4": "ì•„ì�´í…œì�˜ _수_를 _반으로_ _나누어_ ë°˜ì�€ 벨트 옆으로 내보냅니다.", "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "_1틱_의 레드스톤 신호를 보내는 간단한 리피터입니다.", + "block.create.pulse_repeater.tooltip.summary": "_1틱_ì�˜ 레드스톤 신호를 보내는 간단한 리피터입니다.", "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 업그레이드된 _레드스톤_ _리피터_입니다.", + "block.create.adjustable_repeater.tooltip.summary": "최대 30분까지 _딜레ì�´_를 설정할 수 있는 업그레ì�´ë“œë�œ _레드스톤_ _리피터_입니다.", "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", - "block.create.adjustable_pulse_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 _펄스_ _리피터_입니다.", + "block.create.adjustable_pulse_repeater.tooltip.summary": "최대 30분까지 _딜레ì�´_를 설정할 수 있는 _펄스_ _리피터_입니다.", "block.create.analog_lever.tooltip": "ANALOG LEVER", - "block.create.analog_lever.tooltip.summary": "레드스톤 _신호_ _세기_를 자세히 _조정_할 수 있는 레버입니다.", + "block.create.analog_lever.tooltip.summary": "레드스톤 _신호_ _세기_를 ìž�세히 _ì¡°ì •_í•  수 있는 레버입니다.", "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", - "block.create.powered_toggle_latch.tooltip.summary": "레드스톤 신호로 끄고 켤 수 있는 _레버_입니다.", + "block.create.powered_toggle_latch.tooltip.summary": "레드스톤 신호로 ë�„ê³  켤 수 있는 _레버_입니다.", "block.create.powered_latch.tooltip": "POWERED LATCH", - "block.create.powered_latch.tooltip.summary": "레드스톤 신호로 컨트롤 할 수 있는 _레버_입니다. 후면에서 들어오는 신호는 레버를 키고, 측면에서 들어오는 신호는 레버를 초기화합니다.", + "block.create.powered_latch.tooltip.summary": "레드스톤 신호로 컨트롤 í•  수 있는 _레버_입니다. 후면ì—�ì„œ 들어오는 신호는 레버를 키고, 측면ì—�ì„œ 들어오는 신호는 레버를 초기화합니다.", "block.create.speedometer.tooltip": "SPEEDOMETER", - "block.create.speedometer.tooltip.summary": "연결된 장치의 _회전_ _속도_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", - "block.create.speedometer.tooltip.condition1": "회전될 때", - "block.create.speedometer.tooltip.behaviour1": "속도에 따라 색깔을 나타냅니다. _초록색_은 _느림_을, _파랑색_은 _보통_, _보라색_은 _빠른_ _속도_를 나타냅니다. 몇몇 장치들은 작동하기 위해 일정수준 이상의 속도가 필요합니다.", + "block.create.speedometer.tooltip.summary": "ì—°ê²°ë�œ 장치ì�˜ _회전_ _ì†�ë�„_를 _계측_하고 _나타냅니다_. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", + "block.create.speedometer.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.speedometer.tooltip.behaviour1": "ì†�ë�„ì—� ë”°ë�¼ 색깔ì�„ 나타냅니다. _ì´ˆë¡�색_ì�€ _ëŠ�림_ì�„, _파랑색_ì�€ _보통_, _ë³´ë�¼ìƒ‰_ì�€ _빠른_ _ì†�ë�„_를 나타냅니다. 몇몇 장치들ì�€ ìž‘ë�™í•˜ê¸° 위해 ì�¼ì •ìˆ˜ì¤€ ì�´ìƒ�ì�˜ ì†�ë�„ê°€ 필요합니다.", "block.create.stressometer.tooltip": "STRESSOMETER", - "block.create.stressometer.tooltip.summary": "연결된 네트워크의 _전체_ _피로도_ _수치_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", - "block.create.stressometer.tooltip.condition1": "회전될 때", - "block.create.stressometer.tooltip.behaviour1": "피로도에 따라 색깔을 나타냅니다. _과부화된_ _네트워크_는 움직이는 것을 멈춥니다. 과부하는 네트워크에 _추가_ _피로도_ _용량_을 가진 장치를 설치하면 해결됩니다. ", + "block.create.stressometer.tooltip.summary": "ì—°ê²°ë�œ 네트워í�¬ì�˜ _ì „ì²´_ _피로ë�„_ _수치_를 _계측_하고 _나타냅니다_. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", + "block.create.stressometer.tooltip.condition1": "회전ë�  ë•Œ", + "block.create.stressometer.tooltip.behaviour1": "피로ë�„ì—� ë”°ë�¼ 색깔ì�„ 나타냅니다. _과부화ë�œ_ _네트워í�¬_는 움ì§�ì�´ëŠ” 것ì�„ 멈춥니다. 과부하는 네트워í�¬ì—� _추가_ _피로ë�„_ _용량_ì�„ 가진 장치를 설치하면 í•´ê²°ë�©ë‹ˆë‹¤. ", "tool.create.sand_paper.tooltip": "SAND PAPER", - "tool.create.sand_paper.tooltip.summary": "재료를 _사포질_ 하기위한 거친 종이입니다. 배포기를 통해 자동으로 쓰일 수 있습니다.", - "tool.create.sand_paper.tooltip.condition1": "사용할 때", - "tool.create.sand_paper.tooltip.behaviour1": "_반대_ _손_에 있는, 혹은 _바닥에_ _있는_ 아이템을 사포질 합니다.", + "tool.create.sand_paper.tooltip.summary": "재료를 _사í�¬ì§ˆ_ 하기위한 거친 종ì�´ìž…니다. ë°°í�¬ê¸°ë¥¼ 통해 ìž�ë�™ìœ¼ë¡œ ì“°ì�¼ 수 있습니다.", + "tool.create.sand_paper.tooltip.condition1": "사용할 ë•Œ", + "tool.create.sand_paper.tooltip.behaviour1": "_반대_ _ì†�_ì—� 있는, 혹ì�€ _바닥ì—�_ _있는_ ì•„ì�´í…œì�„ 사í�¬ì§ˆ 합니다.", "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", @@ -1345,13 +1345,13 @@ "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", + "item.create.refined_radiance.tooltip.summary": "_í�¡ìˆ˜ë�œ_ _ë¹›_으로 제련ë�œ 색채 혼합물입니다.", "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", + "item.create.shadow_steel.tooltip.summary": "_공허_ì—�ì„œ 제련ë�œ 색채 혼합물입니다.", "item.create.crafter_slot_cover.tooltip": "SLOT COVER", - "item.create.crafter_slot_cover.tooltip.summary": "기계 조합기에서 _빈_ _슬롯_을 표시하기 위해 쓰입니다. 조합기들은 정사각형 모양을 형성할 필요는 없습니다. 재료가 서로 대각선인 조합법이있을 때 유용합니다.", + "item.create.crafter_slot_cover.tooltip.summary": "기계 조합기ì—�ì„œ _빈_ _슬롯_ì�„ 표시하기 위해 쓰입니다. 조합기들ì�€ 정사ê°�형 모양ì�„ 형성할 필요는 없습니다. 재료가 서로 대ê°�ì„ ì�¸ 조합법ì�´ìžˆì�„ ë•Œ 유용합니다.", "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "Work in progress!", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 72168412c..b78f446af 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -548,11 +548,11 @@ "create.gui.scrollInput.scrollToSelect": "Scroll om te selecteren", "create.gui.scrollInput.shiftScrollsFaster": "Shift om sneller te Scrollen", "create.gui.toolmenu.focusKey": "Hou [%1$s] ingedrukt om te Focusen", - "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", + "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", "create.gui.symmetryWand.mirrorType": "Spiegelen", "create.gui.symmetryWand.orientation": "Orientatie", - "create.symmetry.mirror.plane": "Spiegel één keer", + "create.symmetry.mirror.plane": "Spiegel één keer", "create.symmetry.mirror.doublePlane": "Rechthoekig", "create.symmetry.mirror.triplePlane": "Achthoekig", @@ -814,7 +814,7 @@ "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", + "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -860,7 +860,7 @@ "item.create.wand_of_symmetry.tooltip.condition1": "Waneer in de Actiebalk", "item.create.wand_of_symmetry.tooltip.behaviour1": "Blijft actief", "item.create.wand_of_symmetry.tooltip.control1": "R-Klik op de Grond", - "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", + "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", "item.create.wand_of_symmetry.tooltip.control2": "R-Klik in de Lucht", "item.create.wand_of_symmetry.tooltip.action2": "_Verwijderd_ de actieve Spiegel", "item.create.wand_of_symmetry.tooltip.control3": "R-Klik terwijl je Sluipt", @@ -935,7 +935,7 @@ "item.create.schematic_and_quill.tooltip.action3": "_Resets_ en verwijderd de selectie.", "block.create.schematicannon.tooltip": "BOUWTEKENINGKANNON", - "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", + "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", "block.create.schematicannon.tooltip.control1": "Wanneer R-Geklikt", "block.create.schematicannon.tooltip.action1": "Opent de _Interface_", @@ -985,7 +985,7 @@ "item.create.belt_connector.tooltip": "TRANSPORTBAND CONNECTOR", "item.create.belt_connector.tooltip.summary": "Verbind twee _Drijfassen_ met een _Mechanische_ _Transportband._ Verbonden drijfassen zullen dezelfde rotatiesneheid en richting hebben. De Transportband kan ook Entiteiten transporteren", "item.create.belt_connector.tooltip.control1": "R-Klikken op drijfas", - "item.create.belt_connector.tooltip.action1": "Selecteer de Drijfas als een katrol van de transportband. Beide geselecteerde drijfassen moeten _verticaal_, _horizontaal_ of _diagonaal_ in _één_ _lijn_ staan in de richting van de Transportbanden.", + "item.create.belt_connector.tooltip.action1": "Selecteer de Drijfas als een katrol van de transportband. Beide geselecteerde drijfassen moeten _verticaal_, _horizontaal_ of _diagonaal_ in _één_ _lijn_ staan in de richting van de Transportbanden.", "item.create.belt_connector.tooltip.control2": "R-Klikken terwijl je sluipt", "item.create.belt_connector.tooltip.action2": "_Reset_ de eerste geselecteerde positie van de Transportband", @@ -1044,7 +1044,7 @@ "block.create.crushing_wheel.tooltip": "VERPULVERAAR", "block.create.crushing_wheel.tooltip.summary": "Grote draaibare wielen die alles _verpulveren_ wat hun tegen houdt.", "block.create.crushing_wheel.tooltip.condition1": "Wanneer aangesloten op een andere Verpulveraar", - "block.create.crushing_wheel.tooltip.behaviour1": "Creëert een verpulverende installatie voor het verwerken van verschillende dingen. De tanden van de wielen moeten met elkaar in redstone_contact staan en beweken met _dezelfde_ _snelheid_ in _tegenovergestelde_ _richting._", + "block.create.crushing_wheel.tooltip.behaviour1": "Creëert een verpulverende installatie voor het verwerken van verschillende dingen. De tanden van de wielen moeten met elkaar in redstone_contact staan en beweken met _dezelfde_ _snelheid_ in _tegenovergestelde_ _richting._", "block.create.mechanical_press.tooltip": "MECHANISCHE PERS", "block.create.mechanical_press.tooltip.summary": "Een krachtige zuiger voor het samenpersen van objecten onder zich. Heeft een constante _Rotatiekracht_ nodig.", @@ -1064,9 +1064,9 @@ "block.create.mechanical_mixer.tooltip": "MECHANISCHE MIXER", "block.create.mechanical_mixer.tooltip.summary": "Een kinetische garde voor het toepassen van vormloze recepten op objecten eronder. Vereist constante _Rotatiekracht_ en een _Bekken_ hieronder geplaatst (met een tussenruimte).", "block.create.mechanical_mixer.tooltip.condition1": "Wanneer boven een Bekken", - "block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.", + "block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.", "block.create.mechanical_mixer.tooltip.condition2": "Wanneer gebruikt met een Sleutel", - "block.create.mechanical_mixer.tooltip.behaviour2": "_Configureert_ de minimale hoeveelheid _totale_ _ingredienten_ voor toegepaste recepten. Gebruik deze optie om _ongewenste_ _recepten_ met vergelijkbare maar minder ingrediënten _te_ _vermijden._", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configureert_ de minimale hoeveelheid _totale_ _ingredienten_ voor toegepaste recepten. Gebruik deze optie om _ongewenste_ _recepten_ met vergelijkbare maar minder ingrediënten _te_ _vermijden._", "block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER", "block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.", @@ -1100,12 +1100,12 @@ "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", "block.create.mechanical_piston.tooltip": "MECHANISCHE ZUIGER", - "block.create.mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Zuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", + "block.create.mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Zuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", "block.create.mechanical_piston.tooltip.condition1": "Wanneer gedraaid", "block.create.mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", "block.create.sticky_mechanical_piston.tooltip": "MECHANISCHE KLEEFZUIGER", - "block.create.sticky_mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Kleefzuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Kleefzuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Wanneer gedraaid", "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", @@ -1152,7 +1152,7 @@ "block.create.linear_chassis.tooltip": "LINEAAR FRAME", "block.create.linear_chassis.tooltip.summary": "A configurable base for Structures moved by a _Mechanische_ _Zuiger._ These Blocks have to form the first Layer of blocks in front of the Zuiger.", "block.create.linear_chassis.tooltip.condition1": "Wanneer bewogen door een Mechanische Zuiger", - "block.create.linear_chassis.tooltip.behaviour1": "_Beweegt_ alle _aangesloten_ _Frames_ met dezelfde oriëntatie, en daaraan bevestigde blokken. Wanneer de Zuiger wordt ingetrokken, worden blokken alleen getrokken als het framevlak _Kleverig_ (zie [Ctrl]).", + "block.create.linear_chassis.tooltip.behaviour1": "_Beweegt_ alle _aangesloten_ _Frames_ met dezelfde oriëntatie, en daaraan bevestigde blokken. Wanneer de Zuiger wordt ingetrokken, worden blokken alleen getrokken als het framevlak _Kleverig_ (zie [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.linear_chassis.tooltip.control1": "Wanneer R-Geklikt met een slijmbal", @@ -1207,7 +1207,7 @@ "block.create.redstone_link.tooltip.condition1": "Wanneer aangestuurd", "block.create.redstone_link.tooltip.behaviour1": "Het ontvangen van verbindingen met dezelfde frequentie levert een Redstone-signaal.", "block.create.redstone_link.tooltip.control1": "Wanneer R-Geklikt met een object", - "block.create.redstone_link.tooltip.action1": "Stelt de _Frequentie_ in op dat object. Een totaal van _twee_ _verschillende_ _objecten_ kan in combinatie worden gebruikt voor het definiëren van een frequentie", + "block.create.redstone_link.tooltip.action1": "Stelt de _Frequentie_ in op dat object. Een totaal van _twee_ _verschillende_ _objecten_ kan in combinatie worden gebruikt voor het definiëren van een frequentie", "block.create.redstone_link.tooltip.control2": "Wanneer R-Geklikt terwijl je sluipt", "block.create.redstone_link.tooltip.action2": "Schakelt tussen _ontvanger_ en _zender_modus.", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 345a72f3e..46813d936 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -21,7 +21,7 @@ "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.basin": "UNLOCALIZED: Basin", - "block.create.belt": "Esteira Mecânica", + "block.create.belt": "Esteira Mecânica", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Observador de Esteira", "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", @@ -140,8 +140,8 @@ "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "Caixa de Transmissão", - "block.create.gearshift": "Câmbio", + "block.create.gearbox": "Caixa de Transmissão", + "block.create.gearshift": "Câmbio", "block.create.granite_bricks": "Tijolos de Granito", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", @@ -166,30 +166,30 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "Areia Calcária", - "block.create.limestone": "Calcário", - "block.create.limestone_bricks": "Tijolos de Calcário", - "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", - "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", - "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", + "block.create.limesand": "Areia Calcária", + "block.create.limestone": "Calcário", + "block.create.limestone_bricks": "Tijolos de Calcário", + "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", + "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", + "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Pilar de Calcário", + "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis de Translado", "block.create.linked_extractor": "Extrator Conectado", "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Rolamento Mecânico", + "block.create.mechanical_bearing": "Rolamento Mecânico", "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", - "block.create.mechanical_drill": "Furadeira Mecânica", - "block.create.mechanical_harvester": "Coletor Mecânico", + "block.create.mechanical_drill": "Furadeira Mecânica", + "block.create.mechanical_harvester": "Coletor Mecânico", "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", - "block.create.mechanical_piston": "Pistão Mecânico", - "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", + "block.create.mechanical_piston": "Pistão Mecânico", + "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Prensa Mecânico", + "block.create.mechanical_press": "Prensa Mecânico", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", "block.create.millstone": "UNLOCALIZED: Millstone", @@ -257,7 +257,7 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Vara de Extensão do Pistão", + "block.create.piston_extension_pole": "Vara de Extensão do Pistão", "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", @@ -270,16 +270,16 @@ "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Calcário Polido", - "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", + "block.create.polished_limestone": "Calcário Polido", + "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Calcário Polido Resistido", - "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", + "block.create.polished_weathered_limestone": "Calcário Polido Resistido", + "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", @@ -287,10 +287,10 @@ "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.radial_chassis": "Chassis de Rotação", + "block.create.radial_chassis": "Chassis de Rotação", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Contato de Redstone", - "block.create.redstone_link": "Conexão de Redstone", + "block.create.redstone_link": "Conexão de Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "UNLOCALIZED: Rope", "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", @@ -313,13 +313,13 @@ "block.create.speedometer": "UNLOCALIZED: Speedometer", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", + "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", "block.create.stressometer": "UNLOCALIZED: Stressometer", "block.create.tiled_glass": "Vidro Entalhado", - "block.create.tiled_glass_pane": "Vidraça Entalhada", + "block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.transposer": "UNLOCALIZED: Transposer", - "block.create.turntable": "Mesa giratória", + "block.create.turntable": "Mesa giratória", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", @@ -327,17 +327,17 @@ "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "Roda de Água", - "block.create.weathered_limestone": "Calcário Resistido", - "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", + "block.create.water_wheel": "Roda de Ã�gua", + "block.create.weathered_limestone": "Calcário Resistido", + "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", + "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", @@ -347,7 +347,7 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", - "item.create.belt_connector": "Esteira Mecânica", + "item.create.belt_connector": "Esteira Mecânica", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", @@ -371,7 +371,7 @@ "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "Blockzapper Portátil", + "item.create.handheld_blockzapper": "Blockzapper Portátil", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", "item.create.iron_sheet": "Placas de Ferro", @@ -379,7 +379,7 @@ "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Hélice", + "item.create.propeller": "Hélice", "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", "item.create.rose_quartz": "Quartzo Rosa", @@ -388,7 +388,7 @@ "item.create.schematic_and_quill": "Esquema e pena", "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "Fertilizante de Árvore", + "item.create.tree_fertilizer": "Fertilizante de Ã�rvore", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", "item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", @@ -490,7 +490,7 @@ "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", "death.attack.create.fan_fire": "%1$s foi queimado por ar quente", "death.attack.create.fan_lava": "%1$s foi queimado pelo ventilador de lava", - "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", + "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", @@ -500,25 +500,25 @@ "create.recipe.crushing": "Moendo", "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.splashing": "Lavando em Massa", - "create.recipe.splashing.fan": "Ventilador atras de Água corrente", + "create.recipe.splashing.fan": "Ventilador atras de Ã�gua corrente", "create.recipe.smoking_via_fan": "Fumaceando em Massa", "create.recipe.smoking_via_fan.fan": "Ventilador atras de Fogo", "create.recipe.blasting_via_fan": "Fundindo em Massa", "create.recipe.blasting_via_fan.fan": "Ventilador atras de Lava", - "create.recipe.pressing": "Prensa Mecânica", + "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "UNLOCALIZED: Mixing", "create.recipe.packing": "UNLOCALIZED: Compacting", "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", + "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", "create.recipe.processing.chance": "%1$s%% de chance", "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", - "create.generic.range": "Área", + "create.generic.range": "Ã�rea", "create.generic.radius": "Raio", "create.generic.width": "UNLOCALIZED: Width", "create.generic.height": "UNLOCALIZED: Height", @@ -542,7 +542,7 @@ "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", + "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", @@ -550,7 +550,7 @@ "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", "create.gui.symmetryWand.mirrorType": "Espelhar", - "create.gui.symmetryWand.orientation": "Orientação", + "create.gui.symmetryWand.orientation": "Orientação", "create.symmetry.mirror.plane": "Espelhar uma vez", "create.symmetry.mirror.doublePlane": "Retangular", @@ -559,17 +559,17 @@ "create.orientation.orthogonal": "Ortogonal", "create.orientation.diagonal": "Diagonal", "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Através de Z", - "create.orientation.alongX": "Através de X", + "create.orientation.alongZ": "Através de Z", + "create.orientation.alongX": "Através de X", - "create.gui.blockzapper.title": "Blockzapper Portátil", - "create.gui.blockzapper.replaceMode": "Modo de Substituição", + "create.gui.blockzapper.title": "Blockzapper Portátil", + "create.gui.blockzapper.replaceMode": "Modo de Substituição", "create.gui.blockzapper.searchDiagonal": "Seguir as Diagonais", "create.gui.blockzapper.searchFuzzy": "Ignorar Material nas Bordas", - "create.gui.blockzapper.range": "Raio de Expansão", + "create.gui.blockzapper.range": "Raio de Expansão", "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "Padrões", - "create.gui.blockzapper.pattern.solid": "Sólido", + "create.gui.blockzapper.patternSection": "Padrões", + "create.gui.blockzapper.pattern.solid": "Sólido", "create.gui.blockzapper.pattern.checkered": "Xadrez", "create.gui.blockzapper.pattern.inversecheckered": "Xadrez invertido", "create.gui.blockzapper.pattern.chance25": "25% de chance", @@ -604,7 +604,7 @@ "create.blockzapper.componentTier.none": "Nada", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", + "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", "create.blockzapper.empty": "Sem Blocos!", "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", @@ -636,10 +636,10 @@ "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", "create.gui.adjustable_crate.title": "adjustable_crate", - "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", + "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", - "create.gui.stockpile_switch.lowerLimit": "Limite Mínimo", - "create.gui.stockpile_switch.upperLimit": "Limite Máximo", + "create.gui.stockpile_switch.lowerLimit": "Limite Mínimo", + "create.gui.stockpile_switch.upperLimit": "Limite Máximo", "create.gui.stockpile_switch.startAt": "Iniciar Sinal em", "create.gui.stockpile_switch.startAbove": "Iniciar Sinal acima de", "create.gui.stockpile_switch.stopAt": "Parar Sinal em", @@ -660,24 +660,24 @@ "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Primeira posição feita.", - "create.schematicAndQuill.secondPos": "Segunda posição feita.", + "create.schematicAndQuill.firstPos": "Primeira posição feita.", + "create.schematicAndQuill.secondPos": "Segunda posição feita.", "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", - "create.schematicAndQuill.abort": "Seleção removida.", + "create.schematicAndQuill.abort": "Seleção removida.", "create.schematicAndQuill.prompt": "Informe um nome para o Esquema:", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", - "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", - "create.schematic.position": "Posição", - "create.schematic.rotation": "Rotação", + "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", + "create.schematic.position": "Posição", + "create.schematic.rotation": "Rotação", "create.schematic.rotation.none": "Nada", - "create.schematic.rotation.cw90": "Sentido horário 90", - "create.schematic.rotation.cw180": "Sentido horário 180", - "create.schematic.rotation.cw270": "Sentido horário 270", + "create.schematic.rotation.cw90": "Sentido horário 90", + "create.schematic.rotation.cw180": "Sentido horário 180", + "create.schematic.rotation.cw270": "Sentido horário 270", "create.schematic.mirror": "Espelhar", "create.schematic.mirror.none": "Nada", - "create.schematic.mirror.frontBack": "Frente para Trás", + "create.schematic.mirror.frontBack": "Frente para Trás", "create.schematic.mirror.leftRight": "Esquerda para Direita", "create.schematic.tool.deploy": "Concluir", "create.schematic.tool.move": "Mover XZ", @@ -686,9 +686,9 @@ "create.schematic.tool.print": "Imprimir", "create.schematic.tool.flip": "Virar", "create.schematic.tool.deploy.description.0": "Move o lugar da estrutura.", - "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", - "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", + "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", + "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", "create.schematic.tool.move.description.0": "Vira o Esquema Horizontalmente", "create.schematic.tool.move.description.1": "Aponte ao Esquema e [CTRL]-Rolar para empurrar.", "create.schematic.tool.move.description.2": "", @@ -702,60 +702,60 @@ "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Coloca estrutura no mundo instantaneamente", - "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", - "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", + "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", + "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", - "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", + "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", + "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Sincronizando...", - "create.schematics.uploadTooLarge": "Seu esquema é muito grande", - "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", + "create.schematics.uploadTooLarge": "Seu esquema é muito grande", + "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", "create.gui.schematicTable.title": "Mesa de Desenho", "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", "create.gui.schematicTable.uploading": "Importando...", - "create.gui.schematicTable.finished": "Envio Concluído!", + "create.gui.schematicTable.finished": "Envio Concluído!", "create.gui.schematicannon.title": "Esquemaannon", - "create.gui.schematicannon.settingsTitle": "Parâmetros de Posicionamento", + "create.gui.schematicannon.settingsTitle": "Parâmetros de Posicionamento", "create.gui.schematicannon.listPrinter": "Impressora de Lista de Materiais", - "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", + "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", "create.gui.schematicannon.shotsRemaining": "Disparos faltantes: %1$s", "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", - "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", + "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", + "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", + "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", + "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", - "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", - "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", - "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", - "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", + "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", + "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", + "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", + "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", "create.schematicannon.status.idle": "Ocioso", "create.schematicannon.status.ready": "Pronto", "create.schematicannon.status.running": "Trabalhando", - "create.schematicannon.status.finished": "Concluído", + "create.schematicannon.status.finished": "Concluído", "create.schematicannon.status.paused": "Pausado", "create.schematicannon.status.stopped": "Parada", "create.schematicannon.status.noGunpowder": "UNLOCALIZED: Out of Gunpowder", - "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", - "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", + "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", + "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", "create.schematicannon.status.searching": "Procurando", "create.schematicannon.status.skipping": "Pulando", "create.schematicannon.status.missingBlock": "Bloco Faltante:", "create.schematicannon.status.placing": "Colocando", "create.schematicannon.status.clearing": "Limpando Blocos", - "create.schematicannon.status.schematicInvalid": "Esquema Inválido", - "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", + "create.schematicannon.status.schematicInvalid": "Esquema Inválido", + "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", @@ -856,24 +856,24 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", - "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", + "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", "item.create.wand_of_symmetry.tooltip.behaviour1": "Mantem-se Ativo", - "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", + "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", "item.create.wand_of_symmetry.tooltip.action1": "_Cria_ ou _Move_ o Espelho", "item.create.wand_of_symmetry.tooltip.control2": "B-Direito no Ar", "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", + "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", + "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", "item.create.handheld_blockzapper.tooltip.control1": "B-Esquerdo no Bloco", "item.create.handheld_blockzapper.tooltip.action1": "Define os blocos colocados pela ferramenta no bloco de destino.", "item.create.handheld_blockzapper.tooltip.control2": "B-Direito em Bloco", "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ ou _Substitui_ o bloco alvo.", "item.create.handheld_blockzapper.tooltip.control3": "B-Direito equando Abaixado", - "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", + "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", @@ -885,9 +885,9 @@ "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", - "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", + "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", - "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", + "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", @@ -915,8 +915,8 @@ "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", "item.create.schematic.tooltip": "ESQUEMA", - "item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", - "item.create.schematic.tooltip.condition1": "Quando Em mãos", + "item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", + "item.create.schematic.tooltip.condition1": "Quando Em mãos", "item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela", "item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado", "item.create.schematic.tooltip.action1": "Abre uma _Interface_ para informar as _Coordenadas_ exatas.", @@ -930,12 +930,12 @@ "item.create.schematic_and_quill.tooltip.control1": "B-Direito", "item.create.schematic_and_quill.tooltip.action1": "Selecione um canto / confirmar salvamento", "item.create.schematic_and_quill.tooltip.control2": "Ctrl Pressionado", - "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", + "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", "item.create.schematic_and_quill.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", + "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", "block.create.schematicannon.tooltip": "ESQUEMAANNON", - "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", + "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", "block.create.schematicannon.tooltip.control1": "Quando Apertado com B-Direito", "block.create.schematicannon.tooltip.action1": "Abre a _Interface_", @@ -945,49 +945,49 @@ "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", "block.create.shaft.tooltip": "EIXO", - "block.create.shaft.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta.", + "block.create.shaft.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta.", "block.create.cogwheel.tooltip": "RODA DENTADA", - "block.create.cogwheel.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta, e para _Rodas_ _Dentadas_ adjacentes.", + "block.create.cogwheel.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta, e para _Rodas_ _Dentadas_ adjacentes.", "block.create.large_cogwheel.tooltip": "RODA DENTADA GRADE", - "block.create.large_cogwheel.tooltip.summary": "Uma versão maior da _Roda_ _Dentada,_ permitindo mudança na _Velocidade_ de _Rotação_ quando conectada a sua Contraparte.", + "block.create.large_cogwheel.tooltip.summary": "Uma versão maior da _Roda_ _Dentada,_ permitindo mudança na _Velocidade_ de _Rotação_ quando conectada a sua Contraparte.", "block.create.encased_shaft.tooltip": "EIXO REVESTIDO", - "block.create.encased_shaft.tooltip.summary": " _Transmite_ _Rotação_ em uma linha reta. Apropriada para propagar Rotação através de Muros.", + "block.create.encased_shaft.tooltip.summary": " _Transmite_ _Rotação_ em uma linha reta. Apropriada para propagar Rotação através de Muros.", - "block.create.gearbox.tooltip": "CAIXA DE TRANSMISSÃO", - "block.create.gearbox.tooltip.summary": "_Transmite_ _Rotação_ em _Quatro_ _direções._ Reverte conexões diretas.", + "block.create.gearbox.tooltip": "CAIXA DE TRANSMISSÃO", + "block.create.gearbox.tooltip.summary": "_Transmite_ _Rotação_ em _Quatro_ _direções._ Reverte conexões diretas.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", - "block.create.gearshift.tooltip": "CÂMBIO", - "block.create.gearshift.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para eixos conectados.", + "block.create.gearshift.tooltip": "CÂMBIO", + "block.create.gearshift.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para eixos conectados.", "block.create.gearshift.tooltip.condition1": "Quando Ligado", - "block.create.gearshift.tooltip.behaviour1": "_Inverte_ a rotação de saída.", + "block.create.gearshift.tooltip.behaviour1": "_Inverte_ a rotação de saída.", "block.create.clutch.tooltip": "EMBREAGEM", - "block.create.clutch.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para os eixos conectados.", + "block.create.clutch.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para os eixos conectados.", "block.create.clutch.tooltip.condition1": "Quando Ligado", - "block.create.clutch.tooltip.behaviour1": "_Para_ de prover rotação para o outro lado.", + "block.create.clutch.tooltip.behaviour1": "_Para_ de prover rotação para o outro lado.", "block.create.encased_belt.tooltip": "ESTEIRA REVESTIDA", - "block.create.encased_belt.tooltip.summary": "_Transmite_ _Rotação_ através de si e para _Esteiras_ _Revestidas_ conectadas.", + "block.create.encased_belt.tooltip.summary": "_Transmite_ _Rotação_ através de si e para _Esteiras_ _Revestidas_ conectadas.", "block.create.encased_belt.tooltip.condition1": "Quando Conectadas com outra Esteira Revestida", - "block.create.encased_belt.tooltip.behaviour1": "Bloco Conectado irá ter a mesma velocidade de rotação, na mesma direção. Esteiras Conectadas não precisam estar viradas para mesma direção.", + "block.create.encased_belt.tooltip.behaviour1": "Bloco Conectado irá ter a mesma velocidade de rotação, na mesma direção. Esteiras Conectadas não precisam estar viradas para mesma direção.", "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", "block.create.adjustable_pulley.tooltip.condition1": "UNLOCALIZED: Redstone Control", "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", - "item.create.belt_connector.tooltip": "ESTEIRA MECÂNICA", - "item.create.belt_connector.tooltip.summary": "Conecta dois _Eixos_ com uma _Esteira_ _Mecânica._ Eixos conectados irá ter exatamente a mesma velocidade e direção de rotação. A Esteira pode atuar como um _Transporte_ para _Entidades._", + "item.create.belt_connector.tooltip": "ESTEIRA MECÂNICA", + "item.create.belt_connector.tooltip.summary": "Conecta dois _Eixos_ com uma _Esteira_ _Mecânica._ Eixos conectados irá ter exatamente a mesma velocidade e direção de rotação. A Esteira pode atuar como um _Transporte_ para _Entidades._", "item.create.belt_connector.tooltip.control1": "B-Direito em um Eixo", - "item.create.belt_connector.tooltip.action1": "Seleciona o eixo como uma polia da Esteira. Os dois Eixos selecionadas precisam estar _alinhados_ seja na _Vertical,_ _Horizontal_ ou _Diagonal_ na direção da Esteira.", + "item.create.belt_connector.tooltip.action1": "Seleciona o eixo como uma polia da Esteira. Os dois Eixos selecionadas precisam estar _alinhados_ seja na _Vertical,_ _Horizontal_ ou _Diagonal_ na direção da Esteira.", "item.create.belt_connector.tooltip.control2": "B-Direito enquanto Abaixado", - "item.create.belt_connector.tooltip.action2": "_Cancela_ a seleção da Posição para a Esteira", + "item.create.belt_connector.tooltip.action2": "_Cancela_ a seleção da Posição para a Esteira", "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", @@ -1006,17 +1006,17 @@ "block.create.creative_motor.tooltip": "UNLOCALIZED: CREATIVE MOTOR", "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", - "block.create.water_wheel.tooltip": "RODA DE ÁGUA", - "block.create.water_wheel.tooltip.summary": "Prove _Força_ _Rotacional_ tirada de _Correntes_ de _Água_ próximas.", + "block.create.water_wheel.tooltip": "RODA DE Ã�GUA", + "block.create.water_wheel.tooltip.summary": "Prove _Força_ _Rotacional_ tirada de _Correntes_ de _Ã�gua_ próximas.", "block.create.encased_fan.tooltip": "VENTILADO REVESTIDO", - "block.create.encased_fan.tooltip.summary": "Converte _Força_ _Rotacional_ em _Correntes_ de _Ar_ e vice-versa. Muitos usos.", + "block.create.encased_fan.tooltip.summary": "Converte _Força_ _Rotacional_ em _Correntes_ de _Ar_ e vice-versa. Muitos usos.", "block.create.encased_fan.tooltip.condition1": "Quando sobre Fogo", - "block.create.encased_fan.tooltip.behaviour1": "Prove _Força_ _Rotacional_ (precisa ser na vertical)", + "block.create.encased_fan.tooltip.behaviour1": "Prove _Força_ _Rotacional_ (precisa ser na vertical)", "block.create.encased_fan.tooltip.condition2": "Quando Invertido", - "block.create.encased_fan.tooltip.behaviour2": "_Empurra_ Entidades em um lado, _Puxa_ entidades no outro. Força e Velocidade dependem da Rotação de entrada.", - "block.create.encased_fan.tooltip.condition3": "Quando ar flui através de blocos especiais", - "block.create.encased_fan.tooltip.behaviour3": "Processa itens na frente do Bloco: _Água_ alva, _Fogo_ defuma, e _Lava_ derrete o ingrediente.", + "block.create.encased_fan.tooltip.behaviour2": "_Empurra_ Entidades em um lado, _Puxa_ entidades no outro. Força e Velocidade dependem da Rotação de entrada.", + "block.create.encased_fan.tooltip.condition3": "Quando ar flui através de blocos especiais", + "block.create.encased_fan.tooltip.behaviour3": "Processa itens na frente do Bloco: _Ã�gua_ alva, _Fogo_ defuma, e _Lava_ derrete o ingrediente.", "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", @@ -1031,8 +1031,8 @@ "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Rotated", "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", - "block.create.turntable.tooltip": "MESA GIRATÓRIA", - "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", + "block.create.turntable.tooltip": "MESA GIRATÓRIA", + "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1042,15 +1042,15 @@ "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", "block.create.crushing_wheel.tooltip": "RODA DE MOER", - "block.create.crushing_wheel.tooltip.summary": "Grandes rodas giratórias que _esmagam_ qualquer coisa que impeça seu movimento.", + "block.create.crushing_wheel.tooltip.summary": "Grandes rodas giratórias que _esmagam_ qualquer coisa que impeça seu movimento.", "block.create.crushing_wheel.tooltip.condition1": "Quando conectado a outras Rodas de Moer", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma uma estrutura de esmagamento para processar uma variedade de coisas. Os Dentes da rota precisam estar conectados e se movimentando com a _mesma_ _velocidade_ em _direções_ _opostas._", + "block.create.crushing_wheel.tooltip.behaviour1": "Forma uma estrutura de esmagamento para processar uma variedade de coisas. Os Dentes da rota precisam estar conectados e se movimentando com a _mesma_ _velocidade_ em _direções_ _opostas._", - "block.create.mechanical_press.tooltip": "PRENSA MECÂNICA", - "block.create.mechanical_press.tooltip.summary": "Um forte pistão usado para comprimir itens abaixo dele. Precisa de _Força_ _Rotacional_ constante", + "block.create.mechanical_press.tooltip": "PRENSA MECÂNICA", + "block.create.mechanical_press.tooltip.summary": "Um forte pistão usado para comprimir itens abaixo dele. Precisa de _Força_ _Rotacional_ constante", "block.create.mechanical_press.tooltip.condition1": "Quando Ligado com Redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Inicia_ compressão de itens jogados abaixo dele.", - "block.create.mechanical_press.tooltip.condition2": "Quando Sobre uma Esteira Mecânica", + "block.create.mechanical_press.tooltip.behaviour1": "_Inicia_ compressão de itens jogados abaixo dele.", + "block.create.mechanical_press.tooltip.condition2": "Quando Sobre uma Esteira Mecânica", "block.create.mechanical_press.tooltip.behaviour2": "_Automaticamente_ comprime itens que passando na Esteira.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", @@ -1099,27 +1099,27 @@ "block.create.rotation_speed_controller.tooltip.condition1": "UNLOCALIZED: When Attached to Large Cogwheel", "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", - "block.create.mechanical_piston.tooltip": "PISTÃO MECÂNICO", - "block.create.mechanical_piston.tooltip.summary": "Uma verão melhorada do _Pistão,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. _Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", + "block.create.mechanical_piston.tooltip": "PISTÃO MECÂNICO", + "block.create.mechanical_piston.tooltip.summary": "Uma verão melhorada do _Pistão,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. _Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", "block.create.mechanical_piston.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", + "block.create.mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", - "block.create.sticky_mechanical_piston.tooltip": "PISTÃO MECÂNICO GRUDENTO", - "block.create.sticky_mechanical_piston.tooltip.summary": "Uma versão melhorada do _Pistão_ _Grudento,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", + "block.create.sticky_mechanical_piston.tooltip": "PISTÃO MECÂNICO GRUDENTO", + "block.create.sticky_mechanical_piston.tooltip.summary": "Uma versão melhorada do _Pistão_ _Grudento,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Rodado", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", - "block.create.piston_extension_pole.tooltip": "VARA DE EXTENSÃO DO PISTÃO", - "block.create.piston_extension_pole.tooltip.summary": "Aumenta o alcance de _Pistões_ _Mecânicos_", - "block.create.piston_extension_pole.tooltip.condition1": "Quando preso a um Pistão Mecânico", - "block.create.piston_extension_pole.tooltip.behaviour1": "Aumenta a extensão dos pistões em 1 bloco", + "block.create.piston_extension_pole.tooltip": "VARA DE EXTENSÃO DO PISTÃO", + "block.create.piston_extension_pole.tooltip.summary": "Aumenta o alcance de _Pistões_ _Mecânicos_", + "block.create.piston_extension_pole.tooltip.condition1": "Quando preso a um Pistão Mecânico", + "block.create.piston_extension_pole.tooltip.behaviour1": "Aumenta a extensão dos pistões em 1 bloco", - "block.create.mechanical_bearing.tooltip": "ROLAMENTO MECÂNICO", - "block.create.mechanical_bearing.tooltip.summary": "Usado para rotacionar _estruturas_ _grandes_ ou geração de _Força_ _Rotacional_ do vento.", + "block.create.mechanical_bearing.tooltip": "ROLAMENTO MECÂNICO", + "block.create.mechanical_bearing.tooltip.summary": "Usado para rotacionar _estruturas_ _grandes_ ou geração de _Força_ _Rotacional_ do vento.", "block.create.mechanical_bearing.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_bearing.tooltip.behaviour1": "Começa a rotacionar _Chassis_ de _Rotação_ conectados e blocos conectados a eles.", + "block.create.mechanical_bearing.tooltip.behaviour1": "Começa a rotacionar _Chassis_ de _Rotação_ conectados e blocos conectados a eles.", "block.create.mechanical_bearing.tooltip.condition2": "Quando Ligado por Redstone", - "block.create.mechanical_bearing.tooltip.behaviour2": "Começa a passar _Força_ _Rotacional_ das estruturas conectadas. A estrutura dele incluir _Blocos_ de _Vela_ válidos (atualmente qualquer Bloco de Lã).", + "block.create.mechanical_bearing.tooltip.behaviour2": "Começa a passar _Força_ _Rotacional_ das estruturas conectadas. A estrutura dele incluir _Blocos_ de _Vela_ válidos (atualmente qualquer Bloco de Lã).", "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", @@ -1150,34 +1150,34 @@ "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", "block.create.linear_chassis.tooltip": "CHASSIS DE TRANSLADO", - "block.create.linear_chassis.tooltip.summary": "Uma base configurável para Estruturas serem movidas por um _Pistão_ _Mecânico._ Esses Blocos precisam formas uma camada de blocos na frente do Pistão.", - "block.create.linear_chassis.tooltip.condition1": "Quando movido por Pistão Mecânico", - "block.create.linear_chassis.tooltip.behaviour1": "_Move_ todos os _Chassis_ _conectados_ na mesma orientação, e Blocos conectados a frente dele. Quando o Pistão volta, blocos apenas serão puxados se a face do chassis for _Grudenta_ (Ver [Ctrl]).", + "block.create.linear_chassis.tooltip.summary": "Uma base configurável para Estruturas serem movidas por um _Pistão_ _Mecânico._ Esses Blocos precisam formas uma camada de blocos na frente do Pistão.", + "block.create.linear_chassis.tooltip.condition1": "Quando movido por Pistão Mecânico", + "block.create.linear_chassis.tooltip.behaviour1": "_Move_ todos os _Chassis_ _conectados_ na mesma orientação, e Blocos conectados a frente dele. Quando o Pistão volta, blocos apenas serão puxados se a face do chassis for _Grudenta_ (Ver [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.linear_chassis.tooltip.control1": "Quando clicado com B-Direito com Gosma de Slime", - "block.create.linear_chassis.tooltip.action1": "Torna a face clicada _Grudenta._ Quando o pistão volta, o chassis irá _puxar_ _junto_ todos os Blocos conectados na sua coluna e no Alcance configurado.", + "block.create.linear_chassis.tooltip.action1": "Torna a face clicada _Grudenta._ Quando o pistão volta, o chassis irá _puxar_ _junto_ todos os Blocos conectados na sua coluna e no Alcance configurado.", - "block.create.radial_chassis.tooltip": "CHASSIS DE ROTAÇÃO", - "block.create.radial_chassis.tooltip.summary": "Nessário para rotacionar estruturas om um _Rolamento_ _Mecânico._ ", + "block.create.radial_chassis.tooltip": "CHASSIS DE ROTAÇÃO", + "block.create.radial_chassis.tooltip.summary": "Nessário para rotacionar estruturas om um _Rolamento_ _Mecânico._ ", "block.create.radial_chassis.tooltip.condition1": "Quando Rotacionado por Rolamento", - "block.create.radial_chassis.tooltip.behaviour1": "_Rotaciona_ todos os blocos conectados a lados _Grudentos_ (Veja [Ctrl]) dentro do alcance configurado no seu entorno. _Propaga_ a rotação para outros Chassis de Rotação conectados.", + "block.create.radial_chassis.tooltip.behaviour1": "_Rotaciona_ todos os blocos conectados a lados _Grudentos_ (Veja [Ctrl]) dentro do alcance configurado no seu entorno. _Propaga_ a rotação para outros Chassis de Rotação conectados.", "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.radial_chassis.tooltip.control1": "Quando clicado com B-Direito com Goma de Slime", - "block.create.radial_chassis.tooltip.action1": "Torna face clicada em _Grudenta._ Quando o Chassis girar, todos os blocos conectados nesse lado irão girar junto.", + "block.create.radial_chassis.tooltip.action1": "Torna face clicada em _Grudenta._ Quando o Chassis girar, todos os blocos conectados nesse lado irão girar junto.", - "block.create.mechanical_drill.tooltip": "FURADEIRA MECÂNICA", - "block.create.mechanical_drill.tooltip.summary": "Um dispositivo mecânido feito para _quebrar_ _blocos._", + "block.create.mechanical_drill.tooltip": "FURADEIRA MECÂNICA", + "block.create.mechanical_drill.tooltip.summary": "Um dispositivo mecânido feito para _quebrar_ _blocos._", "block.create.mechanical_drill.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_drill.tooltip.behaviour1": "Atua como um Bloco Quebrador _estacionário._ Também _machuca_ _entidades_ na sua área de efeito.", - "block.create.mechanical_drill.tooltip.condition2": "Quando Empurrado por Pistão Mecânico", - "block.create.mechanical_drill.tooltip.behaviour2": "Quebra os Blocos na direção do avanço da broca.", + "block.create.mechanical_drill.tooltip.behaviour1": "Atua como um Bloco Quebrador _estacionário._ Também _machuca_ _entidades_ na sua área de efeito.", + "block.create.mechanical_drill.tooltip.condition2": "Quando Empurrado por Pistão Mecânico", + "block.create.mechanical_drill.tooltip.behaviour2": "Quebra os Blocos na direção do avanço da broca.", - "block.create.mechanical_harvester.tooltip": "COLETOR MECÂNICO", - "block.create.mechanical_harvester.tooltip.summary": "Um cortador de plantas mecânico indicado para automação de culturas de médio porte", - "block.create.mechanical_harvester.tooltip.condition1": "Quando Empurrado por Pistão Mecânico", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Colhe_ todas as _safra_ _madura_ que a lâmina passar sobre, e os retorna a estado de crescimento inicial.", + "block.create.mechanical_harvester.tooltip": "COLETOR MECÂNICO", + "block.create.mechanical_harvester.tooltip.summary": "Um cortador de plantas mecânico indicado para automação de culturas de médio porte", + "block.create.mechanical_harvester.tooltip.condition1": "Quando Empurrado por Pistão Mecânico", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Colhe_ todas as _safra_ _madura_ que a lâmina passar sobre, e os retorna a estado de crescimento inicial.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1194,20 +1194,20 @@ "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", - "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", - "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", + "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", + "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - "block.create.stockpile_switch.tooltip.condition2": "Quando acima do Limite Máximo", - "block.create.stockpile_switch.tooltip.behaviour2": "Começa a enviar _Sinal_ de _Redstone_ até chegar no Limite Mínio novamente.", + "block.create.stockpile_switch.tooltip.condition2": "Quando acima do Limite Máximo", + "block.create.stockpile_switch.tooltip.behaviour2": "Começa a enviar _Sinal_ de _Redstone_ até chegar no Limite Mínio novamente.", "block.create.stockpile_switch.tooltip.control1": "Quando clicado com B-Direito", - "block.create.stockpile_switch.tooltip.action1": "Abre a _Interface_ de _Configuração_", + "block.create.stockpile_switch.tooltip.action1": "Abre a _Interface_ de _Configuração_", - "block.create.redstone_link.tooltip": "CONEXÃO DE REDSTONE", - "block.create.redstone_link.tooltip.summary": "Saida para conexões _Redstone_ _Sem-Fio._ Pode ter _Frequências_ usando qualquer item. Distancia do Sinal é limitada, mas resoavelmente justa.", + "block.create.redstone_link.tooltip": "CONEXÃO DE REDSTONE", + "block.create.redstone_link.tooltip.summary": "Saida para conexões _Redstone_ _Sem-Fio._ Pode ter _Frequências_ usando qualquer item. Distancia do Sinal é limitada, mas resoavelmente justa.", "block.create.redstone_link.tooltip.condition1": "Quando Ligado", - "block.create.redstone_link.tooltip.behaviour1": "Recebendo Conexões da mesma _Frequência_ irá gerar um sinal de Redstone.", + "block.create.redstone_link.tooltip.behaviour1": "Recebendo Conexões da mesma _Frequência_ irá gerar um sinal de Redstone.", "block.create.redstone_link.tooltip.control1": "Quando clicado com B-Direito com um Item", - "block.create.redstone_link.tooltip.action1": "Altera a _Frequência_ para aquele item. Até _dois_ _itens_ _diferentes_ podem ser combinados para definir uma Frequência.", + "block.create.redstone_link.tooltip.action1": "Altera a _Frequência_ para aquele item. Até _dois_ _itens_ _diferentes_ podem ser combinados para definir uma Frequência.", "block.create.redstone_link.tooltip.control2": "Quando clicado com B-Direito enquanto Abaixado", "block.create.redstone_link.tooltip.action2": "Muda entre Modo _Receptor_ e _Transmissor_ .", @@ -1217,30 +1217,30 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "CONTATO DE REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Um dispositivo simples para Mecanimos de Redstone avançados.", + "block.create.redstone_contact.tooltip.summary": "Um dispositivo simples para Mecanimos de Redstone avançados.", "block.create.redstone_contact.tooltip.condition1": "Quando apontando para outro Contato", - "block.create.redstone_contact.tooltip.behaviour1": "Provê um _Sinal_ de _Redstone_", - "block.create.redstone_contact.tooltip.condition2": "Quando movido por Pistão Mecânico", - "block.create.redstone_contact.tooltip.behaviour2": "Ativa todos os Contatos imóveis na passagem", + "block.create.redstone_contact.tooltip.behaviour1": "Provê um _Sinal_ de _Redstone_", + "block.create.redstone_contact.tooltip.condition2": "Quando movido por Pistão Mecânico", + "block.create.redstone_contact.tooltip.behaviour2": "Ativa todos os Contatos imóveis na passagem", "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", + "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", "block.create.adjustable_crate.tooltip.control1": "Quando clicado com B-Direito", "block.create.adjustable_crate.tooltip.action1": "Abre a _Interface_", "block.create.creative_crate.tooltip": "CRIATIVADOR ESQUEMAANNON", - "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", + "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRATOR", - "block.create.extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ conectado e os joga no chão. Não irá jogar Itens até o espaço ser limpo. Pode ser configurado como para ser um _filtro._", + "block.create.extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ conectado e os joga no chão. Não irá jogar Itens até o espaço ser limpo. Pode ser configurado como para ser um _filtro._", "block.create.extractor.tooltip.condition1": "Quando Ligado por Redstone", "block.create.extractor.tooltip.behaviour1": "_Para_ o Extractor", "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", - "block.create.extractor.tooltip.control1": "B-Direito no Espaço de Filtro", - "block.create.extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", + "block.create.extractor.tooltip.control1": "B-Direito no Espaço de Filtro", + "block.create.extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", @@ -1259,13 +1259,13 @@ "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", "block.create.linked_extractor.tooltip": "EXTRATOR CONECTADO", - "block.create.linked_extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ e os joga no chão. Não vai jogar Itens até que o espaço ser limpo. Pode ser configurado como para ser um _filtro._ Pode ser controlado remotamente via _Conexão_ de _Redstone._", - "block.create.linked_extractor.tooltip.condition1": "Quando Conexão de Redstone Ativa", + "block.create.linked_extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ e os joga no chão. Não vai jogar Itens até que o espaço ser limpo. Pode ser configurado como para ser um _filtro._ Pode ser controlado remotamente via _Conexão_ de _Redstone._", + "block.create.linked_extractor.tooltip.condition1": "Quando Conexão de Redstone Ativa", "block.create.linked_extractor.tooltip.behaviour1": "_Para_ o Extrator", - "block.create.linked_extractor.tooltip.control1": "B-Direito no Espaço de Filtro", - "block.create.linked_extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", - "block.create.linked_extractor.tooltip.control2": "B-Direito no Espaço de Frequência", - "block.create.linked_extractor.tooltip.action2": "Configura a _pilha_ atualmente _presente_ como parte da Frequência a ouvir. Quando um _Conexão_ de _Redstone_ transmissor da mesma frequência é ligado, esse Extrator irá parar.", + "block.create.linked_extractor.tooltip.control1": "B-Direito no Espaço de Filtro", + "block.create.linked_extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", + "block.create.linked_extractor.tooltip.control2": "B-Direito no Espaço de Frequência", + "block.create.linked_extractor.tooltip.action2": "Configura a _pilha_ atualmente _presente_ como parte da Frequência a ouvir. Quando um _Conexão_ de _Redstone_ transmissor da mesma frequência é ligado, esse Extrator irá parar.", "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", @@ -1277,7 +1277,7 @@ "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", "block.create.funnel.tooltip": "FUNIL DE ESTEIRA", - "block.create.funnel.tooltip.summary": "Coleta itens passando numa _Esteira_ _Mecânica_ e os insere no _Inventário_ conetado, se possível. Precisa estar diretamente _sobre_ uma Esteira, com a abertura virada contra o movimento da Esteira. O inventário precisa estar na mesma altura que o funil.", + "block.create.funnel.tooltip.summary": "Coleta itens passando numa _Esteira_ _Mecânica_ e os insere no _Inventário_ conetado, se possível. Precisa estar diretamente _sobre_ uma Esteira, com a abertura virada contra o movimento da Esteira. O inventário precisa estar na mesma altura que o funil.", "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", @@ -1294,9 +1294,9 @@ "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", "block.create.belt_observer.tooltip": "OBSERVADOR DE ESTEIRA", - "block.create.belt_observer.tooltip.summary": "Detecta os itens passando numa _Esteira_ _Mecânica_ a sua frente. Funciona bem com um _Pistão_ em cima, empurrando certos itens.", + "block.create.belt_observer.tooltip.summary": "Detecta os itens passando numa _Esteira_ _Mecânica_ a sua frente. Funciona bem com um _Pistão_ em cima, empurrando certos itens.", "block.create.belt_observer.tooltip.condition1": "Quando item bate com Filtro", - "block.create.belt_observer.tooltip.behaviour1": "Provê um _Pulso_ curto de _Redstone_ para todos os lados. Um Filtro vazio considera todos os itens passando.", + "block.create.belt_observer.tooltip.behaviour1": "Provê um _Pulso_ curto de _Redstone_ para todos os lados. Um Filtro vazio considera todos os itens passando.", "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", @@ -1305,10 +1305,10 @@ "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", "block.create.pulse_repeater.tooltip": "REPETIDOR DE PULSO", - "block.create.pulse_repeater.tooltip.summary": "Um circuito simples para cortar pulsos de Redstone até um comprimento de _1_ _tick._", + "block.create.pulse_repeater.tooltip.summary": "Um circuito simples para cortar pulsos de Redstone até um comprimento de _1_ _tick._", "block.create.adjustable_repeater.tooltip": "REPETIDOR FLEX", - "block.create.adjustable_repeater.tooltip.summary": "Um um _Repetidor_ de _Redstone_ avançado com um _Delay_ _configurável_ de até 30 Minutos.", + "block.create.adjustable_repeater.tooltip.summary": "Um um _Repetidor_ de _Redstone_ avançado com um _Delay_ _configurável_ de até 30 Minutos.", "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index d4a63d2ae..551f1088a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -5,12 +5,12 @@ "block.create.acacia_window": "UNLOCALIZED: Acacia Window", "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_crate": "Гибкий ящик", + "block.create.adjustable_crate": "Гибкий Ñ�щик", "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "Настраиваемый повторитель", + "block.create.adjustable_repeater": "Ð�аÑ�траиваемый повторитель", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", - "block.create.andesite_bricks": "Андезитовые кирпичи", + "block.create.andesite_bricks": "Ð�ндезитовые кирпичи", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", @@ -21,9 +21,9 @@ "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.basin": "UNLOCALIZED: Basin", - "block.create.belt": "Механическая лента", + "block.create.belt": "МеханичеÑ�каÑ� лента", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "Ленточный сканер", + "block.create.belt_observer": "Ленточный Ñ�канер", "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", @@ -39,15 +39,15 @@ "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", - "block.create.clutch": "Переключаемая муфта", - "block.create.cogwheel": "Шестерня", + "block.create.clutch": "ПереключаемаÑ� муфта", + "block.create.cogwheel": "ШеÑ�тернÑ�", "block.create.copper_block": "UNLOCALIZED: Copper Block", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", - "block.create.creative_crate": "Креативный ящик", + "block.create.creative_crate": "Креативный Ñ�щик", "block.create.creative_motor": "UNLOCALIZED: Creative Motor", - "block.create.crushing_wheel": "Дробильное колесо", + "block.create.crushing_wheel": "Дробильное колеÑ�о", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", @@ -64,7 +64,7 @@ "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", "block.create.deployer": "UNLOCALIZED: Deployer", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "Диоритовые кирпичи", + "block.create.diorite_bricks": "Диоритовые кирпичи", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", @@ -73,20 +73,20 @@ "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "Доломит", - "block.create.dolomite_bricks": "Доломитовые кирпичи", - "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", - "block.create.dolomite_bricks_stairs": "Ступеньки из доломитового кирпича", - "block.create.dolomite_bricks_wall": "Ограда из доломитового кирпича", + "block.create.dolomite": "Доломит", + "block.create.dolomite_bricks": "Доломитовые кирпичи", + "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", + "block.create.dolomite_bricks_stairs": "Ступеньки из доломитового кирпича", + "block.create.dolomite_bricks_wall": "Ограда из доломитового кирпича", "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Доломитовая колонна", - "block.create.encased_belt": "Ленточный привод", - "block.create.encased_fan": "Вентилятор", - "block.create.encased_shaft": "Вальный привод", - "block.create.extractor": "Экстрактор", + "block.create.dolomite_pillar": "ДоломитоваÑ� колонна", + "block.create.encased_belt": "Ленточный привод", + "block.create.encased_fan": "ВентилÑ�тор", + "block.create.encased_shaft": "Вальный привод", + "block.create.extractor": "ЭкÑ�трактор", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", @@ -128,21 +128,21 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Ленточная воронка", + "block.create.funnel": "ЛенточнаÑ� воронка", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", - "block.create.gabbro": "Габбро", - "block.create.gabbro_bricks": "Габбровые кирпичи", + "block.create.gabbro": "Габбро", + "block.create.gabbro_bricks": "Габбровые кирпичи", "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "Ступеньки из габбрового кирпича", - "block.create.gabbro_bricks_wall": "Ограда из габбрового кирпича", + "block.create.gabbro_bricks_stairs": "Ступеньки из габбрового кирпича", + "block.create.gabbro_bricks_wall": "Ограда из габбрового кирпича", "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "Муфта", - "block.create.gearshift": "Реверсивная муфта", - "block.create.granite_bricks": "Гранитные кирпичи", + "block.create.gearbox": "Муфта", + "block.create.gearshift": "РеверÑ�ивнаÑ� муфта", + "block.create.granite_bricks": "Гранитные кирпичи", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", @@ -156,7 +156,7 @@ "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Большая шестерня", + "block.create.large_cogwheel": "БольшаÑ� шеÑ�тернÑ�", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -166,30 +166,30 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "Известь", - "block.create.limestone": "Известняк", - "block.create.limestone_bricks": "Известковые кирпичи", - "block.create.limestone_bricks_slab": "Плита из известкового кирпича", - "block.create.limestone_bricks_stairs": "Ступеньки из известкового кирпича", - "block.create.limestone_bricks_wall": "Ограда из известкового кирпича", + "block.create.limesand": "ИзвеÑ�Ñ‚ÑŒ", + "block.create.limestone": "ИзвеÑ�тнÑ�к", + "block.create.limestone_bricks": "ИзвеÑ�тковые кирпичи", + "block.create.limestone_bricks_slab": "Плита из извеÑ�ткового кирпича", + "block.create.limestone_bricks_stairs": "Ступеньки из извеÑ�ткового кирпича", + "block.create.limestone_bricks_wall": "Ограда из извеÑ�ткового кирпича", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Известняковая колонна", - "block.create.linear_chassis": "Поступательная рама", - "block.create.linked_extractor": "Сигнальный экстрактор", + "block.create.limestone_pillar": "ИзвеÑ�тнÑ�коваÑ� колонна", + "block.create.linear_chassis": "ПоÑ�тупательнаÑ� рама", + "block.create.linked_extractor": "Сигнальный Ñ�кÑ�трактор", "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Механический подшипник", + "block.create.mechanical_bearing": "МеханичеÑ�кий подшипник", "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", - "block.create.mechanical_drill": "Механический бур", - "block.create.mechanical_harvester": "Механический комбайнер", + "block.create.mechanical_drill": "МеханичеÑ�кий бур", + "block.create.mechanical_harvester": "МеханичеÑ�кий комбайнер", "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", - "block.create.mechanical_piston": "Механический поршень", - "block.create.mechanical_piston_head": "Ствол механического поршня", + "block.create.mechanical_piston": "МеханичеÑ�кий поршень", + "block.create.mechanical_piston_head": "Ствол механичеÑ�кого поршнÑ�", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Механический пресс", + "block.create.mechanical_press": "МеханичеÑ�кий преÑ�Ñ�", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", "block.create.millstone": "UNLOCALIZED: Millstone", @@ -257,46 +257,46 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Удлинитель поршня", + "block.create.piston_extension_pole": "Удлинитель поршнÑ�", "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "Полированный доломит", + "block.create.polished_dolomite": "Полированный доломит", "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "Полированный габбро", + "block.create.polished_gabbro": "Полированный габбро", "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Полированный известняк", - "block.create.polished_limestone_slab": "Плита из полированного известняка", + "block.create.polished_limestone": "Полированный извеÑ�тнÑ�к", + "block.create.polished_limestone_slab": "Плита из полированного извеÑ�тнÑ�ка", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Полированный обветренный известняк", - "block.create.polished_weathered_limestone_slab": "Плита из полированного обветренного известняка", + "block.create.polished_weathered_limestone": "Полированный обветренный извеÑ�тнÑ�к", + "block.create.polished_weathered_limestone_slab": "Плита из полированного обветренного извеÑ�тнÑ�ка", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", - "block.create.pulse_repeater": "Повторитель импульса", - "block.create.radial_chassis": "Поворотная рама", + "block.create.pulse_repeater": "Повторитель импульÑ�а", + "block.create.radial_chassis": "ПоворотнаÑ� рама", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "Контактное соединение", - "block.create.redstone_link": "Сигнальное соединение", + "block.create.redstone_contact": "Контактное Ñ�оединение", + "block.create.redstone_link": "Сигнальное Ñ�оединение", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "UNLOCALIZED: Rope", "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", - "block.create.schematic_table": "Стол для схем", - "block.create.schematicannon": "Схемопушка", + "block.create.schematic_table": "Стол длÑ� Ñ�хем", + "block.create.schematicannon": "Схемопушка", "block.create.scoria": "UNLOCALIZED: Scoria", "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", @@ -309,17 +309,17 @@ "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", - "block.create.shaft": "Вал", + "block.create.shaft": "Вал", "block.create.speedometer": "UNLOCALIZED: Speedometer", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "Липкий механический поршень", - "block.create.stockpile_switch": "Коммутатор хранилища", + "block.create.sticky_mechanical_piston": "Липкий механичеÑ�кий поршень", + "block.create.stockpile_switch": "Коммутатор хранилища", "block.create.stressometer": "UNLOCALIZED: Stressometer", - "block.create.tiled_glass": "Плиточное стекло", - "block.create.tiled_glass_pane": "Плиточная стеклянная панель", + "block.create.tiled_glass": "Плиточное Ñ�текло", + "block.create.tiled_glass_pane": "ПлиточнаÑ� Ñ�теклÑ�ннаÑ� панель", "block.create.transposer": "UNLOCALIZED: Transposer", - "block.create.turntable": "Поворотный стол", + "block.create.turntable": "Поворотный Ñ�тол", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", @@ -327,17 +327,17 @@ "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "Водяное колесо", - "block.create.weathered_limestone": "Обветренный известняк", - "block.create.weathered_limestone_bricks": "Кирпичи из обветренного известняка", - "block.create.weathered_limestone_bricks_slab": "Плита из кирпича из обветренного известняка", - "block.create.weathered_limestone_bricks_stairs": "Ступеньки из кирпича из обветренного известняка", - "block.create.weathered_limestone_bricks_wall": "Ограда из кирпича из обветренного известняка", + "block.create.water_wheel": "ВодÑ�ное колеÑ�о", + "block.create.weathered_limestone": "Обветренный извеÑ�тнÑ�к", + "block.create.weathered_limestone_bricks": "Кирпичи из обветренного извеÑ�тнÑ�ка", + "block.create.weathered_limestone_bricks_slab": "Плита из кирпича из обветренного извеÑ�тнÑ�ка", + "block.create.weathered_limestone_bricks_stairs": "Ступеньки из кирпича из обветренного извеÑ�тнÑ�ка", + "block.create.weathered_limestone_bricks_wall": "Ограда из кирпича из обветренного извеÑ�тнÑ�ка", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Колонна из обветренного известняка", + "block.create.weathered_limestone_pillar": "Колонна из обветренного извеÑ�тнÑ�ка", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", @@ -347,7 +347,7 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", - "item.create.belt_connector": "Механическая лента", + "item.create.belt_connector": "МеханичеÑ�каÑ� лента", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", @@ -363,34 +363,34 @@ "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "UNLOCALIZED: Deforester", - "item.create.dough": "Тесто", + "item.create.dough": "ТеÑ�то", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", - "item.create.empty_schematic": "Пустая схема", + "item.create.empty_schematic": "ПуÑ�таÑ� Ñ�хема", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "Фильтр", + "item.create.filter": "Фильтр", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "Портативный размещатель блоков", + "item.create.handheld_blockzapper": "Портативный размещатель блоков", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", - "item.create.iron_sheet": "Железная пластина", + "item.create.iron_sheet": "ЖелезнаÑ� плаÑ�тина", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Пропеллер", + "item.create.propeller": "Пропеллер", "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", - "item.create.rose_quartz": "Розовый Кварц", + "item.create.rose_quartz": "Розовый Кварц", "item.create.sand_paper": "UNLOCALIZED: Sand Paper", - "item.create.schematic": "Схема", - "item.create.schematic_and_quill": "Схема и перо", + "item.create.schematic": "Схема", + "item.create.schematic_and_quill": "Схема и перо", "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "Удобрение для деревьев", + "item.create.tree_fertilizer": "Удобрение длÑ� деревьев", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "Посох симметрии", + "item.create.wand_of_symmetry": "ПоÑ�ох Ñ�имметрии", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", "item.create.whisk": "UNLOCALIZED: Whisk", "item.create.wrench": "UNLOCALIZED: Wrench", @@ -487,94 +487,94 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s был переработан дробильными колёсами", - "death.attack.create.fan_fire": "%1$s сгорел заживо от горячего воздуха.", - "death.attack.create.fan_lava": "%1$s сгорел заживо от лавового вентилятора", - "death.attack.create.mechanical_drill": "%1$s был проколот механическим буром", + "death.attack.create.crush": "%1$s был переработан дробильными колёÑ�ами", + "death.attack.create.fan_fire": "%1$s Ñ�горел заживо от горÑ�чего воздуха.", + "death.attack.create.fan_lava": "%1$s Ñ�горел заживо от лавового вентилÑ�тора", + "death.attack.create.mechanical_drill": "%1$s был проколот механичеÑ�ким буром", "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "Дробление", + "create.recipe.crushing": "Дробление", "create.recipe.milling": "UNLOCALIZED: Milling", - "create.recipe.splashing": "Промывка вентилятором", - "create.recipe.splashing.fan": "Вентилятор за проточной водой", - "create.recipe.smoking_via_fan": "Копчение вентилятором", - "create.recipe.smoking_via_fan.fan": "Вентилятор за огнём", - "create.recipe.blasting_via_fan": "Плавление вентилятором", - "create.recipe.blasting_via_fan.fan": "Вентелятор за лавой", - "create.recipe.pressing": "Механический пресс", + "create.recipe.splashing": "Промывка вентилÑ�тором", + "create.recipe.splashing.fan": "ВентилÑ�тор за проточной водой", + "create.recipe.smoking_via_fan": "Копчение вентилÑ�тором", + "create.recipe.smoking_via_fan.fan": "ВентилÑ�тор за огнём", + "create.recipe.blasting_via_fan": "Плавление вентилÑ�тором", + "create.recipe.blasting_via_fan.fan": "ВентелÑ�тор за лавой", + "create.recipe.pressing": "МеханичеÑ�кий преÑ�Ñ�", "create.recipe.mixing": "UNLOCALIZED: Mixing", "create.recipe.packing": "UNLOCALIZED: Compacting", "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.blockzapper_upgrade": "Портативный размещатель блоков", + "create.recipe.blockzapper_upgrade": "Портативный размещатель блоков", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", - "create.recipe.processing.chance": "%1$s%% шанс выпадения", + "create.recipe.processing.chance": "%1$s%% шанÑ� выпадениÑ�", "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", - "create.generic.range": "Зона", - "create.generic.radius": "Радиус", + "create.generic.range": "Зона", + "create.generic.radius": "РадиуÑ�", "create.generic.width": "UNLOCALIZED: Width", "create.generic.height": "UNLOCALIZED: Height", "create.generic.length": "UNLOCALIZED: Length", - "create.generic.speed": "Скорость", - "create.generic.delay": "Задержка", - "create.generic.unit.ticks": "тик", - "create.generic.unit.seconds": "сек", - "create.generic.unit.minutes": "мин", + "create.generic.speed": "СкороÑ�Ñ‚ÑŒ", + "create.generic.delay": "Задержка", + "create.generic.unit.ticks": "тик", + "create.generic.unit.seconds": "Ñ�ек", + "create.generic.unit.minutes": "мин", "create.generic.unit.rpm": "UNLOCALIZED: RPM", "create.generic.unit.stress": "UNLOCALIZED: su", "create.generic.unit.degrees": "UNLOCALIZED: °", - "create.action.scroll": "КолМыши", - "create.action.confirm": "Подтвердить", - "create.action.abort": "Отменить", - "create.action.saveToFile": "Сохранить", - "create.action.discard": "Сбросить", + "create.action.scroll": "КолМыши", + "create.action.confirm": "Подтвердить", + "create.action.abort": "Отменить", + "create.action.saveToFile": "Сохранить", + "create.action.discard": "СброÑ�ить", - "create.keyinfo.toolmenu": "Фокусировка меню иструментов", + "create.keyinfo.toolmenu": "ФокуÑ�ировка меню иÑ�трументов", "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "Выберите:", - "create.gui.scrollInput.scrollToModify": "КолМыши, чтобы изменить", + "create.gui.scrollInput.defaultTitle": "Выберите:", + "create.gui.scrollInput.scrollToModify": "КолМыши, чтобы изменить", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "КолМыши, чтобы выделить", - "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift, чтобы прокручивать быстрее", - "create.gui.toolmenu.focusKey": "Зажмите [%1$s], чтобы сфокусироваться", - "create.gui.toolmenu.cycle": "[КолМыши] , чтобы выбрать", - "create.gui.symmetryWand.mirrorType": "Зеркало", - "create.gui.symmetryWand.orientation": "Ориентация", + "create.gui.scrollInput.scrollToSelect": "КолМыши, чтобы выделить", + "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift, чтобы прокручивать быÑ�трее", + "create.gui.toolmenu.focusKey": "Зажмите [%1$s], чтобы Ñ�фокуÑ�ироватьÑ�Ñ�", + "create.gui.toolmenu.cycle": "[КолМыши] , чтобы выбрать", + "create.gui.symmetryWand.mirrorType": "Зеркало", + "create.gui.symmetryWand.orientation": "ОриентациÑ�", - "create.symmetry.mirror.plane": "Линейно", - "create.symmetry.mirror.doublePlane": "Прямоугольно", - "create.symmetry.mirror.triplePlane": "Восьмиугольно", + "create.symmetry.mirror.plane": "Линейно", + "create.symmetry.mirror.doublePlane": "ПрÑ�моугольно", + "create.symmetry.mirror.triplePlane": "ВоÑ�ьмиугольно", - "create.orientation.orthogonal": "Перпендикулярно", - "create.orientation.diagonal": "Диагонально", - "create.orientation.horizontal": "Горизонтально", - "create.orientation.alongZ": "По оси Z", - "create.orientation.alongX": "По оси X", + "create.orientation.orthogonal": "ПерпендикулÑ�рно", + "create.orientation.diagonal": "Диагонально", + "create.orientation.horizontal": "Горизонтально", + "create.orientation.alongZ": "По оÑ�и Z", + "create.orientation.alongX": "По оÑ�и X", - "create.gui.blockzapper.title": "Порт. размещ. блоков", - "create.gui.blockzapper.replaceMode": "Режим замены", - "create.gui.blockzapper.searchDiagonal": "Следовать диагоналям", - "create.gui.blockzapper.searchFuzzy": "Игнорировать материальные границы", - "create.gui.blockzapper.range": "Радиус", + "create.gui.blockzapper.title": "Порт. размещ. блоков", + "create.gui.blockzapper.replaceMode": "Режим замены", + "create.gui.blockzapper.searchDiagonal": "Следовать диагоналÑ�м", + "create.gui.blockzapper.searchFuzzy": "Игнорировать материальные границы", + "create.gui.blockzapper.range": "РадиуÑ�", "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "Шаблоны", - "create.gui.blockzapper.pattern.solid": "Сплошной", - "create.gui.blockzapper.pattern.checkered": "Шахматная доска", - "create.gui.blockzapper.pattern.inversecheckered": "Обратная шахматная доска", - "create.gui.blockzapper.pattern.chance25": "25% покрытия", - "create.gui.blockzapper.pattern.chance50": "50% покрытия", - "create.gui.blockzapper.pattern.chance75": "75% покрытия", + "create.gui.blockzapper.patternSection": "Шаблоны", + "create.gui.blockzapper.pattern.solid": "Сплошной", + "create.gui.blockzapper.pattern.checkered": "ШахматнаÑ� доÑ�ка", + "create.gui.blockzapper.pattern.inversecheckered": "ОбратнаÑ� шахматнаÑ� доÑ�ка", + "create.gui.blockzapper.pattern.chance25": "25% покрытиÑ�", + "create.gui.blockzapper.pattern.chance50": "50% покрытиÑ�", + "create.gui.blockzapper.pattern.chance75": "75% покрытиÑ�", "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", @@ -594,18 +594,18 @@ "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.blockzapper.usingBlock": "Материал: %1$s", - "create.blockzapper.componentUpgrades": "Улучшения компонентов:", - "create.blockzapper.component.body": "Корпус", - "create.blockzapper.component.amplifier": "Усилитель", - "create.blockzapper.component.accelerator": "Ускоритель", - "create.blockzapper.component.retriever": "Коллектор", - "create.blockzapper.component.scope": "Прицел", - "create.blockzapper.componentTier.none": "Ничего", + "create.blockzapper.usingBlock": "Материал: %1$s", + "create.blockzapper.componentUpgrades": "УлучшениÑ� компонентов:", + "create.blockzapper.component.body": "КорпуÑ�", + "create.blockzapper.component.amplifier": "УÑ�илитель", + "create.blockzapper.component.accelerator": "УÑ�коритель", + "create.blockzapper.component.retriever": "Коллектор", + "create.blockzapper.component.scope": "Прицел", + "create.blockzapper.componentTier.none": "Ð�ичего", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "ЛКМ на блок, чтобы выбрать материал", - "create.blockzapper.empty": "Закончились блоки!", + "create.blockzapper.leftClickToSet": "ЛКМ на блок, чтобы выбрать материал", + "create.blockzapper.empty": "ЗакончилиÑ�ÑŒ блоки!", "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", @@ -619,9 +619,9 @@ "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.logistics.filter": "Фильтр", - "create.logistics.firstFrequency": "Част. #1", - "create.logistics.secondFrequency": "Част. #2", + "create.logistics.filter": "Фильтр", + "create.logistics.firstFrequency": "ЧаÑ�Ñ‚. #1", + "create.logistics.secondFrequency": "ЧаÑ�Ñ‚. #2", "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", @@ -635,15 +635,15 @@ "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "Гибкий ящик", - "create.gui.adjustable_crate.storageSpace": "Обьём хранилища", - "create.gui.stockpile_switch.title": "Сенсор хранилища", - "create.gui.stockpile_switch.lowerLimit": "Нижний порог", - "create.gui.stockpile_switch.upperLimit": "Верхний порог", - "create.gui.stockpile_switch.startAt": "Включить на", - "create.gui.stockpile_switch.startAbove": "Включить выше", - "create.gui.stockpile_switch.stopAt": "Отключить на", - "create.gui.stockpile_switch.stopBelow": "Отключить ниже", + "create.gui.adjustable_crate.title": "Гибкий Ñ�щик", + "create.gui.adjustable_crate.storageSpace": "Обьём хранилища", + "create.gui.stockpile_switch.title": "СенÑ�ор хранилища", + "create.gui.stockpile_switch.lowerLimit": "Ð�ижний порог", + "create.gui.stockpile_switch.upperLimit": "Верхний порог", + "create.gui.stockpile_switch.startAt": "Включить на", + "create.gui.stockpile_switch.startAbove": "Включить выше", + "create.gui.stockpile_switch.stopAt": "Отключить на", + "create.gui.stockpile_switch.stopBelow": "Отключить ниже", "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", @@ -659,104 +659,104 @@ "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - "create.schematicAndQuill.dimensions": "Размер схемы: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Первая позиция установлена.", - "create.schematicAndQuill.secondPos": "Вторая позиция установлена.", - "create.schematicAndQuill.noTarget": "Зажмите [Ctrl], чтобы выделять блоки воздуха.", - "create.schematicAndQuill.abort": "Выделение удалено.", - "create.schematicAndQuill.prompt": "Введите название для новой схемы:", - "create.schematicAndQuill.fallbackName": "Моя схема", - "create.schematicAndQuill.saved": "Сохранено как %1$s", + "create.schematicAndQuill.dimensions": "Размер Ñ�хемы: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "ПерваÑ� позициÑ� уÑ�тановлена.", + "create.schematicAndQuill.secondPos": "ВтораÑ� позициÑ� уÑ�тановлена.", + "create.schematicAndQuill.noTarget": "Зажмите [Ctrl], чтобы выделÑ�Ñ‚ÑŒ блоки воздуха.", + "create.schematicAndQuill.abort": "Выделение удалено.", + "create.schematicAndQuill.prompt": "Введите название длÑ� новой Ñ�хемы:", + "create.schematicAndQuill.fallbackName": "МоÑ� Ñ�хема", + "create.schematicAndQuill.saved": "Сохранено как %1$s", - "create.schematic.invalid": "[!] Недействительный предмет - используйте стол для схем", - "create.schematic.position": "Позиция", - "create.schematic.rotation": "Вращение", - "create.schematic.rotation.none": "Ничего", - "create.schematic.rotation.cw90": "90° по часовой", - "create.schematic.rotation.cw180": "180° по часовой", - "create.schematic.rotation.cw270": "270° по часовой", - "create.schematic.mirror": "Отразить", - "create.schematic.mirror.none": "Ничего", - "create.schematic.mirror.frontBack": "Перед-зад", - "create.schematic.mirror.leftRight": "Лево-право", - "create.schematic.tool.deploy": "Разместить", - "create.schematic.tool.move": "Сдвиг по XZ", - "create.schematic.tool.movey": "Сдвиг по Y", - "create.schematic.tool.rotate": "Повернуть", - "create.schematic.tool.print": "Напечатать", - "create.schematic.tool.flip": "Отразить", - "create.schematic.tool.deploy.description.0": "Размещает конструкцию.", - "create.schematic.tool.deploy.description.1": "ПКМ на земле для размещения.", - "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl] для перемещения на фикс. дистанции.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-КолМыши для изменения дистанции.", - "create.schematic.tool.move.description.0": "Сдвигает схему по горизонтали", - "create.schematic.tool.move.description.1": "Смотрите на схему и [CTRL]-КолМыши для сдвига.", + "create.schematic.invalid": "[!] Ð�едейÑ�твительный предмет - иÑ�пользуйте Ñ�тол длÑ� Ñ�хем", + "create.schematic.position": "ПозициÑ�", + "create.schematic.rotation": "Вращение", + "create.schematic.rotation.none": "Ð�ичего", + "create.schematic.rotation.cw90": "90° по чаÑ�овой", + "create.schematic.rotation.cw180": "180° по чаÑ�овой", + "create.schematic.rotation.cw270": "270° по чаÑ�овой", + "create.schematic.mirror": "Отразить", + "create.schematic.mirror.none": "Ð�ичего", + "create.schematic.mirror.frontBack": "Перед-зад", + "create.schematic.mirror.leftRight": "Лево-право", + "create.schematic.tool.deploy": "РазмеÑ�тить", + "create.schematic.tool.move": "Сдвиг по XZ", + "create.schematic.tool.movey": "Сдвиг по Y", + "create.schematic.tool.rotate": "Повернуть", + "create.schematic.tool.print": "Ð�апечатать", + "create.schematic.tool.flip": "Отразить", + "create.schematic.tool.deploy.description.0": "Размещает конÑ�трукцию.", + "create.schematic.tool.deploy.description.1": "ПКМ на земле длÑ� размещениÑ�.", + "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl] длÑ� перемещениÑ� на фикÑ�. диÑ�танции.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-КолМыши длÑ� изменениÑ� диÑ�танции.", + "create.schematic.tool.move.description.0": "Сдвигает Ñ�хему по горизонтали", + "create.schematic.tool.move.description.1": "Смотрите на Ñ�хему и [CTRL]-КолМыши длÑ� Ñ�двига.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали", - "create.schematic.tool.movey.description.1": "[CTRL]-КолМыши для сдвига вверх/вниз", + "create.schematic.tool.movey.description.0": "Сдвигает Ñ�хему по вертикали", + "create.schematic.tool.movey.description.1": "[CTRL]-КолМыши длÑ� Ñ�двига вверх/вниз", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Вращает схему вокруг центра.", - "create.schematic.tool.rotate.description.1": "[CTRL]-КолМыши для поворота на 90°", + "create.schematic.tool.rotate.description.0": "Вращает Ñ�хему вокруг центра.", + "create.schematic.tool.rotate.description.1": "[CTRL]-КолМыши длÑ� поворота на 90°", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Моментально размещает структуру в мире", - "create.schematic.tool.print.description.1": "[ПКМ] для размещения в текущем месте.", - "create.schematic.tool.print.description.2": "Только для креативного режима.", + "create.schematic.tool.print.description.0": "Моментально размещает Ñ�труктуру в мире", + "create.schematic.tool.print.description.1": "[ПКМ] длÑ� размещениÑ� в текущем меÑ�те.", + "create.schematic.tool.print.description.2": "Только длÑ� креативного режима.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Отражает схему вдоль выбранной стороны.", - "create.schematic.tool.flip.description.1": "Смотрите на схему и [CTRL]-КолМыши для отражения.", + "create.schematic.tool.flip.description.0": "Отражает Ñ�хему вдоль выбранной Ñ�тороны.", + "create.schematic.tool.flip.description.1": "Смотрите на Ñ�хему и [CTRL]-КолМыши длÑ� отражениÑ�.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "Синхронизация...", - "create.schematics.uploadTooLarge": "Схема слишком большая", - "create.schematics.maxAllowedSize": "Максимальный размер файла схемы:", + "create.schematics.synchronizing": "СинхронизациÑ�...", + "create.schematics.uploadTooLarge": "Схема Ñ�лишком большаÑ�", + "create.schematics.maxAllowedSize": "МакÑ�имальный размер файла Ñ�хемы:", - "create.gui.schematicTable.title": "Стол для схем", - "create.gui.schematicTable.availableSchematics": "Доступные схемы", - "create.gui.schematicTable.noSchematics": "Нет сохранённых схем", - "create.gui.schematicTable.uploading": "Загрузка...", - "create.gui.schematicTable.finished": "Загрузка завершена!", - "create.gui.schematicannon.title": "Схемопушка", - "create.gui.schematicannon.settingsTitle": "Параметры размещения", - "create.gui.schematicannon.listPrinter": "Распечатать список материалов", - "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "C запасом: %1$s", - "create.gui.schematicannon.optionEnabled": "Включена", - "create.gui.schematicannon.optionDisabled": "Отключена", - "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", - "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", - "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", - "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", - "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", - "create.gui.schematicannon.option.skipTileEntities": "Защита от сущностей", - "create.gui.schematicannon.option.skipMissing.description": "Если схемопушка не найдёт нужный блок, то она продолжит в следующем месте.", - "create.gui.schematicannon.option.skipTileEntities.description": "Схемопушка будет избегать замены блоков с данными, например сундуки.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Схемопушка никогда не заменит целые блоки, только не целые и воздух.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Схемопушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", - "create.gui.schematicannon.option.replaceWithAny.description": "Схемопушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Схемопушка отчистит все блоки, включая замену на воздух.", + "create.gui.schematicTable.title": "Стол длÑ� Ñ�хем", + "create.gui.schematicTable.availableSchematics": "ДоÑ�тупные Ñ�хемы", + "create.gui.schematicTable.noSchematics": "Ð�ет Ñ�охранённых Ñ�хем", + "create.gui.schematicTable.uploading": "Загрузка...", + "create.gui.schematicTable.finished": "Загрузка завершена!", + "create.gui.schematicannon.title": "Схемопушка", + "create.gui.schematicannon.settingsTitle": "Параметры размещениÑ�", + "create.gui.schematicannon.listPrinter": "РаÑ�печатать Ñ�пиÑ�ок материалов", + "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Ð’Ñ‹Ñ�трелов оÑ�талоÑ�ÑŒ: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "C запаÑ�ом: %1$s", + "create.gui.schematicannon.optionEnabled": "Включена", + "create.gui.schematicannon.optionDisabled": "Отключена", + "create.gui.schematicannon.option.dontReplaceSolid": "Ð�е заменÑ�Ñ‚ÑŒ целые блоки", + "create.gui.schematicannon.option.replaceWithSolid": "ЗаменÑ�Ñ‚ÑŒ целые блоки целыми блоками", + "create.gui.schematicannon.option.replaceWithAny": "ЗаменÑ�Ñ‚ÑŒ целые блоки чем угодно", + "create.gui.schematicannon.option.replaceWithEmpty": "ЗаменÑ�Ñ‚ÑŒ целые блоки пуÑ�тотой", + "create.gui.schematicannon.option.skipMissing": "ПропуÑ�кать отÑ�утÑ�твующие блоки", + "create.gui.schematicannon.option.skipTileEntities": "Защита от Ñ�ущноÑ�тей", + "create.gui.schematicannon.option.skipMissing.description": "ЕÑ�ли Ñ�хемопушка не найдёт нужный блок, то она продолжит в Ñ�ледующем меÑ�те.", + "create.gui.schematicannon.option.skipTileEntities.description": "Схемопушка будет избегать замены блоков Ñ� данными, например Ñ�ундуки.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Схемопушка никогда не заменит целые блоки, только не целые и воздух.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Схемопушка будет заменÑ�Ñ‚ÑŒ целый блок только в Ñ�лучае, еÑ�ли в Ñ�хеме в Ñ�том меÑ�те раÑ�положен целый блок.", + "create.gui.schematicannon.option.replaceWithAny.description": "Схемопушка будет заменÑ�Ñ‚ÑŒ целые блоки, еÑ�ли в Ñ�хеме в Ñ�том меÑ�те еÑ�Ñ‚ÑŒ что-либо.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Схемопушка отчиÑ�тит вÑ�е блоки, включаÑ� замену на воздух.", - "create.schematicannon.status.idle": "Бездействует", - "create.schematicannon.status.ready": "Готова", - "create.schematicannon.status.running": "Работает", - "create.schematicannon.status.finished": "Закончила", - "create.schematicannon.status.paused": "Приостановлена", - "create.schematicannon.status.stopped": "Остановлена", - "create.schematicannon.status.noGunpowder": "Кончился порох", - "create.schematicannon.status.targetNotLoaded": "Блок не загружен", - "create.schematicannon.status.targetOutsideRange": "Цель слишком далеко", - "create.schematicannon.status.searching": "Поиск", - "create.schematicannon.status.skipping": "Пропуск", - "create.schematicannon.status.missingBlock": "Нет блока:", - "create.schematicannon.status.placing": "Размещение", - "create.schematicannon.status.clearing": "Отчистка", - "create.schematicannon.status.schematicInvalid": "Схема недействительна", - "create.schematicannon.status.schematicNotPlaced": "Схема не размещена", - "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истек", + "create.schematicannon.status.idle": "БездейÑ�твует", + "create.schematicannon.status.ready": "Готова", + "create.schematicannon.status.running": "Работает", + "create.schematicannon.status.finished": "Закончила", + "create.schematicannon.status.paused": "ПриоÑ�тановлена", + "create.schematicannon.status.stopped": "ОÑ�тановлена", + "create.schematicannon.status.noGunpowder": "КончилÑ�Ñ� порох", + "create.schematicannon.status.targetNotLoaded": "Блок не загружен", + "create.schematicannon.status.targetOutsideRange": "Цель Ñ�лишком далеко", + "create.schematicannon.status.searching": "ПоиÑ�к", + "create.schematicannon.status.skipping": "ПропуÑ�к", + "create.schematicannon.status.missingBlock": "Ð�ет блока:", + "create.schematicannon.status.placing": "Размещение", + "create.schematicannon.status.clearing": "ОтчиÑ�тка", + "create.schematicannon.status.schematicInvalid": "Схема недейÑ�твительна", + "create.schematicannon.status.schematicNotPlaced": "Схема не размещена", + "create.schematicannon.status.schematicExpired": "Срок дейÑ�твиÑ� файла Ñ�хемы иÑ�тек", "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", "create.gui.filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", @@ -793,8 +793,8 @@ "create.gui.attribute_filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - "create.tooltip.holdKey": "Зажмите [%1$s]", - "create.tooltip.holdKeyOrKey": "Зажмите [%1$s] или [%2$s]", + "create.tooltip.holdKey": "Зажмите [%1$s]", + "create.tooltip.holdKeyOrKey": "Зажмите [%1$s] или [%2$s]", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", @@ -856,24 +856,24 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", - "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", - "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", - "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", - "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадясь", - "item.create.wand_of_symmetry.tooltip.action3": "Открывает _Меню_ _настройки_", + "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по наÑ�троенным плоÑ�коÑ�Ñ‚Ñ�м.", + "item.create.wand_of_symmetry.tooltip.condition1": "Ð�а панели быÑ�трого доÑ�тупа", + "item.create.wand_of_symmetry.tooltip.behaviour1": "ОÑ�таётÑ�Ñ� активным", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", + "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", + "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", + "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", + "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадÑ�Ñ�ÑŒ", + "item.create.wand_of_symmetry.tooltip.action3": "Открывает _Меню_ _наÑ�тройки_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Новейшее устройство для размещения или замены блоков на расстоянии.", - "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_blockzapper.tooltip.action1": "Устанавливает выбранный блок как материал.", - "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", - "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", - "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадясь", - "item.create.handheld_blockzapper.tooltip.action3": "Открывает _Меню_ _настройки_", + "item.create.handheld_blockzapper.tooltip.summary": "Ð�овейшее уÑ�тройÑ�тво длÑ� размещениÑ� или замены блоков на раÑ�Ñ�тоÑ�нии.", + "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", + "item.create.handheld_blockzapper.tooltip.action1": "УÑ�танавливает выбранный блок как материал.", + "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", + "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", + "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадÑ�Ñ�ÑŒ", + "item.create.handheld_blockzapper.tooltip.action3": "Открывает _Меню_ _наÑ�тройки_", "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", @@ -885,9 +885,9 @@ "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "Сильная смесь минералов, подходящая обычным видам деревьев.", - "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", - "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья независимо от свободного пространства", + "item.create.tree_fertilizer.tooltip.summary": "СильнаÑ� Ñ�меÑ�ÑŒ минералов, подходÑ�щаÑ� обычным видам деревьев.", + "item.create.tree_fertilizer.tooltip.condition1": "При иÑ�пользовании на Ñ�аженце", + "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревьÑ� незавиÑ�имо от Ñ�вободного проÑ�транÑ�тва", "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", @@ -912,70 +912,70 @@ "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Используется для крафта и записи в _Столе_ _для_ _схем._", + "item.create.empty_schematic.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� крафта и запиÑ�и в _Столе_ _длÑ�_ _Ñ�хем._", "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Хранит структуру для размещения. Расположите голограмму и используйте _Схемопушку_ для построения голограммы.", - "item.create.schematic.tooltip.condition1": "Когда в руке", - "item.create.schematic.tooltip.behaviour1": "Может быть размещена с помошью инструментов на экране", - "item.create.schematic.tooltip.control1": "ПКМ крадясь", - "item.create.schematic.tooltip.action1": "Открывает _Меню_ для ввода точных _Координат._", + "item.create.schematic.tooltip.summary": "Хранит Ñ�труктуру длÑ� размещениÑ�. РаÑ�положите голограмму и иÑ�пользуйте _Схемопушку_ длÑ� поÑ�троениÑ� голограммы.", + "item.create.schematic.tooltip.condition1": "Когда в руке", + "item.create.schematic.tooltip.behaviour1": "Может быть размещена Ñ� помошью инÑ�трументов на Ñ�кране", + "item.create.schematic.tooltip.control1": "ПКМ крадÑ�Ñ�ÑŒ", + "item.create.schematic.tooltip.action1": "Открывает _Меню_ длÑ� ввода точных _Координат._", "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в .nbt файл.", - "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две точки с помощью ПКМ", - "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-КолМыши_ на сторону для изменения размера. ПКМ еще раз для сохранения.", - "item.create.schematic_and_quill.tooltip.control1": "ПКМ", - "item.create.schematic_and_quill.tooltip.action1": "Выбрать точку / Сохранить", - "item.create.schematic_and_quill.tooltip.control2": "С зажатым Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Выбрать точки в _воздухе._ _КолМыши_ для изменения расстояния.", - "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадясь", - "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _Удаляет_ выделение.", + "item.create.schematic_and_quill.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� Ñ�охранениÑ� Ñ�труктуры в .nbt файл.", + "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две точки Ñ� помощью ПКМ", + "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-КолМыши_ на Ñ�торону длÑ� изменениÑ� размера. ПКМ еще раз длÑ� Ñ�охранениÑ�.", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.action1": "Выбрать точку / Сохранить", + "item.create.schematic_and_quill.tooltip.control2": "С зажатым Ctrl", + "item.create.schematic_and_quill.tooltip.action2": "Выбрать точки в _воздухе._ _КолМыши_ длÑ� изменениÑ� раÑ�Ñ�тоÑ�ниÑ�.", + "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадÑ�Ñ�ÑŒ", + "item.create.schematic_and_quill.tooltip.action3": "_СбраÑ�ывает_ и _УдалÑ�ет_ выделение.", "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "Стреляет блоками для воссоздания размещенной _Схемы._ Использует блоки из соседних инвентарей и _Порох_ в качестве топлива.", - "block.create.schematicannon.tooltip.control1": "ПКМ по пушке", - "block.create.schematicannon.tooltip.action1": "Открывает _Меню_", + "block.create.schematicannon.tooltip.summary": "СтрелÑ�ет блоками длÑ� воÑ�Ñ�озданиÑ� размещенной _Схемы._ ИÑ�пользует блоки из Ñ�оÑ�едних инвентарей и _Порох_ в качеÑ�тве топлива.", + "block.create.schematicannon.tooltip.control1": "ПКМ по пушке", + "block.create.schematicannon.tooltip.action1": "Открывает _Меню_", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схемы на _Пустые_ _схемы._", - "block.create.schematic_table.tooltip.condition1": "Если положить пустую схему.", - "block.create.schematic_table.tooltip.behaviour1": "Записывает выбранный файл из папки со схемами", + "block.create.schematic_table.tooltip.summary": "ЗапиÑ�ывает Ñ�охраненные Ñ�хемы на _ПуÑ�тые_ _Ñ�хемы._", + "block.create.schematic_table.tooltip.condition1": "ЕÑ�ли положить пуÑ�тую Ñ�хему.", + "block.create.schematic_table.tooltip.behaviour1": "ЗапиÑ�ывает выбранный файл из папки Ñ�о Ñ�хемами", "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "_Передаёт_ _вращение_ по прямой.", + "block.create.shaft.tooltip.summary": "_Передаёт_ _вращение_ по прÑ�мой.", "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": "_Передаёт_ _вращение_ по прямой и к присоеденённым _Шестерням._", + "block.create.cogwheel.tooltip.summary": "_Передаёт_ _вращение_ по прÑ�мой и к приÑ�оеденённым _ШеÑ�тернÑ�м._", "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "Увеличенная версия _Шестерни,_ позволяющая _изменять_ _скорость_ _вращения_ при соединении с меньшим аналогом.", + "block.create.large_cogwheel.tooltip.summary": "УвеличеннаÑ� верÑ�иÑ� _ШеÑ�терни,_ позволÑ�ющаÑ� _изменÑ�Ñ‚ÑŒ_ _Ñ�короÑ�Ñ‚ÑŒ_ _вращениÑ�_ при Ñ�оединении Ñ� меньшим аналогом.", "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "_Передаёт_ _вращение_ по прямой. Подходит для передачи вращения через стены.", + "block.create.encased_shaft.tooltip.summary": "_Передаёт_ _вращение_ по прÑ�мой. Подходит длÑ� передачи вращениÑ� через Ñ�тены.", "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "_Передаёт_ _вращение_ в _4_ _направлениях._ Реверсирует прямые соединения.", + "block.create.gearbox.tooltip.summary": "_Передаёт_ _вращение_ в _4_ _направлениÑ�Ñ…._ РеверÑ�ирует прÑ�мые Ñ�оединениÑ�.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "_Переключатель_ _вращения_ для подсоединенных валов.", - "block.create.gearshift.tooltip.condition1": "Когда запитан", - "block.create.gearshift.tooltip.behaviour1": "_Реверсирует_ выходящее _вращение._", + "block.create.gearshift.tooltip.summary": "_Переключатель_ _вращениÑ�_ длÑ� подÑ�оединенных валов.", + "block.create.gearshift.tooltip.condition1": "Когда запитан", + "block.create.gearshift.tooltip.behaviour1": "_РеверÑ�ирует_ выходÑ�щее _вращение._", "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "_Переключатель_ _вращения_ для подсоединенных валов.", - "block.create.clutch.tooltip.condition1": "Когда запитан", - "block.create.clutch.tooltip.behaviour1": "_Останавливает_ подачу вращения на другую сторону.", + "block.create.clutch.tooltip.summary": "_Переключатель_ _вращениÑ�_ длÑ� подÑ�оединенных валов.", + "block.create.clutch.tooltip.condition1": "Когда запитан", + "block.create.clutch.tooltip.behaviour1": "_ОÑ�танавливает_ подачу вращениÑ� на другую Ñ�торону.", "block.create.encased_belt.tooltip": "ENCASED_BELT", - "block.create.encased_belt.tooltip.summary": "_Передаёт_ _вращение_ через себя и к присоеденённому _Ленточному_ _приводу._", - "block.create.encased_belt.tooltip.condition1": "При присоеденёнии к другому Ленточному приводу", - "block.create.encased_belt.tooltip.behaviour1": "Присоеденённый блок будет иметь те же _скорость_ и _направление_ _вращения._ Присоеденённые ленты не обязаны смотреть в ту же сторону.", + "block.create.encased_belt.tooltip.summary": "_Передаёт_ _вращение_ через Ñ�ебÑ� и к приÑ�оеденённому _Ленточному_ _приводу._", + "block.create.encased_belt.tooltip.condition1": "При приÑ�оеденёнии к другому Ленточному приводу", + "block.create.encased_belt.tooltip.behaviour1": "ПриÑ�оеденённый блок будет иметь те же _Ñ�короÑ�Ñ‚ÑŒ_ и _направление_ _вращениÑ�._ ПриÑ�оеденённые ленты не обÑ�заны Ñ�мотреть в ту же Ñ�торону.", "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", @@ -983,11 +983,11 @@ "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "Соединяет _2_ _Вала_ с помощью _Механической_ _ленты._ Соединённые валы будут иметь одинаковые _скорость_ и _направление_ _вращения._ Лента может служить как _Конвейер_ для _Существ._", - "item.create.belt_connector.tooltip.control1": "ПКМ по валу", - "item.create.belt_connector.tooltip.action1": "Выбирает вал в качестве одного шкива ленты. Оба выбранных вала должны быть _на_ _одной_ _линии_ _вертикально,_ _горизонтально_ либо _диагонально_ по направлению ленты.", - "item.create.belt_connector.tooltip.control2": "ПКМ крадясь", - "item.create.belt_connector.tooltip.action2": "_Сбрасывает_ первый выбранный шкив для ленты.", + "item.create.belt_connector.tooltip.summary": "СоединÑ�ет _2_ _Вала_ Ñ� помощью _МеханичеÑ�кой_ _ленты._ Соединённые валы будут иметь одинаковые _Ñ�короÑ�Ñ‚ÑŒ_ и _направление_ _вращениÑ�._ Лента может Ñ�лужить как _Конвейер_ длÑ� _СущеÑ�тв._", + "item.create.belt_connector.tooltip.control1": "ПКМ по валу", + "item.create.belt_connector.tooltip.action1": "Выбирает вал в качеÑ�тве одного шкива ленты. Оба выбранных вала должны быть _на_ _одной_ _линии_ _вертикально,_ _горизонтально_ либо _диагонально_ по направлению ленты.", + "item.create.belt_connector.tooltip.control2": "ПКМ крадÑ�Ñ�ÑŒ", + "item.create.belt_connector.tooltip.action2": "_СбраÑ�ывает_ первый выбранный шкив длÑ� ленты.", "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", @@ -1007,16 +1007,16 @@ "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "Предоставляет _силу_ _вращения_ из смежных _источников_ _воды._", + "block.create.water_wheel.tooltip.summary": "ПредоÑ�тавлÑ�ет _Ñ�илу_ _вращениÑ�_ из Ñ�межных _иÑ�точников_ _воды._", "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "Преобразовывает _силу_ _вращения_ в _воздушный_ _поток_ и обратно. Имеет множество применений.", - "block.create.encased_fan.tooltip.condition1": "При нахождении над огнём", - "block.create.encased_fan.tooltip.behaviour1": "Предоставляет _силу_ _вращения_ (должен стоять вертикально)", - "block.create.encased_fan.tooltip.condition2": "При вращении", - "block.create.encased_fan.tooltip.behaviour2": "_Толкает_ существ с одной стороны, _притягивает_ с другой. Сила и скорость зависят от входящего вращения.", - "block.create.encased_fan.tooltip.condition3": "Когда воздух проходит через специальные блоки", - "block.create.encased_fan.tooltip.behaviour3": "Обрабатывает предметы перед блоком: _вода_ моет, _огонь_ коптит, _лава_ плавит.", + "block.create.encased_fan.tooltip.summary": "Преобразовывает _Ñ�илу_ _вращениÑ�_ в _воздушный_ _поток_ и обратно. Имеет множеÑ�тво применений.", + "block.create.encased_fan.tooltip.condition1": "При нахождении над огнём", + "block.create.encased_fan.tooltip.behaviour1": "ПредоÑ�тавлÑ�ет _Ñ�илу_ _вращениÑ�_ (должен Ñ�тоÑ�Ñ‚ÑŒ вертикально)", + "block.create.encased_fan.tooltip.condition2": "При вращении", + "block.create.encased_fan.tooltip.behaviour2": "_Толкает_ Ñ�ущеÑ�тв Ñ� одной Ñ�тороны, _притÑ�гивает_ Ñ� другой. Сила и Ñ�короÑ�Ñ‚ÑŒ завиÑ�Ñ�Ñ‚ от входÑ�щего вращениÑ�.", + "block.create.encased_fan.tooltip.condition3": "Когда воздух проходит через Ñ�пециальные блоки", + "block.create.encased_fan.tooltip.behaviour3": "Обрабатывает предметы перед блоком: _вода_ моет, _огонь_ коптит, _лава_ плавит.", "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", @@ -1032,7 +1032,7 @@ "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", + "block.create.turntable.tooltip.summary": "Преобразует _Ñ�илу_ _вращениÑ�_ прÑ�миком в морÑ�кую болезнь.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1042,16 +1042,16 @@ "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "Большие вращающиеся колеса, которые _дробят_ всё, что мешает их движению.", - "block.create.crushing_wheel.tooltip.condition1": "При присоеденении к другому дробильному колесу", - "block.create.crushing_wheel.tooltip.behaviour1": "Формирует дробильную установку для обработки различных вещей. Зубцы колёс должны соединяться и двигаться с _одинаковой_ _скоростью_ в _противоположных_ _направлениях._", + "block.create.crushing_wheel.tooltip.summary": "Большие вращающиеÑ�Ñ� колеÑ�а, которые _дробÑ�Ñ‚_ вÑ�Ñ‘, что мешает их движению.", + "block.create.crushing_wheel.tooltip.condition1": "При приÑ�оеденении к другому дробильному колеÑ�у", + "block.create.crushing_wheel.tooltip.behaviour1": "Формирует дробильную уÑ�тановку длÑ� обработки различных вещей. Зубцы колёÑ� должны Ñ�оединÑ�Ñ‚ÑŒÑ�Ñ� и двигатьÑ�Ñ� Ñ� _одинаковой_ _Ñ�короÑ�тью_ в _противоположных_ _направлениÑ�Ñ…._", "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "Мощный поршень для спрессовывания предметов под ним. Требуется постоянная _сила_ _вращения._", - "block.create.mechanical_press.tooltip.condition1": "Когда запитан", - "block.create.mechanical_press.tooltip.behaviour1": "_Начинает_ спрессовывать предметы под ним.", - "block.create.mechanical_press.tooltip.condition2": "При нахождении над механической лентой", - "block.create.mechanical_press.tooltip.behaviour2": "_Автоматически_ спрессовывает проходящие по ленте предметы.", + "block.create.mechanical_press.tooltip.summary": "Мощный поршень длÑ� Ñ�преÑ�Ñ�овываниÑ� предметов под ним. ТребуетÑ�Ñ� поÑ�тоÑ�ннаÑ� _Ñ�ила_ _вращениÑ�._", + "block.create.mechanical_press.tooltip.condition1": "Когда запитан", + "block.create.mechanical_press.tooltip.behaviour1": "_Ð�ачинает_ Ñ�преÑ�Ñ�овывать предметы под ним.", + "block.create.mechanical_press.tooltip.condition2": "При нахождении над механичеÑ�кой лентой", + "block.create.mechanical_press.tooltip.behaviour2": "_Ð�втоматичеÑ�ки_ Ñ�преÑ�Ñ�овывает проходÑ�щие по ленте предметы.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", @@ -1100,26 +1100,26 @@ "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "Более продвинутая версия _Поршня,_ использующая _силу_ _вращения_ для более точного перемещения присоединенных конструкций. _Удлинители_ _поршня_ сзади определяют _длину_ устройства. Без удлинителей поршень не будет двигаться. Используйте _Поступательную_ _раму_ для перемещения более чем одной линии блоков.", - "block.create.mechanical_piston.tooltip.condition1": "При вращении", - "block.create.mechanical_piston.tooltip.behaviour1": "Начинает перемещать прикрепленную конструкцию. Скорость и направление зависят от входящего вращения.", + "block.create.mechanical_piston.tooltip.summary": "Более продвинутаÑ� верÑ�иÑ� _ПоршнÑ�,_ иÑ�пользующаÑ� _Ñ�илу_ _вращениÑ�_ длÑ� более точного перемещениÑ� приÑ�оединенных конÑ�трукций. _Удлинители_ _поршнÑ�_ Ñ�зади определÑ�ÑŽÑ‚ _длину_ уÑ�тройÑ�тва. Без удлинителей поршень не будет двигатьÑ�Ñ�. ИÑ�пользуйте _ПоÑ�тупательную_ _раму_ длÑ� перемещениÑ� более чем одной линии блоков.", + "block.create.mechanical_piston.tooltip.condition1": "При вращении", + "block.create.mechanical_piston.tooltip.behaviour1": "Ð�ачинает перемещать прикрепленную конÑ�трукцию. СкороÑ�Ñ‚ÑŒ и направление завиÑ�Ñ�Ñ‚ от входÑ�щего вращениÑ�.", "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", - "block.create.sticky_mechanical_piston.tooltip.summary": "Более продвинутая версия _Липкого_ _поршня,_ использующая _силу_ _вращения_ для более точного перемещения присоединенных конструкций. _Удлинители_ _поршня_ сзади определяют _длину_ устройства. Без удлинителей поршень не будет двигаться. Используйте _Поступательную_ _раму_ для перемещения более чем одной линии блоков.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "При вращении", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Начинает перемещать прикрепленную конструкцию. Скорость и направление зависят от входящего вращения.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Более продвинутаÑ� верÑ�иÑ� _Липкого_ _поршнÑ�,_ иÑ�пользующаÑ� _Ñ�илу_ _вращениÑ�_ длÑ� более точного перемещениÑ� приÑ�оединенных конÑ�трукций. _Удлинители_ _поршнÑ�_ Ñ�зади определÑ�ÑŽÑ‚ _длину_ уÑ�тройÑ�тва. Без удлинителей поршень не будет двигатьÑ�Ñ�. ИÑ�пользуйте _ПоÑ�тупательную_ _раму_ длÑ� перемещениÑ� более чем одной линии блоков.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "При вращении", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Ð�ачинает перемещать прикрепленную конÑ�трукцию. СкороÑ�Ñ‚ÑŒ и направление завиÑ�Ñ�Ñ‚ от входÑ�щего вращениÑ�.", "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "Используется для увеличения длины _Механического_ _поршня._", - "block.create.piston_extension_pole.tooltip.condition1": "При присоеденении к механическому поршню", - "block.create.piston_extension_pole.tooltip.behaviour1": "Увеличивает длину поршня на 1 блок", + "block.create.piston_extension_pole.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� увеличениÑ� длины _МеханичеÑ�кого_ _поршнÑ�._", + "block.create.piston_extension_pole.tooltip.condition1": "При приÑ�оеденении к механичеÑ�кому поршню", + "block.create.piston_extension_pole.tooltip.behaviour1": "Увеличивает длину поршнÑ� на 1 блок", "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "Используется для вращения _больших_ конструкций_ или генерации _силы_ _вращения_ с помощью ветра.", - "block.create.mechanical_bearing.tooltip.condition1": "При вращении", - "block.create.mechanical_bearing.tooltip.behaviour1": "Начинает вращать присоединенную _Поворотную_ _раму_ и связанные с ним блоки.", - "block.create.mechanical_bearing.tooltip.condition2": "Когда запитан", - "block.create.mechanical_bearing.tooltip.behaviour2": "Начинает предоставлять _силу_ _вращения_ из вращения присоединенной конструкции. Структура должна включать подходящий _парус_ (в настоящее время любой блок шерсти).", + "block.create.mechanical_bearing.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� вращениÑ� _больших_ конÑ�трукций_ или генерации _Ñ�илы_ _вращениÑ�_ Ñ� помощью ветра.", + "block.create.mechanical_bearing.tooltip.condition1": "При вращении", + "block.create.mechanical_bearing.tooltip.behaviour1": "Ð�ачинает вращать приÑ�оединенную _Поворотную_ _раму_ и Ñ�вÑ�занные Ñ� ним блоки.", + "block.create.mechanical_bearing.tooltip.condition2": "Когда запитан", + "block.create.mechanical_bearing.tooltip.behaviour2": "Ð�ачинает предоÑ�тавлÑ�Ñ‚ÑŒ _Ñ�илу_ _вращениÑ�_ из вращениÑ� приÑ�оединенной конÑ�трукции. Структура должна включать подходÑ�щий _паруÑ�_ (в наÑ�тоÑ�щее времÑ� любой блок шерÑ�ти).", "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", @@ -1150,34 +1150,34 @@ "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "Настраиваемая основа для конструкций, перемещаемых _Механическим_ _поршнем._ Эти блоки должны формировать первый слой блоков перед поршнем.", - "block.create.linear_chassis.tooltip.condition1": "При движении механическим поршнем", - "block.create.linear_chassis.tooltip.behaviour1": "_Перемещает_ все _прикрепленные_ _рамы_ с одинаковой ориентацией, и блоки перед ним. При возврате поршня в исходное положение блоки будут втягиваться, только если лицевая сторона рамы _липкая_ (см. [Ctrl]).", + "block.create.linear_chassis.tooltip.summary": "Ð�аÑ�траиваемаÑ� оÑ�нова длÑ� конÑ�трукций, перемещаемых _МеханичеÑ�ким_ _поршнем._ Эти блоки должны формировать первый Ñ�лой блоков перед поршнем.", + "block.create.linear_chassis.tooltip.condition1": "При движении механичеÑ�ким поршнем", + "block.create.linear_chassis.tooltip.behaviour1": "_Перемещает_ вÑ�е _прикрепленные_ _рамы_ Ñ� одинаковой ориентацией, и блоки перед ним. При возврате поршнÑ� в иÑ�ходное положение блоки будут втÑ�гиватьÑ�Ñ�, только еÑ�ли лицеваÑ� Ñ�торона рамы _липкаÑ�_ (Ñ�м. [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.linear_chassis.tooltip.control1": "ПКМ со сгустком слизи", - "block.create.linear_chassis.tooltip.action1": "Делает выбранную сторону _липкой._ При возвращении поршня, рама будет _втягивать_ все подсоединенные блоки в своей колонне и в пределах заданного диапазона.", + "block.create.linear_chassis.tooltip.control1": "ПКМ Ñ�о Ñ�гуÑ�тком Ñ�лизи", + "block.create.linear_chassis.tooltip.action1": "Делает выбранную Ñ�торону _липкой._ При возвращении поршнÑ�, рама будет _втÑ�гивать_ вÑ�е подÑ�оединенные блоки в Ñ�воей колонне и в пределах заданного диапазона.", "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "Требуется для вращающихся конструкций с _Механическим_ _подшипником._", - "block.create.radial_chassis.tooltip.condition1": "При вращении с помощью подшипника", - "block.create.radial_chassis.tooltip.behaviour1": "_Поворачивает_ все блоки, прикрепленные к _липким_ сторонам (см. [Ctrl]) в пределах заданного диапазона вокруг себя. _Передает_ вращение на присоединенные поворотные рамы.", + "block.create.radial_chassis.tooltip.summary": "ТребуетÑ�Ñ� длÑ� вращающихÑ�Ñ� конÑ�трукций Ñ� _МеханичеÑ�ким_ _подшипником._", + "block.create.radial_chassis.tooltip.condition1": "При вращении Ñ� помощью подшипника", + "block.create.radial_chassis.tooltip.behaviour1": "_Поворачивает_ вÑ�е блоки, прикрепленные к _липким_ Ñ�торонам (Ñ�м. [Ctrl]) в пределах заданного диапазона вокруг Ñ�ебÑ�. _Передает_ вращение на приÑ�оединенные поворотные рамы.", "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.radial_chassis.tooltip.control1": "ПКМ со сгустком слизи", - "block.create.radial_chassis.tooltip.action1": "Делает выбранную сторону _липкой._ При вращении, все присоединенные блоки в пределах заданного диапазона будут вращаться вместе с ней.", + "block.create.radial_chassis.tooltip.control1": "ПКМ Ñ�о Ñ�гуÑ�тком Ñ�лизи", + "block.create.radial_chassis.tooltip.action1": "Делает выбранную Ñ�торону _липкой._ При вращении, вÑ�е приÑ�оединенные блоки в пределах заданного диапазона будут вращатьÑ�Ñ� вмеÑ�те Ñ� ней.", "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "Механическое устройство, пригодное для _разрушения_ _блоков._", - "block.create.mechanical_drill.tooltip.condition1": "При вращении", - "block.create.mechanical_drill.tooltip.behaviour1": "Действует как _стационарный_ разрушитель блоков. Также _наносит_ _урон_ _существам_ в рабочей области.", - "block.create.mechanical_drill.tooltip.condition2": "При движении механическим поршнем", - "block.create.mechanical_drill.tooltip.behaviour2": "Разрушает блоки, на которые наталкивается.", + "block.create.mechanical_drill.tooltip.summary": "МеханичеÑ�кое уÑ�тройÑ�тво, пригодное длÑ� _разрушениÑ�_ _блоков._", + "block.create.mechanical_drill.tooltip.condition1": "При вращении", + "block.create.mechanical_drill.tooltip.behaviour1": "ДейÑ�твует как _Ñ�тационарный_ разруÑˆÐ¸Ñ‚ель блоков. Также _наноÑ�ит_ _урон_ _Ñ�ущеÑ�твам_ в рабочей облаÑ�ти.", + "block.create.mechanical_drill.tooltip.condition2": "При движении механичеÑ�ким поршнем", + "block.create.mechanical_drill.tooltip.behaviour2": "Разрушает блоки, на которые наталкиваетÑ�Ñ�.", "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "Механический резак для растений, подходящий для автоматизации выращивания средних растений", - "block.create.mechanical_harvester.tooltip.condition1": "При движении механическим поршнем", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Срезает_ все _зрелые_ _посевы_ и сбрасывает их в исходное состояние роста.", + "block.create.mechanical_harvester.tooltip.summary": "МеханичеÑ�кий резак длÑ� раÑ�тений, подходÑ�щий длÑ� автоматизации выращиваниÑ� Ñ�редних раÑ�тений", + "block.create.mechanical_harvester.tooltip.condition1": "При движении механичеÑ�ким поршнем", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Срезает_ вÑ�е _зрелые_ _поÑ�евы_ и Ñ�браÑ�ывает их в иÑ�ходное Ñ�оÑ�тоÑ�ние роÑ�та.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1194,22 +1194,22 @@ "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "Переключение сигнала на основе _предметов_ и _объёма_ _хранилища_ в прикрепленном контейнере.", - "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего порога", - "block.create.stockpile_switch.tooltip.behaviour1": "Перестаёт подавать сигнал", - "block.create.stockpile_switch.tooltip.condition2": "Когда выше верхнего порога", - "block.create.stockpile_switch.tooltip.behaviour2": "Начинает подавать _сигнал_ пока не будет достигнут нижний порог", - "block.create.stockpile_switch.tooltip.control1": "ПКМ", - "block.create.stockpile_switch.tooltip.action1": "Открывает _Меню_ _настройки_", + "block.create.stockpile_switch.tooltip.summary": "Переключение Ñ�игнала на оÑ�нове _предметов_ и _объёма_ _хранилища_ в прикрепленном контейнере.", + "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего порога", + "block.create.stockpile_switch.tooltip.behaviour1": "ПереÑ�таёт подавать Ñ�игнал", + "block.create.stockpile_switch.tooltip.condition2": "Когда выше верхнего порога", + "block.create.stockpile_switch.tooltip.behaviour2": "Ð�ачинает подавать _Ñ�игнал_ пока не будет доÑ�тигнут нижний порог", + "block.create.stockpile_switch.tooltip.control1": "ПКМ", + "block.create.stockpile_switch.tooltip.action1": "Открывает _Меню_ _наÑ�тройки_", "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "Конечные точки для _беспроводных_ соединений. Можно выбрать _частоты_ с помощью любого предмета. Диапазон сигнала ограничен, но достаточно далёк.", - "block.create.redstone_link.tooltip.condition1": "Когда запитан", - "block.create.redstone_link.tooltip.behaviour1": "Получает сигнал на той же _частоте_ и выводит его.", - "block.create.redstone_link.tooltip.control1": "ПКМ с предметом", - "block.create.redstone_link.tooltip.action1": "Устанавливает _частоту_ для этого звена. Всего для определения частоты можно использовать _2_ _предмета._", - "block.create.redstone_link.tooltip.control2": "ПКМ крадясь", - "block.create.redstone_link.tooltip.action2": "Переключение между режимами _приёма_ и _передачи._", + "block.create.redstone_link.tooltip.summary": "Конечные точки длÑ� _беÑ�проводных_ Ñ�оединений. Можно выбрать _чаÑ�тоты_ Ñ� помощью любого предмета. Диапазон Ñ�игнала ограничен, но доÑ�таточно далёк.", + "block.create.redstone_link.tooltip.condition1": "Когда запитан", + "block.create.redstone_link.tooltip.behaviour1": "Получает Ñ�игнал на той же _чаÑ�тоте_ и выводит его.", + "block.create.redstone_link.tooltip.control1": "ПКМ Ñ� предметом", + "block.create.redstone_link.tooltip.action1": "УÑ�танавливает _чаÑ�тоту_ длÑ� Ñ�того звена. Ð’Ñ�его длÑ� определениÑ� чаÑ�тоты можно иÑ�пользовать _2_ _предмета._", + "block.create.redstone_link.tooltip.control2": "ПКМ крадÑ�Ñ�ÑŒ", + "block.create.redstone_link.tooltip.action2": "Переключение между режимами _приёма_ и _передачи._", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,30 +1217,30 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", - "block.create.redstone_contact.tooltip.summary": "Простое устройство для продвинутых механизмов.", - "block.create.redstone_contact.tooltip.condition1": "Когда смотрит на другое контактное соединение", - "block.create.redstone_contact.tooltip.behaviour1": "Подаёт _сигнал_", - "block.create.redstone_contact.tooltip.condition2": "При движении механическим поршнем", - "block.create.redstone_contact.tooltip.behaviour2": "Включает все стационарные контактные соединения, через которые проходит.", + "block.create.redstone_contact.tooltip.summary": "ПроÑ�тое уÑ�тройÑ�тво длÑ� продвинутых механизмов.", + "block.create.redstone_contact.tooltip.condition1": "Когда Ñ�мотрит на другое контактное Ñ�оединение", + "block.create.redstone_contact.tooltip.behaviour1": "Подаёт _Ñ�игнал_", + "block.create.redstone_contact.tooltip.condition2": "При движении механичеÑ�ким поршнем", + "block.create.redstone_contact.tooltip.behaviour2": "Включает вÑ�е Ñ�тационарные контактные Ñ�оединениÑ�, через которые проходит.", "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Этот _контейнер_ позволяет контролировать его емкость. Он может содержать до _16_ _стаков_ любого предмета.", - "block.create.adjustable_crate.tooltip.control1": "ПКМ", - "block.create.adjustable_crate.tooltip.action1": "Открывает _Меню_", + "block.create.adjustable_crate.tooltip.summary": "Этот _контейнер_ позволÑ�ет контролировать его емкоÑ�Ñ‚ÑŒ. Он может Ñ�одержать до _16_ _Ñ�таков_ любого предмета.", + "block.create.adjustable_crate.tooltip.control1": "ПКМ", + "block.create.adjustable_crate.tooltip.action1": "Открывает _Меню_", "block.create.creative_crate.tooltip": "CREATIVE CRATE", - "block.create.creative_crate.tooltip.summary": "Снабжает _Схемопушку_ бесконечным запасом блоков", + "block.create.creative_crate.tooltip.summary": "Снабжает _Схемопушку_ беÑ�конечным запаÑ�ом блоков", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентаря_ и бросает на землю. Не будет бросать предметы до тех пор, пока пространство не освободится. Может быть назначен _фильтр_ в виде стака предметов.", - "block.create.extractor.tooltip.condition1": "Когда запитан", - "block.create.extractor.tooltip.behaviour1": "_Приостанавливает_ экстрактор", + "block.create.extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентарÑ�_ и броÑ�ает на землю. Ð�е будет броÑ�ать предметы до тех пор, пока проÑ�транÑ�тво не оÑ�вободитÑ�Ñ�. Может быть назначен _фильтр_ в виде Ñ�така предметов.", + "block.create.extractor.tooltip.condition1": "Когда запитан", + "block.create.extractor.tooltip.behaviour1": "_ПриоÑ�танавливает_ Ñ�кÑ�трактор", "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", - "block.create.extractor.tooltip.control1": "ПКМ по фильтру", - "block.create.extractor.tooltip.action1": "Устанавливает _стак_ _в_ _руке_ в качестве _фильтра._ Экстрактор будет извлекать _определённый_ _предмет_ в _определённом_ _количестве_ по фильтру.", + "block.create.extractor.tooltip.control1": "ПКМ по фильтру", + "block.create.extractor.tooltip.action1": "УÑ�танавливает _Ñ�так_ _в_ _руке_ в качеÑ�тве _фильтра._ ЭкÑ�трактор будет извлекать _определённый_ _предмет_ в _определённом_ _количеÑ�тве_ по фильтру.", "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", @@ -1259,13 +1259,13 @@ "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентаря_ и бросает на землю. Не будет бросать предметы до тех пор, пока пространство не освободится. Может быть назначен _фильтр_ в виде стака предметов. Может управляться дистанционно через _Передатчик_ _сигнала._", - "block.create.linked_extractor.tooltip.condition1": "Когда соединение активно", - "block.create.linked_extractor.tooltip.behaviour1": "_Приостанавливает_ экстрактор", - "block.create.linked_extractor.tooltip.control1": "ПКМ по фильтру", - "block.create.linked_extractor.tooltip.action1": "Устанавливает _стак_ _в_ _руке_ в качестве _фильтра._ Экстрактор будет извлекать _определённый_ _предмет_ в _определённом_ _количестве_ по фильтру.", - "block.create.linked_extractor.tooltip.control2": "ПКМ по частоте", - "block.create.linked_extractor.tooltip.action2": "Устанавливает _частоту_ для этого экстрактора. При передаче сигнала с передающего _Сигнального_ _соединения_ экстрактор будет приостановлен.", + "block.create.linked_extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентарÑ�_ и броÑ�ает на землю. Ð�е будет броÑ�ать предметы до тех пор, пока проÑ�транÑ�тво не оÑ�вободитÑ�Ñ�. Может быть назначен _фильтр_ в виде Ñ�така предметов. Может управлÑ�Ñ‚ÑŒÑ�Ñ� диÑ�танционно через _Передатчик_ _Ñ�игнала._", + "block.create.linked_extractor.tooltip.condition1": "Когда Ñ�оединение активно", + "block.create.linked_extractor.tooltip.behaviour1": "_ПриоÑ�танавливает_ Ñ�кÑ�трактор", + "block.create.linked_extractor.tooltip.control1": "ПКМ по фильтру", + "block.create.linked_extractor.tooltip.action1": "УÑ�танавливает _Ñ�так_ _в_ _руке_ в качеÑ�тве _фильтра._ ЭкÑ�трактор будет извлекать _определённый_ _предмет_ в _определённом_ _количеÑ�тве_ по фильтру.", + "block.create.linked_extractor.tooltip.control2": "ПКМ по чаÑ�тоте", + "block.create.linked_extractor.tooltip.action2": "УÑ�танавливает _чаÑ�тоту_ длÑ� Ñ�того Ñ�кÑ�трактора. При передаче Ñ�игнала Ñ� передающего _Сигнального_ _Ñ�оединениÑ�_ Ñ�кÑ�трактор будет приоÑ�тановлен.", "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", @@ -1277,7 +1277,7 @@ "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", "block.create.funnel.tooltip": "BELT FUNNEL", - "block.create.funnel.tooltip.summary": "Собирает входящие предметы на _Механической_ _ленте_ и по возможности кладет их в прилагаемый _инвентарь._ Должен быть непосредственно _над_ лентой, с проёмом, смотрящим против направления ленты. Инвентарь должен быть на той же высоте, что и воронка.", + "block.create.funnel.tooltip.summary": "Собирает входÑ�щие предметы на _МеханичеÑ�кой_ _ленте_ и по возможноÑ�ти кладет их в прилагаемый _инвентарь._ Должен быть непоÑ�редÑ�твенно _над_ лентой, Ñ� проёмом, Ñ�мотрÑ�щим против направлениÑ� ленты. Инвентарь должен быть на той же выÑ�оте, что и воронка.", "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", @@ -1294,9 +1294,9 @@ "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", "block.create.belt_observer.tooltip": "BELT OBSERVER", - "block.create.belt_observer.tooltip.summary": "Сканирует предметы, проходящие по _Механической_ _ленте_ перед ним. Хорошо работает с _поршнем_ сверху, отталкивающим определенные предметы.", - "block.create.belt_observer.tooltip.condition1": "Когда предмет соответствует фильтру", - "block.create.belt_observer.tooltip.behaviour1": "Подаёт короткий _импульс_ со всех сторон. Пустой фильтр соответствует любому элементу.", + "block.create.belt_observer.tooltip.summary": "Сканирует предметы, проходÑ�щие по _МеханичеÑ�кой_ _ленте_ перед ним. Хорошо работает Ñ� _поршнем_ Ñ�верху, отталкивающим определенные предметы.", + "block.create.belt_observer.tooltip.condition1": "Когда предмет Ñ�оответÑ�твует фильтру", + "block.create.belt_observer.tooltip.behaviour1": "Подаёт короткий _импульÑ�_ Ñ�о вÑ�ех Ñ�торон. ПуÑ�той фильтр Ñ�оответÑ�твует любому Ñ�лементу.", "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", @@ -1305,10 +1305,10 @@ "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "Простая схема для уменьшения времени проходящего сигнала до _1_ _тика._", + "block.create.pulse_repeater.tooltip.summary": "ПроÑ�таÑ� Ñ�хема длÑ� уменьшениÑ� времени проходÑ�щего Ñ�игнала до _1_ _тика._", "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "Продвинутый _Повторитель_ с _настраиваемой_ _задержкой_ вплоть до 30 минут.", + "block.create.adjustable_repeater.tooltip.summary": "Продвинутый _Повторитель_ Ñ� _наÑ�траиваемой_ _задержкой_ вплоть до 30 минут.", "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index e30433a0d..c8d05e698 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -3,818 +3,818 @@ "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "金合欢窗户", - "block.create.acacia_window_pane": "金合欢窗户板", - "block.create.adjustable_crate": "可调节板条箱", - "block.create.adjustable_pulley": "可调节连携齿轮箱", - "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", - "block.create.adjustable_repeater": "可调节中继器", - "block.create.analog_lever": "可调节拉杆", - "block.create.andesite_bricks": "安山岩砖", - "block.create.andesite_bricks_slab": "安山岩砖台阶", - "block.create.andesite_bricks_stairs": "安山岩砖楼梯", - "block.create.andesite_bricks_wall": "安山岩砖墙", - "block.create.andesite_casing": "安山机壳", - "block.create.andesite_cobblestone": "安山岩圆石", - "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", - "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", - "block.create.andesite_cobblestone_wall": "安山岩圆石墙", - "block.create.andesite_pillar": "竖纹安山岩", - "block.create.basin": "工作盆", - "block.create.belt": "传送带", + "block.create.acacia_window": "金å�ˆæ¬¢çª—户", + "block.create.acacia_window_pane": "金å�ˆæ¬¢çª—户æ�¿", + "block.create.adjustable_crate": "å�¯è°ƒèŠ‚æ�¿æ�¡ç®±", + "block.create.adjustable_pulley": "å�¯è°ƒèŠ‚è¿žæ�ºé½¿è½®ç®±", + "block.create.adjustable_pulse_repeater": "å�¯è°ƒèŠ‚脉冲中继器", + "block.create.adjustable_repeater": "å�¯è°ƒèŠ‚中继器", + "block.create.analog_lever": "å�¯è°ƒèŠ‚拉æ�†", + "block.create.andesite_bricks": "安山岩砖", + "block.create.andesite_bricks_slab": "安山岩砖å�°é˜¶", + "block.create.andesite_bricks_stairs": "安山岩砖楼梯", + "block.create.andesite_bricks_wall": "安山岩砖墙", + "block.create.andesite_casing": "安山机壳", + "block.create.andesite_cobblestone": "安山岩圆石", + "block.create.andesite_cobblestone_slab": "安山岩圆石å�°é˜¶", + "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", + "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_pillar": "竖纹安山岩", + "block.create.basin": "工作盆", + "block.create.belt": "ä¼ é€�带", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "传送带侦测器", - "block.create.belt_tunnel": "传送带隧道", - "block.create.birch_window": "白桦窗户", - "block.create.birch_window_pane": "白桦窗户板", - "block.create.brass_block": "黄铜块", - "block.create.brass_casing": "黄铜机壳", - "block.create.cart_assembler": "矿车装配站", - "block.create.chiseled_dark_scoria": "錾制深色熔渣", - "block.create.chiseled_dolomite": "錾制白云岩", - "block.create.chiseled_gabbro": "錾制辉长岩", - "block.create.chiseled_limestone": "錾制石灰岩", - "block.create.chiseled_scoria": "錾制熔渣", - "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", + "block.create.belt_observer": "ä¼ é€�带侦测器", + "block.create.belt_tunnel": "ä¼ é€�带隧é�“", + "block.create.birch_window": "白桦窗户", + "block.create.birch_window_pane": "白桦窗户æ�¿", + "block.create.brass_block": "黄铜å�—", + "block.create.brass_casing": "黄铜机壳", + "block.create.cart_assembler": "矿车装é…�ç«™", + "block.create.chiseled_dark_scoria": "錾制深色熔渣", + "block.create.chiseled_dolomite": "錾制白云岩", + "block.create.chiseled_gabbro": "錾制辉长岩", + "block.create.chiseled_limestone": "錾制石ç�°å²©", + "block.create.chiseled_scoria": "錾制熔渣", + "block.create.chiseled_weathered_limestone": "錾制风化石ç�°å²©", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "时钟轴承", - "block.create.clutch": "离合器", - "block.create.cogwheel": "齿轮", - "block.create.copper_block": "铜块", - "block.create.copper_casing": "铜机壳", - "block.create.copper_ore": "铜矿石", - "block.create.copper_shingles": "铜瓦", - "block.create.creative_crate": "创造板条箱", - "block.create.creative_motor": "创造马达", - "block.create.crushing_wheel": "粉碎轮", - "block.create.crushing_wheel_controller": "粉碎轮控制器", - "block.create.cuckoo_clock": "布谷鸟闹钟", - "block.create.dark_oak_window": "深色橡木窗户", - "block.create.dark_oak_window_pane": "深色橡木窗户板", - "block.create.dark_scoria": "深色熔渣", - "block.create.dark_scoria_bricks": "深色熔渣砖", - "block.create.dark_scoria_bricks_slab": "深色熔渣砖台阶", - "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", - "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", - "block.create.dark_scoria_cobblestone": "深色熔渣圆石", - "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石台阶", - "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", - "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", - "block.create.dark_scoria_pillar": "竖纹深色熔渣", - "block.create.deployer": "机械手", + "block.create.clockwork_bearing": "时钟轴承", + "block.create.clutch": "离å�ˆå™¨", + "block.create.cogwheel": "齿轮", + "block.create.copper_block": "é“œå�—", + "block.create.copper_casing": "铜机壳", + "block.create.copper_ore": "铜矿石", + "block.create.copper_shingles": "铜瓦", + "block.create.creative_crate": "创造æ�¿æ�¡ç®±", + "block.create.creative_motor": "创造马达", + "block.create.crushing_wheel": "粉碎轮", + "block.create.crushing_wheel_controller": "粉碎轮控制器", + "block.create.cuckoo_clock": "布谷鸟闹钟", + "block.create.dark_oak_window": "深色橡木窗户", + "block.create.dark_oak_window_pane": "深色橡木窗户æ�¿", + "block.create.dark_scoria": "深色熔渣", + "block.create.dark_scoria_bricks": "深色熔渣砖", + "block.create.dark_scoria_bricks_slab": "深色熔渣砖å�°é˜¶", + "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", + "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", + "block.create.dark_scoria_cobblestone": "深色熔渣圆石", + "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石å�°é˜¶", + "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", + "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", + "block.create.dark_scoria_pillar": "竖纹深色熔渣", + "block.create.deployer": "机械手", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "闪长岩砖", - "block.create.diorite_bricks_slab": "闪长岩砖台阶", - "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", - "block.create.diorite_bricks_wall": "闪长岩砖墙", - "block.create.diorite_cobblestone": "闪长岩圆石", - "block.create.diorite_cobblestone_slab": "闪长岩圆石台阶", - "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", - "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dolomite": "白云岩", - "block.create.dolomite_bricks": "白云岩砖", - "block.create.dolomite_bricks_slab": "白云岩砖台阶", - "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", - "block.create.dolomite_bricks_wall": "白云岩砖墙", - "block.create.dolomite_cobblestone": "白云岩圆石", - "block.create.dolomite_cobblestone_slab": "白云岩圆石台阶", - "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", - "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", - "block.create.dolomite_pillar": "竖纹白云岩", - "block.create.encased_belt": "连携齿轮箱", - "block.create.encased_fan": "鼓风机", - "block.create.encased_shaft": "齿轮箱", - "block.create.extractor": "提取器", - "block.create.fancy_andesite_bricks": "方纹安山岩砖", - "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", - "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", - "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", - "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", - "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖台阶", - "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", - "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", - "block.create.fancy_diorite_bricks": "方纹闪长岩砖", - "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖台阶", - "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", - "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", - "block.create.fancy_dolomite_bricks": "方纹白云岩砖", - "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖台阶", - "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", - "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", - "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", - "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖台阶", - "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", - "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", - "block.create.fancy_granite_bricks": "方纹花岗岩砖", - "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖台阶", - "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", - "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", - "block.create.fancy_limestone_bricks": "方纹石灰岩砖", - "block.create.fancy_limestone_bricks_slab": "方纹石灰岩砖台阶", - "block.create.fancy_limestone_bricks_stairs": "方纹石灰岩砖楼梯", - "block.create.fancy_limestone_bricks_wall": "方纹石灰岩砖墙", - "block.create.fancy_scoria_bricks": "方纹熔渣砖", - "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖台阶", - "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", - "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", - "block.create.fancy_weathered_limestone_bricks": "方纹风化石灰岩砖", - "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石灰岩砖台阶", - "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石灰岩砖楼梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石灰岩砖墙", + "block.create.diorite_bricks": "闪长岩砖", + "block.create.diorite_bricks_slab": "闪长岩砖å�°é˜¶", + "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", + "block.create.diorite_bricks_wall": "闪长岩砖墙", + "block.create.diorite_cobblestone": "闪长岩圆石", + "block.create.diorite_cobblestone_slab": "闪长岩圆石å�°é˜¶", + "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", + "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", + "block.create.diorite_pillar": "竖纹闪长岩", + "block.create.dolomite": "白云岩", + "block.create.dolomite_bricks": "白云岩砖", + "block.create.dolomite_bricks_slab": "白云岩砖å�°é˜¶", + "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", + "block.create.dolomite_bricks_wall": "白云岩砖墙", + "block.create.dolomite_cobblestone": "白云岩圆石", + "block.create.dolomite_cobblestone_slab": "白云岩圆石å�°é˜¶", + "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", + "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", + "block.create.dolomite_pillar": "竖纹白云岩", + "block.create.encased_belt": "è¿žæ�ºé½¿è½®ç®±", + "block.create.encased_fan": "鼓风机", + "block.create.encased_shaft": "齿轮箱", + "block.create.extractor": "æ��å�–器", + "block.create.fancy_andesite_bricks": "方纹安山岩砖", + "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖å�°é˜¶", + "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", + "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", + "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", + "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖å�°é˜¶", + "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", + "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", + "block.create.fancy_diorite_bricks": "方纹闪长岩砖", + "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖å�°é˜¶", + "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", + "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", + "block.create.fancy_dolomite_bricks": "方纹白云岩砖", + "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖å�°é˜¶", + "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", + "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", + "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", + "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖å�°é˜¶", + "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", + "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", + "block.create.fancy_granite_bricks": "方纹花岗岩砖", + "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖å�°é˜¶", + "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", + "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", + "block.create.fancy_limestone_bricks": "方纹石ç�°å²©ç –", + "block.create.fancy_limestone_bricks_slab": "方纹石ç�°å²©ç –å�°é˜¶", + "block.create.fancy_limestone_bricks_stairs": "方纹石ç�°å²©ç –楼梯", + "block.create.fancy_limestone_bricks_wall": "方纹石ç�°å²©ç –墙", + "block.create.fancy_scoria_bricks": "方纹熔渣砖", + "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖å�°é˜¶", + "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", + "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", + "block.create.fancy_weathered_limestone_bricks": "方纹风化石ç�°å²©ç –", + "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石ç�°å²©ç –å�°é˜¶", + "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石ç�°å²©ç –楼梯", + "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石ç�°å²©ç –墙", "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.flywheel": "飞轮", - "block.create.framed_glass": "边框玻璃", - "block.create.framed_glass_pane": "边框玻璃板", - "block.create.funnel": "漏斗", - "block.create.furnace_engine": "熔炼引擎", - "block.create.gabbro": "辉长岩", - "block.create.gabbro_bricks": "辉长岩砖", - "block.create.gabbro_bricks_slab": "辉长岩砖台阶", - "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", - "block.create.gabbro_bricks_wall": "辉长岩砖墙", - "block.create.gabbro_cobblestone": "辉长岩圆石", - "block.create.gabbro_cobblestone_slab": "辉长岩圆石台阶", - "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", - "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", - "block.create.gabbro_pillar": "竖纹辉长岩", - "block.create.gearbox": "十字齿轮箱", - "block.create.gearshift": "红石齿轮箱", - "block.create.granite_bricks": "花岗岩砖", - "block.create.granite_bricks_slab": "花岗岩砖台阶", - "block.create.granite_bricks_stairs": "花岗岩砖楼梯", - "block.create.granite_bricks_wall": "花岗岩砖墙", - "block.create.granite_cobblestone": "花岗岩圆石", - "block.create.granite_cobblestone_slab": "花岗岩圆石台阶", - "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", - "block.create.granite_cobblestone_wall": "花岗岩圆石墙", - "block.create.granite_pillar": "竖纹花岗岩", - "block.create.hand_crank": "手摇曲柄", - "block.create.horizontal_framed_glass": "竖直边框玻璃", - "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", - "block.create.jungle_window": "丛林窗户", - "block.create.jungle_window_pane": "丛林窗户板", - "block.create.large_cogwheel": "大齿轮", - "block.create.layered_andesite": "层叠安山岩", - "block.create.layered_dark_scoria": "层叠深色熔渣", - "block.create.layered_diorite": "层叠闪长岩", - "block.create.layered_dolomite": "层叠白云岩", - "block.create.layered_gabbro": "层叠辉长岩", - "block.create.layered_granite": "层叠花岗岩", - "block.create.layered_limestone": "层叠石灰岩", - "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_weathered_limestone": "层叠风化石灰岩", - "block.create.limesand": "石灰沙", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩砖", - "block.create.limestone_bricks_slab": "石灰岩砖台阶", - "block.create.limestone_bricks_stairs": "石灰岩砖楼梯", - "block.create.limestone_bricks_wall": "石灰岩砖墙", - "block.create.limestone_cobblestone": "石灰岩圆石", - "block.create.limestone_cobblestone_slab": "石灰岩圆石台阶", - "block.create.limestone_cobblestone_stairs": "石灰岩圆石楼梯", - "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", - "block.create.limestone_pillar": "竖纹石灰岩", - "block.create.linear_chassis": "机壳底盘", - "block.create.linked_extractor": "无线提取器", - "block.create.linked_transposer": "无线传输器", + "block.create.flywheel": "飞轮", + "block.create.framed_glass": "边框玻璃", + "block.create.framed_glass_pane": "边框玻璃æ�¿", + "block.create.funnel": "æ¼�æ–—", + "block.create.furnace_engine": "熔炼引擎", + "block.create.gabbro": "辉长岩", + "block.create.gabbro_bricks": "辉长岩砖", + "block.create.gabbro_bricks_slab": "辉长岩砖å�°é˜¶", + "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", + "block.create.gabbro_bricks_wall": "辉长岩砖墙", + "block.create.gabbro_cobblestone": "辉长岩圆石", + "block.create.gabbro_cobblestone_slab": "辉长岩圆石å�°é˜¶", + "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", + "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", + "block.create.gabbro_pillar": "竖纹辉长岩", + "block.create.gearbox": "å��字齿轮箱", + "block.create.gearshift": "红石齿轮箱", + "block.create.granite_bricks": "花岗岩砖", + "block.create.granite_bricks_slab": "花岗岩砖å�°é˜¶", + "block.create.granite_bricks_stairs": "花岗岩砖楼梯", + "block.create.granite_bricks_wall": "花岗岩砖墙", + "block.create.granite_cobblestone": "花岗岩圆石", + "block.create.granite_cobblestone_slab": "花岗岩圆石å�°é˜¶", + "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", + "block.create.granite_cobblestone_wall": "花岗岩圆石墙", + "block.create.granite_pillar": "竖纹花岗岩", + "block.create.hand_crank": "手摇曲柄", + "block.create.horizontal_framed_glass": "竖直边框玻璃", + "block.create.horizontal_framed_glass_pane": "竖直边框玻璃æ�¿", + "block.create.jungle_window": "丛林窗户", + "block.create.jungle_window_pane": "丛林窗户æ�¿", + "block.create.large_cogwheel": "大齿轮", + "block.create.layered_andesite": "层å� å®‰å±±å²©", + "block.create.layered_dark_scoria": "层å� æ·±è‰²ç†”渣", + "block.create.layered_diorite": "层å� é—ªé•¿å²©", + "block.create.layered_dolomite": "层å� ç™½äº‘岩", + "block.create.layered_gabbro": "层å� è¾‰é•¿å²©", + "block.create.layered_granite": "层å� èŠ±å²—岩", + "block.create.layered_limestone": "层å� çŸ³ç�°å²©", + "block.create.layered_scoria": "层å� ç†”渣", + "block.create.layered_weathered_limestone": "层å� é£ŽåŒ–石ç�°å²©", + "block.create.limesand": "石ç�°æ²™", + "block.create.limestone": "石ç�°å²©", + "block.create.limestone_bricks": "石ç�°å²©ç –", + "block.create.limestone_bricks_slab": "石ç�°å²©ç –å�°é˜¶", + "block.create.limestone_bricks_stairs": "石ç�°å²©ç –楼梯", + "block.create.limestone_bricks_wall": "石ç�°å²©ç –墙", + "block.create.limestone_cobblestone": "石ç�°å²©åœ†çŸ³", + "block.create.limestone_cobblestone_slab": "石ç�°å²©åœ†çŸ³å�°é˜¶", + "block.create.limestone_cobblestone_stairs": "石ç�°å²©åœ†çŸ³æ¥¼æ¢¯", + "block.create.limestone_cobblestone_wall": "石ç�°å²©åœ†çŸ³å¢™", + "block.create.limestone_pillar": "竖纹石ç�°å²©", + "block.create.linear_chassis": "机壳底盘", + "block.create.linked_extractor": "无线æ��å�–器", + "block.create.linked_transposer": "无线传输器", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "动力轴承", - "block.create.mechanical_crafter": "动力制造器", - "block.create.mechanical_drill": "动力钻头", - "block.create.mechanical_harvester": "动力收割机", - "block.create.mechanical_mixer": "动力搅拌器", - "block.create.mechanical_piston": "动力活塞", - "block.create.mechanical_piston_head": "动力活塞头", - "block.create.mechanical_plough": "动力犁", - "block.create.mechanical_press": "动力辊压机", + "block.create.mechanical_bearing": "动力轴承", + "block.create.mechanical_crafter": "动力制造器", + "block.create.mechanical_drill": "动力钻头", + "block.create.mechanical_harvester": "动力收割机", + "block.create.mechanical_mixer": "动力æ�…拌器", + "block.create.mechanical_piston": "动力活塞", + "block.create.mechanical_piston_head": "动力活塞头", + "block.create.mechanical_plough": "动力çŠ�", + "block.create.mechanical_press": "动力辊压机", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "动力切割机", - "block.create.millstone": "石磨", - "block.create.minecart_anchor": "矿车锚", - "block.create.mossy_andesite": "生苔安山岩", - "block.create.mossy_dark_scoria": "生苔深色熔渣", - "block.create.mossy_diorite": "生苔闪长岩", - "block.create.mossy_dolomite": "生苔白云岩", - "block.create.mossy_gabbro": "生苔辉长岩", - "block.create.mossy_granite": "生苔花岗岩", - "block.create.mossy_limestone": "生苔石灰岩", - "block.create.mossy_scoria": "生苔熔渣", - "block.create.mossy_weathered_limestone": "生苔风化石灰岩", - "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", - "block.create.natural_scoria": "天然熔渣", - "block.create.nixie_tube": "辉光管", - "block.create.nozzle": "分散网", - "block.create.oak_window": "橡木窗户", - "block.create.oak_window_pane": "橡木窗户板", - "block.create.ornate_iron_window": "华丽铁窗户", - "block.create.ornate_iron_window_pane": "华丽铁窗户板", - "block.create.overgrown_andesite": "生草安山岩", - "block.create.overgrown_dark_scoria": "生草深色熔渣", - "block.create.overgrown_diorite": "生草闪长岩", - "block.create.overgrown_dolomite": "生草白云岩", - "block.create.overgrown_gabbro": "生草辉长岩", - "block.create.overgrown_granite": "生草花岗岩", - "block.create.overgrown_limestone": "生草石灰岩", - "block.create.overgrown_scoria": "生草熔渣", - "block.create.overgrown_weathered_limestone": "生草风化石灰岩", + "block.create.mechanical_saw": "动力切割机", + "block.create.millstone": "石磨", + "block.create.minecart_anchor": "矿车锚", + "block.create.mossy_andesite": "生苔安山岩", + "block.create.mossy_dark_scoria": "生苔深色熔渣", + "block.create.mossy_diorite": "生苔闪长岩", + "block.create.mossy_dolomite": "生苔白云岩", + "block.create.mossy_gabbro": "生苔辉长岩", + "block.create.mossy_granite": "生苔花岗岩", + "block.create.mossy_limestone": "生苔石ç�°å²©", + "block.create.mossy_scoria": "生苔熔渣", + "block.create.mossy_weathered_limestone": "生苔风化石ç�°å²©", + "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", + "block.create.natural_scoria": "天然熔渣", + "block.create.nixie_tube": "辉光管", + "block.create.nozzle": "分散网", + "block.create.oak_window": "橡木窗户", + "block.create.oak_window_pane": "橡木窗户æ�¿", + "block.create.ornate_iron_window": "å�Žä¸½é“�窗户", + "block.create.ornate_iron_window_pane": "å�Žä¸½é“�窗户æ�¿", + "block.create.overgrown_andesite": "生è�‰å®‰å±±å²©", + "block.create.overgrown_dark_scoria": "生è�‰æ·±è‰²ç†”渣", + "block.create.overgrown_diorite": "生è�‰é—ªé•¿å²©", + "block.create.overgrown_dolomite": "生è�‰ç™½äº‘岩", + "block.create.overgrown_gabbro": "生è�‰è¾‰é•¿å²©", + "block.create.overgrown_granite": "生è�‰èŠ±å²—岩", + "block.create.overgrown_limestone": "生è�‰çŸ³ç�°å²©", + "block.create.overgrown_scoria": "生è�‰ç†”渣", + "block.create.overgrown_weathered_limestone": "生è�‰é£ŽåŒ–石ç�°å²©", "block.create.packager": "UNLOCALIZED: Packager", - "block.create.paved_andesite": "安山岩铺路石", - "block.create.paved_andesite_slab": "安山岩铺路石台阶", - "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", - "block.create.paved_andesite_wall": "安山岩铺路石墙", - "block.create.paved_dark_scoria": "深色熔渣铺路石", - "block.create.paved_dark_scoria_slab": "深色熔渣铺路石台阶", - "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", - "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", - "block.create.paved_diorite": "闪长岩铺路石", - "block.create.paved_diorite_slab": "闪长岩铺路石台阶", - "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", - "block.create.paved_diorite_wall": "闪长岩铺路石墙", - "block.create.paved_dolomite": "白云岩铺路石", - "block.create.paved_dolomite_slab": "白云岩铺路石台阶", - "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", - "block.create.paved_dolomite_wall": "白云岩铺路石墙", - "block.create.paved_gabbro": "辉长岩铺路石", - "block.create.paved_gabbro_slab": "辉长岩铺路石台阶", - "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", - "block.create.paved_gabbro_wall": "辉长岩铺路石墙", - "block.create.paved_granite": "花岗岩铺路石", - "block.create.paved_granite_slab": "花岗岩铺路石台阶", - "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", - "block.create.paved_granite_wall": "花岗岩铺路石墙", - "block.create.paved_limestone": "石灰岩铺路石", - "block.create.paved_limestone_slab": "石灰岩铺路石台阶", - "block.create.paved_limestone_stairs": "石灰岩铺路石楼梯", - "block.create.paved_limestone_wall": "石灰岩铺路石墙", - "block.create.paved_scoria": "熔渣铺路石", - "block.create.paved_scoria_slab": "熔渣铺路石台阶", - "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", - "block.create.paved_scoria_wall": "熔渣铺路石墙", - "block.create.paved_weathered_limestone": "风化石灰岩铺路石", - "block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶", - "block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯", - "block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙", - "block.create.piston_extension_pole": "活塞杆", - "block.create.polished_dark_scoria": "磨制深色熔渣", - "block.create.polished_dark_scoria_slab": "磨制深色熔渣台阶", - "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", - "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", - "block.create.polished_dolomite": "磨制白云岩", - "block.create.polished_dolomite_slab": "磨制白云岩台阶", - "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", - "block.create.polished_dolomite_wall": "磨制白云岩墙", - "block.create.polished_gabbro": "磨制辉长岩", - "block.create.polished_gabbro_slab": "磨制辉长岩台阶", - "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", - "block.create.polished_gabbro_wall": "磨制辉长岩墙", - "block.create.polished_limestone": "磨制石灰岩", - "block.create.polished_limestone_slab": "磨制石灰岩台阶", - "block.create.polished_limestone_stairs": "磨制石灰岩楼梯", - "block.create.polished_limestone_wall": "磨制石灰岩墙", - "block.create.polished_scoria": "磨制熔渣", - "block.create.polished_scoria_slab": "磨制熔渣台阶", - "block.create.polished_scoria_stairs": "磨制熔渣楼梯", - "block.create.polished_scoria_wall": "磨制熔渣墙", - "block.create.polished_weathered_limestone": "磨制风化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨制风化石灰岩台阶", - "block.create.polished_weathered_limestone_stairs": "磨制风化石灰岩楼梯", - "block.create.polished_weathered_limestone_wall": "磨制风化石灰岩墙", - "block.create.portable_storage_interface": "移动式存储接口", - "block.create.powered_latch": "锁存器", - "block.create.powered_toggle_latch": "T触发器", - "block.create.pulley_magnet": "传送带磁铁", - "block.create.pulse_repeater": "脉冲中继器", - "block.create.radial_chassis": "旋转底盘", + "block.create.paved_andesite": "安山岩铺路石", + "block.create.paved_andesite_slab": "安山岩铺路石å�°é˜¶", + "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", + "block.create.paved_andesite_wall": "安山岩铺路石墙", + "block.create.paved_dark_scoria": "深色熔渣铺路石", + "block.create.paved_dark_scoria_slab": "深色熔渣铺路石å�°é˜¶", + "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", + "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", + "block.create.paved_diorite": "闪长岩铺路石", + "block.create.paved_diorite_slab": "闪长岩铺路石å�°é˜¶", + "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", + "block.create.paved_diorite_wall": "闪长岩铺路石墙", + "block.create.paved_dolomite": "白云岩铺路石", + "block.create.paved_dolomite_slab": "白云岩铺路石å�°é˜¶", + "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", + "block.create.paved_dolomite_wall": "白云岩铺路石墙", + "block.create.paved_gabbro": "辉长岩铺路石", + "block.create.paved_gabbro_slab": "辉长岩铺路石å�°é˜¶", + "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", + "block.create.paved_gabbro_wall": "辉长岩铺路石墙", + "block.create.paved_granite": "花岗岩铺路石", + "block.create.paved_granite_slab": "花岗岩铺路石å�°é˜¶", + "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", + "block.create.paved_granite_wall": "花岗岩铺路石墙", + "block.create.paved_limestone": "石ç�°å²©é“ºè·¯çŸ³", + "block.create.paved_limestone_slab": "石ç�°å²©é“ºè·¯çŸ³å�°é˜¶", + "block.create.paved_limestone_stairs": "石ç�°å²©é“ºè·¯çŸ³æ¥¼æ¢¯", + "block.create.paved_limestone_wall": "石ç�°å²©é“ºè·¯çŸ³å¢™", + "block.create.paved_scoria": "熔渣铺路石", + "block.create.paved_scoria_slab": "熔渣铺路石å�°é˜¶", + "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", + "block.create.paved_scoria_wall": "熔渣铺路石墙", + "block.create.paved_weathered_limestone": "风化石ç�°å²©é“ºè·¯çŸ³", + "block.create.paved_weathered_limestone_slab": "风化石ç�°å²©é“ºè·¯çŸ³å�°é˜¶", + "block.create.paved_weathered_limestone_stairs": "风化石ç�°å²©é“ºè·¯çŸ³æ¥¼æ¢¯", + "block.create.paved_weathered_limestone_wall": "风化石ç�°å²©é“ºè·¯çŸ³å¢™", + "block.create.piston_extension_pole": "活塞æ�†", + "block.create.polished_dark_scoria": "磨制深色熔渣", + "block.create.polished_dark_scoria_slab": "磨制深色熔渣å�°é˜¶", + "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", + "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", + "block.create.polished_dolomite": "磨制白云岩", + "block.create.polished_dolomite_slab": "磨制白云岩å�°é˜¶", + "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", + "block.create.polished_dolomite_wall": "磨制白云岩墙", + "block.create.polished_gabbro": "磨制辉长岩", + "block.create.polished_gabbro_slab": "磨制辉长岩å�°é˜¶", + "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", + "block.create.polished_gabbro_wall": "磨制辉长岩墙", + "block.create.polished_limestone": "磨制石ç�°å²©", + "block.create.polished_limestone_slab": "磨制石ç�°å²©å�°é˜¶", + "block.create.polished_limestone_stairs": "磨制石ç�°å²©æ¥¼æ¢¯", + "block.create.polished_limestone_wall": "磨制石ç�°å²©å¢™", + "block.create.polished_scoria": "磨制熔渣", + "block.create.polished_scoria_slab": "磨制熔渣å�°é˜¶", + "block.create.polished_scoria_stairs": "磨制熔渣楼梯", + "block.create.polished_scoria_wall": "磨制熔渣墙", + "block.create.polished_weathered_limestone": "磨制风化石ç�°å²©", + "block.create.polished_weathered_limestone_slab": "磨制风化石ç�°å²©å�°é˜¶", + "block.create.polished_weathered_limestone_stairs": "磨制风化石ç�°å²©æ¥¼æ¢¯", + "block.create.polished_weathered_limestone_wall": "磨制风化石ç�°å²©å¢™", + "block.create.portable_storage_interface": "移动å¼�存储接å�£", + "block.create.powered_latch": "é”�存器", + "block.create.powered_toggle_latch": "T触å�‘器", + "block.create.pulley_magnet": "ä¼ é€�带ç£�é“�", + "block.create.pulse_repeater": "脉冲中继器", + "block.create.radial_chassis": "旋转底盘", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "信号检测器", - "block.create.redstone_link": "无限红石信号终端", + "block.create.redstone_contact": "ä¿¡å�·æ£€æµ‹å™¨", + "block.create.redstone_link": "æ— é™�红石信å�·ç»ˆç«¯", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "绳索", - "block.create.rope_pulley": "绳索滑轮", - "block.create.rotation_speed_controller": "转速控制器", - "block.create.schematic_table": "蓝图桌", - "block.create.schematicannon": "蓝图加农炮", - "block.create.scoria": "熔渣", - "block.create.scoria_bricks": "熔渣砖", - "block.create.scoria_bricks_slab": "熔渣砖台阶", - "block.create.scoria_bricks_stairs": "熔渣砖楼梯", - "block.create.scoria_bricks_wall": "熔渣砖墙", - "block.create.scoria_cobblestone": "熔渣圆石", - "block.create.scoria_cobblestone_slab": "熔渣圆石台阶", - "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", - "block.create.scoria_cobblestone_wall": "熔渣圆石墙", - "block.create.scoria_pillar": "竖纹熔渣", - "block.create.secondary_linear_chassis": "机壳底盘2号", - "block.create.sequenced_gearshift": "可编程齿轮箱", - "block.create.shaft": "传动杆", - "block.create.speedometer": "速度表", - "block.create.spruce_window": "云杉窗户", - "block.create.spruce_window_pane": "云杉窗户板", - "block.create.sticky_mechanical_piston": "粘性动力活塞", - "block.create.stockpile_switch": "存储检测器", - "block.create.stressometer": "应力表", - "block.create.tiled_glass": "十字玻璃窗", - "block.create.tiled_glass_pane": "十字玻璃窗板", - "block.create.transposer": "传输器", - "block.create.turntable": "转盘", - "block.create.vertical_extractor": "竖直提取器", - "block.create.vertical_framed_glass": "竖直边框玻璃", - "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", - "block.create.vertical_funnel": "竖直漏斗", - "block.create.vertical_linked_extractor": "竖直无限提取器", - "block.create.vertical_linked_transposer": "竖直无线传输器", - "block.create.vertical_transposer": "竖直传输器", - "block.create.water_wheel": "水车", - "block.create.weathered_limestone": "风化石灰岩", - "block.create.weathered_limestone_bricks": "风化石灰岩砖", - "block.create.weathered_limestone_bricks_slab": "风化石灰岩砖台阶", - "block.create.weathered_limestone_bricks_stairs": "风化石灰岩砖楼梯", - "block.create.weathered_limestone_bricks_wall": "风化石灰岩砖墙", - "block.create.weathered_limestone_cobblestone": "风化石灰岩圆石", - "block.create.weathered_limestone_cobblestone_slab": "风化石灰岩圆石台阶", - "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", - "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", - "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", - "block.create.zinc_block": "锌块", - "block.create.zinc_ore": "锌矿石", + "block.create.rope": "绳索", + "block.create.rope_pulley": "绳索滑轮", + "block.create.rotation_speed_controller": "转速控制器", + "block.create.schematic_table": "è“�图桌", + "block.create.schematicannon": "è“�图加农炮", + "block.create.scoria": "熔渣", + "block.create.scoria_bricks": "熔渣砖", + "block.create.scoria_bricks_slab": "熔渣砖å�°é˜¶", + "block.create.scoria_bricks_stairs": "熔渣砖楼梯", + "block.create.scoria_bricks_wall": "熔渣砖墙", + "block.create.scoria_cobblestone": "熔渣圆石", + "block.create.scoria_cobblestone_slab": "熔渣圆石å�°é˜¶", + "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", + "block.create.scoria_cobblestone_wall": "熔渣圆石墙", + "block.create.scoria_pillar": "竖纹熔渣", + "block.create.secondary_linear_chassis": "机壳底盘2å�·", + "block.create.sequenced_gearshift": "å�¯ç¼–程齿轮箱", + "block.create.shaft": "传动æ�†", + "block.create.speedometer": "速度表", + "block.create.spruce_window": "云æ�‰çª—户", + "block.create.spruce_window_pane": "云æ�‰çª—户æ�¿", + "block.create.sticky_mechanical_piston": "粘性动力活塞", + "block.create.stockpile_switch": "存储检测器", + "block.create.stressometer": "应力表", + "block.create.tiled_glass": "å��字玻璃窗", + "block.create.tiled_glass_pane": "å��字玻璃窗æ�¿", + "block.create.transposer": "传输器", + "block.create.turntable": "转盘", + "block.create.vertical_extractor": "ç«–ç›´æ��å�–器", + "block.create.vertical_framed_glass": "竖直边框玻璃", + "block.create.vertical_framed_glass_pane": "竖直边框玻璃æ�¿", + "block.create.vertical_funnel": "ç«–ç›´æ¼�æ–—", + "block.create.vertical_linked_extractor": "ç«–ç›´æ— é™�æ��å�–器", + "block.create.vertical_linked_transposer": "竖直无线传输器", + "block.create.vertical_transposer": "竖直传输器", + "block.create.water_wheel": "水车", + "block.create.weathered_limestone": "风化石ç�°å²©", + "block.create.weathered_limestone_bricks": "风化石ç�°å²©ç –", + "block.create.weathered_limestone_bricks_slab": "风化石ç�°å²©ç –å�°é˜¶", + "block.create.weathered_limestone_bricks_stairs": "风化石ç�°å²©ç –楼梯", + "block.create.weathered_limestone_bricks_wall": "风化石ç�°å²©ç –墙", + "block.create.weathered_limestone_cobblestone": "风化石ç�°å²©åœ†çŸ³", + "block.create.weathered_limestone_cobblestone_slab": "风化石ç�°å²©åœ†çŸ³å�°é˜¶", + "block.create.weathered_limestone_cobblestone_stairs": "风化石ç�°å²©åœ†çŸ³æ¥¼æ¢¯", + "block.create.weathered_limestone_cobblestone_wall": "风化石ç�°å²©åœ†çŸ³å¢™", + "block.create.weathered_limestone_pillar": "竖纹风化石ç�°å²©", + "block.create.zinc_block": "锌å�—", + "block.create.zinc_ore": "锌矿石", - "entity.create.contraption": "结构", - "entity.create.stationary_contraption": "固定结构", - "entity.create.super_glue": "强力胶", + "entity.create.contraption": "结构", + "entity.create.stationary_contraption": "固定结构", + "entity.create.super_glue": "强力胶", - "item.create.andesite_alloy": "安山合金", - "item.create.attribute_filter": "属性过滤器", - "item.create.belt_connector": "传送带", - "item.create.brass_hand": "黄铜手部零件", - "item.create.brass_ingot": "黄铜锭", - "item.create.brass_nugget": "黄铜粒", - "item.create.brass_sheet": "黄铜板", - "item.create.chromatic_compound": "异彩化合物", - "item.create.copper_ingot": "铜锭", - "item.create.copper_nugget": "铜粒", - "item.create.copper_sheet": "铜板", - "item.create.crafter_slot_cover": "制造器盖板", - "item.create.crushed_brass": "粉碎黄铜", - "item.create.crushed_copper_ore": "粉碎铜矿石", - "item.create.crushed_gold_ore": "粉碎金矿石", - "item.create.crushed_iron_ore": "粉碎铁矿石", - "item.create.crushed_zinc_ore": "粉碎锌矿石", - "item.create.deforester": "树林毁灭者", - "item.create.dough": "面团", - "item.create.electron_tube": "电子管", - "item.create.empty_schematic": "空白蓝图", - "item.create.extendo_grip": "伸缩机械手", - "item.create.filter": "过滤器", - "item.create.furnace_minecart_contraption": "装配过的动力矿车", - "item.create.goggles": "工程师护目镜", - "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "手持式方块放置器", - "item.create.handheld_worldshaper": "手持式环境塑形器", - "item.create.integrated_circuit": "集成电路板", - "item.create.iron_sheet": "铁板", - "item.create.lapis_sheet": "青金石板", - "item.create.minecart_contraption": "装配过的矿车", - "item.create.polished_rose_quartz": "磨制玫瑰石英", - "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.propeller": "扇叶", - "item.create.red_sand_paper": "红砂纸", - "item.create.refined_radiance": "光辉石", - "item.create.rose_quartz": "玫瑰石英", - "item.create.sand_paper": "砂纸", - "item.create.schematic": "蓝图", - "item.create.schematic_and_quill": "蓝图与笔", - "item.create.shadow_steel": "暗影金属", - "item.create.super_glue": "强力胶", - "item.create.tree_fertilizer": "树木肥料", - "item.create.vertical_gearbox": "竖直十字齿轮箱", - "item.create.wand_of_symmetry": "对称法杖", - "item.create.wheat_flour": "小麦粉", - "item.create.whisk": "搅拌器", - "item.create.wrench": "扳手", - "item.create.zinc_ingot": "锌锭", - "item.create.zinc_nugget": "锌粒", + "item.create.andesite_alloy": "安山å�ˆé‡‘", + "item.create.attribute_filter": "属性过滤器", + "item.create.belt_connector": "ä¼ é€�带", + "item.create.brass_hand": "黄铜手部零件", + "item.create.brass_ingot": "黄铜锭", + "item.create.brass_nugget": "黄铜粒", + "item.create.brass_sheet": "黄铜æ�¿", + "item.create.chromatic_compound": "异彩化å�ˆç‰©", + "item.create.copper_ingot": "铜锭", + "item.create.copper_nugget": "铜粒", + "item.create.copper_sheet": "é“œæ�¿", + "item.create.crafter_slot_cover": "制造器盖æ�¿", + "item.create.crushed_brass": "粉碎黄铜", + "item.create.crushed_copper_ore": "粉碎铜矿石", + "item.create.crushed_gold_ore": "粉碎金矿石", + "item.create.crushed_iron_ore": "粉碎é“�矿石", + "item.create.crushed_zinc_ore": "粉碎锌矿石", + "item.create.deforester": "æ ‘æž—æ¯�ç�­è€…", + "item.create.dough": "é�¢å›¢", + "item.create.electron_tube": "电å­�管", + "item.create.empty_schematic": "空白è“�图", + "item.create.extendo_grip": "伸缩机械手", + "item.create.filter": "过滤器", + "item.create.furnace_minecart_contraption": "装é…�过的动力矿车", + "item.create.goggles": "工程师护目镜", + "item.create.golden_sheet": "金æ�¿", + "item.create.handheld_blockzapper": "手æŒ�å¼�æ–¹å�—放置器", + "item.create.handheld_worldshaper": "手æŒ�å¼�环境塑形器", + "item.create.integrated_circuit": "集æˆ�电路æ�¿", + "item.create.iron_sheet": "é“�æ�¿", + "item.create.lapis_sheet": "é�’金石æ�¿", + "item.create.minecart_contraption": "装é…�过的矿车", + "item.create.polished_rose_quartz": "磨制玫瑰石英", + "item.create.powdered_obsidian": "黑曜石粉末", + "item.create.propeller": "扇å�¶", + "item.create.red_sand_paper": "红砂纸", + "item.create.refined_radiance": "光辉石", + "item.create.rose_quartz": "玫瑰石英", + "item.create.sand_paper": "砂纸", + "item.create.schematic": "è“�图", + "item.create.schematic_and_quill": "è“�图与笔", + "item.create.shadow_steel": "暗影金属", + "item.create.super_glue": "强力胶", + "item.create.tree_fertilizer": "树木肥料", + "item.create.vertical_gearbox": "ç«–ç›´å��字齿轮箱", + "item.create.wand_of_symmetry": "对称法æ�–", + "item.create.wheat_flour": "å°�麦粉", + "item.create.whisk": "æ�…拌器", + "item.create.wrench": "扳手", + "item.create.zinc_ingot": "锌锭", + "item.create.zinc_nugget": "锌粒", "_": "->------------------------] Advancements [------------------------<-", - "advancement.create.root": "欢迎来到机械动力", - "advancement.create.root.desc": "是时候来制作一些超赞的机械结构了!", - "advancement.create.andesite_alloy": "原始人类的合金替代品", - "advancement.create.andesite_alloy.desc": "机械动力有着许多的材料和合金,但由于技术有限,原始的人类暂时们只能制作出安山合金", - "advancement.create.its_alive": "鲜活的机械生命", - "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转.", - "advancement.create.shifting_gears": "换挡,加速,起飞!", - "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上, 机械结构的转速将会翻倍", - "advancement.create.overstressed": "超载", - "advancement.create.overstressed.desc": "首次使能量网络超载.", - "advancement.create.belt": "大批流水作业", - "advancement.create.belt.desc": "用传送带连接两个传动杆", - "advancement.create.wrench": "细节调整", - "advancement.create.wrench.desc": "做出一个方便调整方块的扳手", - "advancement.create.goggles": "目力工程师", - "advancement.create.goggles.desc": "做出一个能看到机器动能信息的工程师护目镜", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜来读取速度数据", - "advancement.create.stressometer": "精密的应力控制", - "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜来读取应力数据", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", - "advancement.create.lava_wheel": "风火轮", - "advancement.create.lava_wheel.desc": "你确定岩浆能带动水车?", - "advancement.create.millstone": "便携式粉碎机", - "advancement.create.millstone.desc": "放置一个石磨并且为其供能", - "advancement.create.andesite_casing": "安山纪元", - "advancement.create.andesite_casing.desc": "使用安山合金和木头来合成一个安山机壳", - "advancement.create.mechanical_drill": "坚如磐石,势如破竹", - "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", + "advancement.create.root": "欢迎æ�¥åˆ°æœºæ¢°åŠ¨åŠ›", + "advancement.create.root.desc": "是时候æ�¥åˆ¶ä½œä¸€äº›è¶…赞的机械结构了ï¼�", + "advancement.create.andesite_alloy": "原始人类的å�ˆé‡‘替代å“�", + "advancement.create.andesite_alloy.desc": "机械动力有ç�€è®¸å¤šçš„æ��料和å�ˆé‡‘,但由于技术有é™�,原始的人类暂时们å�ªèƒ½åˆ¶ä½œå‡ºå®‰å±±å�ˆé‡‘", + "advancement.create.its_alive": "鲜活的机械生命", + "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转.", + "advancement.create.shifting_gears": "æ�¢æŒ¡ï¼ŒåŠ é€Ÿï¼Œèµ·é£žï¼�", + "advancement.create.shifting_gears.desc": "将大齿轮连接到å°�齿轮上, 机械结构的转速将会翻å€�", + "advancement.create.overstressed": "超载", + "advancement.create.overstressed.desc": "首次使能é‡�网络超载.", + "advancement.create.belt": "大批æµ�水作业", + "advancement.create.belt.desc": "用传é€�带连接两个传动æ�†", + "advancement.create.wrench": "细节调整", + "advancement.create.wrench.desc": "å�šå‡ºä¸€ä¸ªæ–¹ä¾¿è°ƒæ•´æ–¹å�—的扳手", + "advancement.create.goggles": "目力工程师", + "advancement.create.goggles.desc": "å�šå‡ºä¸€ä¸ªèƒ½çœ‹åˆ°æœºå™¨åŠ¨èƒ½ä¿¡æ�¯çš„工程师护目镜", + "advancement.create.speedometer": "精密的速度控制", + "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜æ�¥è¯»å�–速度数æ�®", + "advancement.create.stressometer": "精密的应力控制", + "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜æ�¥è¯»å�–应力数æ�®", + "advancement.create.water_wheel": "治水", + "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", + "advancement.create.lava_wheel": "风ç�«è½®", + "advancement.create.lava_wheel.desc": "你确定岩浆能带动水车?", + "advancement.create.millstone": "便æ�ºå¼�粉碎机", + "advancement.create.millstone.desc": "放置一个石磨并且为其供能", + "advancement.create.andesite_casing": "安山纪元", + "advancement.create.andesite_casing.desc": "使用安山å�ˆé‡‘和木头æ�¥å�ˆæˆ�一个安山机壳", + "advancement.create.mechanical_drill": "å�šå¦‚ç£�石,势如破竹", + "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", "advancement.create.press": "'Duang!'", - "advancement.create.press.desc": "使用辊压机来辊压一些板子", - "advancement.create.polished_rose_quartz": "粉丝钻石", - "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", - "advancement.create.electron_tube": "哔~~哔~~", - "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", - "advancement.create.mechanical_saw": "一刀两断", - "advancement.create.mechanical_saw.desc": "放置一个切割机并且为其供能", - "advancement.create.basin": "快到碗里来", - "advancement.create.basin.desc": "放置一个工作盆,并且往里面放些东西", - "advancement.create.mixer": "均匀搅拌", - "advancement.create.mixer.desc": "将搅拌机放在工作盆上方,并且使其搅拌盆内物品", - "advancement.create.compact": "快乐压缩", - "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物品", - "advancement.create.expert_lane_1": "安山岩专家", - "advancement.create.expert_lane_1.desc": "工作进行中", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用碎锌和碎铜来制作碎黄铜", - "advancement.create.brass_casing": "黄铜纪元", - "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", - "advancement.create.copper_casing": "铜纪元", - "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", - "advancement.create.crafter": "自动化流水作业", - "advancement.create.crafter.desc": "放置一些机械合成台并且为其供能", - "advancement.create.deployer": "我就指着你了咋地?", - "advancement.create.deployer.desc": "放置并且功能一个机械手。这可是你右手的完美复制品", - "advancement.create.fist_bump": "来碰个拳,哥们~", - "advancement.create.fist_bump.desc": "使两个机械臂互相碰拳", - "advancement.create.crushing_wheel": "一对大家伙", - "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", - "advancement.create.chromatic_compound": "两极材料", - "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", - "advancement.create.shadow_steel": "虚空归来的宝石", - "advancement.create.shadow_steel.desc": "制作一些暗影金属", - "advancement.create.refined_radiance": "闪耀着洁白的圣光", - "advancement.create.refined_radiance.desc": "制作一个光辉石", - "advancement.create.zapper": "讲究的建筑师", - "advancement.create.zapper.desc": "制作一个非常方便的手持方块放置器", - "advancement.create.upgraded_zapper": "来自异世界的超频", - "advancement.create.upgraded_zapper.desc": "制作一个完全升级的手持方块放置器", - "advancement.create.wand_of_symmetry": "简单的镜面几何学", - "advancement.create.wand_of_symmetry.desc": "制作一个对称法杖", - "advancement.create.deforester": "超时空砍伐", - "advancement.create.deforester.desc": "制作一个森林毁灭者, 然后跟你后院的树林说再见吧", + "advancement.create.press.desc": "使用辊压机æ�¥è¾ŠåŽ‹ä¸€äº›æ�¿å­�", + "advancement.create.polished_rose_quartz": "粉ä¸�钻石", + "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至é€�明", + "advancement.create.electron_tube": "å“”~~å“”~~", + "advancement.create.electron_tube.desc": "制作一个å�¯ç”¨äºŽå�ˆæˆ�高级机器的电å­�管", + "advancement.create.mechanical_saw": "一刀两断", + "advancement.create.mechanical_saw.desc": "放置一个切割机并且为其供能", + "advancement.create.basin": "快到碗里æ�¥", + "advancement.create.basin.desc": "放置一个工作盆,并且往里é�¢æ”¾äº›ä¸œè¥¿", + "advancement.create.mixer": "å�‡åŒ€æ�…æ‹Œ", + "advancement.create.mixer.desc": "å°†æ�…拌机放在工作盆上方,并且使其æ�…拌盆内物å“�", + "advancement.create.compact": "å¿«ä¹�压缩", + "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物å“�", + "advancement.create.expert_lane_1": "安山岩专家", + "advancement.create.expert_lane_1.desc": "工作进行中", + "advancement.create.brass": "真正的å�ˆé‡‘", + "advancement.create.brass.desc": "使用碎锌和碎铜æ�¥åˆ¶ä½œç¢Žé»„é“œ", + "advancement.create.brass_casing": "黄铜纪元", + "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", + "advancement.create.copper_casing": "铜纪元", + "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", + "advancement.create.crafter": "自动化æµ�水作业", + "advancement.create.crafter.desc": "放置一些机械å�ˆæˆ�å�°å¹¶ä¸”为其供能", + "advancement.create.deployer": "我就指ç�€ä½ äº†å’‹åœ°ï¼Ÿ", + "advancement.create.deployer.desc": "放置并且功能一个机械手。这å�¯æ˜¯ä½ å�³æ‰‹çš„完美å¤�制å“�", + "advancement.create.fist_bump": "æ�¥ç¢°ä¸ªæ‹³ï¼Œå“¥ä»¬~", + "advancement.create.fist_bump.desc": "使两个机械臂互相碰拳", + "advancement.create.crushing_wheel": "一对大家伙", + "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物å“�的粉碎轮", + "advancement.create.chromatic_compound": "两æž�æ��æ–™", + "advancement.create.chromatic_compound.desc": "制作一个异彩化å�ˆç‰©", + "advancement.create.shadow_steel": "虚空归æ�¥çš„å®�石", + "advancement.create.shadow_steel.desc": "制作一些暗影金属", + "advancement.create.refined_radiance": "闪耀ç�€æ´�白的圣光", + "advancement.create.refined_radiance.desc": "制作一个光辉石", + "advancement.create.zapper": "讲究的建筑师", + "advancement.create.zapper.desc": "制作一个é�žå¸¸æ–¹ä¾¿çš„手æŒ�æ–¹å�—放置器", + "advancement.create.upgraded_zapper": "æ�¥è‡ªå¼‚世界的超频", + "advancement.create.upgraded_zapper.desc": "制作一个完全å�‡çº§çš„手æŒ�æ–¹å�—放置器", + "advancement.create.wand_of_symmetry": "简å�•çš„é•œé�¢å‡ ä½•å­¦", + "advancement.create.wand_of_symmetry.desc": "制作一个对称法æ�–", + "advancement.create.deforester": "超时空ç �ä¼�", + "advancement.create.deforester.desc": "制作一个森林æ¯�ç�­è€…, 然å�Žè·Ÿä½ å�Žé™¢çš„树林说å†�è§�å�§", "advancement.create.extendo_grip": "biu biu biu!", - "advancement.create.extendo_grip.desc": "拿到一个伸缩机械手", - "advancement.create.dual_extendo_grip": "biu——biu——biu——", - "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手加长距离", - "advancement.create.eob": "Beta版结束", - "advancement.create.eob.desc": "期待未来会有更多的内容. <3", + "advancement.create.extendo_grip.desc": "拿到一个伸缩机械手", + "advancement.create.dual_extendo_grip": "biu——biu——biu——", + "advancement.create.dual_extendo_grip.desc": "å�ŒæŒ�伸缩机械手加长è·�离", + "advancement.create.eob": "Beta版结æ�Ÿ", + "advancement.create.eob.desc": "期待未æ�¥ä¼šæœ‰æ›´å¤šçš„内容. <3", "_": "->------------------------] UI & Messages [------------------------<-", - "itemGroup.create.base": "机械动力", - "itemGroup.create.palettes": "机械动力建筑方块", + "itemGroup.create.base": "机械动力", + "itemGroup.create.palettes": "机械动力建筑方å�—", - "death.attack.create.crush": "%1$s 被压扁了", - "death.attack.create.fan_fire": "%1$s 试图接受热风的洗礼", - "death.attack.create.fan_lava": "%1$s 在接受热风的洗礼中欲火焚身", - "death.attack.create.mechanical_drill": "%1$s 被钻头钻的坏掉了", - "death.attack.create.mechanical_saw": "%1$s 被圆锯切成了两截", - "death.attack.create.cuckoo_clock_explosion": "%1$s 被布谷鸟钟炸得粉身碎骨", + "death.attack.create.crush": "%1$s 被压æ‰�了", + "death.attack.create.fan_fire": "%1$s 试图接å�—热风的洗礼", + "death.attack.create.fan_lava": "%1$s 在接å�—热风的洗礼中欲ç�«ç„šèº«", + "death.attack.create.mechanical_drill": "%1$s 被钻头钻的å��掉了", + "death.attack.create.mechanical_saw": "%1$s 被圆锯切æˆ�了两截", + "death.attack.create.cuckoo_clock_explosion": "%1$s 被布谷鸟钟炸得粉身碎骨", - "create.block.deployer.damage_source_name": "二五仔机械臂", + "create.block.deployer.damage_source_name": "二五仔机械臂", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "粉碎", - "create.recipe.milling": "研磨", - "create.recipe.splashing": "洗涤", - "create.recipe.splashing.fan": "在鼓风机前方倒水", + "create.recipe.crushing": "粉碎", + "create.recipe.milling": "研磨", + "create.recipe.splashing": "洗涤", + "create.recipe.splashing.fan": "在鼓风机å‰�方倒水", "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "金属压片", - "create.recipe.mixing": "混合搅拌", - "create.recipe.packing": "压块塑形", - "create.recipe.mechanical_sawing": "木材切割", - "create.recipe.mechanical_crafting": "自动合成", - "create.recipe.block_cutting": "方块切割", + "create.recipe.pressing": "金属压片", + "create.recipe.mixing": "æ··å�ˆæ�…æ‹Œ", + "create.recipe.packing": "压å�—å¡‘å½¢", + "create.recipe.mechanical_sawing": "木æ��切割", + "create.recipe.mechanical_crafting": "自动å�ˆæˆ�", + "create.recipe.block_cutting": "æ–¹å�—切割", "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", - "create.recipe.sandpaper_polishing": "砂纸抛光", - "create.recipe.mystery_conversion": "化合物变异", - "create.recipe.processing.catalyst": "催化剂", - "create.recipe.processing.chance": "%1$s%% 概率", - "create.recipe.processing.chanceToReturn": "%1$s%% 概率返还", + "create.recipe.sandpaper_polishing": "砂纸抛光", + "create.recipe.mystery_conversion": "化å�ˆç‰©å�˜å¼‚", + "create.recipe.processing.catalyst": "催化剂", + "create.recipe.processing.chance": "%1$s%% 概率", + "create.recipe.processing.chanceToReturn": "%1$s%% 概率返还", - "create.generic.range": "范围", - "create.generic.radius": "半径", - "create.generic.width": "宽度", - "create.generic.height": "高度", - "create.generic.length": "长度", - "create.generic.speed": "速度", - "create.generic.delay": "延时", + "create.generic.range": "范围", + "create.generic.radius": "å�Šå¾„", + "create.generic.width": "宽度", + "create.generic.height": "高度", + "create.generic.length": "长度", + "create.generic.speed": "速度", + "create.generic.delay": "延时", "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分钟", + "create.generic.unit.seconds": "秒", + "create.generic.unit.minutes": "分钟", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "滚轮", - "create.action.confirm": "确认", - "create.action.abort": "退出", - "create.action.saveToFile": "保存", - "create.action.discard": "丢弃", + "create.action.scroll": "滚轮", + "create.action.confirm": "确认", + "create.action.abort": "退出", + "create.action.saveToFile": "ä¿�å­˜", + "create.action.discard": "丢弃", - "create.keyinfo.toolmenu": "工具菜单", - "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", - "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", + "create.keyinfo.toolmenu": "工具è�œå�•", + "create.keyinfo.scrollup": "(游æˆ�中)å�‘上鼠标滚轮", + "create.keyinfo.scrolldown": "(游æˆ�中)å�‘下鼠标滚轮", - "create.gui.scrollInput.defaultTitle": "选择一个选项:", - "create.gui.scrollInput.scrollToModify": "滚动修改", - "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数量", - "create.gui.scrollInput.scrollToSelect": "滚动选择", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滚动更快", - "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", - "create.gui.toolmenu.cycle": "[SCROLL] 循环", - "create.gui.symmetryWand.mirrorType": "镜子类型", - "create.gui.symmetryWand.orientation": "方向", + "create.gui.scrollInput.defaultTitle": "选择一个选项:", + "create.gui.scrollInput.scrollToModify": "滚动修改", + "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数é‡�", + "create.gui.scrollInput.scrollToSelect": "滚动选择", + "create.gui.scrollInput.shiftScrollsFaster": "按ä½�Shift滚动更快", + "create.gui.toolmenu.focusKey": "按ä½� [%1$s] 鼠标滚轮选择", + "create.gui.toolmenu.cycle": "[SCROLL] 循环", + "create.gui.symmetryWand.mirrorType": "é•œå­�类型", + "create.gui.symmetryWand.orientation": "æ–¹å�‘", - "create.symmetry.mirror.plane": "镜像", - "create.symmetry.mirror.doublePlane": "矩形", - "create.symmetry.mirror.triplePlane": "八角", + "create.symmetry.mirror.plane": "é•œåƒ�", + "create.symmetry.mirror.doublePlane": "矩形", + "create.symmetry.mirror.triplePlane": "八角", - "create.orientation.orthogonal": "垂直", - "create.orientation.diagonal": "对角线", - "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z轴对齐", - "create.orientation.alongX": "以x轴对齐", + "create.orientation.orthogonal": "åž‚ç›´", + "create.orientation.diagonal": "对角线", + "create.orientation.horizontal": "æ°´å¹³", + "create.orientation.alongZ": "以z轴对é½�", + "create.orientation.alongX": "以x轴对é½�", - "create.gui.blockzapper.title": "手持式方块放置机", - "create.gui.blockzapper.replaceMode": "替换模式", - "create.gui.blockzapper.searchDiagonal": "根据对角线", - "create.gui.blockzapper.searchFuzzy": "忽视边界", - "create.gui.blockzapper.range": "扩散范围", - "create.gui.blockzapper.needsUpgradedAmplifier": "需要升级扩散器", - "create.gui.blockzapper.patternSection": "模式", - "create.gui.blockzapper.pattern.solid": "实心", - "create.gui.blockzapper.pattern.checkered": "棋盘", - "create.gui.blockzapper.pattern.inversecheckered": "反转棋盘", + "create.gui.blockzapper.title": "手æŒ�å¼�æ–¹å�—放置机", + "create.gui.blockzapper.replaceMode": "替æ�¢æ¨¡å¼�", + "create.gui.blockzapper.searchDiagonal": "æ ¹æ�®å¯¹è§’线", + "create.gui.blockzapper.searchFuzzy": "忽视边界", + "create.gui.blockzapper.range": "扩散范围", + "create.gui.blockzapper.needsUpgradedAmplifier": "需è¦�å�‡çº§æ‰©æ•£å™¨", + "create.gui.blockzapper.patternSection": "模å¼�", + "create.gui.blockzapper.pattern.solid": "实心", + "create.gui.blockzapper.pattern.checkered": "棋盘", + "create.gui.blockzapper.pattern.inversecheckered": "å��转棋盘", "create.gui.blockzapper.pattern.chance25": "25% ", "create.gui.blockzapper.pattern.chance50": "50% ", "create.gui.blockzapper.pattern.chance75": "75% ", - "create.gui.terrainzapper.title": "手持式环境塑形器", - "create.gui.terrainzapper.placement": "放置模式", - "create.gui.terrainzapper.placement.merged": "结合", - "create.gui.terrainzapper.placement.attached": "依附", - "create.gui.terrainzapper.placement.inserted": "插入", - "create.gui.terrainzapper.brush": "塑形类型", - "create.gui.terrainzapper.brush.cuboid": "矩形体", - "create.gui.terrainzapper.brush.sphere": "球体", - "create.gui.terrainzapper.brush.cylinder": "圆柱体", - "create.gui.terrainzapper.tool": "填充类型", - "create.gui.terrainzapper.tool.fill": "填充", - "create.gui.terrainzapper.tool.place": "复写", - "create.gui.terrainzapper.tool.replace": "替换", - "create.gui.terrainzapper.tool.clear": "清除", - "create.gui.terrainzapper.tool.overlay": "覆盖", - "create.gui.terrainzapper.tool.flatten": "平整", + "create.gui.terrainzapper.title": "手æŒ�å¼�环境塑形器", + "create.gui.terrainzapper.placement": "放置模å¼�", + "create.gui.terrainzapper.placement.merged": "结å�ˆ", + "create.gui.terrainzapper.placement.attached": "ä¾�附", + "create.gui.terrainzapper.placement.inserted": "æ�’å…¥", + "create.gui.terrainzapper.brush": "塑形类型", + "create.gui.terrainzapper.brush.cuboid": "矩形体", + "create.gui.terrainzapper.brush.sphere": "ç�ƒä½“", + "create.gui.terrainzapper.brush.cylinder": "圆柱体", + "create.gui.terrainzapper.tool": "填充类型", + "create.gui.terrainzapper.tool.fill": "å¡«å……", + "create.gui.terrainzapper.tool.place": "å¤�写", + "create.gui.terrainzapper.tool.replace": "替æ�¢", + "create.gui.terrainzapper.tool.clear": "清除", + "create.gui.terrainzapper.tool.overlay": "覆盖", + "create.gui.terrainzapper.tool.flatten": "平整", - "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右键 以设置塑形类型", + "create.terrainzapper.shiftRightClickToSet": "Shift+é¼ æ ‡å�³é”® 以设置塑形类型", - "create.blockzapper.usingBlock": "使用: %1$s", - "create.blockzapper.componentUpgrades": "组件升级:", - "create.blockzapper.component.body": "机体", - "create.blockzapper.component.amplifier": "增大", - "create.blockzapper.component.accelerator": "加速", - "create.blockzapper.component.retriever": "寻回", - "create.blockzapper.component.scope": "范围", - "create.blockzapper.componentTier.none": "无", + "create.blockzapper.usingBlock": "使用: %1$s", + "create.blockzapper.componentUpgrades": "组件å�‡çº§:", + "create.blockzapper.component.body": "机体", + "create.blockzapper.component.amplifier": "增大", + "create.blockzapper.component.accelerator": "加速", + "create.blockzapper.component.retriever": "寻回", + "create.blockzapper.component.scope": "范围", + "create.blockzapper.componentTier.none": "æ— ", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "左键点击方块以设定方块", - "create.blockzapper.empty": "方块不足!", + "create.blockzapper.leftClickToSet": "左键点击方å�—以设定方å�—", + "create.blockzapper.empty": "æ–¹å�—ä¸�足ï¼�", - "create.contraptions.movement_mode": "运动模式", - "create.contraptions.movement_mode.move_place": "停止时总是实体化方块", - "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置实体化方块", - "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才实体化方块", - "create.contraptions.movement_mode.rotate_place": "停止时总是实体化方块", - "create.contraptions.movement_mode.rotate_place_returned": "停止时只在接近初始角度实体化方块", - "create.contraptions.movement_mode.rotate_never_place": "只有在旋转轴摧毁后才实体化方块", - "create.contraptions.cart_movement_mode": "矿车运动模式", - "create.contraptions.cart_movement_mode.rotate": "结构与矿车保持相同方向", - "create.contraptions.cart_movement_mode.rotate_paused": "矿车转向时机器停止工作", - "create.contraptions.cart_movement_mode.rotation_locked": "结构方向保持不变", + "create.contraptions.movement_mode": "è¿�动模å¼�", + "create.contraptions.movement_mode.move_place": "å�œæ­¢æ—¶æ€»æ˜¯å®žä½“化方å�—", + "create.contraptions.movement_mode.move_place_returned": "å�œæ­¢æ—¶å�ªåœ¨åˆ�始ä½�置实体化方å�—", + "create.contraptions.movement_mode.move_never_place": "å�ªæœ‰åœ¨åŠ¨åŠ›æ–¹å�—摧æ¯�å�Žæ‰�实体化方å�—", + "create.contraptions.movement_mode.rotate_place": "å�œæ­¢æ—¶æ€»æ˜¯å®žä½“化方å�—", + "create.contraptions.movement_mode.rotate_place_returned": "å�œæ­¢æ—¶å�ªåœ¨æŽ¥è¿‘åˆ�始角度实体化方å�—", + "create.contraptions.movement_mode.rotate_never_place": "å�ªæœ‰åœ¨æ—‹è½¬è½´æ‘§æ¯�å�Žæ‰�实体化方å�—", + "create.contraptions.cart_movement_mode": "矿车è¿�动模å¼�", + "create.contraptions.cart_movement_mode.rotate": "结构与矿车ä¿�æŒ�相å�Œæ–¹å�‘", + "create.contraptions.cart_movement_mode.rotate_paused": "矿车转å�‘时机器å�œæ­¢å·¥ä½œ", + "create.contraptions.cart_movement_mode.rotation_locked": "结构方å�‘ä¿�æŒ�ä¸�å�˜", - "create.logistics.filter": "过滤器", - "create.logistics.firstFrequency": "频道. #1", - "create.logistics.secondFrequency": "频道. #2", + "create.logistics.filter": "过滤器", + "create.logistics.firstFrequency": "频é�“. #1", + "create.logistics.secondFrequency": "频é�“. #2", - "create.gui.goggles.generator_stats": "产能器状态:", - "create.gui.goggles.kinetic_stats": "动能状态:", - "create.gui.goggles.at_current_speed": "当前速度应力值", - "create.gui.goggles.base_value": "应力基础值", - "create.gui.gauge.info_header": "仪表信息:", - "create.gui.speedometer.title": "旋转速度", - "create.gui.stressometer.title": "网络应力", - "create.gui.stressometer.capacity": "剩余应力", - "create.gui.stressometer.overstressed": "超载", - "create.gui.stressometer.no_rotation": "无旋转", - "create.gui.contraptions.not_fast_enough": "显然 %1$s 没有足够的转速.", - "create.gui.contraptions.network_overstressed": "显然装置过载,减速高应力消耗的装置或者添加更多动力", - "create.gui.adjustable_crate.title": "板条箱", - "create.gui.adjustable_crate.storageSpace": "储存空间", - "create.gui.stockpile_switch.title": "储存开关", - "create.gui.stockpile_switch.lowerLimit": "阈值下限", - "create.gui.stockpile_switch.upperLimit": "阈值上限", - "create.gui.stockpile_switch.startAt": "启动信号", - "create.gui.stockpile_switch.startAbove": "给予红石信号当容量大于", - "create.gui.stockpile_switch.stopAt": "停止信号", - "create.gui.stockpile_switch.stopBelow": "停止红石信号当容量小于", - "create.gui.sequenced_gearshift.title": "可编程齿轮箱", - "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距离", - "create.gui.sequenced_gearshift.instruction.wait": "等待", - "create.gui.sequenced_gearshift.instruction.wait.duration": "间隔", - "create.gui.sequenced_gearshift.instruction.end": "停止", - "create.gui.sequenced_gearshift.speed": "速度, 速度方向", - "create.gui.sequenced_gearshift.speed.forward": "一倍速, 正向", - "create.gui.sequenced_gearshift.speed.forward_fast": "两倍速, 正向", - "create.gui.sequenced_gearshift.speed.back": "一倍速, 反向", - "create.gui.sequenced_gearshift.speed.back_fast": "两倍速, 反向", + "create.gui.goggles.generator_stats": "产能器状æ€�:", + "create.gui.goggles.kinetic_stats": "动能状æ€�:", + "create.gui.goggles.at_current_speed": "当å‰�速度应力值", + "create.gui.goggles.base_value": "应力基础值", + "create.gui.gauge.info_header": "仪表信æ�¯:", + "create.gui.speedometer.title": "旋转速度", + "create.gui.stressometer.title": "网络应力", + "create.gui.stressometer.capacity": "剩余应力", + "create.gui.stressometer.overstressed": "超载", + "create.gui.stressometer.no_rotation": "无旋转", + "create.gui.contraptions.not_fast_enough": "显然 %1$s 没有足够的转速.", + "create.gui.contraptions.network_overstressed": "显然装置过载,å‡�速高应力消耗的装置或者添加更多动力", + "create.gui.adjustable_crate.title": "æ�¿æ�¡ç®±", + "create.gui.adjustable_crate.storageSpace": "储存空间", + "create.gui.stockpile_switch.title": "储存开关", + "create.gui.stockpile_switch.lowerLimit": "阈值下é™�", + "create.gui.stockpile_switch.upperLimit": "阈值上é™�", + "create.gui.stockpile_switch.startAt": "å�¯åŠ¨ä¿¡å�·", + "create.gui.stockpile_switch.startAbove": "给予红石信å�·å½“容é‡�大于", + "create.gui.stockpile_switch.stopAt": "å�œæ­¢ä¿¡å�·", + "create.gui.stockpile_switch.stopBelow": "å�œæ­¢çº¢çŸ³ä¿¡å�·å½“容é‡�å°�于", + "create.gui.sequenced_gearshift.title": "å�¯ç¼–程齿轮箱", + "create.gui.sequenced_gearshift.instruction": "指令", + "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "è·�离", + "create.gui.sequenced_gearshift.instruction.wait": "等待", + "create.gui.sequenced_gearshift.instruction.wait.duration": "é—´éš”", + "create.gui.sequenced_gearshift.instruction.end": "å�œæ­¢", + "create.gui.sequenced_gearshift.speed": "速度, 速度方å�‘", + "create.gui.sequenced_gearshift.speed.forward": "一å€�速, æ­£å�‘", + "create.gui.sequenced_gearshift.speed.forward_fast": "两å€�速, æ­£å�‘", + "create.gui.sequenced_gearshift.speed.back": "一å€�速, å��å�‘", + "create.gui.sequenced_gearshift.speed.back_fast": "两å€�速, å��å�‘", - "create.schematicAndQuill.dimensions": "蓝图尺寸: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一个位置.", - "create.schematicAndQuill.secondPos": "第二个位置.", - "create.schematicAndQuill.noTarget": "按住Ctrl选择空气方块.", - "create.schematicAndQuill.abort": "删除选择.", - "create.schematicAndQuill.prompt": "输入蓝图的名称:", - "create.schematicAndQuill.fallbackName": "我的蓝图", - "create.schematicAndQuill.saved": "另存为 %1$s", + "create.schematicAndQuill.dimensions": "è“�图尺寸: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "第一个ä½�ç½®.", + "create.schematicAndQuill.secondPos": "第二个ä½�ç½®.", + "create.schematicAndQuill.noTarget": "按ä½�Ctrl选择空气方å�—.", + "create.schematicAndQuill.abort": "删除选择.", + "create.schematicAndQuill.prompt": "输入è“�图的å��称:", + "create.schematicAndQuill.fallbackName": "我的è“�图", + "create.schematicAndQuill.saved": "å�¦å­˜ä¸º %1$s", - "create.schematic.invalid": "[!] 无效的项目", - "create.schematic.position": "位置", - "create.schematic.rotation": "旋转", - "create.schematic.rotation.none": "无", - "create.schematic.rotation.cw90": "顺时针90", - "create.schematic.rotation.cw180": "顺时针180", - "create.schematic.rotation.cw270": "顺时针270", - "create.schematic.mirror": "镜像", - "create.schematic.mirror.none": "无", - "create.schematic.mirror.frontBack": "前后", - "create.schematic.mirror.leftRight": "左右", - "create.schematic.tool.deploy": "部署", - "create.schematic.tool.move": "移动 XZ", - "create.schematic.tool.movey": "移动 Y", - "create.schematic.tool.rotate": "旋转", - "create.schematic.tool.print": "打印", - "create.schematic.tool.flip": "翻转", - "create.schematic.tool.deploy.description.0": "将结构移到某个位置.", - "create.schematic.tool.deploy.description.1": "在地面上单击鼠标右键以放置.", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距离选择.", - "create.schematic.tool.deploy.description.3": "按住Ctrl鼠标滚动更改距离.", - "create.schematic.tool.move.description.0": "水平移动蓝图", - "create.schematic.tool.move.description.1": "选定蓝图,然后按住Ctrl鼠标滚动移动.", + "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.position": "ä½�ç½®", + "create.schematic.rotation": "旋转", + "create.schematic.rotation.none": "æ— ", + "create.schematic.rotation.cw90": "顺时针90", + "create.schematic.rotation.cw180": "顺时针180", + "create.schematic.rotation.cw270": "顺时针270", + "create.schematic.mirror": "é•œåƒ�", + "create.schematic.mirror.none": "æ— ", + "create.schematic.mirror.frontBack": "å‰�å�Ž", + "create.schematic.mirror.leftRight": "å·¦å�³", + "create.schematic.tool.deploy": "部署", + "create.schematic.tool.move": "移动 XZ", + "create.schematic.tool.movey": "移动 Y", + "create.schematic.tool.rotate": "旋转", + "create.schematic.tool.print": "打å�°", + "create.schematic.tool.flip": "翻转", + "create.schematic.tool.deploy.description.0": "将结构移到æŸ�个ä½�ç½®.", + "create.schematic.tool.deploy.description.1": "在地é�¢ä¸Šå�•å‡»é¼ æ ‡å�³é”®ä»¥æ”¾ç½®.", + "create.schematic.tool.deploy.description.2": "按ä½�Ctrl以固定è·�离选择.", + "create.schematic.tool.deploy.description.3": "按ä½�Ctrl鼠标滚动更改è·�离.", + "create.schematic.tool.move.description.0": "水平移动è“�图", + "create.schematic.tool.move.description.1": "选定è“�图,然å�ŽæŒ‰ä½�Ctrl鼠标滚动移动.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "垂直移动蓝图", - "create.schematic.tool.movey.description.1": "按住Ctrl鼠标滚动上下移动", + "create.schematic.tool.movey.description.0": "垂直移动è“�图", + "create.schematic.tool.movey.description.1": "按ä½�Ctrl鼠标滚动上下移动", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "围绕蓝图中心旋转蓝图.", - "create.schematic.tool.rotate.description.1": "按住Ctrl鼠标滚动旋转90度", + "create.schematic.tool.rotate.description.0": "围绕è“�图中心旋转è“�图.", + "create.schematic.tool.rotate.description.1": "按ä½�Ctrl鼠标滚动旋转90度", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "立即将结构放置在世界上", - "create.schematic.tool.print.description.1": "右键单机确认当前位置.", - "create.schematic.tool.print.description.2": "该工具仅适用于创造模式.", + "create.schematic.tool.print.description.0": "ç«‹å�³å°†ç»“构放置在世界上", + "create.schematic.tool.print.description.1": "å�³é”®å�•æœºç¡®è®¤å½“å‰�ä½�ç½®.", + "create.schematic.tool.print.description.2": "该工具仅适用于创造模å¼�.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你选择的面翻转蓝图.", - "create.schematic.tool.flip.description.1": "指向蓝图,然后按住Ctrl鼠标滚动将其翻转.", + "create.schematic.tool.flip.description.0": "沿你选择的é�¢ç¿»è½¬è“�图.", + "create.schematic.tool.flip.description.1": "指å�‘è“�图,然å�ŽæŒ‰ä½�Ctrl鼠标滚动将其翻转.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "正在同步...", - "create.schematics.uploadTooLarge": "你的蓝图太大", - "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", + "create.schematics.synchronizing": "正在å�Œæ­¥...", + "create.schematics.uploadTooLarge": "ä½ çš„è“�图太大", + "create.schematics.maxAllowedSize": "å…�许的最大è“�图文件大å°�为:", - "create.gui.schematicTable.title": "蓝图桌", - "create.gui.schematicTable.availableSchematics": "可用蓝图", - "create.gui.schematicTable.noSchematics": "没有保存的蓝图", - "create.gui.schematicTable.uploading": "正在上传...", - "create.gui.schematicTable.finished": "上传完成!", - "create.gui.schematicannon.title": "蓝图加农炮", - "create.gui.schematicannon.settingsTitle": "放置设置", - "create.gui.schematicannon.listPrinter": "物品清单打印机", - "create.gui.schematicannon.gunpowderLevel": "火药 %1$s%%", - "create.gui.schematicannon.shotsRemaining": "发射进度: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "备份: %1$s", - "create.gui.schematicannon.optionEnabled": "当前启用", - "create.gui.schematicannon.optionDisabled": "当前禁用", - "create.gui.schematicannon.option.dontReplaceSolid": "不要替换方块", - "create.gui.schematicannon.option.replaceWithSolid": "用固体方块替换工作区域内的方块", - "create.gui.schematicannon.option.replaceWithAny": "用任何方块替换工作区域内的方块", - "create.gui.schematicannon.option.replaceWithEmpty": "用空气替换工作区域内的方块", - "create.gui.schematicannon.option.skipMissing": "绕过缺少的方块", - "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", - "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料, 蓝图大炮将忽略当前缺失材料并且使用其他已有材料继续工作", - "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块.", - "create.gui.schematicannon.option.replaceWithSolid.description": "蓝图加农炮会使用所提供的固体方块来替换工作区域内的其他固体方块", - "create.gui.schematicannon.option.replaceWithAny.description": "蓝图加农炮会使用任何所提供的方块来替换工作区域内的固体方块", - "create.gui.schematicannon.option.replaceWithEmpty.description": "蓝图加农炮将清理和替换工作区域内所有原本的方块.", + "create.gui.schematicTable.title": "è“�图桌", + "create.gui.schematicTable.availableSchematics": "å�¯ç”¨è“�图", + "create.gui.schematicTable.noSchematics": "没有ä¿�存的è“�图", + "create.gui.schematicTable.uploading": "正在上传...", + "create.gui.schematicTable.finished": "上传完æˆ�!", + "create.gui.schematicannon.title": "è“�图加农炮", + "create.gui.schematicannon.settingsTitle": "放置设置", + "create.gui.schematicannon.listPrinter": "物å“�清å�•æ‰“å�°æœº", + "create.gui.schematicannon.gunpowderLevel": "ç�«è�¯ %1$s%%", + "create.gui.schematicannon.shotsRemaining": "å�‘射进度: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "备份: %1$s", + "create.gui.schematicannon.optionEnabled": "当å‰�å�¯ç”¨", + "create.gui.schematicannon.optionDisabled": "当å‰�ç¦�用", + "create.gui.schematicannon.option.dontReplaceSolid": "ä¸�è¦�替æ�¢æ–¹å�—", + "create.gui.schematicannon.option.replaceWithSolid": "用固体方å�—替æ�¢å·¥ä½œåŒºåŸŸå†…çš„æ–¹å�—", + "create.gui.schematicannon.option.replaceWithAny": "用任何方å�—替æ�¢å·¥ä½œåŒºåŸŸå†…çš„æ–¹å�—", + "create.gui.schematicannon.option.replaceWithEmpty": "用空气替æ�¢å·¥ä½œåŒºåŸŸå†…çš„æ–¹å�—", + "create.gui.schematicannon.option.skipMissing": "绕过缺少的方å�—", + "create.gui.schematicannon.option.skipTileEntities": "ä¿�护存储方å�—", + "create.gui.schematicannon.option.skipMissing.description": "如果缺失æ��料, è“�图大炮将忽略当å‰�缺失æ��料并且使用其他已有æ��料继续工作", + "create.gui.schematicannon.option.skipTileEntities.description": "è“�图将é�¿å…�æ›´æ�¢å­˜å‚¨æ–¹å�—,如箱å­�.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "è“�图加农炮将ä¸�会替æ�¢å·¥ä½œèŒƒå›´å†…的任何固体方å�—.", + "create.gui.schematicannon.option.replaceWithSolid.description": "è“�图加农炮会使用所æ��供的固体方å�—æ�¥æ›¿æ�¢å·¥ä½œåŒºåŸŸå†…的其他固体方å�—", + "create.gui.schematicannon.option.replaceWithAny.description": "è“�图加农炮会使用任何所æ��供的方å�—æ�¥æ›¿æ�¢å·¥ä½œåŒºåŸŸå†…的固体方å�—", + "create.gui.schematicannon.option.replaceWithEmpty.description": "è“�图加农炮将清ç�†å’Œæ›¿æ�¢å·¥ä½œåŒºåŸŸå†…所有原本的方å�—.", - "create.schematicannon.status.idle": "闲置", - "create.schematicannon.status.ready": "准备", - "create.schematicannon.status.running": "运行", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "已暂停", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火药消耗完毕", - "create.schematicannon.status.targetNotLoaded": "方块未加载", - "create.schematicannon.status.targetOutsideRange": "定位目标太远", - "create.schematicannon.status.searching": "搜索", - "create.schematicannon.status.skipping": "跳过", - "create.schematicannon.status.missingBlock": "缺少方块:", - "create.schematicannon.status.placing": "建筑中", - "create.schematicannon.status.clearing": "清除方块中", - "create.schematicannon.status.schematicInvalid": "蓝图无效", - "create.schematicannon.status.schematicNotPlaced": "蓝图未部署", - "create.schematicannon.status.schematicExpired": "蓝图文件已过期", + "create.schematicannon.status.idle": "闲置", + "create.schematicannon.status.ready": "准备", + "create.schematicannon.status.running": "è¿�è¡Œ", + "create.schematicannon.status.finished": "完æˆ�", + "create.schematicannon.status.paused": "已暂å�œ", + "create.schematicannon.status.stopped": "å�œæ­¢", + "create.schematicannon.status.noGunpowder": "ç�«è�¯æ¶ˆè€—完毕", + "create.schematicannon.status.targetNotLoaded": "æ–¹å�—未加载", + "create.schematicannon.status.targetOutsideRange": "定ä½�目标太远", + "create.schematicannon.status.searching": "æ�œç´¢", + "create.schematicannon.status.skipping": "跳过", + "create.schematicannon.status.missingBlock": "缺少方å�—:", + "create.schematicannon.status.placing": "建筑中", + "create.schematicannon.status.clearing": "清除方å�—中", + "create.schematicannon.status.schematicInvalid": "è“�图无效", + "create.schematicannon.status.schematicNotPlaced": "è“�图未部署", + "create.schematicannon.status.schematicExpired": "è“�图文件已过期", - "create.gui.filter.blacklist": "黑名单", - "create.gui.filter.blacklist.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", - "create.gui.filter.whitelist": "白名单", - "create.gui.filter.whitelist.description": "只通过在白名单中的物品,如果白名单为空,所有物品都无法通过", - "create.gui.filter.respect_data": "匹配物品属性", - "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他属性相同时才可以匹配", - "create.gui.filter.ignore_data": "忽视物品属性", - "create.gui.filter.ignore_data.description": "匹配时忽视物品的耐久、附魔等其他属性", + "create.gui.filter.blacklist": "黑å��å�•", + "create.gui.filter.blacklist.description": "å�ªé€šè¿‡ä¸�在黑å��å�•ä¸­çš„物å“�,如果黑å��å�•ä¸ºç©ºï¼Œæ‰€æœ‰ç‰©å“�都å�¯ä»¥é€šè¿‡", + "create.gui.filter.whitelist": "白å��å�•", + "create.gui.filter.whitelist.description": "å�ªé€šè¿‡åœ¨ç™½å��å�•ä¸­çš„物å“�,如果白å��å�•ä¸ºç©ºï¼Œæ‰€æœ‰ç‰©å“�都无法通过", + "create.gui.filter.respect_data": "匹é…�物å“�属性", + "create.gui.filter.respect_data.description": "å�ªæœ‰ç‰©å“�çš„è€�ä¹…ã€�附魔等其他属性相å�Œæ—¶æ‰�å�¯ä»¥åŒ¹é…�", + "create.gui.filter.ignore_data": "忽视物å“�属性", + "create.gui.filter.ignore_data.description": "匹é…�时忽视物å“�çš„è€�ä¹…ã€�附魔等其他属性", - "create.item_attributes.placeable": "可放置", - "create.item_attributes.consumable": "可食用", - "create.item_attributes.smeltable": "可被熔炉烧制", - "create.item_attributes.washable": "可被筛洗", - "create.item_attributes.smokable": "可被烟熏", - "create.item_attributes.blastable": "可被高炉冶炼", - "create.item_attributes.enchanted": "已被附魔", - "create.item_attributes.damaged": "已损坏", - "create.item_attributes.badly_damaged": "严重受损", - "create.item_attributes.not_stackable": "无法堆叠", - "create.item_attributes.equipable": "可装备", - "create.item_attributes.furnace_fuel": "是燃料", - "create.item_attributes.in_tag": "标签是%1$s", - "create.item_attributes.in_item_group": "属于 %1$s", - "create.item_attributes.added_by": "由%1$s添加", + "create.item_attributes.placeable": "å�¯æ”¾ç½®", + "create.item_attributes.consumable": "å�¯é£Ÿç”¨", + "create.item_attributes.smeltable": "å�¯è¢«ç†”炉烧制", + "create.item_attributes.washable": "å�¯è¢«ç­›æ´—", + "create.item_attributes.smokable": "å�¯è¢«çƒŸç†�", + "create.item_attributes.blastable": "å�¯è¢«é«˜ç‚‰å†¶ç‚¼", + "create.item_attributes.enchanted": "已被附魔", + "create.item_attributes.damaged": "å·²æ�Ÿå��", + "create.item_attributes.badly_damaged": "严é‡�å�—æ�Ÿ", + "create.item_attributes.not_stackable": "无法堆å� ", + "create.item_attributes.equipable": "å�¯è£…备", + "create.item_attributes.furnace_fuel": "是燃料", + "create.item_attributes.in_tag": "标签是%1$s", + "create.item_attributes.in_item_group": "属于 %1$s", + "create.item_attributes.added_by": "ç”±%1$s添加", - "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", - "create.gui.attribute_filter.selected_attributes": "已选择的属性:", - "create.gui.attribute_filter.whitelist_disjunctive": "任意匹配白名单 (任何)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "只要有其中一项属性符合,就可以通过", - "create.gui.attribute_filter.whitelist_conjunctive": "全匹配白名单 (所有)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "只有所有属性都匹配才可以通过", - "create.gui.attribute_filter.blacklist": "黑名单", - "create.gui.attribute_filter.blacklist.description": "只要没有上述属性,就可以通过", - "create.gui.attribute_filter.add_reference_item": "添加参考物品", + "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", + "create.gui.attribute_filter.selected_attributes": "已选择的属性:", + "create.gui.attribute_filter.whitelist_disjunctive": "ä»»æ„�匹é…�白å��å�• (任何)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "å�ªè¦�有其中一项属性符å�ˆï¼Œå°±å�¯ä»¥é€šè¿‡", + "create.gui.attribute_filter.whitelist_conjunctive": "全匹é…�白å��å�• (所有)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "å�ªæœ‰æ‰€æœ‰å±žæ€§éƒ½åŒ¹é…�æ‰�å�¯ä»¥é€šè¿‡", + "create.gui.attribute_filter.blacklist": "黑å��å�•", + "create.gui.attribute_filter.blacklist.description": "å�ªè¦�没有上述属性,就å�¯ä»¥é€šè¿‡", + "create.gui.attribute_filter.add_reference_item": "添加å�‚考物å“�", - "create.tooltip.holdKey": "按住 [%1$s]", - "create.tooltip.holdKeyOrKey": "按住 [%1$s] 或 [%2$s]", + "create.tooltip.holdKey": "按ä½� [%1$s]", + "create.tooltip.holdKeyOrKey": "按ä½� [%1$s] 或 [%2$s]", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求速度: %1$s", - "create.tooltip.speedRequirement.none": "无", - "create.tooltip.speedRequirement.medium": "适当的", - "create.tooltip.speedRequirement.high": "飞快的", - "create.tooltip.stressImpact": "应力消耗: %1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "过载", - "create.tooltip.capacityProvided": "应力生产量: %1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.capacityProvided.asGenerator": "(作为产能器)", - "create.tooltip.generationSpeed": "产生 %1$s %2$s", - "create.tooltip.analogStrength": "调节强度: %1$s/15", + "create.tooltip.speedRequirement": "需求速度: %1$s", + "create.tooltip.speedRequirement.none": "æ— ", + "create.tooltip.speedRequirement.medium": "适当的", + "create.tooltip.speedRequirement.high": "飞快的", + "create.tooltip.stressImpact": "应力消耗: %1$s", + "create.tooltip.stressImpact.low": "低", + "create.tooltip.stressImpact.medium": "中", + "create.tooltip.stressImpact.high": "高", + "create.tooltip.stressImpact.overstressed": "过载", + "create.tooltip.capacityProvided": "应力生产é‡�: %1$s", + "create.tooltip.capacityProvided.low": "å°�", + "create.tooltip.capacityProvided.medium": "中", + "create.tooltip.capacityProvided.high": "大", + "create.tooltip.capacityProvided.asGenerator": "(作为产能器)", + "create.tooltip.generationSpeed": "产生 %1$s %2$s", + "create.tooltip.analogStrength": "调节强度: %1$s/15", - "create.mechanical_mixer.min_ingredients": "最少物品种类数", + "create.mechanical_mixer.min_ingredients": "最少物å“�ç§�类数", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -826,22 +826,22 @@ "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器每秒tick速被降低为 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在每秒tick速被降低为 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 服务器现在不卡了, TPS正常 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 来让服务器的TPS速度变回正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器TPS速度", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: æœ�务器æ¯�秒tick速被é™�低为 %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: æœ�务器现在æ¯�秒tick速被é™�低为 >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: æœ�务器现在ä¸�å�¡äº†ï¼Œ TPS正常 :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop æ�¥è®©æœ�务器的TPS速度å�˜å›žæ­£å¸¸", + "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start æ�¥æ‰‹åŠ¨é™�低æœ�务器TPS速度", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "蓝图大炮发射", - "create.subtitle.schematicannon_finish": "蓝图大炮完成任务", - "create.subtitle.slime_added": "粘液挤压", - "create.subtitle.mechanical_press_activation": "辊压机工作", - "create.subtitle.mechanical_press_item_break": "金属碰撞", - "create.subtitle.blockzapper_place": "放置方块", - "create.subtitle.blockzapper_confirm": "选择方块", - "create.subtitle.blockzapper_deny": "放置失败", - "create.subtitle.block_funnel_eat": "漏斗吞食", + "create.subtitle.schematicannon_launch_block": "è“�图大炮å�‘å°„", + "create.subtitle.schematicannon_finish": "è“�图大炮完æˆ�任务", + "create.subtitle.slime_added": "粘液挤压", + "create.subtitle.mechanical_press_activation": "辊压机工作", + "create.subtitle.mechanical_press_item_break": "金属碰撞", + "create.subtitle.blockzapper_place": "放置方å�—", + "create.subtitle.blockzapper_confirm": "选择方å�—", + "create.subtitle.blockzapper_deny": "放置失败", + "create.subtitle.block_funnel_eat": "æ¼�æ–—å�žé£Ÿ", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -856,514 +856,514 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "完美地镜面复制工作区域内的方块放置与破坏", - "item.create.wand_of_symmetry.tooltip.condition1": "当在热键栏时", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持续进行镜面复制", - "item.create.wand_of_symmetry.tooltip.control1": "当右键地面时", - "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_镜子", - "item.create.wand_of_symmetry.tooltip.control2": "当右键空气时", - "item.create.wand_of_symmetry.tooltip.action2": "_删除_ 镜子", - "item.create.wand_of_symmetry.tooltip.control3": "当潜行右键时", - "item.create.wand_of_symmetry.tooltip.action3": "打开_gui界面_", + "item.create.wand_of_symmetry.tooltip.summary": "完美地镜é�¢å¤�制工作区域内的方å�—放置与破å��", + "item.create.wand_of_symmetry.tooltip.condition1": "当在热键æ �æ—¶", + "item.create.wand_of_symmetry.tooltip.behaviour1": "æŒ�续进行镜é�¢å¤�制", + "item.create.wand_of_symmetry.tooltip.control1": "当å�³é”®åœ°é�¢æ—¶", + "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_é•œå­�", + "item.create.wand_of_symmetry.tooltip.control2": "当å�³é”®ç©ºæ°”æ—¶", + "item.create.wand_of_symmetry.tooltip.action2": "_删除_ é•œå­�", + "item.create.wand_of_symmetry.tooltip.control3": "当潜行å�³é”®æ—¶", + "item.create.wand_of_symmetry.tooltip.action3": "打开_guiç•Œé�¢_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "新颖的小工具,可以远距离放置或更换方块.", - "item.create.handheld_blockzapper.tooltip.control1": "当左键方块时", - "item.create.handheld_blockzapper.tooltip.action1": "设定放置此方块.", - "item.create.handheld_blockzapper.tooltip.control2": "当右键方块时", - "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替换_ 目标方块.", - "item.create.handheld_blockzapper.tooltip.control3": "当潜行右键时", - "item.create.handheld_blockzapper.tooltip.action3": "打开_gui界面_", + "item.create.handheld_blockzapper.tooltip.summary": "新颖的å°�工具,å�¯ä»¥è¿œè·�离放置或更æ�¢æ–¹å�—.", + "item.create.handheld_blockzapper.tooltip.control1": "当左键方å�—æ—¶", + "item.create.handheld_blockzapper.tooltip.action1": "设定放置此方å�—.", + "item.create.handheld_blockzapper.tooltip.control2": "当å�³é”®æ–¹å�—æ—¶", + "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替æ�¢_ 目标方å�—.", + "item.create.handheld_blockzapper.tooltip.control3": "当潜行å�³é”®æ—¶", + "item.create.handheld_blockzapper.tooltip.action3": "打开_guiç•Œé�¢_", "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", - "item.create.handheld_worldshaper.tooltip.control1": "当左键方块时", - "item.create.handheld_worldshaper.tooltip.action1": "设定放置此方块", - "item.create.handheld_worldshaper.tooltip.control2": "当右键方块时", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替换_目标方块", - "item.create.handheld_worldshaper.tooltip.control3": "当潜行右键时", - "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_gui界面_", + "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手æŒ�工具", + "item.create.handheld_worldshaper.tooltip.control1": "当左键方å�—æ—¶", + "item.create.handheld_worldshaper.tooltip.action1": "设定放置此方å�—", + "item.create.handheld_worldshaper.tooltip.control2": "当å�³é”®æ–¹å�—æ—¶", + "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替æ�¢_目标方å�—", + "item.create.handheld_worldshaper.tooltip.control3": "当潜行å�³é”®æ—¶", + "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_guiç•Œé�¢_", "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "适用于常见树木的快速肥料", - "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", - "item.create.tree_fertilizer.tooltip.behaviour1": "无论_生长时间_多少,直接长大", + "item.create.tree_fertilizer.tooltip.summary": "适用于常è§�树木的快速肥料", + "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", + "item.create.tree_fertilizer.tooltip.behaviour1": "无论_生长时间_多少,直接长大", "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "_树林毁灭者_,能够瞬间砍倒一棵树", + "item.create.deforester.tooltip.summary": "_æ ‘æž—æ¯�ç�­è€…_,能够瞬间ç �倒一棵树", "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_.", - "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", - "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的触碰距离,与_主手_的伸缩机械手携同使用,可进一步增加_触碰距离_.", + "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰è·�离_.", + "item.create.extendo_grip.tooltip.condition1": "放置于副手æ �æ—¶", + "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的触碰è·�离,与_主手_的伸缩机械手æ�ºå�Œä½¿ç”¨ï¼Œå�¯è¿›ä¸€æ­¥å¢žåŠ _触碰è·�离_.", "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "将物品更精确地进行_筛选分类_, 可以同时_筛选_多个物品或者将已标记的_过滤器_放在另一个_过滤器_里_嵌套_使用.", - "item.create.filter.tooltip.condition1": "当处于_过滤器_槽中", - "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,_控制_物品流经过滤器", - "item.create.filter.tooltip.condition2": "当右键时", - "item.create.filter.tooltip.behaviour2": "打开_配置面板_", + "item.create.filter.tooltip.summary": "将物å“�更精确地进行_筛选分类_, å�¯ä»¥å�Œæ—¶_筛选_多个物å“�或者将已标记的_过滤器_放在å�¦ä¸€ä¸ª_过滤器_里_嵌套_使用.", + "item.create.filter.tooltip.condition1": "当处于_过滤器_槽中", + "item.create.filter.tooltip.behaviour1": "æ ¹æ�®_过滤器_çš„é…�ç½®,_控制_物å“�æµ�ç»�过滤器", + "item.create.filter.tooltip.condition2": "当å�³é”®æ—¶", + "item.create.filter.tooltip.behaviour2": "打开_é…�ç½®é�¢æ�¿_", "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "比起普通过滤器, _属性过滤器_可以根据不同物品的_属性_来进行过滤", - "item.create.attribute_filter.tooltip.condition1": "当处于_过滤器_槽中", - "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器的_配置,_控制_物品流经过滤器", - "item.create.attribute_filter.tooltip.condition2": "当右键时", - "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_", + "item.create.attribute_filter.tooltip.summary": "比起普通过滤器, _属性过滤器_å�¯ä»¥æ ¹æ�®ä¸�å�Œç‰©å“�çš„_属性_æ�¥è¿›è¡Œè¿‡æ»¤", + "item.create.attribute_filter.tooltip.condition1": "当处于_过滤器_槽中", + "item.create.attribute_filter.tooltip.behaviour1": "æ ¹æ�®_过滤器的_é…�ç½®,_控制_物å“�æµ�ç»�过滤器", + "item.create.attribute_filter.tooltip.condition2": "当å�³é”®æ—¶", + "item.create.attribute_filter.tooltip.behaviour2": "打开_é…�ç½®é�¢æ�¿_", "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "可作为合成材料或在_蓝图桌_使用", + "item.create.empty_schematic.tooltip.summary": "å�¯ä½œä¸ºå�ˆæˆ�æ��料或在_è“�图桌_使用", "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "可以放置在世界中的结构,根据需要放置全息图,并使用_蓝图加农炮_进行构建.", - "item.create.schematic.tooltip.condition1": "当全息图存在时", - "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具定位", - "item.create.schematic.tooltip.control1": "当潜行右键时", - "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面.", + "item.create.schematic.tooltip.summary": "å�¯ä»¥æ”¾ç½®åœ¨ä¸–界中的结构,æ ¹æ�®éœ€è¦�放置全æ�¯å›¾,并使用_è“�图加农炮_进行构建.", + "item.create.schematic.tooltip.condition1": "当全æ�¯å›¾å­˜åœ¨æ—¶", + "item.create.schematic.tooltip.behaviour1": "å�¯ä»¥ä½¿ç”¨å±�幕上的工具定ä½�", + "item.create.schematic.tooltip.control1": "当潜行å�³é”®æ—¶", + "item.create.schematic.tooltip.action1": "打开一个用于输入_精确å��æ ‡_çš„ç•Œé�¢.", "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到.nbt文件.", - "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与右键旋转两个点", - "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl鼠标滚轮选择选区大小,右键空白处保存.", - "item.create.schematic_and_quill.tooltip.control1": "右键", - "item.create.schematic_and_quill.tooltip.action1": "选取点/确认保存", - "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl鼠标滚轮", - "item.create.schematic_and_quill.tooltip.action2": "在_空中_选择点滚动以调整距离。", - "item.create.schematic_and_quill.tooltip.control3": "当潜行右键时", - "item.create.schematic_and_quill.tooltip.action3": "_重置_并删除选区.", + "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构ä¿�存到.nbt文件.", + "item.create.schematic_and_quill.tooltip.condition1": "第一步", + "item.create.schematic_and_quill.tooltip.behaviour1": "手æŒ�è“�图与å�³é”®æ—‹è½¬ä¸¤ä¸ªç‚¹", + "item.create.schematic_and_quill.tooltip.condition2": "第二步", + "item.create.schematic_and_quill.tooltip.behaviour2": "按ä½�Ctrl鼠标滚轮选择选区大å°�,å�³é”®ç©ºç™½å¤„ä¿�å­˜.", + "item.create.schematic_and_quill.tooltip.control1": "å�³é”®", + "item.create.schematic_and_quill.tooltip.action1": "选å�–点/确认ä¿�å­˜", + "item.create.schematic_and_quill.tooltip.control2": "按ä½�Ctrl鼠标滚轮", + "item.create.schematic_and_quill.tooltip.action2": "在_空中_选择点滚动以调整è·�离。", + "item.create.schematic_and_quill.tooltip.control3": "当潜行å�³é”®æ—¶", + "item.create.schematic_and_quill.tooltip.action3": "_é‡�ç½®_并删除选区.", "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "通过发射方块以在世界中重新构建已部署的_全息图_,使用相邻箱子中的物品及_火药_作为燃料.", - "block.create.schematicannon.tooltip.control1": "当右键时", - "block.create.schematicannon.tooltip.action1": "打开_gui界面_", + "block.create.schematicannon.tooltip.summary": "通过å�‘å°„æ–¹å�—以在世界中é‡�新构建已部署的_å…¨æ�¯å›¾_,使用相邻箱å­�中的物å“�å�Š_ç�«è�¯_作为燃料.", + "block.create.schematicannon.tooltip.control1": "当å�³é”®æ—¶", + "block.create.schematicannon.tooltip.action1": "打开_guiç•Œé�¢_", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", - "block.create.schematic_table.tooltip.condition1": "放入空白蓝图时", - "block.create.schematic_table.tooltip.behaviour1": "从Schematics文件夹上传所选文件", + "block.create.schematic_table.tooltip.summary": "å°†ä¿�存的è“�图图写入_空白è“�图_", + "block.create.schematic_table.tooltip.condition1": "放入空白è“�图时", + "block.create.schematic_table.tooltip.behaviour1": "从Schematics文件夹上传所选文件", "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "将_旋转动能_进行直线传递.", + "block.create.shaft.tooltip.summary": "å°†_旋转动能_进行直线传递.", "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到邻近的_齿轮_上", + "block.create.cogwheel.tooltip.summary": "å°†_旋转动能_进行直线传递,或者传递到邻近的_齿轮_上", "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "大号齿轮传动结构,连接到_小号齿轮_时改变其_转速_.", + "block.create.large_cogwheel.tooltip.summary": "大å�·é½¿è½®ä¼ åŠ¨ç»“æž„,连接到_å°�å�·é½¿è½®_时改å�˜å…¶_转速_.", "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "将_旋转动能_进行直线传递,其方块体积使其在穿过墙体时更加_美观_.", + "block.create.encased_shaft.tooltip.summary": "å°†_旋转动能_进行直线传递,其方å�—体积使其在穿过墙体时更加_美观_.", "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "十字传动旋转结构,同时将直线旋转方向_反转_.", + "block.create.gearbox.tooltip.summary": "å��字传动旋转结构,å�Œæ—¶å°†ç›´çº¿æ—‹è½¬æ–¹å�‘_å��转_.", "item.create.vertical_gearbox.tooltip": " VERTICAL GEARBOX", - "item.create.vertical_gearbox.tooltip.summary": "_竖直_版本的_十字传动_结构", + "item.create.vertical_gearbox.tooltip.summary": "_ç«–ç›´_版本的_å��字传动_结构", "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "用于动能控制_旋转方向_的开关.", - "block.create.gearshift.tooltip.condition1": "当提供红石信号时", - "block.create.gearshift.tooltip.behaviour1": "_更改_旋转方向.", + "block.create.gearshift.tooltip.summary": "用于动能控制_旋转方å�‘_的开关.", + "block.create.gearshift.tooltip.condition1": "当æ��供红石信å�·æ—¶", + "block.create.gearshift.tooltip.behaviour1": "_更改_旋转方å�‘.", "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "传动开关装置.", - "block.create.clutch.tooltip.condition1": "当提供红石信号时", - "block.create.clutch.tooltip.behaviour1": "_停止_另一侧的旋转.", + "block.create.clutch.tooltip.summary": "传动开关装置.", + "block.create.clutch.tooltip.condition1": "当æ��供红石信å�·æ—¶", + "block.create.clutch.tooltip.behaviour1": "_å�œæ­¢_å�¦ä¸€ä¾§çš„旋转.", "block.create.encased_belt.tooltip": "ENCASED_BELT", - "block.create.encased_belt.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到临近的_连携齿轮箱_.", - "block.create.encased_belt.tooltip.condition1": "连接到其他传动或装置时", - "block.create.encased_belt.tooltip.behaviour1": "将具有完全相同的转速和方向.", + "block.create.encased_belt.tooltip.summary": "å°†_旋转动能_进行直线传递,或者传递到临近的_è¿žæ�ºé½¿è½®ç®±_.", + "block.create.encased_belt.tooltip.condition1": "连接到其他传动或装置时", + "block.create.encased_belt.tooltip.behaviour1": "将具有完全相å�Œçš„转速和方å�‘.", "block.create.adjustable_pulley.tooltip": "ANALOG BELT PULLEY", - "block.create.adjustable_pulley.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到临近的_连携齿轮箱_.当方块接收到信号时旋转速度将会改变.", - "block.create.adjustable_pulley.tooltip.condition1": "当提供不同红石信号强度时", - "block.create.adjustable_pulley.tooltip.behaviour1": "如果没有红石信号_不会加速_,最强的红石信号将会提升至_两倍速_", + "block.create.adjustable_pulley.tooltip.summary": "å°†_旋转动能_进行直线传递,或者传递到临近的_è¿žæ�ºé½¿è½®ç®±_.当方å�—接收到信å�·æ—¶æ—‹è½¬é€Ÿåº¦å°†ä¼šæ”¹å�˜.", + "block.create.adjustable_pulley.tooltip.condition1": "当æ��ä¾›ä¸�å�Œçº¢çŸ³ä¿¡å�·å¼ºåº¦æ—¶", + "block.create.adjustable_pulley.tooltip.behaviour1": "如果没有红石信å�·_ä¸�会加速_,最强的红石信å�·å°†ä¼šæ��å�‡è‡³_两å€�速_", "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "用_传送带_连接两个_传动杆_,连接的传动杆将具有完全相同的转速和方向.传送带可以_传输实体_和_物品_.", - "item.create.belt_connector.tooltip.control1": "当右键传动杆时", - "item.create.belt_connector.tooltip.action1": "选择传动杆作为传送带的传输点,选定的两个传动杆都必须相互_垂直_,_水平_或_对角平齐_.", - "item.create.belt_connector.tooltip.control2": "当潜行右键时", - "item.create.belt_connector.tooltip.action2": "_重置_传送带的第一个选定位置", + "item.create.belt_connector.tooltip.summary": "用_ä¼ é€�带_连接两个_传动æ�†_,连接的传动æ�†å°†å…·æœ‰å®Œå…¨ç›¸å�Œçš„转速和方å�‘.ä¼ é€�带å�¯ä»¥_传输实体_å’Œ_物å“�_.", + "item.create.belt_connector.tooltip.control1": "当å�³é”®ä¼ åŠ¨æ�†æ—¶", + "item.create.belt_connector.tooltip.action1": "选择传动æ�†ä½œä¸ºä¼ é€�带的传输点,选定的两个传动æ�†éƒ½å¿…须相互_åž‚ç›´_,_æ°´å¹³_或_对角平é½�_.", + "item.create.belt_connector.tooltip.control2": "当潜行å�³é”®æ—¶", + "item.create.belt_connector.tooltip.action2": "_é‡�ç½®_ä¼ é€�带的第一个选定ä½�ç½®", "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "一副特殊的眼镜,能够让你看见 _动能_ 的信息.", - "item.create.goggles.tooltip.condition1": "当装备时", - "item.create.goggles.tooltip.behaviour1": "将会展示单个动能元件的_速度_、_应力_等信息", - "item.create.goggles.tooltip.condition2": "当看向仪表时", - "item.create.goggles.tooltip.behaviour2": "将会展示仪表连接网络的_速度_、_应力_等信息.", + "item.create.goggles.tooltip.summary": "一副特殊的眼镜,能够让你看è§� _动能_ çš„ä¿¡æ�¯.", + "item.create.goggles.tooltip.condition1": "当装备时", + "item.create.goggles.tooltip.behaviour1": "将会展示å�•ä¸ªåŠ¨èƒ½å…ƒä»¶çš„_速度_ã€�_应力_等信æ�¯", + "item.create.goggles.tooltip.condition2": "当看å�‘仪表时", + "item.create.goggles.tooltip.behaviour2": "将会展示仪表连接网络的_速度_ã€�_应力_等信æ�¯.", "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "一种有用的工具,能够调整_动能_的_方向_、_配置_等.", - "item.create.wrench.tooltip.control1": "当右键点击_动能元件_时", - "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", - "item.create.wrench.tooltip.control2": "当潜行右键时", - "item.create.wrench.tooltip.action2": "将物品_取下_并移动到你的背包中.", + "item.create.wrench.tooltip.summary": "一ç§�有用的工具,能够调整_动能_çš„_æ–¹å�‘_ã€�_é…�ç½®_ç­‰.", + "item.create.wrench.tooltip.control1": "当å�³é”®ç‚¹å‡»_动能元件_æ—¶", + "item.create.wrench.tooltip.action1": "以点击的é�¢ä¸ºè½´å¿ƒ_旋转_点击的方å�—", + "item.create.wrench.tooltip.control2": "当潜行å�³é”®æ—¶", + "item.create.wrench.tooltip.action2": "将物å“�_å�–下_并移动到你的背包中.", "block.create.creative_motor.tooltip": "CREATIVE MOTOR", - "block.create.creative_motor.tooltip.summary": "可以配置的_无限动力_来源", + "block.create.creative_motor.tooltip.summary": "å�¯ä»¥é…�置的_æ— é™�动力_æ�¥æº�", "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "从相邻的流水中获得动力", + "block.create.water_wheel.tooltip.summary": "从相邻的æµ�水中获得动力", "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "有多种用途,主要可以将_动力_和_风力_进行互相转换.", - "block.create.encased_fan.tooltip.condition1": "当被红石信号激活后", - "block.create.encased_fan.tooltip.behaviour1": "可将鼓风机下方的_热能_(火, 岩浆等)转化成_动能_, 需要将鼓风机向下摆放", - "block.create.encased_fan.tooltip.condition2": "当旋转时", - "block.create.encased_fan.tooltip.behaviour2": "根据旋转方向_推动_或者_吸引_实体,强度和速度取决于给予的动力.", - "block.create.encased_fan.tooltip.condition3": "当气流通过火,水,岩浆时", - "block.create.encased_fan.tooltip.behaviour3": "在_被吹出_的水,火,岩浆粒子中放置物品会获得相应产物(_建议配合jei查看_).", + "block.create.encased_fan.tooltip.summary": "有多ç§�用途,主è¦�å�¯ä»¥å°†_动力_å’Œ_风力_进行互相转æ�¢.", + "block.create.encased_fan.tooltip.condition1": "当被红石信å�·æ¿€æ´»å�Ž", + "block.create.encased_fan.tooltip.behaviour1": "å�¯å°†é¼“风机下方的_热能_(ç�«ï¼Œ 岩浆等)转化æˆ�_动能_, 需è¦�将鼓风机å�‘下摆放", + "block.create.encased_fan.tooltip.condition2": "当旋转时", + "block.create.encased_fan.tooltip.behaviour2": "æ ¹æ�®æ—‹è½¬æ–¹å�‘_推动_或者_å�¸å¼•_实体,强度和速度å�–决于给予的动力.", + "block.create.encased_fan.tooltip.condition3": "当气æµ�通过ç�«,æ°´,岩浆时", + "block.create.encased_fan.tooltip.behaviour3": "在_被å�¹å‡º_的水,ç�«ï¼Œå²©æµ†ç²’å­�中放置物å“�会获得相应产物(_建议é…�å�ˆjei查看_).", "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "依附在鼓风机上,能够将鼓风机的风到_分散_各个方向.", + "block.create.nozzle.tooltip.summary": "ä¾�附在鼓风机上,能够将鼓风机的风到_分散_å�„个方å�‘.", "block.create.hand_crank.tooltip": "HAND CRANK", - "block.create.hand_crank.tooltip.summary": "一种简单的旋转能源,需要_人工转动_.", - "block.create.hand_crank.tooltip.condition1": "当使用时", - "block.create.hand_crank.tooltip.behaviour1": "向依附的结构提供动力,_潜行_时将会提供_反向_的旋转动力", + "block.create.hand_crank.tooltip.summary": "一ç§�简å�•çš„旋转能æº�,需è¦�_人工转动_.", + "block.create.hand_crank.tooltip.condition1": "当使用时", + "block.create.hand_crank.tooltip.behaviour1": "å�‘ä¾�附的结构æ��供动力,_潜行_时将会æ��ä¾›_å��å�‘_的旋转动力", "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "精致的工艺品,能够记录时间", - "block.create.cuckoo_clock.tooltip.condition1": "当旋转时", - "block.create.cuckoo_clock.tooltip.behaviour1": "显示 _当前时间_ 并且一天会咕咕_两次_.中午咕咕一次, 黄昏可以睡觉的时候咕咕一次 ", + "block.create.cuckoo_clock.tooltip.summary": "精致的工艺å“�,能够记录时间", + "block.create.cuckoo_clock.tooltip.condition1": "当旋转时", + "block.create.cuckoo_clock.tooltip.behaviour1": "显示 _当å‰�时间_ 并且一天会咕咕_两次_.中å�ˆå’•å’•ä¸€æ¬¡ï¼Œ 黄æ˜�å�¯ä»¥ç�¡è§‰çš„时候咕咕一次 ", "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "让旋转动力给你带来一场刺激的旋转风车体验.", + "block.create.turntable.tooltip.summary": "让旋转动力给你带æ�¥ä¸€åœºåˆºæ¿€çš„旋转风车体验.", "block.create.millstone.tooltip": "MILLSTONE", - "block.create.millstone.tooltip.summary": "一个能_研磨物品_的动能装置, 可以被临近的_齿轮_供能, 或者可以在底部用传动杆供能, 成品必须被提取出石磨", - "block.create.millstone.tooltip.condition1": "当旋转运作时", - "block.create.millstone.tooltip.behaviour1": "开始根据 _研磨配方_ 来处理物品.", - "block.create.millstone.tooltip.condition2": "当右键时", - "block.create.millstone.tooltip.behaviour2": "手动取出研磨后的成品.", + "block.create.millstone.tooltip.summary": "一个能_研磨物å“�_的动能装置, å�¯ä»¥è¢«ä¸´è¿‘çš„_齿轮_供能, 或者å�¯ä»¥åœ¨åº•éƒ¨ç”¨ä¼ åŠ¨æ�†ä¾›èƒ½ï¼Œ æˆ�å“�必须被æ��å�–出石磨", + "block.create.millstone.tooltip.condition1": "当旋转è¿�作时", + "block.create.millstone.tooltip.behaviour1": "开始根æ�® _研磨é…�æ–¹_ æ�¥å¤„ç�†ç‰©å“�.", + "block.create.millstone.tooltip.condition2": "当å�³é”®æ—¶", + "block.create.millstone.tooltip.behaviour2": "手动å�–出研磨å�Žçš„æˆ�å“�.", "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "一对能够粉碎一切的粉碎轮。向两个粉碎轮提供向内且相反的转速来工作", - "block.create.crushing_wheel.tooltip.condition1": "当两个粉碎轮一起运作时", - "block.create.crushing_wheel.tooltip.behaviour1": "粉碎物品并获得相应产物(建议配合jei查看)", + "block.create.crushing_wheel.tooltip.summary": "一对能够粉碎一切的粉碎轮。å�‘两个粉碎轮æ��ä¾›å�‘内且相å��的转速æ�¥å·¥ä½œ", + "block.create.crushing_wheel.tooltip.condition1": "当两个粉碎轮一起è¿�作时", + "block.create.crushing_wheel.tooltip.behaviour1": "粉碎物å“�并获得相应产物(建议é…�å�ˆjei查看)", "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "一个强力的活塞式机器,用于压制其下方的物品.", - "block.create.mechanical_press.tooltip.condition1": "当提供红石信号时", - "block.create.mechanical_press.tooltip.behaviour1": "_压制_其下方的物品.", - "block.create.mechanical_press.tooltip.condition2": "在传送带上方时", - "block.create.mechanical_press.tooltip.behaviour2": "_自动压缩_经过传送带的物品.", + "block.create.mechanical_press.tooltip.summary": "一个强力的活塞å¼�机器,用于压制其下方的物å“�.", + "block.create.mechanical_press.tooltip.condition1": "当æ��供红石信å�·æ—¶", + "block.create.mechanical_press.tooltip.behaviour1": "_压制_其下方的物å“�.", + "block.create.mechanical_press.tooltip.condition2": "在传é€�带上方时", + "block.create.mechanical_press.tooltip.behaviour2": "_自动压缩_ç»�过传é€�带的物å“�.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", "block.create.basin.tooltip": "BASIN", - "block.create.basin.tooltip.summary": "一种方便的_物品容器_,常常用于_辊压机_和_搅拌机_,可以被_红石比较器_检测", + "block.create.basin.tooltip.summary": "一ç§�方便的_物å“�容器_,常常用于_辊压机_å’Œ_æ�…拌机_,å�¯ä»¥è¢«_红石比较器_检测", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", - "block.create.mechanical_mixer.tooltip.summary": "一种能够动态进行搅拌的机器,需要恒定且够快的速度,并且下方需要放置_工作盆_(中间需要一格高)", - "block.create.mechanical_mixer.tooltip.condition1": "当位于工作盆上方", - "block.create.mechanical_mixer.tooltip.behaviour1": "只要_工作盆_中有必要的物品,就会将物品进行搅拌", - "block.create.mechanical_mixer.tooltip.condition2": "当使用扳手时", - "block.create.mechanical_mixer.tooltip.behaviour2": "_配置_配方中物品合成所需的最小数目,通过这个配置能够_避免不需要_的、相似的配方", + "block.create.mechanical_mixer.tooltip.summary": "一ç§�能够动æ€�进行æ�…拌的机器,需è¦�æ�’定且够快的速度,并且下方需è¦�放置_工作盆_(中间需è¦�一格高)", + "block.create.mechanical_mixer.tooltip.condition1": "当ä½�于工作盆上方", + "block.create.mechanical_mixer.tooltip.behaviour1": "å�ªè¦�_工作盆_中有必è¦�的物å“�,就会将物å“�进行æ�…æ‹Œ", + "block.create.mechanical_mixer.tooltip.condition2": "当使用扳手时", + "block.create.mechanical_mixer.tooltip.behaviour2": "_é…�ç½®_é…�方中物å“�å�ˆæˆ�所需的最å°�æ•°ç›®,通过这个é…�置能够_é�¿å…�ä¸�需è¦�_çš„ã€�相似的é…�æ–¹", "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", - "block.create.mechanical_crafter.tooltip.summary": "一种依靠_动能_的_自动_合成台。根据想要合成物品的_合成表_来摆放_相应数量_的机械制造机,并且用扳手调整物品在制造机里的_传动方向_以让他们合在一起后被输出", - "block.create.mechanical_crafter.tooltip.condition1": "当旋转时", - "block.create.mechanical_crafter.tooltip.behaviour1": "当机器中_所有_的物品槽有物品时,将会启动所有的制造机来工作.", - "block.create.mechanical_crafter.tooltip.condition2": "被红石激活时", - "block.create.mechanical_crafter.tooltip.behaviour2": "强制启动当前网格中所有给定的_材料_的_合成_", - "block.create.mechanical_crafter.tooltip.control1": "当在机器前方使用扳手时", - "block.create.mechanical_crafter.tooltip.action1": "将会改变物品移动的方向. 要合成一个物品,所有原料必须被_移动到一起_,并且在阵列的_外缘_被弹出机器", - "block.create.mechanical_crafter.tooltip.control2": "当侧方或者后方使用扳手时", - "block.create.mechanical_crafter.tooltip.action2": "连接相邻的制造机的物品栏,这样_相同_的物品就会自动进入所有相互连接的制造机", + "block.create.mechanical_crafter.tooltip.summary": "一ç§�ä¾�é� _动能_çš„_自动_å�ˆæˆ�å�°ã€‚æ ¹æ�®æƒ³è¦�å�ˆæˆ�物å“�çš„_å�ˆæˆ�表_æ�¥æ‘†æ”¾_相应数é‡�_的机械制造机,并且用扳手调整物å“�在制造机里的_传动方å�‘_以让他们å�ˆåœ¨ä¸€èµ·å�Žè¢«è¾“出", + "block.create.mechanical_crafter.tooltip.condition1": "当旋转时", + "block.create.mechanical_crafter.tooltip.behaviour1": "当机器中_所有_的物å“�槽有物å“�æ—¶,将会å�¯åŠ¨æ‰€æœ‰çš„制造机æ�¥å·¥ä½œ.", + "block.create.mechanical_crafter.tooltip.condition2": "被红石激活时", + "block.create.mechanical_crafter.tooltip.behaviour2": "强制å�¯åŠ¨å½“å‰�网格中所有给定的_æ��æ–™_çš„_å�ˆæˆ�_", + "block.create.mechanical_crafter.tooltip.control1": "当在机器å‰�方使用扳手时", + "block.create.mechanical_crafter.tooltip.action1": "将会改å�˜ç‰©å“�移动的方å�‘. è¦�å�ˆæˆ�一个物å“�,所有原料必须被_移动到一起_,并且在阵列的_外缘_被弹出机器", + "block.create.mechanical_crafter.tooltip.control2": "当侧方或者å�Žæ–¹ä½¿ç”¨æ‰³æ‰‹æ—¶", + "block.create.mechanical_crafter.tooltip.action2": "连接相邻的制造机的物å“�æ �,这样_相å�Œ_的物å“�就会自动进入所有相互连接的制造机", "block.create.furnace_engine.tooltip": "FURNACE ENGINE", - "block.create.furnace_engine.tooltip.summary": "一种强力的_旋转动能_的来源,但是需要_正在工作_的_熔炉_(三种熔炉都可以)", - "block.create.furnace_engine.tooltip.condition1": "当连接正在燃烧的熔炉", - "block.create.furnace_engine.tooltip.behaviour1": "将会带动_相连_的_飞轮_(需要间隔一格),用高炉速度更快", + "block.create.furnace_engine.tooltip.summary": "一ç§�强力的_旋转动能_çš„æ�¥æº�,但是需è¦�_正在工作_çš„_熔炉_(三ç§�熔炉都å�¯ä»¥)", + "block.create.furnace_engine.tooltip.condition1": "当连接正在燃烧的熔炉", + "block.create.furnace_engine.tooltip.behaviour1": "将会带动_相连_çš„_飞轮_(需è¦�间隔一格),用高炉速度更快", "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "一种大型的金属轮, 能将_熔炉引擎_提供的动能稳定化输出, 需要与_熔炉引擎_间隔一个方块", - "block.create.flywheel.tooltip.condition1": "当连接正在输出的_熔炉引擎_", - "block.create.flywheel.tooltip.behaviour1": "将会提供相应的_旋转动能_.", + "block.create.flywheel.tooltip.summary": "一ç§�大型的金属轮, 能将_熔炉引擎_æ��供的动能稳定化输出, 需è¦�与_熔炉引擎_间隔一个方å�—", + "block.create.flywheel.tooltip.condition1": "当连接正在输出的_熔炉引擎_", + "block.create.flywheel.tooltip.behaviour1": "将会æ��供相应的_旋转动能_.", "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", - "block.create.portable_storage_interface.tooltip.summary": "一种便携的_物品接口_,能够将移动的结构中的物品进行交互移动", - "block.create.portable_storage_interface.tooltip.condition1": "当处于移动时", - "block.create.portable_storage_interface.tooltip.behaviour1": "与固定的_传输器_交互. 会根据传输器的方向进行输出或者输入物品。 移动结构在传输物品的时候会短暂地停下", + "block.create.portable_storage_interface.tooltip.summary": "一ç§�便æ�ºçš„_物å“�接å�£_,能够将移动的结构中的物å“�进行交互移动", + "block.create.portable_storage_interface.tooltip.condition1": "当处于移动时", + "block.create.portable_storage_interface.tooltip.behaviour1": "与固定的_传输器_交互. 会根æ�®ä¼ è¾“器的方å�‘进行输出或者输入物å“�。 移动结构在传输物å“�的时候会短暂地å�œä¸‹", "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", - "block.create.rotation_speed_controller.tooltip.summary": "一个可以变换所连接齿轮旋转速度的元件", - "block.create.rotation_speed_controller.tooltip.condition1": "当连接大齿轮时", - "block.create.rotation_speed_controller.tooltip.behaviour1": "将输入的旋转动能改变速度后,传递给连接的大齿轮,连接的大齿轮要放在上方.", + "block.create.rotation_speed_controller.tooltip.summary": "一个å�¯ä»¥å�˜æ�¢æ‰€è¿žæŽ¥é½¿è½®æ—‹è½¬é€Ÿåº¦çš„元件", + "block.create.rotation_speed_controller.tooltip.condition1": "当连接大齿轮时", + "block.create.rotation_speed_controller.tooltip.behaviour1": "将输入的旋转动能改å�˜é€Ÿåº¦å�Ž,传递给连接的大齿轮,连接的大齿轮è¦�放在上方.", "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "活塞的高级版本,使用_旋转动能_精确地移动其连接的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块.", - "block.create.mechanical_piston.tooltip.condition1": "推拉活塞时", - "block.create.mechanical_piston.tooltip.behaviour1": "活塞的速度和方向与所接受转速的大小以及方向相关.", + "block.create.mechanical_piston.tooltip.summary": "活塞的高级版本,使用_旋转动能_精确地移动其连接的方å�—,背é�¢å�¯æ”¾ç½®æ´»å¡žæ�†å»¶é•¿æ´»å¡žèŒƒå›´,没有活塞æ�†å°†ä¸�会工作,使用_底盘_或者_粘液å�—_å�¯ä»¥ç§»åŠ¨å¤šè¡Œæ–¹å�—.", + "block.create.mechanical_piston.tooltip.condition1": "推拉活塞时", + "block.create.mechanical_piston.tooltip.behaviour1": "活塞的速度和方å�‘与所接å�—转速的大å°�以å�Šæ–¹å�‘相关.", "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", - "block.create.sticky_mechanical_piston.tooltip.summary": "粘性活塞的高级版本,使用_旋转动能_精确移动其粘贴的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "推拉活塞时", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "活塞的速度和方向与所接受转速的大小以及方向相关.", + "block.create.sticky_mechanical_piston.tooltip.summary": "粘性活塞的高级版本,使用_旋转动能_精确移动其粘贴的方å�—,背é�¢å�¯æ”¾ç½®æ´»å¡žæ�†å»¶é•¿æ´»å¡žèŒƒå›´,没有活塞æ�†å°†ä¸�会工作,使用_底盘_或者_粘液å�—_å�¯ä»¥ç§»åŠ¨å¤šè¡Œæ–¹å�—.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "推拉活塞时", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "活塞的速度和方å�‘与所接å�—转速的大å°�以å�Šæ–¹å�‘相关.", "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "用于增加_动力活塞_的移动范围", - "block.create.piston_extension_pole.tooltip.condition1": "当连接到动力活塞时", - "block.create.piston_extension_pole.tooltip.behaviour1": "活塞的移动范围将扩大", + "block.create.piston_extension_pole.tooltip.summary": "用于增加_动力活塞_的移动范围", + "block.create.piston_extension_pole.tooltip.condition1": "当连接到动力活塞时", + "block.create.piston_extension_pole.tooltip.behaviour1": "活塞的移动范围将扩大", "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "用于建造大型的旋转结构,或者反之转换_风能_为_旋转能_.", - "block.create.mechanical_bearing.tooltip.condition1": "当旋转时", - "block.create.mechanical_bearing.tooltip.behaviour1": "使用_粘液块_或者_底盘_来驱动更多方块", - "block.create.mechanical_bearing.tooltip.condition2": "给予红石信号时", - "block.create.mechanical_bearing.tooltip.behaviour2": "开始旋转并为连接的传动方块提供动力(此结构需使用_羊毛_建造).", + "block.create.mechanical_bearing.tooltip.summary": "用于建造大型的旋转结构,或者å��之转æ�¢_风能_为_旋转能_.", + "block.create.mechanical_bearing.tooltip.condition1": "当旋转时", + "block.create.mechanical_bearing.tooltip.behaviour1": "使用_粘液å�—_或者_底盘_æ�¥é©±åŠ¨æ›´å¤šæ–¹å�—", + "block.create.mechanical_bearing.tooltip.condition2": "给予红石信å�·æ—¶", + "block.create.mechanical_bearing.tooltip.behaviour2": "开始旋转并为连接的传动方å�—æ��供动力(此结构需使用_羊毛_建造).", "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", - "block.create.clockwork_bearing.tooltip.summary": "一种高级的机械轴承,可以根据当前游戏内时间旋转两个不同的指针", - "block.create.clockwork_bearing.tooltip.condition1": "当旋转时", - "block.create.clockwork_bearing.tooltip.behaviour1": "旋转第一个连接的结构作为时针,第二个连接的结构作为分针", + "block.create.clockwork_bearing.tooltip.summary": "一ç§�高级的机械轴承,å�¯ä»¥æ ¹æ�®å½“å‰�游æˆ�内时间旋转两个ä¸�å�Œçš„指针", + "block.create.clockwork_bearing.tooltip.condition1": "当旋转时", + "block.create.clockwork_bearing.tooltip.behaviour1": "旋转第一个连接的结构作为时针,第二个连接的结构作为分针", "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", - "block.create.sequenced_gearshift.tooltip.summary": "一种可编程的组件,可以根据内部的指令改变旋转的_方向_,_速度_,以及_距离_。 此组件可以有效配合活塞和轴承等使用。最高可让其按_顺序_执行_5条指令_。条高速旋转时可能会变得不精确。", - "block.create.sequenced_gearshift.tooltip.condition1": "当给予红石信号时", - "block.create.sequenced_gearshift.tooltip.behaviour1": "在输入旋转动能的情况下,执行指令.", - "block.create.sequenced_gearshift.tooltip.condition2": "当右键时", - "block.create.sequenced_gearshift.tooltip.behaviour2": "将打开配置_配置界面_", + "block.create.sequenced_gearshift.tooltip.summary": "一ç§�å�¯ç¼–程的组件,å�¯ä»¥æ ¹æ�®å†…部的指令改å�˜æ—‹è½¬çš„_æ–¹å�‘_,_速度_,以å�Š_è·�离_。 此组件å�¯ä»¥æœ‰æ•ˆé…�å�ˆæ´»å¡žå’Œè½´æ‰¿ç­‰ä½¿ç”¨ã€‚最高å�¯è®©å…¶æŒ‰_顺åº�_执行_5æ�¡æŒ‡ä»¤_。æ�¡é«˜é€Ÿæ—‹è½¬æ—¶å�¯èƒ½ä¼šå�˜å¾—ä¸�精确。", + "block.create.sequenced_gearshift.tooltip.condition1": "当给予红石信å�·æ—¶", + "block.create.sequenced_gearshift.tooltip.behaviour1": "在输入旋转动能的情况下,执行指令.", + "block.create.sequenced_gearshift.tooltip.condition2": "当å�³é”®æ—¶", + "block.create.sequenced_gearshift.tooltip.behaviour2": "将打开é…�ç½®_é…�置界é�¢_", "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "将连接当前方块的结构连接在_矿车_上", - "block.create.cart_assembler.tooltip.condition1": "当被红石信号激活时", - "block.create.cart_assembler.tooltip.behaviour1": "将装配站上连接的结构组装到矿车上,并送矿车上路", - "block.create.cart_assembler.tooltip.condition2": "没有红石信号时", - "block.create.cart_assembler.tooltip.behaviour2": "将经过的矿车上的结构_实体化_,并停住矿车.", + "block.create.cart_assembler.tooltip.summary": "将连接当å‰�æ–¹å�—的结构连接在_矿车_上", + "block.create.cart_assembler.tooltip.condition1": "当被红石信å�·æ¿€æ´»æ—¶", + "block.create.cart_assembler.tooltip.behaviour1": "将装é…�站上连接的结构组装到矿车上,并é€�矿车上路", + "block.create.cart_assembler.tooltip.condition2": "没有红石信å�·æ—¶", + "block.create.cart_assembler.tooltip.behaviour2": "å°†ç»�过的矿车上的结构_实体化_,并å�œä½�矿车.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "ROPE PULLEY", - "block.create.rope_pulley.tooltip.summary": "移动绳索相连的结构. 使用_底盘_或者_粘液块_来移动多行方块", - "block.create.rope_pulley.tooltip.condition1": "当旋转时", - "block.create.rope_pulley.tooltip.behaviour1": "根据输入的转速的大小以及方向,移动链接的结构.", + "block.create.rope_pulley.tooltip.summary": "移动绳索相连的结构. 使用_底盘_或者_粘液å�—_æ�¥ç§»åŠ¨å¤šè¡Œæ–¹å�—", + "block.create.rope_pulley.tooltip.condition1": "当旋转时", + "block.create.rope_pulley.tooltip.behaviour1": "æ ¹æ�®è¾“入的转速的大å°�以å�Šæ–¹å�‘,移动链接的结构.", "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "一种可配置的_底盘_。这种底盘可以将多个方块连接起来组合成_大型结构_", - "block.create.linear_chassis.tooltip.condition1": "被移动时", - "block.create.linear_chassis.tooltip.behaviour1": "移动所有_并排_的_机壳底盘_。如果底盘上涂了_粘液球_,那么其范围内一条直线的方块都会被_黏附移动_(详情见Ctrl).", - "block.create.linear_chassis.tooltip.condition2": "当使用扳手时", - "block.create.linear_chassis.tooltip.behaviour2": "通过_鼠标滚轮_来配置连接的方块的范围.按住_Ctrl_时滚动滚轮可以同时配置相连的其他底盘.", - "block.create.linear_chassis.tooltip.control1": "当用粘液球右键时", - "block.create.linear_chassis.tooltip.action1": "变为_粘性机壳底盘_. 所有工作范围内与其相连的方块会与其_一同移动_", + "block.create.linear_chassis.tooltip.summary": "一ç§�å�¯é…�置的_底盘_。这ç§�底盘å�¯ä»¥å°†å¤šä¸ªæ–¹å�—连接起æ�¥ç»„å�ˆæˆ�_大型结构_", + "block.create.linear_chassis.tooltip.condition1": "被移动时", + "block.create.linear_chassis.tooltip.behaviour1": "移动所有_并排_çš„_机壳底盘_。如果底盘上涂了_粘液ç�ƒ_,那么其范围内一æ�¡ç›´çº¿çš„æ–¹å�—都会被_é»�附移动_(详情è§�Ctrl).", + "block.create.linear_chassis.tooltip.condition2": "当使用扳手时", + "block.create.linear_chassis.tooltip.behaviour2": "通过_鼠标滚轮_æ�¥é…�置连接的方å�—的范围.按ä½�_Ctrl_时滚动滚轮å�¯ä»¥å�Œæ—¶é…�置相连的其他底盘.", + "block.create.linear_chassis.tooltip.control1": "当用粘液ç�ƒå�³é”®æ—¶", + "block.create.linear_chassis.tooltip.action1": "å�˜ä¸º_粘性机壳底盘_. 所有工作范围内与其相连的方å�—会与其_一å�Œç§»åŠ¨_", "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "一种可配置的底盘。这种底盘可以将多个方块连接起来组合成_大型结构_", - "block.create.radial_chassis.tooltip.condition1": "当旋转时", - "block.create.radial_chassis.tooltip.behaviour1": "所有_竖排_的_旋转底盘_会互相粘连移动,并且每个涂了_粘液球_的底盘都会带动其工作半径内的方块(详情见Ctrl).", - "block.create.radial_chassis.tooltip.condition2": "当使用扳手时", - "block.create.radial_chassis.tooltip.behaviour2": "配置连接的方块的半径.按住_Ctrl_可以同时配置相连的其他底盘.", - "block.create.radial_chassis.tooltip.control1": "当用粘液球右键时", - "block.create.radial_chassis.tooltip.action1": "变为_粘性旋转底盘_.所有工作范围内与其相连的方块会与其_一同移动_.", + "block.create.radial_chassis.tooltip.summary": "一ç§�å�¯é…�置的底盘。这ç§�底盘å�¯ä»¥å°†å¤šä¸ªæ–¹å�—连接起æ�¥ç»„å�ˆæˆ�_大型结构_", + "block.create.radial_chassis.tooltip.condition1": "当旋转时", + "block.create.radial_chassis.tooltip.behaviour1": "所有_竖排_çš„_旋转底盘_会互相粘连移动,并且æ¯�个涂了_粘液ç�ƒ_的底盘都会带动其工作å�Šå¾„内的方å�—(详情è§�Ctrl).", + "block.create.radial_chassis.tooltip.condition2": "当使用扳手时", + "block.create.radial_chassis.tooltip.behaviour2": "é…�置连接的方å�—çš„å�Šå¾„.按ä½�_Ctrl_å�¯ä»¥å�Œæ—¶é…�置相连的其他底盘.", + "block.create.radial_chassis.tooltip.control1": "当用粘液ç�ƒå�³é”®æ—¶", + "block.create.radial_chassis.tooltip.action1": "å�˜ä¸º_粘性旋转底盘_.所有工作范围内与其相连的方å�—会与其_一å�Œç§»åŠ¨_.", "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "用于_破坏方块_的装置,可以被_动力活塞_和_动力轴承_等带动", - "block.create.mechanical_drill.tooltip.condition1": "被供能时", - "block.create.mechanical_drill.tooltip.behaviour1": "_原地_破坏正前方的方块,且_伤害_在一定范围内生物及玩家.", - "block.create.mechanical_drill.tooltip.condition2": "当移动时", - "block.create.mechanical_drill.tooltip.behaviour2": "横向或纵向破坏其所_碰到_的方块.", + "block.create.mechanical_drill.tooltip.summary": "用于_ç ´å��æ–¹å�—_的装置,å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动", + "block.create.mechanical_drill.tooltip.condition1": "被供能时", + "block.create.mechanical_drill.tooltip.behaviour1": "_原地_ç ´å��æ­£å‰�方的方å�—,且_伤害_在一定范围内生物å�ŠçŽ©å®¶.", + "block.create.mechanical_drill.tooltip.condition2": "当移动时", + "block.create.mechanical_drill.tooltip.behaviour2": "横å�‘或纵å�‘ç ´å��其所_碰到_çš„æ–¹å�—.", "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "适用于中型作物自动化的收割机,可以被_动力活塞_和_动力轴承_等带动.", - "block.create.mechanical_harvester.tooltip.condition1": "当移动时", - "block.create.mechanical_harvester.tooltip.behaviour1": "收割机移动至成熟作物,收割作物并将作物变为初始生长状态.", + "block.create.mechanical_harvester.tooltip.summary": "适用于中型作物自动化的收割机,å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动.", + "block.create.mechanical_harvester.tooltip.condition1": "当移动时", + "block.create.mechanical_harvester.tooltip.behaviour1": "收割机移动至æˆ�熟作物,收割作物并将作物å�˜ä¸ºåˆ�始生长状æ€�.", "block.create.mechanical_plough.tooltip": "MECHANICAL mechanical_plough", - "block.create.mechanical_plough.tooltip.summary": "犁是一个非常有用的多功能方块, 它可以被 _动力活塞_ 和 _动力轴承_ 等带动", - "block.create.mechanical_plough.tooltip.condition1": "当移动时", - "block.create.mechanical_plough.tooltip.behaviour1": "可以打掉无碰撞体积的一些_附着方块_,比如火把和雪等. 可以在不伤害实体的情况下移动它们. 能像_锄头_一样翻土耕田.", + "block.create.mechanical_plough.tooltip.summary": "çŠ�是一个é�žå¸¸æœ‰ç”¨çš„多功能方å�—, 它å�¯ä»¥è¢« _动力活塞_ å’Œ _动力轴承_ 等带动", + "block.create.mechanical_plough.tooltip.condition1": "当移动时", + "block.create.mechanical_plough.tooltip.behaviour1": "å�¯ä»¥æ‰“掉无碰撞体积的一些_附ç�€æ–¹å�—_,比如ç�«æŠŠå’Œé›ªç­‰. å�¯ä»¥åœ¨ä¸�伤害实体的情况下移动它们. 能åƒ�_锄头_一样翻土耕田.", "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", - "block.create.mechanical_saw.tooltip.summary": "可以用于砍树,也可以用于切割方块,可以被_动力活塞_和_动力轴承_等带动", - "block.create.mechanical_saw.tooltip.condition1": "当向上放置时", - "block.create.mechanical_saw.tooltip.behaviour1": "可以切割各种物品(建议配合jei查看)", - "block.create.mechanical_saw.tooltip.condition2": "当方向在水平面时", - "block.create.mechanical_saw.tooltip.behaviour2": "可以砍倒面前的树木", - "block.create.mechanical_saw.tooltip.condition3": "当移动时", - "block.create.mechanical_saw.tooltip.behaviour3": "将会砍倒碰撞到的树木", + "block.create.mechanical_saw.tooltip.summary": "å�¯ä»¥ç”¨äºŽç �æ ‘,也å�¯ä»¥ç”¨äºŽåˆ‡å‰²æ–¹å�—,å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动", + "block.create.mechanical_saw.tooltip.condition1": "当å�‘上放置时", + "block.create.mechanical_saw.tooltip.behaviour1": "å�¯ä»¥åˆ‡å‰²å�„ç§�物å“�(建议é…�å�ˆjei查看)", + "block.create.mechanical_saw.tooltip.condition2": "当方å�‘在水平é�¢æ—¶", + "block.create.mechanical_saw.tooltip.behaviour2": "å�¯ä»¥ç �倒é�¢å‰�的树木", + "block.create.mechanical_saw.tooltip.condition3": "当移动时", + "block.create.mechanical_saw.tooltip.behaviour3": "将会ç �倒碰撞到的树木", "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "根据连接的容器_存储空间_的占用情况切换红石信号强度.", - "block.create.stockpile_switch.tooltip.condition1": "低于下限时", - "block.create.stockpile_switch.tooltip.behaviour1": "停止提供红石信号", - "block.create.stockpile_switch.tooltip.condition2": "超过上限时", - "block.create.stockpile_switch.tooltip.behaviour2": "开始提供红石信号,直到再次到达下限.", - "block.create.stockpile_switch.tooltip.control1": "当右键方块时", - "block.create.stockpile_switch.tooltip.action1": "打开配置面板", + "block.create.stockpile_switch.tooltip.summary": "æ ¹æ�®è¿žæŽ¥çš„容器_存储空间_çš„å� ç”¨æƒ…况切æ�¢çº¢çŸ³ä¿¡å�·å¼ºåº¦.", + "block.create.stockpile_switch.tooltip.condition1": "低于下é™�æ—¶", + "block.create.stockpile_switch.tooltip.behaviour1": "å�œæ­¢æ��供红石信å�·", + "block.create.stockpile_switch.tooltip.condition2": "超过上é™�æ—¶", + "block.create.stockpile_switch.tooltip.behaviour2": "开始æ��供红石信å�·,直到å†�次到达下é™�.", + "block.create.stockpile_switch.tooltip.control1": "当å�³é”®æ–¹å�—æ—¶", + "block.create.stockpile_switch.tooltip.action1": "打开é…�ç½®é�¢æ�¿", "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "无线红石信号终端,可以使用任何物品编辑终端频道. 虽然距离有限,但是也挺远的.", - "block.create.redstone_link.tooltip.condition1": "当启用时", - "block.create.redstone_link.tooltip.behaviour1": "接收相同频道提供的红石信号.", - "block.create.redstone_link.tooltip.control1": "当手持方块右键方块时", - "block.create.redstone_link.tooltip.action1": "手持任意物品为其设置频道,可以组合两个物品.", - "block.create.redstone_link.tooltip.control2": "当潜行右键时", - "block.create.redstone_link.tooltip.action2": "在终端模式和接收模式之间切换.", + "block.create.redstone_link.tooltip.summary": "无线红石信å�·ç»ˆç«¯,å�¯ä»¥ä½¿ç”¨ä»»ä½•ç‰©å“�编辑终端频é�“. 虽然è·�离有é™�,但是也挺远的.", + "block.create.redstone_link.tooltip.condition1": "当å�¯ç”¨æ—¶", + "block.create.redstone_link.tooltip.behaviour1": "接收相å�Œé¢‘é�“æ��供的红石信å�·.", + "block.create.redstone_link.tooltip.control1": "当手æŒ�æ–¹å�—å�³é”®æ–¹å�—æ—¶", + "block.create.redstone_link.tooltip.action1": "手æŒ�ä»»æ„�物å“�为其设置频é�“,å�¯ä»¥ç»„å�ˆä¸¤ä¸ªç‰©å“�.", + "block.create.redstone_link.tooltip.control2": "当潜行å�³é”®æ—¶", + "block.create.redstone_link.tooltip.action2": "在终端模å¼�和接收模å¼�之间切æ�¢.", "block.create.nixie_tube.tooltip": "NIXIE TUBE", - "block.create.nixie_tube.tooltip.summary": "一个花里胡哨的红石强度显示器,范围:0到15。", - "block.create.nixie_tube.tooltip.condition1": "被红石激活时", - "block.create.nixie_tube.tooltip.behaviour1": "直观的显示当前红石型号的强度", + "block.create.nixie_tube.tooltip.summary": "一个花里胡哨的红石强度显示器,范围:0到15。", + "block.create.nixie_tube.tooltip.condition1": "被红石激活时", + "block.create.nixie_tube.tooltip.behaviour1": "直观的显示当å‰�红石型å�·çš„强度", "block.create.redstone_contact.tooltip": "REDSTONE CONTACT", - "block.create.redstone_contact.tooltip.summary": "一种用于高级红石装置的设备. 只能两两工作. 可以被_动力活塞_和_动力轴承_等带动", - "block.create.redstone_contact.tooltip.condition1": "当正对面放置也放置_相互朝向_的接触信号发生器时", - "block.create.redstone_contact.tooltip.behaviour1": "提供_红石信号_.", - "block.create.redstone_contact.tooltip.condition2": "当移动时", - "block.create.redstone_contact.tooltip.behaviour2": "如果接触到其他信号发生器,使其发出红石信号.", + "block.create.redstone_contact.tooltip.summary": "一ç§�用于高级红石装置的设备. å�ªèƒ½ä¸¤ä¸¤å·¥ä½œ. å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动", + "block.create.redstone_contact.tooltip.condition1": "当正对é�¢æ”¾ç½®ä¹Ÿæ”¾ç½®_相互æœ�å�‘_的接触信å�·å�‘生器时", + "block.create.redstone_contact.tooltip.behaviour1": "æ��ä¾›_红石信å�·_.", + "block.create.redstone_contact.tooltip.condition2": "当移动时", + "block.create.redstone_contact.tooltip.behaviour2": "如果接触到其他信å�·å�‘生器,使其å�‘出红石信å�·.", "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "该箱子允许对其容量进行调整,最大可以容纳_16组_物品.", - "block.create.adjustable_crate.tooltip.control1": "当右键方块时", - "block.create.adjustable_crate.tooltip.action1": "打开箱子", + "block.create.adjustable_crate.tooltip.summary": "该箱å­�å…�许对其容é‡�进行调整,最大å�¯ä»¥å®¹çº³_16组_物å“�.", + "block.create.adjustable_crate.tooltip.control1": "当å�³é”®æ–¹å�—æ—¶", + "block.create.adjustable_crate.tooltip.action1": "打开箱å­�", "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "这个容器可以给临近的 _蓝图大炮_ 提供无限物品以及燃料 (创造专用物品)", - "block.create.creative_crate.tooltip.condition1": "当标记了物品时", - "block.create.creative_crate.tooltip.behaviour1": "容器将会从虚空中提供_无限量_的标记物品,并且任何放置到容器中的物品都会被_送入虚空_", + "block.create.creative_crate.tooltip.summary": "这个容器å�¯ä»¥ç»™ä¸´è¿‘çš„ _è“�图大炮_ æ��供无é™�物å“�以å�Šç‡ƒæ–™ (创造专用物å“�)", + "block.create.creative_crate.tooltip.condition1": "当标记了物å“�æ—¶", + "block.create.creative_crate.tooltip.behaviour1": "容器将会从虚空中æ��ä¾›_æ— é™�é‡�_的标记物å“�,并且任何放置到容器中的物å“�都会被_é€�入虚空_", "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "从连接的_容器_里自动将物品_输出_到外面,如果前方已经有物品,则在物品被移动前不会继续输出. 可以设置_白名单过滤_.", - "block.create.extractor.tooltip.condition1": "当提供红石信号时", - "block.create.extractor.tooltip.behaviour1": "_暂停_自动输出", - "block.create.extractor.tooltip.condition2": "放置在传送带上时", - "block.create.extractor.tooltip.behaviour2": "当传送带被_黄铜机壳_加固时,使用提取器可以将传送带上的物品_提取_出来. 当提取器堵塞时,传送带将会停下.", - "block.create.extractor.tooltip.control1": "当右键过滤框时", - "block.create.extractor.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + "block.create.extractor.tooltip.summary": "从连接的_容器_里自动将物å“�_输出_到外é�¢,如果å‰�方已ç»�有物å“�,则在物å“�被移动å‰�ä¸�会继续输出. å�¯ä»¥è®¾ç½®_白å��å�•è¿‡æ»¤_.", + "block.create.extractor.tooltip.condition1": "当æ��供红石信å�·æ—¶", + "block.create.extractor.tooltip.behaviour1": "_æš‚å�œ_自动输出", + "block.create.extractor.tooltip.condition2": "放置在传é€�带上时", + "block.create.extractor.tooltip.behaviour2": "当传é€�带被_黄铜机壳_加固时,使用æ��å�–器å�¯ä»¥å°†ä¼ é€�带上的物å“�_æ��å�–_出æ�¥. 当æ��å�–器堵塞时,ä¼ é€�带将会å�œä¸‹.", + "block.create.extractor.tooltip.control1": "当å�³é”®è¿‡æ»¤æ¡†æ—¶", + "block.create.extractor.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", "block.create.transposer.tooltip": "TRANSPOSER", - "block.create.transposer.tooltip.summary": "将过滤框_白名单_中的物品_传输_到指定的容器.", - "block.create.transposer.tooltip.condition1": "当给予红石信号时", - "block.create.transposer.tooltip.behaviour1": "_暂停_传输.", - "block.create.transposer.tooltip.condition2": "放置在传送带上时", - "block.create.transposer.tooltip.behaviour2": "当传送带被_黄铜机壳_加固时,使用_传输器_可以将传送带上的物品_提取_出来. 当传输器堵塞时,传送带将会停下.", - "block.create.transposer.tooltip.control1": "当右键过滤框时", - "block.create.transposer.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + "block.create.transposer.tooltip.summary": "将过滤框_白å��å�•_中的物å“�_传输_到指定的容器.", + "block.create.transposer.tooltip.condition1": "当给予红石信å�·æ—¶", + "block.create.transposer.tooltip.behaviour1": "_æš‚å�œ_传输.", + "block.create.transposer.tooltip.condition2": "放置在传é€�带上时", + "block.create.transposer.tooltip.behaviour2": "当传é€�带被_黄铜机壳_加固时,使用_传输器_å�¯ä»¥å°†ä¼ é€�带上的物å“�_æ��å�–_出æ�¥. 当传输器堵塞时,ä¼ é€�带将会å�œä¸‹.", + "block.create.transposer.tooltip.control1": "当å�³é”®è¿‡æ»¤æ¡†æ—¶", + "block.create.transposer.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", "block.create.deployer.tooltip": "DEPLOYER", - "block.create.deployer.tooltip.summary": "它是一个_机械手_,将尽可能_模仿玩家_的行为,也能将方块从容器中取出并_放置_. 可以设置_白名单_.", - "block.create.deployer.tooltip.condition1": "被供能时", - "block.create.deployer.tooltip.behaviour1": "机械手可以最多伸长_两个方块_的距离", - "block.create.deployer.tooltip.condition2": "当使用扳手时", - "block.create.deployer.tooltip.behaviour2": "将会启用拳头模式,在拳头模式之下,机械臂将会试图使用手中的物品_破坏方块_,或者_攻击实体_.", + "block.create.deployer.tooltip.summary": "它是一个_机械手_,将尽å�¯èƒ½_模仿玩家_的行为,也能将方å�—从容器中å�–出并_放置_. å�¯ä»¥è®¾ç½®_白å��å�•_.", + "block.create.deployer.tooltip.condition1": "被供能时", + "block.create.deployer.tooltip.behaviour1": "机械手å�¯ä»¥æœ€å¤šä¼¸é•¿_两个方å�—_çš„è·�离", + "block.create.deployer.tooltip.condition2": "当使用扳手时", + "block.create.deployer.tooltip.behaviour2": "将会å�¯ç”¨æ‹³å¤´æ¨¡å¼�,在拳头模å¼�之下,机械臂将会试图使用手中的物å“�_ç ´å��æ–¹å�—_,或者_攻击实体_.", "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "从连接的_容器_里自动将物品_输出_到外面,如果前方已经有物品,则在物品被移动前不会继续输出. 可以设置_白名单过滤_.可以使用_无线红石信号终端_控制.", - "block.create.linked_extractor.tooltip.condition1": "当无线红石信号激活时", - "block.create.linked_extractor.tooltip.behaviour1": "_暂停_输出物品", - "block.create.linked_extractor.tooltip.control1": "右键过滤框时", - "block.create.linked_extractor.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", - "block.create.linked_extractor.tooltip.control2": "当右键提取器侧面的频道框时", - "block.create.linked_extractor.tooltip.action2": "手持任意物品为其设置_频道_,将接收_无线红石终端_相应频道,可以用两个物品来组合标记频道.", + "block.create.linked_extractor.tooltip.summary": "从连接的_容器_里自动将物å“�_输出_到外é�¢,如果å‰�方已ç»�有物å“�,则在物å“�被移动å‰�ä¸�会继续输出. å�¯ä»¥è®¾ç½®_白å��å�•è¿‡æ»¤_.å�¯ä»¥ä½¿ç”¨_无线红石信å�·ç»ˆç«¯_控制.", + "block.create.linked_extractor.tooltip.condition1": "当无线红石信å�·æ¿€æ´»æ—¶", + "block.create.linked_extractor.tooltip.behaviour1": "_æš‚å�œ_输出物å“�", + "block.create.linked_extractor.tooltip.control1": "å�³é”®è¿‡æ»¤æ¡†æ—¶", + "block.create.linked_extractor.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", + "block.create.linked_extractor.tooltip.control2": "当å�³é”®æ��å�–器侧é�¢çš„频é�“框时", + "block.create.linked_extractor.tooltip.action2": "手æŒ�ä»»æ„�物å“�为其设置_频é�“_,将接收_无线红石终端_相应频é�“,å�¯ä»¥ç”¨ä¸¤ä¸ªç‰©å“�æ�¥ç»„å�ˆæ ‡è®°é¢‘é�“.", "block.create.linked_transposer.tooltip": "LINKED TRANSPOSER", - "block.create.linked_transposer.tooltip.summary": "将过滤框_白名单_中的物品_传输_到指定的容器.能够使用_无线红石信号终端_控制", - "block.create.linked_transposer.tooltip.condition1": "当无线红石信号触发时", - "block.create.linked_transposer.tooltip.behaviour1": "暂停传输", - "block.create.linked_transposer.tooltip.control1": "当右键过滤框时", - "block.create.linked_transposer.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", - "block.create.linked_transposer.tooltip.control2": "当右键传输器侧面的频道框时", - "block.create.linked_transposer.tooltip.action2": "手持任意物品为其设置_频道_,将接收_无线红石终端_相应频道,可以用两个物品来组合标记频道.", + "block.create.linked_transposer.tooltip.summary": "将过滤框_白å��å�•_中的物å“�_传输_到指定的容器.能够使用_无线红石信å�·ç»ˆç«¯_控制", + "block.create.linked_transposer.tooltip.condition1": "当无线红石信å�·è§¦å�‘æ—¶", + "block.create.linked_transposer.tooltip.behaviour1": "æš‚å�œä¼ è¾“", + "block.create.linked_transposer.tooltip.control1": "当å�³é”®è¿‡æ»¤æ¡†æ—¶", + "block.create.linked_transposer.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", + "block.create.linked_transposer.tooltip.control2": "当å�³é”®ä¼ è¾“器侧é�¢çš„频é�“框时", + "block.create.linked_transposer.tooltip.action2": "手æŒ�ä»»æ„�物å“�为其设置_频é�“_,将接收_无线红石终端_相应频é�“,å�¯ä»¥ç”¨ä¸¤ä¸ªç‰©å“�æ�¥ç»„å�ˆæ ‡è®°é¢‘é�“.", "block.create.funnel.tooltip": "FUNNEL", - "block.create.funnel.tooltip.summary": "接收传送带上的物品到_连接的容器_,必须放置在_正对_传送带的_方向_及_高度_.", - "block.create.funnel.tooltip.condition1": "提取传送带物品", - "block.create.funnel.tooltip.behaviour1": "位于黄铜机壳加固的传送带_边上_或者_末端_时,传送带漏斗可以将物品从传送带上_拿出_. 传动带漏斗阻塞时_不会阻塞_传送带.", + "block.create.funnel.tooltip.summary": "接收传é€�带上的物å“�到_连接的容器_,必须放置在_正对_ä¼ é€�带的_æ–¹å�‘_å�Š_高度_.", + "block.create.funnel.tooltip.condition1": "æ��å�–ä¼ é€�带物å“�", + "block.create.funnel.tooltip.behaviour1": "ä½�于黄铜机壳加固的传é€�带_边上_或者_末端_æ—¶,ä¼ é€�带æ¼�æ–—å�¯ä»¥å°†ç‰©å“�从传é€�带上_拿出_. 传动带æ¼�斗阻塞时_ä¸�会阻塞_ä¼ é€�带.", "block.create.belt_tunnel.tooltip": "BELT TUNNEL", - "block.create.belt_tunnel.tooltip.summary": "这是一种美观的方块,能够让_传送带_穿过墙壁时更美观, 但是传送带必须被黄铜机壳包装才能在上方放置此方块. 如果启动了_同步模式_,且旁边有_传送带隧道_时, 将会等待其他所有传送带隧道的物品_一起通过_. [Ctrl]", - "block.create.belt_tunnel.tooltip.control1": "当使用扳手右键前面时", - "block.create.belt_tunnel.tooltip.action1": "启动_同步模式_, 同步模式下,只有临近的_所有_同步模式的传送带隧道都有物品时才会_一齐通过_", - "block.create.belt_tunnel.tooltip.control2": "当使用扳手右键侧面时", - "block.create.belt_tunnel.tooltip.action2": "如果传送带隧道有_小窗口_,调整其窗口内的_遮帘高度_", + "block.create.belt_tunnel.tooltip.summary": "这是一ç§�美观的方å�—,能够让_ä¼ é€�带_穿过墙å£�时更美观, 但是传é€�带必须被黄铜机壳包装æ‰�能在上方放置此方å�—. 如果å�¯åŠ¨äº†_å�Œæ­¥æ¨¡å¼�_,且æ—�边有_ä¼ é€�带隧é�“_æ—¶, 将会等待其他所有传é€�带隧é�“的物å“�_一起通过_. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "当使用扳手å�³é”®å‰�é�¢æ—¶", + "block.create.belt_tunnel.tooltip.action1": "å�¯åŠ¨_å�Œæ­¥æ¨¡å¼�_, å�Œæ­¥æ¨¡å¼�下,å�ªæœ‰ä¸´è¿‘çš„_所有_å�Œæ­¥æ¨¡å¼�çš„ä¼ é€�带隧é�“都有物å“�æ—¶æ‰�会_一é½�通过_", + "block.create.belt_tunnel.tooltip.control2": "当使用扳手å�³é”®ä¾§é�¢æ—¶", + "block.create.belt_tunnel.tooltip.action2": "如果传é€�带隧é�“有_å°�窗å�£_,调整其窗å�£å†…çš„_é�®å¸˜é«˜åº¦_", "block.create.brass_casing.tooltip": "BRASS CASING", - "block.create.brass_casing.tooltip.summary": "一种坚固的机壳,有多种用处.", - "block.create.brass_casing.tooltip.condition1": "当被使用在传送带上时", - "block.create.brass_casing.tooltip.behaviour1": "当传送带上装配有黄铜机壳时,可以在传送带上安装_传送带隧道_、_提取器_、_传输器_、_传送带漏斗_等物品", + "block.create.brass_casing.tooltip.summary": "一ç§�å�šå›ºçš„机壳,有多ç§�用处.", + "block.create.brass_casing.tooltip.condition1": "当被使用在传é€�带上时", + "block.create.brass_casing.tooltip.behaviour1": "当传é€�带上装é…�有黄铜机壳时,å�¯ä»¥åœ¨ä¼ é€�带上安装_ä¼ é€�带隧é�“_ã€�_æ��å�–器_ã€�_传输器_ã€�_ä¼ é€�带æ¼�æ–—_等物å“�", "block.create.belt_observer.tooltip": "BELT OBSERVER", - "block.create.belt_observer.tooltip.summary": "检测_传送带_上经过侦测器的物品、实体. 使用_扳手_将可以修改它的模式. 非物品实体总会以观测模式经行侦测. 可进行物品标记", - "block.create.belt_observer.tooltip.condition1": "观测模式", - "block.create.belt_observer.tooltip.behaviour1": "当观测到传送带上有_匹配的物品_或者实体时,将会提供_红石信号_", - "block.create.belt_observer.tooltip.condition2": "脉冲模式", - "block.create.belt_observer.tooltip.behaviour2": "当侦测器中心线_匹配_到物品时,将会发出_红石脉冲_", - "block.create.belt_observer.tooltip.condition3": "转移模式", - "block.create.belt_observer.tooltip.behaviour3": "将_匹配的物品_转移至侦测器前方的传送带. 如果目标位置被堵塞,物品将会_停下_等待转移.", - "block.create.belt_observer.tooltip.condition4": "均分模式", - "block.create.belt_observer.tooltip.behaviour4": "将匹配的物品_分成两部分_,一半的物品被传送到前方的传送带.", + "block.create.belt_observer.tooltip.summary": "检测_ä¼ é€�带_上ç»�过侦测器的物å“�ã€�实体. 使用_扳手_å°†å�¯ä»¥ä¿®æ”¹å®ƒçš„模å¼�. é�žç‰©å“�实体总会以观测模å¼�ç»�行侦测. å�¯è¿›è¡Œç‰©å“�标记", + "block.create.belt_observer.tooltip.condition1": "观测模å¼�", + "block.create.belt_observer.tooltip.behaviour1": "当观测到传é€�带上有_匹é…�的物å“�_或者实体时,将会æ��ä¾›_红石信å�·_", + "block.create.belt_observer.tooltip.condition2": "脉冲模å¼�", + "block.create.belt_observer.tooltip.behaviour2": "当侦测器中心线_匹é…�_到物å“�时,将会å�‘出_红石脉冲_", + "block.create.belt_observer.tooltip.condition3": "转移模å¼�", + "block.create.belt_observer.tooltip.behaviour3": "å°†_匹é…�的物å“�_转移至侦测器å‰�方的传é€�带. 如果目标ä½�置被堵塞,物å“�将会_å�œä¸‹_等待转移.", + "block.create.belt_observer.tooltip.condition4": "å�‡åˆ†æ¨¡å¼�", + "block.create.belt_observer.tooltip.behaviour4": "将匹é…�的物å“�_分æˆ�两部分_,一å�Šçš„物å“�被传é€�到å‰�方的传é€�带.", "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "一个简单的电路元件,将通过的红石信号变为1tick.", + "block.create.pulse_repeater.tooltip.summary": "一个简å�•çš„电路元件,将通过的红石信å�·å�˜ä¸º1tick.", "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "高级中继器,最大可设置30分钟延迟", + "block.create.adjustable_repeater.tooltip.summary": "高级中继器,最大å�¯è®¾ç½®30分钟延迟", "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", - "block.create.adjustable_pulse_repeater.tooltip.summary": "一种单次1tick的红石脉冲器,可以调节延时至30min", + "block.create.adjustable_pulse_repeater.tooltip.summary": "一ç§�å�•æ¬¡1tick的红石脉冲器,å�¯ä»¥è°ƒèŠ‚延时至30min", "block.create.analog_lever.tooltip": "ANALOG LEVER", - "block.create.analog_lever.tooltip.summary": "一种可以调节任意信号强度的推杆.", + "block.create.analog_lever.tooltip.summary": "一ç§�å�¯ä»¥è°ƒèŠ‚ä»»æ„�ä¿¡å�·å¼ºåº¦çš„推æ�†.", "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", - "block.create.powered_toggle_latch.tooltip.summary": "一种拉杆,在红石电路中可以用作t触发器.", + "block.create.powered_toggle_latch.tooltip.summary": "一ç§�拉æ�†ï¼Œåœ¨çº¢çŸ³ç”µè·¯ä¸­å�¯ä»¥ç”¨ä½œt触å�‘器.", "block.create.powered_latch.tooltip": "POWERED LATCH", - "block.create.powered_latch.tooltip.summary": "一种拉杆,在红石电路中用作锁存器,从后方输入将会启用这个拉杆,从侧边输入将会重置这个拉杆.", + "block.create.powered_latch.tooltip.summary": "一ç§�拉æ�†,在红石电路中用作é”�存器,从å�Žæ–¹è¾“入将会å�¯ç”¨è¿™ä¸ªæ‹‰æ�†,从侧边输入将会é‡�置这个拉æ�†.", "block.create.speedometer.tooltip": "SPEEDOMETER", - "block.create.speedometer.tooltip.summary": "测量并展示连接网络的旋转速度,支持使用红石比较器", - "block.create.speedometer.tooltip.condition1": "接入动力时", - "block.create.speedometer.tooltip.behaviour1": "将会用颜色展示速度的大小,绿-慢、蓝-中、紫-快.", + "block.create.speedometer.tooltip.summary": "测é‡�并展示连接网络的旋转速度,支æŒ�使用红石比较器", + "block.create.speedometer.tooltip.condition1": "接入动力时", + "block.create.speedometer.tooltip.behaviour1": "将会用颜色展示速度的大å°�,绿-æ…¢ã€�è“�-中ã€�ç´«-å¿«.", "block.create.stressometer.tooltip": "STRESSOMETER", - "block.create.stressometer.tooltip.summary": "测量并展示连接网络的应力值,支持红石比较器", - "block.create.stressometer.tooltip.condition1": "接入动力时", - "block.create.stressometer.tooltip.behaviour1": "将会用颜色展示承受的应力. 如果网络过载则会瘫痪,必须减少机器或者增加动力", + "block.create.stressometer.tooltip.summary": "测é‡�并展示连接网络的应力值,支æŒ�红石比较器", + "block.create.stressometer.tooltip.condition1": "接入动力时", + "block.create.stressometer.tooltip.behaviour1": "将会用颜色展示承å�—的应力. 如果网络过载则会瘫痪,必须å‡�少机器或者增加动力", "tool.create.sand_paper.tooltip": "SAND PAPER", - "tool.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸, 可以用机械臂来实现自动化.", - "tool.create.sand_paper.tooltip.condition1": "当使用时", - "tool.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物品", + "tool.create.sand_paper.tooltip.summary": "用æ�¥_打磨_物å“�的砂纸, å�¯ä»¥ç”¨æœºæ¢°è‡‚æ�¥å®žçŽ°è‡ªåŠ¨åŒ–.", + "tool.create.sand_paper.tooltip.condition1": "当使用时", + "tool.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物å“�", "item.create.super_glue.tooltip": "SUPER GLUE", - "item.create.super_glue.tooltip.summary": "让两个方块互相_粘黏_,他们会一直因此相爱到永远", - "item.create.super_glue.tooltip.condition1": "右键使用时", - "item.create.super_glue.tooltip.behaviour1": "有强力胶的方块的_那一面_会变得有粘性。和此面相邻的方块在被_动力活塞_或者_动力轴承_等方块驱动的时候会被一同带动", - "item.create.super_glue.tooltip.condition2": "在副手上时", - "item.create.super_glue.tooltip.behaviour2": "主手放置的方块会被_直接_黏在所放置的方块上", + "item.create.super_glue.tooltip.summary": "让两个方å�—互相_粘é»�_,他们会一直因此相爱到永远", + "item.create.super_glue.tooltip.condition1": "å�³é”®ä½¿ç”¨æ—¶", + "item.create.super_glue.tooltip.behaviour1": "有强力胶的方å�—çš„_那一é�¢_会å�˜å¾—有粘性。和此é�¢ç›¸é‚»çš„æ–¹å�—在被_动力活塞_或者_动力轴承_等方å�—驱动的时候会被一å�Œå¸¦åŠ¨", + "item.create.super_glue.tooltip.condition2": "在副手上时", + "item.create.super_glue.tooltip.behaviour2": "主手放置的方å�—会被_直接_é»�在所放置的方å�—上", "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料.", + "item.create.refined_radiance.tooltip.summary": "一ç§�用_光辉_锻造的化å�ˆç‰©æ��æ–™.", "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料.", + "item.create.shadow_steel.tooltip.summary": "一ç§�用_虚空_锻造的化å�ˆç‰©æ��æ–™.", "item.create.crafter_slot_cover.tooltip": "SLOT COVER", - "item.create.crafter_slot_cover.tooltip.summary": "用来标记_机械制造机_以不放入物品. 在制造与桶类似的斜向合成表时非常有用.", + "item.create.crafter_slot_cover.tooltip.summary": "用æ�¥æ ‡è®°_机械制造机_以ä¸�放入物å“�. 在制造与桶类似的斜å�‘å�ˆæˆ�表时é�žå¸¸æœ‰ç”¨.", "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "工作进行中!", - "create.tooltip.randomWipDescription0": "别把这玩意给熊孩子", - "create.tooltip.randomWipDescription1": "每一次使用这个物品都会伤害一只无辜的小猫, 所以没有使用就没有伤害。别!用!", - "create.tooltip.randomWipDescription2": "使用后果自负", - "create.tooltip.randomWipDescription3": "(摇手指)这可不是你在找的物品, 走开吧", - "create.tooltip.randomWipDescription4": "自爆模式已启动,10,9,8...", - "create.tooltip.randomWipDescription5": "这玩意真的没用, 我骗你干嘛", - "create.tooltip.randomWipDescription6": "如果你使用这个东西, 那么本作者与它造成的任何后果没有责任.", - "create.tooltip.randomWipDescription7": "这玩意不是给你用的, 换个吧", - "create.tooltip.randomWipDescription8": "试试就逝世", + "create.tooltip.workInProgress": "工作进行中!", + "create.tooltip.randomWipDescription0": "别把这玩æ„�给熊孩å­�", + "create.tooltip.randomWipDescription1": "æ¯�一次使用这个物å“�都会伤害一å�ªæ— è¾œçš„å°�猫, 所以没有使用就没有伤害。别ï¼�用ï¼�", + "create.tooltip.randomWipDescription2": "使用å�Žæžœè‡ªè´Ÿ", + "create.tooltip.randomWipDescription3": "(摇手指)这å�¯ä¸�是你在找的物å“�, èµ°å¼€å�§", + "create.tooltip.randomWipDescription4": "自爆模å¼�å·²å�¯åŠ¨ï¼Œ10,9,8...", + "create.tooltip.randomWipDescription5": "这玩æ„�真的没用, 我骗你干嘛", + "create.tooltip.randomWipDescription6": "如果你使用这个东西, 那么本作者与它造æˆ�的任何å�Žæžœæ²¡æœ‰è´£ä»».", + "create.tooltip.randomWipDescription7": "这玩æ„�ä¸�是给你用的, æ�¢ä¸ªå�§", + "create.tooltip.randomWipDescription8": "试试就é€�世", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/data/forge/tags/items/cobblestone.json b/src/generated/resources/data/forge/tags/items/cobblestone.json new file mode 100644 index 000000000..4a5c2c1fb --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/cobblestone.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "create:granite_cobblestone", + "create:diorite_cobblestone", + "create:andesite_cobblestone", + "create:limestone_cobblestone", + "create:weathered_limestone_cobblestone", + "create:dolomite_cobblestone", + "create:gabbro_cobblestone", + "create:scoria_cobblestone", + "create:dark_scoria_cobblestone" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index e5876b3dc..e10808452 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -1,8 +1,5 @@ package com.simibubi.create; -import static com.simibubi.create.AllTags.NameSpace.FORGE; -import static com.simibubi.create.AllTags.NameSpace.MOD; - import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.utility.Lang; import com.tterrag.registrate.builders.BlockBuilder; @@ -21,6 +18,8 @@ import net.minecraft.tags.Tag; import net.minecraft.tags.TagCollection; import net.minecraft.util.ResourceLocation; +import static com.simibubi.create.AllTags.NameSpace.*; + public class AllTags { private static final CreateRegistrate REGISTRATE = Create.registrate() .itemGroup(() -> Create.baseCreativeTab); @@ -61,7 +60,7 @@ public class AllTags { } public static enum AllItemTags { - CRUSHED_ORES(MOD), CREATE_INGOTS(MOD), BEACON_PAYMENT(FORGE), INGOTS(FORGE), NUGGETS(FORGE), PLATES(FORGE), + CRUSHED_ORES(MOD), CREATE_INGOTS(MOD), BEACON_PAYMENT(FORGE), INGOTS(FORGE), NUGGETS(FORGE), PLATES(FORGE), COBBLESTONE(FORGE) ; diff --git a/src/main/java/com/simibubi/create/content/palettes/PalettesVariantEntry.java b/src/main/java/com/simibubi/create/content/palettes/PalettesVariantEntry.java index dfe9b82b6..794016d13 100644 --- a/src/main/java/com/simibubi/create/content/palettes/PalettesVariantEntry.java +++ b/src/main/java/com/simibubi/create/content/palettes/PalettesVariantEntry.java @@ -4,6 +4,7 @@ import static com.simibubi.create.foundation.data.CreateRegistrate.connectedText import com.google.common.collect.ImmutableList; import com.simibubi.create.AllColorHandlers; +import com.simibubi.create.AllTags; import com.simibubi.create.Create; import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.utility.Lang; @@ -38,13 +39,16 @@ public class PalettesVariantEntry { if (pattern.isTranslucent()) builder.addLayer(() -> RenderType::getTranslucent); + if (pattern == PaletteBlockPatterns.COBBLESTONE) + builder.item().tag(AllTags.AllItemTags.COBBLESTONE.tag); if (pattern.hasFoliage()) builder.onRegister(CreateRegistrate.blockColors(() -> AllColorHandlers::getGrassyBlock)); pattern.createCTBehaviour(variant) .ifPresent(b -> builder.onRegister(connectedTextures(b))); - + builder.recipe((c, p) -> { - p.stonecutting(DataIngredient.items(variant.getBaseBlock().get()), c::get); + p.stonecutting(DataIngredient.items(variant.getBaseBlock() + .get()), c::get); pattern.addRecipes(variant, c, p); }); diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json new file mode 100644 index 000000000..4c4da1935 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "atmospheric:arid_sand" + } + ], + "results": [ + { + "item": "minecraft:clay_ball", + "count": 1, + "chance": 0.25 + }, + { + "item": "minecraft:quartz", + "count": 1, + "chance": 0.15 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json new file mode 100644 index 000000000..b8b10cb6f --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json @@ -0,0 +1,26 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "atmospheric" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "atmospheric:red_arid_sand" + } + ], + "results": [ + { + "item": "minecraft:gold_nugget", + "count": 4, + "chance": 0.125 + }, + { + "item": "atmospheric:aloe_kernels", + "count": 1, + "chance": 0.05 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json b/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json new file mode 100644 index 000000000..55c8871ab --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "autumnity" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:maple_log" + } + ], + "results": [ + { + "item": "autumnity:stripped_maple_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json b/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json new file mode 100644 index 000000000..18a07715c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json @@ -0,0 +1,21 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "autumnity" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "autumnity:stripped_maple_log" + } + ], + "results": [ + { + "item": "autumnity:maple_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/blue_hydrangea.json b/src/main/resources/data/create/recipes/compat/bop/milling/blue_hydrangea.json similarity index 94% rename from src/main/resources/data/create/recipes/compat/bop/crushing/blue_hydrangea.json rename to src/main/resources/data/create/recipes/compat/bop/milling/blue_hydrangea.json index 9f05f6e63..dc8a739d0 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/blue_hydrangea.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/blue_hydrangea.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/burning_blossom.json b/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json similarity index 93% rename from src/main/resources/data/create/recipes/compat/bop/crushing/burning_blossom.json rename to src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json index 0b51a06de..ca7e76467 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/burning_blossom.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/glowflower.json b/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json similarity index 93% rename from src/main/resources/data/create/recipes/compat/bop/crushing/glowflower.json rename to src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json index fbf9d8627..18bc7c8fc 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/glowflower.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/goldenrod.json b/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json similarity index 94% rename from src/main/resources/data/create/recipes/compat/bop/crushing/goldenrod.json rename to src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json index 8897ea8cb..0015eb4b1 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/goldenrod.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/lavender.json b/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json similarity index 93% rename from src/main/resources/data/create/recipes/compat/bop/crushing/lavender.json rename to src/main/resources/data/create/recipes/compat/bop/milling/lavender.json index c0cd7c2ef..ca78ef140 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/lavender.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/orange_cosmos.json b/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json similarity index 93% rename from src/main/resources/data/create/recipes/compat/bop/crushing/orange_cosmos.json rename to src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json index d4b691325..ef2dad2eb 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/orange_cosmos.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/pink_daffodil.json b/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json similarity index 94% rename from src/main/resources/data/create/recipes/compat/bop/crushing/pink_daffodil.json rename to src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json index e3f68edfd..19afb0324 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/pink_daffodil.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/pink_hibiscus.json b/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json similarity index 94% rename from src/main/resources/data/create/recipes/compat/bop/crushing/pink_hibiscus.json rename to src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json index 1624966ad..b9257f8f4 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/pink_hibiscus.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/rose.json b/src/main/resources/data/create/recipes/compat/bop/milling/rose.json similarity index 92% rename from src/main/resources/data/create/recipes/compat/bop/crushing/rose.json rename to src/main/resources/data/create/recipes/compat/bop/milling/rose.json index 8815d0f40..fc91888e2 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/rose.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/rose.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/violet.json b/src/main/resources/data/create/recipes/compat/bop/milling/violet.json similarity index 91% rename from src/main/resources/data/create/recipes/compat/bop/crushing/violet.json rename to src/main/resources/data/create/recipes/compat/bop/milling/violet.json index 4156f63e4..2d7d0f7a1 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/violet.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/violet.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/wildflower.json b/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json similarity index 93% rename from src/main/resources/data/create/recipes/compat/bop/crushing/wildflower.json rename to src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json index 77c634155..41c84b806 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/wildflower.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { diff --git a/src/main/resources/data/create/recipes/compat/bop/crushing/wilted_lily.json b/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json similarity index 91% rename from src/main/resources/data/create/recipes/compat/bop/crushing/wilted_lily.json rename to src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json index 1b8ed361b..ed14ddc1a 100644 --- a/src/main/resources/data/create/recipes/compat/bop/crushing/wilted_lily.json +++ b/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json @@ -5,7 +5,7 @@ "modid": "biomesoplenty" } ], - "type": "create:crushing", + "type": "create:milling", "group": "minecraft:misc", "ingredients": [ { From 91b606eb462caf5fe7d452aba3a02b627f1aff7c Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Mon, 6 Jul 2020 12:18:51 +0200 Subject: [PATCH 32/47] sawing support for swamp- and endergetic expansion --- .../compat/endergetic/cutting/poise_stem.json | 21 +++++++++++++++++++ .../cutting/poise_stem_stripped.json | 21 +++++++++++++++++++ .../cutting/stripped_willow_log.json | 21 +++++++++++++++++++ .../swampexpansion/cutting/willow_log.json | 21 +++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json create mode 100644 src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem_stripped.json create mode 100644 src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json create mode 100644 src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json diff --git a/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json b/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json new file mode 100644 index 000000000..f35e9a56c --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "endergetic" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "endergetic:poise_stem" + } + ], + "results": [ + { + "item": "endergetic:poise_stem_stripped", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem_stripped.json b/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem_stripped.json new file mode 100644 index 000000000..cf2c86efb --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem_stripped.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "endergetic" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "endergetic:poise_stem_stripped" + } + ], + "results": [ + { + "item": "endergetic:poise_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json b/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json new file mode 100644 index 000000000..943443551 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "swampexpansion" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "swampexpansion:stripped_willow_log" + } + ], + "results": [ + { + "item": "swampexpansion:willow_planks", + "count": 5 + } + ], + "processingTime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json b/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json new file mode 100644 index 000000000..5c8b56b8f --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json @@ -0,0 +1,21 @@ +{ +"conditions": [ + { + "type": "forge:mod_loaded", + "modid": "swampexpansion" + } + ], + "type": "create:cutting", + "ingredients": [ + { + "item": "swampexpansion:willow_log" + } + ], + "results": [ + { + "item": "swampexpansion:stripped_willow_log", + "count": 1 + } + ], + "processingTime": 50 +} \ No newline at end of file From a0b4b5fa93a56b7e6a2e313abb6b9fc5f1c84045 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Mon, 6 Jul 2020 12:24:03 +0200 Subject: [PATCH 33/47] Fix AllTags namespace import --- src/main/java/com/simibubi/create/AllTags.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index e10808452..360e500ca 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -1,5 +1,8 @@ package com.simibubi.create; +import static com.simibubi.create.AllTags.NameSpace.FORGE; +import static com.simibubi.create.AllTags.NameSpace.MOD; + import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.utility.Lang; import com.tterrag.registrate.builders.BlockBuilder; @@ -18,7 +21,6 @@ import net.minecraft.tags.Tag; import net.minecraft.tags.TagCollection; import net.minecraft.util.ResourceLocation; -import static com.simibubi.create.AllTags.NameSpace.*; public class AllTags { private static final CreateRegistrate REGISTRATE = Create.registrate() From 1907e69c35d133ba70912ce49069e1d1090c45c9 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 6 Jul 2020 22:09:35 +0200 Subject: [PATCH 34/47] Tilted belts - Mechanical belts can now connect vertical shafts together --- src/generated/resources/.cache/cache | 2 +- .../assets/create/blockstates/belt.json | 136 ++++++++++++++ .../java/com/simibubi/create/AllBlocks.java | 107 +++++------ .../structureMovement/StructureTransform.java | 166 ++++++++++++------ .../contraptions/relays/belt/BeltBlock.java | 19 +- .../relays/belt/BeltGenerator.java | 10 +- .../relays/belt/BeltRenderer.java | 90 ++++++---- .../contraptions/relays/belt/BeltShapes.java | 33 +++- .../belt/item/BeltConnectorHandler.java | 25 ++- .../relays/belt/item/BeltConnectorItem.java | 30 ++-- .../block/realityFunnel/BeltFunnelBlock.java | 2 +- .../models/block/belt/sideways_end.json | 47 +++++ .../models/block/belt/sideways_middle.json | 32 ++++ .../models/block/belt/sideways_start.json | 47 +++++ .../block/belt_casing/sideways_end.json | 5 + .../block/belt_casing/sideways_middle.json | 5 + .../block/belt_casing/sideways_pulley.json | 5 + .../block/belt_casing/sideways_start.json | 5 + 18 files changed, 592 insertions(+), 174 deletions(-) create mode 100644 src/main/resources/assets/create/models/block/belt/sideways_end.json create mode 100644 src/main/resources/assets/create/models/block/belt/sideways_middle.json create mode 100644 src/main/resources/assets/create/models/block/belt/sideways_start.json create mode 100644 src/main/resources/assets/create/models/block/belt_casing/sideways_end.json create mode 100644 src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json create mode 100644 src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json create mode 100644 src/main/resources/assets/create/models/block/belt_casing/sideways_start.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 7a94afd4f..4354f9666 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -16,7 +16,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 82bd82270aff7d51e9239680ef4dd7b5c899ceb0 assets\create\blockstates\andesite_cobblestone_wall.json 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json -96a4fae5883eda130f8ec1a57d34534f6d0793c4 assets\create\blockstates\belt.json +020a68d610b2fe298e5b0cee0dadfe8ac719c08c assets\create\blockstates\belt.json 9bbc9a2dc2428175ae0cadf7537ed6815e3e241d assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json diff --git a/src/generated/resources/assets/create/blockstates/belt.json b/src/generated/resources/assets/create/blockstates/belt.json index d259d6504..456d72bf7 100644 --- a/src/generated/resources/assets/create/blockstates/belt.json +++ b/src/generated/resources/assets/create/blockstates/belt.json @@ -511,6 +511,142 @@ "model": "create:block/belt_casing/vertical_pulley", "x": 90, "y": 270 + }, + "casing=false,facing=north,part=start,slope=sideways": { + "model": "create:block/belt/sideways_end", + "x": 180, + "y": 180 + }, + "casing=true,facing=north,part=start,slope=sideways": { + "model": "create:block/belt_casing/sideways_start", + "x": 180, + "y": 180 + }, + "casing=false,facing=south,part=start,slope=sideways": { + "model": "create:block/belt/sideways_start" + }, + "casing=true,facing=south,part=start,slope=sideways": { + "model": "create:block/belt_casing/sideways_start" + }, + "casing=false,facing=west,part=start,slope=sideways": { + "model": "create:block/belt/sideways_end", + "x": 180, + "y": 90 + }, + "casing=true,facing=west,part=start,slope=sideways": { + "model": "create:block/belt_casing/sideways_start", + "x": 180, + "y": 90 + }, + "casing=false,facing=east,part=start,slope=sideways": { + "model": "create:block/belt/sideways_start", + "y": 270 + }, + "casing=true,facing=east,part=start,slope=sideways": { + "model": "create:block/belt_casing/sideways_start", + "y": 270 + }, + "casing=false,facing=north,part=middle,slope=sideways": { + "model": "create:block/belt/sideways_middle", + "x": 180, + "y": 180 + }, + "casing=true,facing=north,part=middle,slope=sideways": { + "model": "create:block/belt_casing/sideways_middle", + "x": 180, + "y": 180 + }, + "casing=false,facing=south,part=middle,slope=sideways": { + "model": "create:block/belt/sideways_middle" + }, + "casing=true,facing=south,part=middle,slope=sideways": { + "model": "create:block/belt_casing/sideways_middle" + }, + "casing=false,facing=west,part=middle,slope=sideways": { + "model": "create:block/belt/sideways_middle", + "x": 180, + "y": 90 + }, + "casing=true,facing=west,part=middle,slope=sideways": { + "model": "create:block/belt_casing/sideways_middle", + "x": 180, + "y": 90 + }, + "casing=false,facing=east,part=middle,slope=sideways": { + "model": "create:block/belt/sideways_middle", + "y": 270 + }, + "casing=true,facing=east,part=middle,slope=sideways": { + "model": "create:block/belt_casing/sideways_middle", + "y": 270 + }, + "casing=false,facing=north,part=end,slope=sideways": { + "model": "create:block/belt/sideways_start", + "x": 180, + "y": 180 + }, + "casing=true,facing=north,part=end,slope=sideways": { + "model": "create:block/belt_casing/sideways_end", + "x": 180, + "y": 180 + }, + "casing=false,facing=south,part=end,slope=sideways": { + "model": "create:block/belt/sideways_end" + }, + "casing=true,facing=south,part=end,slope=sideways": { + "model": "create:block/belt_casing/sideways_end" + }, + "casing=false,facing=west,part=end,slope=sideways": { + "model": "create:block/belt/sideways_start", + "x": 180, + "y": 90 + }, + "casing=true,facing=west,part=end,slope=sideways": { + "model": "create:block/belt_casing/sideways_end", + "x": 180, + "y": 90 + }, + "casing=false,facing=east,part=end,slope=sideways": { + "model": "create:block/belt/sideways_end", + "y": 270 + }, + "casing=true,facing=east,part=end,slope=sideways": { + "model": "create:block/belt_casing/sideways_end", + "y": 270 + }, + "casing=false,facing=north,part=pulley,slope=sideways": { + "model": "create:block/belt/sideways_middle", + "x": 180, + "y": 180 + }, + "casing=true,facing=north,part=pulley,slope=sideways": { + "model": "create:block/belt_casing/sideways_pulley", + "x": 180, + "y": 180 + }, + "casing=false,facing=south,part=pulley,slope=sideways": { + "model": "create:block/belt/sideways_middle" + }, + "casing=true,facing=south,part=pulley,slope=sideways": { + "model": "create:block/belt_casing/sideways_pulley" + }, + "casing=false,facing=west,part=pulley,slope=sideways": { + "model": "create:block/belt/sideways_middle", + "x": 180, + "y": 90 + }, + "casing=true,facing=west,part=pulley,slope=sideways": { + "model": "create:block/belt_casing/sideways_pulley", + "x": 180, + "y": 90 + }, + "casing=false,facing=east,part=pulley,slope=sideways": { + "model": "create:block/belt/sideways_middle", + "y": 270 + }, + "casing=true,facing=east,part=pulley,slope=sideways": { + "model": "create:block/belt_casing/sideways_pulley", + "y": 270 } } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index b21f000bd..e82933baf 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -387,6 +387,21 @@ public class AllBlocks { .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.standardModel(ctx, prov))) .simpleItem() .register(); + + public static final BlockEntry DEPOT = REGISTRATE.block("depot", DepotBlock::new) + .initialProperties(SharedProperties::stone) + .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .item() + .transform(customItemModel("_", "block")) + .register(); + + public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) + .initialProperties(SharedProperties::softMetal) + .addLayer(() -> RenderType::getCutoutMipped) + .blockstate(new ChuteGenerator()::generate) + .item(ChuteItem::new) + .transform(customItemModel("_", "block")) + .register(); public static final BlockEntry SPEEDOMETER = REGISTRATE.block("speedometer", GaugeBlock::speed) .initialProperties(SharedProperties::wooden) @@ -665,11 +680,40 @@ public class AllBlocks { .transform(customItemModel()) .register(); + // Logistics static { REGISTRATE.startSection(AllSections.LOGISTICS); } + + public static final BlockEntry MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .transform(StressConfigDefaults.setImpact(8.0)) + .item(ArmItem::new) + .transform(customItemModel()) + .register(); + + public static final BlockEntry REALITY_FUNNEL = + REGISTRATE.block("reality_funnel", RealityFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) + .item(FunnelItem::new) + .transform(customItemModel()) + .register(); + + public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new BeltFunnelGenerator()::generate) + .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .register(); + + public static final BlockEntry CHUTE_FUNNEL = REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new ChuteFunnelGenerator()::generate) + .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .register(); public static final BlockEntry REDSTONE_CONTACT = REGISTRATE.block("redstone_contact", RedstoneContactBlock::new) @@ -715,47 +759,6 @@ public class AllBlocks { .transform(BuilderTransformers.crate("creative")) .register(); - public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) - .initialProperties(SharedProperties::softMetal) - .addLayer(() -> RenderType::getCutoutMipped) - .blockstate(new ChuteGenerator()::generate) - .item(ChuteItem::new) - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) - .initialProperties(SharedProperties::softMetal) - .transform(StressConfigDefaults.setImpact(4.0)) - .properties(p -> p.nonOpaque()) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(s -> ConfiguredModel.builder() - .modelFile(AssetLookup.partialBaseModel(c, p)) - .rotationY(s.get(PackagerBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) - .build())) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry REALITY_FUNNEL = - REGISTRATE.block("reality_funnel", RealityFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) - .item(FunnelItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(new BeltFunnelGenerator()::generate) - .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) - .register(); - - public static final BlockEntry CHUTE_FUNNEL = REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(new ChuteFunnelGenerator()::generate) - .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) - .register(); - public static final BlockEntry BELT_OBSERVER = REGISTRATE.block("belt_observer", BeltObserverBlock::new) .initialProperties(SharedProperties::stone) @@ -777,20 +780,18 @@ public class AllBlocks { .item() .transform(customItemModel()) .register(); - - public static final BlockEntry MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new) + + public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .transform(StressConfigDefaults.setImpact(8.0)) - .item(ArmItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry DEPOT = REGISTRATE.block("depot", DepotBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .transform(StressConfigDefaults.setImpact(4.0)) + .properties(p -> p.nonOpaque()) + .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .forAllStates(s -> ConfiguredModel.builder() + .modelFile(AssetLookup.partialBaseModel(c, p)) + .rotationY(s.get(PackagerBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) + .build())) .item() - .transform(customItemModel("_", "block")) + .transform(customItemModel()) .register(); public static final BlockEntry EXTRACTOR = REGISTRATE.block("extractor", ExtractorBlock::new) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java index 2f8e8311f..2a2c2cd38 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java @@ -89,7 +89,8 @@ public class StructureTransform { if (state.get(BlockStateProperties.BELL_ATTACHMENT) == BellAttachment.DOUBLE_WALL) { state = state.with(BlockStateProperties.BELL_ATTACHMENT, BellAttachment.SINGLE_WALL); } - return state.with(HorizontalFaceBlock.HORIZONTAL_FACING, rotation.rotate(state.get(HorizontalFaceBlock.HORIZONTAL_FACING))); + return state.with(HorizontalFaceBlock.HORIZONTAL_FACING, + rotation.rotate(state.get(HorizontalFaceBlock.HORIZONTAL_FACING))); } return state.rotate(rotation); } @@ -111,12 +112,12 @@ public class StructureTransform { boolean b = state.get(FACE) == AttachFace.CEILING; state = state.with(HORIZONTAL_FACING, b ? forcedAxis : forcedAxis.getOpposite()); - + if (stateFace != AttachFace.WALL) { state = state.with(FACE, AttachFace.WALL); continue; } - + if (stateFacing.getAxisDirection() == AxisDirection.POSITIVE) { state = state.with(FACE, AttachFace.FLOOR); continue; @@ -127,62 +128,14 @@ public class StructureTransform { return state; } + boolean halfTurn = rotation == Rotation.CLOCKWISE_180; if (block instanceof StairsBlock) { - if (state.get(StairsBlock.FACING).getAxis() != rotationAxis) { - for (int i = 0; i < rotation.ordinal(); i++) { - Direction direction = state.get(StairsBlock.FACING); - Half half = state.get(StairsBlock.HALF); - if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ half == Half.BOTTOM - ^ direction.getAxis() == Axis.Z) - state = state.cycle(StairsBlock.HALF); - else - state = state.with(StairsBlock.FACING, direction.getOpposite()); - } - } else { - if (rotation == Rotation.CLOCKWISE_180) { - state = state.cycle(StairsBlock.HALF); - } - } + state = transformStairs(state, halfTurn); return state; } if (AllBlocks.BELT.has(state)) { - if (state.get(BeltBlock.HORIZONTAL_FACING).getAxis() != rotationAxis) { - for (int i = 0; i < rotation.ordinal(); i++) { - Slope slope = state.get(BeltBlock.SLOPE); - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - - // Rotate diagonal - if (slope != Slope.HORIZONTAL && slope != Slope.VERTICAL) { - if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ slope == Slope.DOWNWARD - ^ direction.getAxis() == Axis.Z) { - state = state.with(BeltBlock.SLOPE, slope == Slope.UPWARD ? Slope.DOWNWARD : Slope.UPWARD); - } else { - state = state.with(BeltBlock.HORIZONTAL_FACING, direction.getOpposite()); - } - - // Rotate horizontal/vertical - } else { - if (slope == Slope.HORIZONTAL ^ direction.getAxis() == Axis.Z) { - state = state.with(BeltBlock.HORIZONTAL_FACING, direction.getOpposite()); - } - state = - state.with(BeltBlock.SLOPE, slope == Slope.HORIZONTAL ? Slope.VERTICAL : Slope.HORIZONTAL); - } - } - } else { - if (rotation == Rotation.CLOCKWISE_180) { - Slope slope = state.get(BeltBlock.SLOPE); - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - if (slope == Slope.UPWARD || slope == Slope.DOWNWARD) { - state = state - .with(BeltBlock.SLOPE, slope == Slope.UPWARD ? Slope.DOWNWARD - : slope == Slope.DOWNWARD ? Slope.UPWARD : slope); - } else if (slope == Slope.VERTICAL) { - state = state.with(BeltBlock.HORIZONTAL_FACING, direction.getOpposite()); - } - } - } + state = transformBelt(state, halfTurn); return state; } @@ -197,7 +150,7 @@ public class StructureTransform { } else if (state.has(AXIS)) { state = state.with(AXIS, transformAxis(state.get(AXIS))); - } else if (rotation == Rotation.CLOCKWISE_180) { + } else if (halfTurn) { if (state.has(FACING)) { Direction stateFacing = state.get(FACING); @@ -213,14 +166,111 @@ public class StructureTransform { state = state.rotate(rotation); if (state.has(SlabBlock.TYPE) && state.get(SlabBlock.TYPE) != SlabType.DOUBLE) - state = state - .with(SlabBlock.TYPE, - state.get(SlabBlock.TYPE) == SlabType.BOTTOM ? SlabType.TOP : SlabType.BOTTOM); + state = state.with(SlabBlock.TYPE, + state.get(SlabBlock.TYPE) == SlabType.BOTTOM ? SlabType.TOP : SlabType.BOTTOM); } return state; } + protected BlockState transformStairs(BlockState state, boolean halfTurn) { + if (state.get(StairsBlock.FACING) + .getAxis() != rotationAxis) { + for (int i = 0; i < rotation.ordinal(); i++) { + Direction direction = state.get(StairsBlock.FACING); + Half half = state.get(StairsBlock.HALF); + if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ half == Half.BOTTOM + ^ direction.getAxis() == Axis.Z) + state = state.cycle(StairsBlock.HALF); + else + state = state.with(StairsBlock.FACING, direction.getOpposite()); + } + } else { + if (halfTurn) { + state = state.cycle(StairsBlock.HALF); + } + } + return state; + } + + protected BlockState transformBelt(BlockState state, boolean halfTurn) { + Direction initialDirection = state.get(BeltBlock.HORIZONTAL_FACING); + boolean diagonal = state.get(BeltBlock.SLOPE) == Slope.DOWNWARD || state.get(BeltBlock.SLOPE) == Slope.UPWARD; + + if (!diagonal) { + for (int i = 0; i < rotation.ordinal(); i++) { + Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); + Slope slope = state.get(BeltBlock.SLOPE); + boolean vertical = slope == Slope.VERTICAL; + boolean horizontal = slope == Slope.HORIZONTAL; + boolean sideways = slope == Slope.SIDEWAYS; + + Direction newDirection = direction.getOpposite(); + Slope newSlope = Slope.VERTICAL; + + if (vertical) { + if (direction.getAxis() == rotationAxis) { + newDirection = direction.rotateYCCW(); + newSlope = Slope.SIDEWAYS; + } else { + newSlope = Slope.HORIZONTAL; + newDirection = direction; + if (direction.getAxis() == Axis.Z) + newDirection = direction.getOpposite(); + } + } + + if (sideways) { + newDirection = direction; + if (direction.getAxis() == rotationAxis) + newSlope = Slope.HORIZONTAL; + else + newDirection = direction.rotateYCCW(); + } + + if (horizontal) { + newDirection = direction; + if (direction.getAxis() == rotationAxis) + newSlope = Slope.SIDEWAYS; + } + + state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); + state = state.with(BeltBlock.SLOPE, newSlope); + } + + } else if (initialDirection.getAxis() != rotationAxis) { + for (int i = 0; i < rotation.ordinal(); i++) { + Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); + Direction newDirection = direction.getOpposite(); + Slope slope = state.get(BeltBlock.SLOPE); + boolean upward = slope == Slope.UPWARD; + boolean downward = slope == Slope.DOWNWARD; + + // Rotate diagonal + if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ downward + ^ direction.getAxis() == Axis.Z) { + state = state.with(BeltBlock.SLOPE, upward ? Slope.DOWNWARD : Slope.UPWARD); + } else { + state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); + } + } + + } else if (halfTurn) { + Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); + Direction newDirection = direction.getOpposite(); + Slope slope = state.get(BeltBlock.SLOPE); + boolean vertical = slope == Slope.VERTICAL; + + if (diagonal) { + state = state.with(BeltBlock.SLOPE, + slope == Slope.UPWARD ? Slope.DOWNWARD : slope == Slope.DOWNWARD ? Slope.UPWARD : slope); + } else if (vertical) { + state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); + } + } + return state; + } + public Axis transformAxis(Axis axisIn) { Direction facing = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axisIn); facing = transformFacing(facing); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index ee4119d39..e37e85ded 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -99,6 +99,8 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { public BeltRenderer(TileEntityRendererDispatcher dispatcher) { super(dispatcher); } - + @Override protected void renderSafe(BeltTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { + int light, int overlay) { BlockState blockState = te.getBlockState(); if (!AllBlocks.BELT.has(blockState)) @@ -59,9 +59,11 @@ public class BeltRenderer extends SafeTileEntityRenderer { // UV shift float speed = te.getSpeed(); if (speed != 0) { - float time = - AnimationTickHolder.getRenderTick() * blockState.get(HORIZONTAL_FACING).getAxisDirection().getOffset(); - if (renderedState.get(BeltBlock.HORIZONTAL_FACING).getAxis() == Axis.X) + float time = AnimationTickHolder.getRenderTick() * blockState.get(HORIZONTAL_FACING) + .getAxisDirection() + .getOffset(); + Direction facing = renderedState.get(BeltBlock.HORIZONTAL_FACING); + if (facing.getAxis() == Axis.X && renderedState.get(BeltBlock.SLOPE) != Slope.SIDEWAYS) speed = -speed; int textureIndex = (int) ((speed * time / 36) % 16); if (textureIndex < 0) @@ -71,30 +73,41 @@ public class BeltRenderer extends SafeTileEntityRenderer { } else { beltBuffer.dontShiftUV(); } - + IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); int packedLightmapCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, te.getPos()); - beltBuffer.light(packedLightmapCoords).renderInto(ms, vb); + beltBuffer.light(packedLightmapCoords) + .renderInto(ms, vb); if (te.hasPulley()) { // TODO 1.15 find a way to cache this model matrix computation MatrixStack modelTransform = new MatrixStack(); - Direction dir = blockState.get(BeltBlock.HORIZONTAL_FACING); - modelTransform.translate(0.5, 0.5, 0.5); - modelTransform.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion((float) (dir.getAxis() == Axis.X ? 0 : Math.PI / 2))); - modelTransform.multiply(Vector3f.POSITIVE_X.getRadialQuaternion((float) (Math.PI / 2))); - modelTransform.translate(-0.5, -0.5, -0.5); - SuperByteBuffer superBuffer = CreateClient.bufferCache.renderDirectionalPartial(AllBlockPartials.BELT_PULLEY, blockState, dir, modelTransform); + Direction dir = blockState.get(BeltBlock.HORIZONTAL_FACING) + .rotateY(); + if (blockState.get(BeltBlock.SLOPE) == Slope.SIDEWAYS) + dir = Direction.UP; + MatrixStacker msr = MatrixStacker.of(modelTransform); + + msr.centre(); + if (dir.getAxis() == Axis.X) + msr.rotateY(90); + if (dir.getAxis() == Axis.Y) + msr.rotateX(90); + msr.rotateX(90); + msr.unCentre(); + + SuperByteBuffer superBuffer = CreateClient.bufferCache + .renderDirectionalPartial(AllBlockPartials.BELT_PULLEY, blockState, dir, modelTransform); KineticTileEntityRenderer.standardKineticRotationTransform(superBuffer, te, light) - .renderInto(ms, vb); + .renderInto(ms, vb); } - + renderItems(te, partialTicks, ms, buffer, light, overlay); } protected void renderItems(BeltTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { + int light, int overlay) { if (!te.isController()) return; if (te.beltLength == 0) @@ -102,16 +115,22 @@ public class BeltRenderer extends SafeTileEntityRenderer { ms.push(); - Vec3i directionVec = te.getBeltFacing().getDirectionVec(); - Vec3d beltStartOffset = new Vec3d(directionVec).scale(-.5).add(.5, 13 / 16f + .125f, .5); + Vec3i directionVec = te.getBeltFacing() + .getDirectionVec(); + Vec3d beltStartOffset = new Vec3d(directionVec).scale(-.5) + .add(.5, 13 / 16f + .125f, .5); ms.translate(beltStartOffset.x, beltStartOffset.y, beltStartOffset.z); - Slope slope = te.getBlockState().get(BeltBlock.SLOPE); + Slope slope = te.getBlockState() + .get(BeltBlock.SLOPE); int verticality = slope == Slope.DOWNWARD ? -1 : slope == Slope.UPWARD ? 1 : 0; - boolean slopeAlongX = te.getBeltFacing().getAxis() == Axis.X; + boolean slopeAlongX = te.getBeltFacing() + .getAxis() == Axis.X; - for (TransportedItemStack transported : te.getInventory().getTransportedItems()) { + for (TransportedItemStack transported : te.getInventory() + .getTransportedItems()) { ms.push(); - MatrixStacker.of(ms).nudge(transported.angle); + MatrixStacker.of(ms) + .nudge(transported.angle); float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); float sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset); float verticalMovement = verticality; @@ -124,25 +143,31 @@ public class BeltRenderer extends SafeTileEntityRenderer { if (offset < .5) verticalMovement = 0; verticalMovement = verticalMovement * (Math.min(offset, te.beltLength - .5f) - .5f); - Vec3d offsetVec = new Vec3d(directionVec).scale(offset).add(0, verticalMovement, 0); + Vec3d offsetVec = new Vec3d(directionVec).scale(offset) + .add(0, verticalMovement, 0); boolean onSlope = slope != Slope.HORIZONTAL && MathHelper.clamp(offset, .5f, te.beltLength - .5f) == offset; - boolean tiltForward = - (slope == Slope.DOWNWARD ^ te.getBeltFacing().getAxisDirection() == AxisDirection.POSITIVE) == (te - .getBeltFacing().getAxis() == Axis.Z); + boolean tiltForward = (slope == Slope.DOWNWARD ^ te.getBeltFacing() + .getAxisDirection() == AxisDirection.POSITIVE) == (te.getBeltFacing() + .getAxis() == Axis.Z); float slopeAngle = onSlope ? tiltForward ? -45 : 45 : 0; ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); - boolean alongX = te.getBeltFacing().rotateY().getAxis() == Axis.X; + boolean alongX = te.getBeltFacing() + .rotateY() + .getAxis() == Axis.X; if (!alongX) sideOffset *= -1; ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - boolean blockItem = itemRenderer.getItemModelWithOverrides(transported.stack, te.getWorld(), null).isGui3d(); + ItemRenderer itemRenderer = Minecraft.getInstance() + .getItemRenderer(); + boolean blockItem = itemRenderer.getItemModelWithOverrides(transported.stack, te.getWorld(), null) + .isGui3d(); if (Minecraft.getInstance().gameSettings.fancyGraphics) { - Vec3d shadowPos = new Vec3d(te.getPos()).add(beltStartOffset.scale(1).add(offsetVec) - .add(alongX ? sideOffset : 0, .39, alongX ? 0 : sideOffset)); + Vec3d shadowPos = new Vec3d(te.getPos()).add(beltStartOffset.scale(1) + .add(offsetVec) + .add(alongX ? sideOffset : 0, .39, alongX ? 0 : sideOffset)); ShadowRenderHelper.renderShadow(ms, buffer, shadowPos, .75f, blockItem ? .2f : .2f); } @@ -181,7 +206,8 @@ public class BeltRenderer extends SafeTileEntityRenderer { } protected BlockState getBeltState(KineticTileEntity te) { - return te.getBlockState().with(BeltBlock.CASING, false); + return te.getBlockState() + .with(BeltBlock.CASING, false); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java index b43c3cc10..61394a2b1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java @@ -73,6 +73,8 @@ public class BeltShapes { private static final VoxelShape SLOPE_DESC_PART = makeSlopePart(false), SLOPE_ASC_PART = makeSlopePart(true), + SIDEWAYS_FULL_PART = makeSidewaysFull(), + SIDEWAYS_END_PART = makeSidewaysEnding(), FLAT_FULL_PART = makeFlatFull(), FLAT_END_PART = makeFlatEnding(); @@ -84,11 +86,19 @@ public class BeltShapes { VERTICAL_FULL = VerticalBeltShaper.make(FLAT_FULL_PART), VERTICAL_END = VerticalBeltShaper.make(compose(FLAT_END_PART, FLAT_FULL_PART)), VERTICAL_START = VerticalBeltShaper.make(compose(FLAT_FULL_PART, FLAT_END_PART)); + //Flat Shapes private static final VoxelShaper FLAT_FULL = VoxelShaper.forHorizontalAxis(FLAT_FULL_PART, Axis.Z), FLAT_END = VoxelShaper.forHorizontal(compose(FLAT_END_PART, FLAT_FULL_PART), Direction.SOUTH), FLAT_START = VoxelShaper.forHorizontal(compose(FLAT_FULL_PART, FLAT_END_PART), Direction.SOUTH); + + //Sideways Shapes + private static final VoxelShaper + SIDE_FULL = VoxelShaper.forHorizontalAxis(SIDEWAYS_FULL_PART, Axis.Z), + SIDE_END = VoxelShaper.forHorizontal(compose(SIDEWAYS_END_PART, SIDEWAYS_FULL_PART), Direction.SOUTH), + SIDE_START = VoxelShaper.forHorizontal(compose(SIDEWAYS_FULL_PART, SIDEWAYS_END_PART), Direction.SOUTH); + //Sloped Shapes private static final VoxelShaper SLOPE_DESC = VoxelShaper.forHorizontal(SLOPE_DESC_PART, Direction.SOUTH), @@ -129,14 +139,25 @@ public class BeltShapes { private static VoxelShape makeFlatEnding(){ return VoxelShapes.or( - makeCuboidShape(1,4,0,15,12,16), - makeCuboidShape(1,3,1,15,13,15) + makeCuboidShape(1,4,0,15,12,16), + makeCuboidShape(1,3,1,15,13,15) ); } private static VoxelShape makeFlatFull(){ return makeCuboidShape(1,3,0,15,13,16); } + + private static VoxelShape makeSidewaysEnding(){ + return VoxelShapes.or( + makeCuboidShape(4,1,0,12,15,16), + makeCuboidShape(3,1,1,13,15,15) + ); + } + + private static VoxelShape makeSidewaysFull(){ + return makeCuboidShape(3,1,0,13,15,16); + } public static VoxelShape getShape(BlockState state) { if (cache.containsKey(state)) @@ -175,6 +196,14 @@ public class BeltShapes { //flat ending return (part == Part.START ? FLAT_START : FLAT_END).get(facing); } + + //sideways part + if (slope == Slope.SIDEWAYS) { + if (part == Part.MIDDLE || part == Part.PULLEY) + return SIDE_FULL.get(axis); + //flat ending + return (part == Part.START ? SIDE_START : SIDE_END).get(facing); + } //slope if (part == Part.MIDDLE || part == Part.PULLEY) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java index f6d0428b9..2c9c15812 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java @@ -50,23 +50,27 @@ public class BeltConnectorHandler { BlockPos first = NBTUtil.readBlockPos(tag.getCompound("FirstPulley")); - if (!world.getBlockState(first).has(BlockStateProperties.AXIS)) + if (!world.getBlockState(first) + .has(BlockStateProperties.AXIS)) continue; - Axis axis = world.getBlockState(first).get(BlockStateProperties.AXIS); + Axis axis = world.getBlockState(first) + .get(BlockStateProperties.AXIS); RayTraceResult rayTrace = Minecraft.getInstance().objectMouseOver; if (rayTrace == null || !(rayTrace instanceof BlockRayTraceResult)) { if (r.nextInt(50) == 0) { world.addParticle(new RedstoneParticleData(.3f, .9f, .5f, 1), - first.getX() + .5f + randomOffset(.25f), first.getY() + .5f + randomOffset(.25f), - first.getZ() + .5f + randomOffset(.25f), 0, 0, 0); + first.getX() + .5f + randomOffset(.25f), first.getY() + .5f + randomOffset(.25f), + first.getZ() + .5f + randomOffset(.25f), 0, 0, 0); } return; } BlockPos selected = ((BlockRayTraceResult) rayTrace).getPos(); - if (world.getBlockState(selected).getMaterial().isReplaceable()) + if (world.getBlockState(selected) + .getMaterial() + .isReplaceable()) return; if (!ShaftBlock.isShaft(world.getBlockState(selected))) selected = selected.offset(((BlockRayTraceResult) rayTrace).getFace()); @@ -79,7 +83,8 @@ public class BeltConnectorHandler { Vec3d start = new Vec3d(first); Vec3d end = new Vec3d(selected); Vec3d actualDiff = end.subtract(start); - end = end.subtract(axis.getCoordinate(actualDiff.x, 0, 0), 0, axis.getCoordinate(0, 0, actualDiff.z)); + end = end.subtract(axis.getCoordinate(actualDiff.x, 0, 0), axis.getCoordinate(0, actualDiff.y, 0), + axis.getCoordinate(0, 0, actualDiff.z)); Vec3d diff = end.subtract(start); double x = Math.abs(diff.x); @@ -96,6 +101,8 @@ public class BeltConnectorHandler { for (int k = -1; k <= 1; k++) { if (axis.getCoordinate(i, j, k) != 0) continue; + if (axis == Axis.Y && i != 0 && k != 0) + continue; if (i == 0 && j == 0 && k == 0) continue; validDiffs.add(new Vec3d(i, j, k)); @@ -110,15 +117,17 @@ public class BeltConnectorHandler { } } step = validDiffs.get(closestIndex); - } + if (axis == Axis.Y && step.x != 0 && step.z != 0) + return; + step = new Vec3d(Math.signum(step.x), Math.signum(step.y), Math.signum(step.z)); for (float f = 0; f < length; f += .0625f) { Vec3d position = start.add(step.scale(f)); if (r.nextInt(10) == 0) { world.addParticle(new RedstoneParticleData(canConnect ? .3f : .9f, canConnect ? .9f : .3f, .5f, 1), - position.x + .5f, position.y + .5f, position.z + .5f, 0, 0, 0); + position.x + .5f, position.y + .5f, position.z + .5f, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java index ee745b7b4..e9aa45bbb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java @@ -3,6 +3,8 @@ package com.simibubi.create.content.contraptions.relays.belt.item; import java.util.LinkedList; import java.util.List; +import javax.annotation.Nonnull; + import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.KineticTileEntity; @@ -31,8 +33,6 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import javax.annotation.Nonnull; - public class BeltConnectorItem extends BlockItem { public BeltConnectorItem(Properties properties) { @@ -75,7 +75,7 @@ public class BeltConnectorItem extends BlockItem { // Remove first if no longer existant or valid if (tag.contains("FirstPulley")) { firstPulley = NBTUtil.readBlockPos(tag.getCompound("FirstPulley")); - if (!validateAxis(world, firstPulley)) { + if (!validateAxis(world, firstPulley) || !firstPulley.withinDistance(pos, maxLength() * 2)) { tag.remove("FirstPulley"); context.getItem() .setTag(tag); @@ -131,9 +131,12 @@ public class BeltConnectorItem extends BlockItem { for (BlockPos pos : beltsToCreate) { BeltBlock.Part part = pos.equals(start) ? Part.START : pos.equals(end) ? Part.END : Part.MIDDLE; - boolean pulley = ShaftBlock.isShaft(world.getBlockState(pos)); + BlockState shaftState = world.getBlockState(pos); + boolean pulley = ShaftBlock.isShaft(shaftState); if (part == Part.MIDDLE && pulley) part = Part.PULLEY; + if (pulley && shaftState.get(ShaftBlock.AXIS) == Axis.Y) + slope = Slope.SIDEWAYS; world.setBlockState(pos, beltBlock.with(BeltBlock.SLOPE, slope) .with(BeltBlock.PART, part) .with(BeltBlock.HORIZONTAL_FACING, facing), 3); @@ -193,11 +196,11 @@ public class BeltConnectorItem extends BlockItem { return false; if (!world.isAreaLoaded(second, 1)) return false; - if (!second.withinDistance(first, AllConfigs.SERVER.kinetics.maxBeltLength.get())) + if (!second.withinDistance(first, maxLength())) return false; BlockPos diff = second.subtract(first); - Axis axis = world.getBlockState(first) + Axis shaftAxis = world.getBlockState(first) .get(BlockStateProperties.AXIS); int x = diff.getX(); @@ -206,13 +209,15 @@ public class BeltConnectorItem extends BlockItem { int sames = ((Math.abs(x) == Math.abs(y)) ? 1 : 0) + ((Math.abs(y) == Math.abs(z)) ? 1 : 0) + ((Math.abs(z) == Math.abs(x)) ? 1 : 0); - if (axis.getCoordinate(x, y, z) != 0) + if (shaftAxis.getCoordinate(x, y, z) != 0) return false; if (sames != 1) return false; - if (axis != world.getBlockState(second) + if (shaftAxis != world.getBlockState(second) .get(BlockStateProperties.AXIS)) return false; + if (shaftAxis == Axis.Y && x != 0 && z != 0) + return false; TileEntity tileEntity = world.getTileEntity(first); TileEntity tileEntity2 = world.getTileEntity(second); @@ -232,7 +237,7 @@ public class BeltConnectorItem extends BlockItem { for (BlockPos currentPos = first.add(step); !currentPos.equals(second) && limit-- > 0; currentPos = currentPos.add(step)) { BlockState blockState = world.getBlockState(currentPos); - if (ShaftBlock.isShaft(blockState) && blockState.get(ShaftBlock.AXIS) == axis) + if (ShaftBlock.isShaft(blockState) && blockState.get(ShaftBlock.AXIS) == shaftAxis) continue; if (!blockState.getMaterial() .isReplaceable()) @@ -243,14 +248,15 @@ public class BeltConnectorItem extends BlockItem { } + protected static Integer maxLength() { + return AllConfigs.SERVER.kinetics.maxBeltLength.get(); + } + public static boolean validateAxis(World world, BlockPos pos) { if (!world.isAreaLoaded(pos, 1)) return false; if (!ShaftBlock.isShaft(world.getBlockState(pos))) return false; - if (world.getBlockState(pos) - .get(BlockStateProperties.AXIS) == Axis.Y) - return false; return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index 7d1b7857d..ca185b137 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -98,7 +98,7 @@ public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { return true; if (!(stateBelow.getBlock() instanceof BeltBlock)) return false; - if (stateBelow.get(BeltBlock.SLOPE) == Slope.VERTICAL) + if (!BeltBlock.canTransport(stateBelow)) return false; if (stateBelow.get(BeltBlock.HORIZONTAL_FACING) .getAxis() != state.get(HORIZONTAL_FACING) diff --git a/src/main/resources/assets/create/models/block/belt/sideways_end.json b/src/main/resources/assets/create/models/block/belt/sideways_end.json new file mode 100644 index 000000000..a447bd8b1 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt/sideways_end.json @@ -0,0 +1,47 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [11, 1, 0], + "to": [13, 15, 15], + "faces": { + "east": {"uv": [1, 0, 15, 15], "rotation": 90, "texture": "#0"}, + "south": {"uv": [1, 3, 15, 5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [1, 0, 15, 15], "rotation": 270, "texture": "#0"}, + "up": {"uv": [0, 0, 2, 15], "texture": "#0"}, + "down": {"uv": [14, 0, 16, 15], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Top", + "from": [3, 1, 0], + "to": [5, 15, 15], + "faces": { + "east": {"uv": [1, 1, 15, 16], "rotation": 270, "texture": "#0"}, + "south": {"uv": [1, 5, 15, 3], "rotation": 270, "texture": "#0"}, + "west": {"uv": [1, 1, 15, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 1, 2, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [14, 1, 16, 16], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [4, 1, 14], + "to": [12, 15, 16], + "faces": { + "north": {"uv": [1, 4, 15, 12], "rotation": 270, "texture": "#0"}, + "east": {"uv": [1, 11, 15, 13], "rotation": 90, "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "rotation": 90, "texture": "#0"}, + "west": {"uv": [1, 3, 15, 5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 4, 2, 12], "rotation": 90, "texture": "#0"}, + "down": {"uv": [14, 4, 16, 12], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/sideways_middle.json b/src/main/resources/assets/create/models/block/belt/sideways_middle.json new file mode 100644 index 000000000..24f7c35e6 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt/sideways_middle.json @@ -0,0 +1,32 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [11, 1, 0], + "to": [13, 15, 16], + "faces": { + "east": {"uv": [1, 0, 15, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [1, 0, 15, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#0"}, + "down": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Top", + "from": [3, 1, 0], + "to": [5, 15, 16], + "faces": { + "east": {"uv": [1, 0, 15, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [1, 0, 15, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [14, 0, 16, 16], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/sideways_start.json b/src/main/resources/assets/create/models/block/belt/sideways_start.json new file mode 100644 index 000000000..250b8ff75 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt/sideways_start.json @@ -0,0 +1,47 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [11, 1, 1], + "to": [13, 15, 16], + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 270, "texture": "#0"}, + "east": {"uv": [1, 1, 15, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [1, 1, 15, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [0, 1, 2, 16], "texture": "#0"}, + "down": {"uv": [14, 1, 16, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Top", + "from": [3, 1, 1], + "to": [5, 15, 16], + "faces": { + "north": {"uv": [1, 3, 15, 5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [1, 1, 15, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [1, 0, 15, 15], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 1, 2, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [14, 1, 16, 16], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [4, 1, 0], + "to": [12, 15, 2], + "faces": { + "north": {"uv": [1, 4, 15, 12], "rotation": 90, "texture": "#0"}, + "east": {"uv": [1, 11, 15, 13], "rotation": 90, "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "rotation": 270, "texture": "#0"}, + "west": {"uv": [1, 3, 15, 5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 4, 2, 12], "rotation": 270, "texture": "#0"}, + "down": {"uv": [14, 4, 16, 12], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json new file mode 100644 index 000000000..d158fadc8 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json @@ -0,0 +1,5 @@ +{ + "_comment": "Vertical belts cannot have casings at the moment", + "textures": {}, + "elements": [] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json new file mode 100644 index 000000000..d158fadc8 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json @@ -0,0 +1,5 @@ +{ + "_comment": "Vertical belts cannot have casings at the moment", + "textures": {}, + "elements": [] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json new file mode 100644 index 000000000..d158fadc8 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json @@ -0,0 +1,5 @@ +{ + "_comment": "Vertical belts cannot have casings at the moment", + "textures": {}, + "elements": [] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json new file mode 100644 index 000000000..d158fadc8 --- /dev/null +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json @@ -0,0 +1,5 @@ +{ + "_comment": "Vertical belts cannot have casings at the moment", + "textures": {}, + "elements": [] +} \ No newline at end of file From 0c6bbcc5ed43d278cf1da457fe0c736699d13372 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Mon, 6 Jul 2020 23:37:44 +0200 Subject: [PATCH 35/47] Brittle and Non-movable block tags - added a block tag non_movable conatining blocks that should not be moved with contraptions - added a block tag for brittle blocks breaking without support - moved obsidian from hardcoded to non_movable block tag - moved flower pots, doors and bells from hardcoded to brittle block tag - registrate block tagging of brittle blocks - made immersive engineering connectors non-movable to avoid reported weird behavior --- src/generated/resources/.cache/cache | 1 + .../data/create/tags/blocks/brittle.json | 17 ++++++++++ .../java/com/simibubi/create/AllBlocks.java | 13 ++++++++ .../java/com/simibubi/create/AllTags.java | 2 +- .../BlockMovementTraits.java | 31 +++---------------- .../data/create/tags/blocks/brittle.json | 11 +++++++ .../data/create/tags/blocks/non_movable.json | 19 ++++++++++++ 7 files changed, 66 insertions(+), 28 deletions(-) create mode 100644 src/generated/resources/data/create/tags/blocks/brittle.json create mode 100644 src/main/resources/data/create/tags/blocks/brittle.json create mode 100644 src/main/resources/data/create/tags/blocks/non_movable.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 1f7fcc917..b995d12f4 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -2444,6 +2444,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data\create\recipes\weathered_limestone 6eceb25fabbb6b389ca35de3b829ad061c9c456a data\create\recipes\weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data\create\recipes\weathered_limestone_pillar_from_weathered_limestone_stonecutting.json 266f08e604d229a9d2b46f7272c0b06ec270bf3d data\create\recipes\zinc_block.json +87024323ea933fa10a4e7802f68ce5b9054021e6 data\create\tags\blocks\brittle.json 081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\create\tags\items\create_ingots.json d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data\create\tags\items\crushed_ores.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\blocks\glass\colorless.json diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json new file mode 100644 index 000000000..b07e222fb --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/brittle.json @@ -0,0 +1,17 @@ +{ + "replace": false, + "values": [ + "create:nozzle", + "create:hand_crank", + "create:rope", + "create:pulley_magnet", + "create:furnace_engine", + "create:redstone_link", + "create:extractor", + "create:vertical_extractor", + "create:linked_extractor", + "create:vertical_linked_extractor", + "create:funnel", + "create:vertical_funnel" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index b21f000bd..b7eba372a 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -8,6 +8,7 @@ import static com.simibubi.create.foundation.data.CreateRegistrate.connectedText import static com.simibubi.create.foundation.data.ModelGen.customItemModel; import static com.simibubi.create.foundation.data.ModelGen.oxidizedItemModel; +import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.content.AllSections; import com.simibubi.create.content.contraptions.base.CasingBlock; import com.simibubi.create.content.contraptions.components.actors.DrillBlock; @@ -301,6 +302,7 @@ public class AllBlocks { public static final BlockEntry NOZZLE = REGISTRATE.block("nozzle", NozzleBlock::new) .initialProperties(SharedProperties::stone) + .tag(AllBlockTags.BRITTLE.tag) .blockstate(BlockStateGen.directionalBlockProvider(true)) .addLayer(() -> RenderType::getCutoutMipped) .item() @@ -318,6 +320,7 @@ public class AllBlocks { .initialProperties(SharedProperties::wooden) .blockstate(BlockStateGen.directionalBlockProvider(true)) .transform(StressConfigDefaults.setCapacity(32.0)) + .tag(AllBlockTags.BRITTLE.tag) .item() .transform(customItemModel()) .register(); @@ -482,6 +485,7 @@ public class AllBlocks { public static final BlockEntry ROPE = REGISTRATE.block("rope", PulleyBlock.RopeBlock::new) .initialProperties(SharedProperties.beltMaterial, MaterialColor.BROWN) + .tag(AllBlockTags.BRITTLE.tag) .properties(p -> p.sound(SoundType.CLOTH)) .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) @@ -490,6 +494,7 @@ public class AllBlocks { public static final BlockEntry PULLEY_MAGNET = REGISTRATE.block("pulley_magnet", PulleyBlock.MagnetBlock::new) .initialProperties(SharedProperties::stone) + .tag(AllBlockTags.BRITTLE.tag) .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) .register(); @@ -650,6 +655,7 @@ public class AllBlocks { public static final BlockEntry FURNACE_ENGINE = REGISTRATE.block("furnace_engine", FurnaceEngineBlock::new) .initialProperties(SharedProperties::softMetal) + .tag(AllBlockTags.BRITTLE.tag) .blockstate(BlockStateGen.horizontalBlockProvider(true)) .transform(StressConfigDefaults.setCapacity(1024.0)) .item() @@ -682,6 +688,7 @@ public class AllBlocks { public static final BlockEntry REDSTONE_LINK = REGISTRATE.block("redstone_link", RedstoneLinkBlock::new) .initialProperties(SharedProperties::wooden) + .tag(AllBlockTags.BRITTLE.tag) .blockstate(new RedstoneLinkGenerator()::generate) .addLayer(() -> RenderType::getCutoutMipped) .item() @@ -795,6 +802,7 @@ public class AllBlocks { public static final BlockEntry EXTRACTOR = REGISTRATE.block("extractor", ExtractorBlock::new) .initialProperties(SharedProperties::softMetal) + .tag(AllBlockTags.BRITTLE.tag) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p, c.getName() + "/horizontal"))) .item() .transform(customItemModel("_", "horizontal")) @@ -803,12 +811,14 @@ public class AllBlocks { public static final BlockEntry VERTICAL_EXTRACTOR = REGISTRATE.block("vertical_extractor", ExtractorBlock.Vertical::new) .initialProperties(SharedProperties::softMetal) + .tag(AllBlockTags.BRITTLE.tag) .blockstate(new VerticalExtractorGenerator(false)::generate) .loot((p, b) -> p.registerDropping(b, EXTRACTOR.get())) .register(); public static final BlockEntry LINKED_EXTRACTOR = REGISTRATE .block("linked_extractor", LinkedExtractorBlock::new) + .tag(AllBlockTags.BRITTLE.tag) .initialProperties(SharedProperties::softMetal) .addLayer(() -> RenderType::getCutoutMipped) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p, "extractor/horizontal_linked"))) @@ -819,6 +829,7 @@ public class AllBlocks { public static final BlockEntry VERTICAL_LINKED_EXTRACTOR = REGISTRATE.block("vertical_linked_extractor", LinkedExtractorBlock.Vertical::new) .initialProperties(SharedProperties::softMetal) + .tag(AllBlockTags.BRITTLE.tag) .blockstate(new VerticalExtractorGenerator(true)::generate) .loot((p, b) -> p.registerDropping(b, LINKED_EXTRACTOR.get())) .addLayer(() -> RenderType::getCutoutMipped) @@ -826,6 +837,7 @@ public class AllBlocks { public static final BlockEntry FUNNEL = REGISTRATE.block("funnel", FunnelBlock::new) .initialProperties(SharedProperties::softMetal) + .tag(AllBlockTags.BRITTLE.tag) .blockstate((c, p) -> p.horizontalBlock(c.get(), state -> p.models() .getExistingFile(p.modLoc("block/funnel/horizontal" + (state.get(FunnelBlock.BELT) ? "_belt" : ""))))) .item() @@ -835,6 +847,7 @@ public class AllBlocks { public static final BlockEntry VERTICAL_FUNNEL = REGISTRATE.block("vertical_funnel", FunnelBlock.Vertical::new) .initialProperties(SharedProperties::softMetal) + .tag(AllBlockTags.BRITTLE.tag) .blockstate(new VerticalFunnelGenerator()::generate) .loot((p, b) -> p.registerDropping(b, FUNNEL.get())) .register(); diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index 360e500ca..72a957c20 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -88,7 +88,7 @@ public class AllTags { } public static enum AllBlockTags { - WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE, + WINDMILL_SAILS, FAN_HEATERS, WINDOWABLE, NON_MOVABLE, BRITTLE ; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java index 0c045e624..9d99d6491 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.content.contraptions.components.actors.AttachedActorBlock; import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; @@ -15,8 +16,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.cha import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock.MagnetBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock.RopeBlock; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; import com.simibubi.create.content.logistics.block.extractor.ExtractorBlock; @@ -29,7 +28,6 @@ import net.minecraft.block.AbstractRailBlock; import net.minecraft.block.BellBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.block.CarpetBlock; import net.minecraft.block.DoorBlock; import net.minecraft.block.FenceGateBlock; @@ -73,7 +71,7 @@ public class BlockMovementTraits { return true; if (blockState.getBlockHardness(world, pos) == -1) return false; - if (block == Blocks.OBSIDIAN) + if (AllBlockTags.NON_MOVABLE.tag.contains(block)) return false; // Move controllers only when they aren't moving @@ -112,22 +110,13 @@ public class BlockMovementTraits { Block block = state.getBlock(); if (state.has(BlockStateProperties.HANGING)) return true; - if (block instanceof HandCrankBlock) - return true; + if (block instanceof LadderBlock) return true; - if (block instanceof ExtractorBlock) - return true; - if (block instanceof FunnelBlock) - return true; if (block instanceof TorchBlock) return true; - if (block instanceof FlowerPotBlock) - return true; if (block instanceof AbstractPressurePlateBlock) return true; - if (block instanceof DoorBlock) - return true; if (block instanceof HorizontalFaceBlock) return true; if (block instanceof AbstractRailBlock) @@ -136,21 +125,9 @@ public class BlockMovementTraits { return true; if (block instanceof RedstoneWireBlock) return true; - if (block instanceof RedstoneLinkBlock) - return true; - if (block instanceof RopeBlock) - return true; - if (block instanceof NozzleBlock) - return true; - if (block instanceof MagnetBlock) - return true; - if (block instanceof EngineBlock) - return true; if (block instanceof CarpetBlock) return true; - if (block instanceof BellBlock) - return true; - return false; + return AllBlockTags.BRITTLE.tag.contains(block); } /** diff --git a/src/main/resources/data/create/tags/blocks/brittle.json b/src/main/resources/data/create/tags/blocks/brittle.json new file mode 100644 index 000000000..4308e5b7c --- /dev/null +++ b/src/main/resources/data/create/tags/blocks/brittle.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "#minecraft:doors", + "minecraft:flower_pot", + "minecraft:bell" + ], + "optional": [ + + ] +} \ No newline at end of file diff --git a/src/main/resources/data/create/tags/blocks/non_movable.json b/src/main/resources/data/create/tags/blocks/non_movable.json new file mode 100644 index 000000000..974dda4c5 --- /dev/null +++ b/src/main/resources/data/create/tags/blocks/non_movable.json @@ -0,0 +1,19 @@ +{ + "replace": false, + "values": [ + "minecraft:obsidian" + ], + "optional": [ + "immersiveengineering:connector_lv", + "immersiveengineering:connector_lv_relay", + "immersiveengineering:connector_mv", + "immersiveengineering:connector_mv_relay", + "immersiveengineering:connector_hv", + "immersiveengineering:connector_hv_relay", + "immersiveengineering:connector_bundled", + "immersiveengineering:connector_structural", + "immersiveengineering:connector_redstone", + "immersiveengineering:connector_probe", + "immersiveengineering:breaker_switch" + ] +} \ No newline at end of file From 0f4d65778ea9ed3a57ef944627b2c0fa9e53e954 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 7 Jul 2020 00:48:53 +0200 Subject: [PATCH 36/47] Belt model polish - Touched up belt models - Fixed bottom/top diagonal belt casing being reversed --- src/generated/resources/.cache/cache | 24 +- .../assets/create/blockstates/belt.json | 32 +- .../assets/create/blockstates/fluid_pipe.json | 132 +- .../create/blockstates/radial_chassis.json | 96 +- .../assets/create/lang/unfinished/de_de.json | 328 +-- .../assets/create/lang/unfinished/fr_fr.json | 986 ++++---- .../assets/create/lang/unfinished/it_it.json | 294 +-- .../assets/create/lang/unfinished/ja_jp.json | 1716 ++++++------- .../assets/create/lang/unfinished/ko_kr.json | 1500 ++++++------ .../assets/create/lang/unfinished/nl_nl.json | 26 +- .../assets/create/lang/unfinished/pt_br.json | 392 +-- .../assets/create/lang/unfinished/ru_ru.json | 794 +++--- .../assets/create/lang/unfinished/zh_cn.json | 2164 ++++++++--------- .../relays/belt/BeltGenerator.java | 2 +- .../models/block/belt/downward_end.json | 195 +- .../models/block/belt/downward_middle.json | 164 +- .../models/block/belt/downward_start.json | 192 +- .../models/block/belt/horizontal_end.json | 34 +- .../models/block/belt/horizontal_middle.json | 78 +- .../models/block/belt/horizontal_start.json | 119 +- .../models/block/belt/sideways_end.json | 34 +- .../models/block/belt/sideways_middle.json | 20 + .../models/block/belt/sideways_start.json | 39 +- .../create/models/block/belt/upward_end.json | 192 +- .../models/block/belt/upward_middle.json | 166 +- .../models/block/belt/upward_start.json | 192 +- .../create/models/block/belt_pulley.json | 123 +- .../assets/create/textures/block/belt.png | Bin 385 -> 232 bytes .../create/textures/block/belt_animated.png | Bin 1127 -> 283 bytes 29 files changed, 5261 insertions(+), 4773 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index a761d28f1..4650a1bad 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -16,7 +16,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 82bd82270aff7d51e9239680ef4dd7b5c899ceb0 assets\create\blockstates\andesite_cobblestone_wall.json 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json -020a68d610b2fe298e5b0cee0dadfe8ac719c08c assets\create\blockstates\belt.json +0051a90014873a4967d74a2be92675ff1826d94a assets\create\blockstates\belt.json 9bbc9a2dc2428175ae0cadf7537ed6815e3e241d assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json @@ -118,7 +118,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets\create\blockstates\fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets\create\blockstates\fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weathered_limestone_bricks_stairs.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets\create\blockstates\fancy_weathered_limestone_bricks_wall.json -3aa8213ea6cd12a6964e3a70900b12d76d794d20 assets\create\blockstates\fluid_pipe.json +4cbd66ed3da77d1caad6ef4e657a86b1b4017a39 assets\create\blockstates\fluid_pipe.json 9d0e78a4d6d0ccac37c06d0f5810a800a04844b2 assets\create\blockstates\fluid_tank.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json @@ -282,7 +282,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -8d7e653bfd9846e684a0d3725595714a19201017 assets\create\blockstates\radial_chassis.json +4439fc83a8c7370ab44b211a3fd48abde20a4728 assets\create\blockstates\radial_chassis.json 5e03eb759050c365f9f452ef0659f19a80e1e2f8 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json @@ -337,15 +337,15 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json b149cd24e07fcadf25331bac859c313373617462 assets\create\lang\en_us.json -a32f6739a9050c392eba2a90695afd5fc709de73 assets\create\lang\unfinished\de_de.json -6bc84e77c189d15383354b5653f8e3bb1c697497 assets\create\lang\unfinished\fr_fr.json -7b35a364e6dc5e2be51e83db256d3e9ddbfdcdbe assets\create\lang\unfinished\it_it.json -065a2f1266fc58e2ede537d8195c330f440b296d assets\create\lang\unfinished\ja_jp.json -efb37168a87c6dbdd0104e16f631ec90b7774c76 assets\create\lang\unfinished\ko_kr.json -32244c57648e19f70f9544e733812673c8074e0b assets\create\lang\unfinished\nl_nl.json -c65fbd24b18682f1bfe8d558e011241edf90818e assets\create\lang\unfinished\pt_br.json -0f26fca1b43e6ff5fac93172f55549c1be20dc3f assets\create\lang\unfinished\ru_ru.json -48efe21287a74b31b85f14bd03fbf2db6acbdee2 assets\create\lang\unfinished\zh_cn.json +feb13f2c71a8ccc5c9a1b3cd58f0e06db6e89825 assets\create\lang\unfinished\de_de.json +e06e04eb9c06679cef7b3b1273c02e83297bf3cb assets\create\lang\unfinished\fr_fr.json +78973e80977ebc94dfadbfc6cd21de91c673f32a assets\create\lang\unfinished\it_it.json +dd821fcf079b96bd636350f9b3c77da13fa8dfc5 assets\create\lang\unfinished\ja_jp.json +92058021567b46150322be87120ca009cf74f808 assets\create\lang\unfinished\ko_kr.json +c076938f726f8ed92ebc8bb27b9df415fb8f06be assets\create\lang\unfinished\nl_nl.json +e4562ef48bd555d84dbe13233e850e0bd0917a90 assets\create\lang\unfinished\pt_br.json +dfacb15608f4b043e06a6ac9441234acbfccf708 assets\create\lang\unfinished\ru_ru.json +a685880eb8e0dd580f74675e66e8470b01415c50 assets\create\lang\unfinished\zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/blockstates/belt.json b/src/generated/resources/assets/create/blockstates/belt.json index 456d72bf7..98e422395 100644 --- a/src/generated/resources/assets/create/blockstates/belt.json +++ b/src/generated/resources/assets/create/blockstates/belt.json @@ -125,13 +125,13 @@ "y": 180 }, "casing=true,facing=north,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_end" + "model": "create:block/belt_casing/diagonal_start" }, "casing=false,facing=south,part=start,slope=upward": { "model": "create:block/belt/upward_start" }, "casing=true,facing=south,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 180 }, "casing=false,facing=west,part=start,slope=upward": { @@ -139,7 +139,7 @@ "y": 90 }, "casing=true,facing=west,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 270 }, "casing=false,facing=east,part=start,slope=upward": { @@ -147,7 +147,7 @@ "y": 270 }, "casing=true,facing=east,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 90 }, "casing=false,facing=north,part=middle,slope=upward": { @@ -185,13 +185,13 @@ "y": 180 }, "casing=true,facing=north,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_start" + "model": "create:block/belt_casing/diagonal_end" }, "casing=false,facing=south,part=end,slope=upward": { "model": "create:block/belt/upward_end" }, "casing=true,facing=south,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 180 }, "casing=false,facing=west,part=end,slope=upward": { @@ -199,7 +199,7 @@ "y": 90 }, "casing=true,facing=west,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 270 }, "casing=false,facing=east,part=end,slope=upward": { @@ -207,7 +207,7 @@ "y": 270 }, "casing=true,facing=east,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 90 }, "casing=false,facing=north,part=pulley,slope=upward": { @@ -245,21 +245,21 @@ "y": 180 }, "casing=true,facing=north,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 180 }, "casing=false,facing=south,part=start,slope=downward": { "model": "create:block/belt/downward_start" }, "casing=true,facing=south,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_start" + "model": "create:block/belt_casing/diagonal_end" }, "casing=false,facing=west,part=start,slope=downward": { "model": "create:block/belt/downward_start", "y": 90 }, "casing=true,facing=west,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 90 }, "casing=false,facing=east,part=start,slope=downward": { @@ -267,7 +267,7 @@ "y": 270 }, "casing=true,facing=east,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 270 }, "casing=false,facing=north,part=middle,slope=downward": { @@ -305,21 +305,21 @@ "y": 180 }, "casing=true,facing=north,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 180 }, "casing=false,facing=south,part=end,slope=downward": { "model": "create:block/belt/downward_end" }, "casing=true,facing=south,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_end" + "model": "create:block/belt_casing/diagonal_start" }, "casing=false,facing=west,part=end,slope=downward": { "model": "create:block/belt/downward_end", "y": 90 }, "casing=true,facing=west,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 90 }, "casing=false,facing=east,part=end,slope=downward": { @@ -327,7 +327,7 @@ "y": 270 }, "casing=true,facing=east,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 270 }, "casing=false,facing=north,part=pulley,slope=downward": { diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index 44255c27a..96f2f6808 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -181,10 +181,10 @@ }, { "when": { - "west": "true", - "east": "false", "north": "false", - "south": "true" + "south": "true", + "west": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lu_y" @@ -192,10 +192,10 @@ }, { "when": { - "west": "false", - "east": "true", "north": "false", - "south": "true" + "south": "true", + "west": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_y" @@ -203,10 +203,10 @@ }, { "when": { - "west": "true", - "east": "false", "north": "true", - "south": "false" + "south": "false", + "west": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_y" @@ -214,10 +214,10 @@ }, { "when": { - "west": "false", - "east": "true", "north": "true", - "south": "false" + "south": "false", + "west": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/rd_y" @@ -225,10 +225,10 @@ }, { "when": { - "west": "false", - "east": "false", "north": "true", - "south": "true" + "south": "true", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -236,10 +236,10 @@ }, { "when": { - "west": "false", - "east": "false", "north": "false", - "south": "true" + "south": "true", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -247,10 +247,10 @@ }, { "when": { - "west": "false", - "east": "false", "north": "true", - "south": "false" + "south": "false", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -258,10 +258,10 @@ }, { "when": { + "north": "false", + "south": "false", "west": "true", - "east": "true", - "north": "false", - "south": "false" + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -269,10 +269,10 @@ }, { "when": { + "north": "false", + "south": "false", "west": "true", - "east": "false", - "north": "false", - "south": "false" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -280,10 +280,10 @@ }, { "when": { - "west": "false", - "east": "true", "north": "false", - "south": "false" + "south": "false", + "west": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -291,10 +291,10 @@ }, { "when": { - "west": "false", - "east": "false", "north": "false", - "south": "false" + "south": "false", + "west": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/none_y" @@ -302,10 +302,10 @@ }, { "when": { - "west": "false", - "east": "true", "up": "true", - "down": "false" + "west": "false", + "down": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_z" @@ -313,10 +313,10 @@ }, { "when": { - "west": "true", - "east": "false", "up": "true", - "down": "false" + "west": "true", + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ru_z" @@ -324,10 +324,10 @@ }, { "when": { - "west": "false", - "east": "true", "up": "false", - "down": "true" + "west": "false", + "down": "true", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/ld_z" @@ -335,10 +335,10 @@ }, { "when": { - "west": "true", - "east": "false", "up": "false", - "down": "true" + "west": "true", + "down": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_z" @@ -346,10 +346,10 @@ }, { "when": { - "west": "false", - "east": "false", "up": "true", - "down": "true" + "west": "false", + "down": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -357,10 +357,10 @@ }, { "when": { - "west": "false", - "east": "false", "up": "true", - "down": "false" + "west": "false", + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -368,10 +368,10 @@ }, { "when": { - "west": "false", - "east": "false", "up": "false", - "down": "true" + "west": "false", + "down": "true", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_z" @@ -379,10 +379,10 @@ }, { "when": { + "up": "false", "west": "true", - "east": "true", - "up": "false", - "down": "false" + "down": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -390,10 +390,10 @@ }, { "when": { + "up": "false", "west": "false", - "east": "true", - "up": "false", - "down": "false" + "down": "false", + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -401,10 +401,10 @@ }, { "when": { + "up": "false", "west": "true", - "east": "false", - "up": "false", - "down": "false" + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_z" @@ -412,10 +412,10 @@ }, { "when": { - "west": "false", - "east": "false", "up": "false", - "down": "false" + "west": "false", + "down": "false", + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/none_z" diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 9d00ea8b1..8bd829ffc 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -29,8 +29,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "x" + "axis": "x", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -39,8 +39,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "y" + "axis": "y", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky" @@ -48,8 +48,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "z" + "axis": "z", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -59,8 +59,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "x" + "axis": "x", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -69,8 +69,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "y" + "axis": "y", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_y" @@ -78,8 +78,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "z" + "axis": "z", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -89,8 +89,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "x" + "axis": "x", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -99,8 +99,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "y" + "axis": "y", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -109,8 +109,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "z" + "axis": "z", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky", @@ -119,8 +119,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "x" + "axis": "x", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -129,8 +129,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "y" + "axis": "y", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -139,8 +139,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "z" + "axis": "z", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_z", @@ -149,8 +149,8 @@ }, { "when": { - "sticky_north": "true", - "axis": "x" + "axis": "x", + "sticky_north": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky" @@ -158,8 +158,8 @@ }, { "when": { - "sticky_north": "true", - "axis": "y" + "axis": "y", + "sticky_north": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -168,8 +168,8 @@ }, { "when": { - "sticky_north": "true", - "axis": "z" + "axis": "z", + "sticky_north": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -178,8 +178,8 @@ }, { "when": { - "sticky_north": "false", - "axis": "x" + "axis": "x", + "sticky_north": "false" }, "apply": { "model": "create:block/radial_chassis_side_x" @@ -187,8 +187,8 @@ }, { "when": { - "sticky_north": "false", - "axis": "y" + "axis": "y", + "sticky_north": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -197,8 +197,8 @@ }, { "when": { - "sticky_north": "false", - "axis": "z" + "axis": "z", + "sticky_north": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -207,8 +207,8 @@ }, { "when": { - "sticky_east": "true", - "axis": "x" + "axis": "x", + "sticky_east": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -217,8 +217,8 @@ }, { "when": { - "sticky_east": "true", - "axis": "y" + "axis": "y", + "sticky_east": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -227,8 +227,8 @@ }, { "when": { - "sticky_east": "true", - "axis": "z" + "axis": "z", + "sticky_east": "true" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky" @@ -236,8 +236,8 @@ }, { "when": { - "sticky_east": "false", - "axis": "x" + "axis": "x", + "sticky_east": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -246,8 +246,8 @@ }, { "when": { - "sticky_east": "false", - "axis": "y" + "axis": "y", + "sticky_east": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -256,8 +256,8 @@ }, { "when": { - "sticky_east": "false", - "axis": "z" + "axis": "z", + "sticky_east": "false" }, "apply": { "model": "create:block/radial_chassis_side_z" diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index ac7cc9c48..d920041b5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -8,7 +8,7 @@ "block.create.adjustable_crate": "adjustable_crate", "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "Verzögernder Verstärker", + "block.create.adjustable_repeater": "Verzögernder Verstärker", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", "block.create.andesite_bricks": "Andesitziegel", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", @@ -23,7 +23,7 @@ "block.create.basin": "UNLOCALIZED: Basin", "block.create.belt": "Mechanischer Riemen", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "Fließband-Beobachter", + "block.create.belt_observer": "Fließband-Beobachter", "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", @@ -82,7 +82,7 @@ "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Dolomitsäule", + "block.create.dolomite_pillar": "Dolomitsäule", "block.create.encased_belt": "Eingeschlossener Riemen", "block.create.encased_fan": "Eingeschlossener Propeller", "block.create.encased_shaft": "Eingeschlossene Welle", @@ -128,7 +128,7 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Fließbandtrichter", + "block.create.funnel": "Fließbandtrichter", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Gabbroziegel", @@ -156,7 +156,7 @@ "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Großes Zahnrad", + "block.create.large_cogwheel": "Großes Zahnrad", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -176,9 +176,9 @@ "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Kalksteinsäule", - "block.create.linear_chassis": "Schubgerüst", - "block.create.linked_extractor": "Verknüpfter Auswerfer", + "block.create.limestone_pillar": "Kalksteinsäule", + "block.create.linear_chassis": "Schubgerüst", + "block.create.linked_extractor": "Verknüpfter Auswerfer", "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", "block.create.mechanical_bearing": "Mechanisches Lager", @@ -257,7 +257,7 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", + "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", @@ -286,8 +286,8 @@ "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", - "block.create.pulse_repeater": "Pulsierender Verstärker", - "block.create.radial_chassis": "Drehgerüst", + "block.create.pulse_repeater": "Pulsierender Verstärker", + "block.create.radial_chassis": "Drehgerüst", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Redstone-Kontakt", "block.create.redstone_link": "Redstone-Verbindung", @@ -337,7 +337,7 @@ "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", + "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", @@ -388,7 +388,7 @@ "item.create.schematic_and_quill": "Bauplan und Feder", "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "Baumdünger", + "item.create.tree_fertilizer": "Baumdünger", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", "item.create.wand_of_symmetry": "Symmetriestab", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", @@ -488,9 +488,9 @@ "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", "death.attack.create.crush": "%1$s stolperte in ein Mahlwerk", - "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", + "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", "death.attack.create.fan_lava": "%1$s wurde von Lava verweht", - "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", + "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", @@ -500,8 +500,8 @@ "create.recipe.crushing": "Mahlen", "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.splashing": "Waschen", - "create.recipe.splashing.fan": "Propeller hinter fließendem Wasser", - "create.recipe.smoking_via_fan": "Räuchern", + "create.recipe.splashing.fan": "Propeller hinter fließendem Wasser", + "create.recipe.smoking_via_fan": "Räuchern", "create.recipe.smoking_via_fan.fan": "Propeller hinter Feuer", "create.recipe.blasting_via_fan": "Schmelzen", "create.recipe.blasting_via_fan.fan": "Propeller hinter Lava", @@ -524,7 +524,7 @@ "create.generic.height": "UNLOCALIZED: Height", "create.generic.length": "UNLOCALIZED: Length", "create.generic.speed": "Geschwindigkeit", - "create.generic.delay": "Verzögerung", + "create.generic.delay": "Verzögerung", "create.generic.unit.ticks": "Ticks", "create.generic.unit.seconds": "Sekunden", "create.generic.unit.minutes": "Minuten", @@ -533,20 +533,20 @@ "create.generic.unit.degrees": "UNLOCALIZED: °", "create.action.scroll": "Wechseln", - "create.action.confirm": "Bestätigen", + "create.action.confirm": "Bestätigen", "create.action.abort": "Abbrechen", "create.action.saveToFile": "Speichern", - "create.action.discard": "Löschen", + "create.action.discard": "Löschen", - "create.keyinfo.toolmenu": "Werkzeugmenü", + "create.keyinfo.toolmenu": "Werkzeugmenü", "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", - "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", + "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", + "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", - "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", + "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", + "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", "create.gui.toolmenu.focusKey": "Halte [%1$s] zum Fokussieren", "create.gui.toolmenu.cycle": "[Mausrad] zum Wechseln", "create.gui.symmetryWand.mirrorType": "Spiegeln", @@ -567,7 +567,7 @@ "create.gui.blockzapper.searchDiagonal": "Diagonalen folgen", "create.gui.blockzapper.searchFuzzy": "Materialgrenzen ignorieren", "create.gui.blockzapper.range": "Reichweite", - "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", + "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", "create.gui.blockzapper.patternSection": "Muster", "create.gui.blockzapper.pattern.solid": "Fest", "create.gui.blockzapper.pattern.checkered": "Schachbrett", @@ -597,15 +597,15 @@ "create.blockzapper.usingBlock": "Auswahl: %1$s", "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", "create.blockzapper.component.body": "Rumpf", - "create.blockzapper.component.amplifier": "Verstärker", + "create.blockzapper.component.amplifier": "Verstärker", "create.blockzapper.component.accelerator": "Beschleuniger", - "create.blockzapper.component.retriever": "Empfänger", + "create.blockzapper.component.retriever": "Empfänger", "create.blockzapper.component.scope": "Fernrohr", "create.blockzapper.componentTier.none": "Nichts", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", - "create.blockzapper.empty": "Keine Blöcke übrig!", + "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", + "create.blockzapper.empty": "Keine Blöcke übrig!", "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", @@ -641,9 +641,9 @@ "create.gui.stockpile_switch.lowerLimit": "Untergrenze", "create.gui.stockpile_switch.upperLimit": "Obergrenze", "create.gui.stockpile_switch.startAt": "Signal bei", - "create.gui.stockpile_switch.startAbove": "Signal über", + "create.gui.stockpile_switch.startAbove": "Signal über", "create.gui.stockpile_switch.stopAt": "Signalstopp bei", - "create.gui.stockpile_switch.stopBelow": "Signalstopp über", + "create.gui.stockpile_switch.stopBelow": "Signalstopp über", "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", @@ -659,25 +659,25 @@ "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", + "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", - "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", + "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", "create.schematicAndQuill.prompt": "Gib dem Bauplan einen Namen:", "create.schematicAndQuill.fallbackName": "Mein Bauplan", "create.schematicAndQuill.saved": "Gespeichert als %1$s", - "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", + "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", "create.schematic.position": "Position", "create.schematic.rotation": "Rotation", "create.schematic.rotation.none": "Nein", - "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", - "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", - "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", + "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", + "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", + "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", "create.schematic.mirror": "Spiegeln", "create.schematic.mirror.none": "Nein", - "create.schematic.mirror.frontBack": "Vor-Zurück", + "create.schematic.mirror.frontBack": "Vor-Zurück", "create.schematic.mirror.leftRight": "Links-Rechts", "create.schematic.tool.deploy": "Positionieren", "create.schematic.tool.move": "XZ Bewegen", @@ -688,7 +688,7 @@ "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", - "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", + "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", "create.schematic.tool.move.description.2": "", @@ -698,47 +698,47 @@ "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", - "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", + "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", - "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", - "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", + "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", + "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", + "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", - "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", + "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", + "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", "create.gui.schematicTable.title": "Bauplantisch", - "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", - "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", + "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", + "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", "create.gui.schematicTable.uploading": "Hochladen...", "create.gui.schematicTable.finished": "Hochgeladen!", "create.gui.schematicannon.title": "Bauplankanone", "create.gui.schematicannon.settingsTitle": "Platzier-Optionen", "create.gui.schematicannon.listPrinter": "Materiallistendruck", "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", - "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", + "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", "create.gui.schematicannon.optionEnabled": "Aktiviert", "create.gui.schematicannon.optionDisabled": "Deaktiviert", - "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", - "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", - "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", - "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", - "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", + "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", + "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", + "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", + "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", + "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", - "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", - "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", - "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", + "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", + "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", + "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", "create.schematicannon.status.idle": "Aus", "create.schematicannon.status.ready": "Bereit", @@ -750,11 +750,11 @@ "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", "create.schematicannon.status.searching": "Suchen", - "create.schematicannon.status.skipping": "Ãœberspringen", + "create.schematicannon.status.skipping": "Überspringen", "create.schematicannon.status.missingBlock": "Fehlender Block:", "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", - "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", + "create.schematicannon.status.clearing": "Blöcke entfernen", + "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", @@ -851,29 +851,29 @@ "item.create.example_item.tooltip.condition1": "Wenn dies", "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", "item.create.example_item.tooltip.condition2": "Und wenn dies", - "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", - "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", + "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", + "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", - "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", + "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", "item.create.wand_of_symmetry.tooltip.condition1": "Wenn in der Schnellleiste", "item.create.wand_of_symmetry.tooltip.behaviour1": "Bleibt aktiv", "item.create.wand_of_symmetry.tooltip.control1": "R-Klick auf Boden", "item.create.wand_of_symmetry.tooltip.action1": "_Erstellt_ oder _Bewegt_ den Spiegel", "item.create.wand_of_symmetry.tooltip.control2": "R-Klick in die Luft", - "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", + "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", "item.create.wand_of_symmetry.tooltip.control3": "R-Klick beim Schleichen", - "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", + "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", "item.create.handheld_blockzapper.tooltip": "BLOCKPISTOLE", - "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", + "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", "item.create.handheld_blockzapper.tooltip.control1": "L-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", + "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", "item.create.handheld_blockzapper.tooltip.control2": "R-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", + "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", "item.create.handheld_blockzapper.tooltip.control3": "R-Klick beim Schleichen", - "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", + "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", @@ -884,10 +884,10 @@ "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", - "item.create.tree_fertilizer.tooltip": "BAUMDÃœNGER", - "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", + "item.create.tree_fertilizer.tooltip": "BAUMDÜNGER", + "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", - "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", + "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", @@ -912,49 +912,49 @@ "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", "item.create.empty_schematic.tooltip": "LEERER BAUPLAN", - "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", + "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", "item.create.schematic.tooltip": "BAUPLAN", - "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", + "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", "item.create.schematic.tooltip.condition1": "Wenn gehalten", "item.create.schematic.tooltip.behaviour1": "Kann mit den Werkzeugen auf dem Bildschirm positioniert werden", "item.create.schematic.tooltip.control1": "R-Klick beim Schleichen", - "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", + "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", "item.create.schematic_and_quill.tooltip": "BAUPLAN UND FEDER", "item.create.schematic_and_quill.tooltip.summary": "Wird benutzt, um eine existierende Struktur in der Welt als eine .nbt-Datei zu speichern.", "item.create.schematic_and_quill.tooltip.condition1": "Schritt 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", + "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", "item.create.schematic_and_quill.tooltip.condition2": "Schritt 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", + "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", "item.create.schematic_and_quill.tooltip.control1": "R-Klick", - "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", - "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", - "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", + "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", + "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", + "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", "item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen", - "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", + "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", "block.create.schematicannon.tooltip": "BAUPLANKANONE", - "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", + "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", "block.create.schematicannon.tooltip.control1": "Wenn R-Geklickt", - "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", + "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", "block.create.schematic_table.tooltip": "BAUPLANTISCH", - "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", + "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", - "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", + "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", "block.create.shaft.tooltip": "WELLE", - "block.create.shaft.tooltip.summary": "_Ãœberträgt_ _Rotation_ entlang ihrer Achse.", + "block.create.shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse.", "block.create.cogwheel.tooltip": "ZAHNRAD", - "block.create.cogwheel.tooltip.summary": "_Ãœberträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", + "block.create.cogwheel.tooltip.summary": "_Überträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", - "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", - "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", + "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", + "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", "block.create.encased_shaft.tooltip": "EINGESCHLOSSENE WELLE", - "block.create.encased_shaft.tooltip.summary": "_Ãœberträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Ãœbertragung von Rotation durch Wände hindurch.", + "block.create.encased_shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Übertragung von Rotation durch Wände hindurch.", "block.create.gearbox.tooltip": "GETRIEBE", "block.create.gearbox.tooltip.summary": "_Leitet_ _Rotation_ in _vier_ _Richtungen_ weiter. Kehrt geradlinige Verbindungen um.", @@ -963,19 +963,19 @@ "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", "block.create.gearshift.tooltip": "GANGSCHALTUNG", - "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", "block.create.gearshift.tooltip.condition1": "Wenn aktiv", "block.create.gearshift.tooltip.behaviour1": "_Kehrt_ die ausgehende Drehrichtung _um._", "block.create.clutch.tooltip": "KUPPLUNG", - "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", + "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", "block.create.clutch.tooltip.condition1": "Wenn aktiv", "block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.", "block.create.encased_belt.tooltip": "EINGESCHLOSSENER RIEMEN", - "block.create.encased_belt.tooltip.summary": "_Ãœberträgt_ _Rotation_ durch seinen Block und zu einem angeschlossenen _Eingeschlossenen_ _Riemen._", + "block.create.encased_belt.tooltip.summary": "_Überträgt_ _Rotation_ durch seinen Block und zu einem angeschlossenen _Eingeschlossenen_ _Riemen._", "block.create.encased_belt.tooltip.condition1": "Wenn an einem anderen Eingeschlossenen Riemen angeschlossen", - "block.create.encased_belt.tooltip.behaviour1": "Wird der angeschlossene Block die exakt gleiche Rotationsgeschwindigkeit und Richtung haben. Angeschlossene Riemen müssen nicht in die gleiche Richtung schauen.", + "block.create.encased_belt.tooltip.behaviour1": "Wird der angeschlossene Block die exakt gleiche Rotationsgeschwindigkeit und Richtung haben. Angeschlossene Riemen müssen nicht in die gleiche Richtung schauen.", "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", @@ -985,9 +985,9 @@ "item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN", "item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.", "item.create.belt_connector.tooltip.control1": "R-Klick auf Welle", - "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", + "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", "item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen", - "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", + "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", @@ -1007,16 +1007,16 @@ "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", "block.create.water_wheel.tooltip": "WASSERRAD", - "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", + "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", "block.create.encased_fan.tooltip": "EINGESCHLOSSENER PROPELLER", - "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", - "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", + "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", + "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", "block.create.encased_fan.tooltip.behaviour1": "Liefert _Rotationsenergie_ (muss vertikal ausgerichtet sein)", "block.create.encased_fan.tooltip.condition2": "Wenn angetrieben", - "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", - "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", - "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", + "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", + "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", + "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", @@ -1032,7 +1032,7 @@ "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", "block.create.turntable.tooltip": "DREHTISCH", - "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", + "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1042,16 +1042,16 @@ "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", "block.create.crushing_wheel.tooltip": "MAHLWERKRAD", - "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", + "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", "block.create.crushing_wheel.tooltip.condition1": "Wenn mit einem anderem Mahlwerkrad verbunden", - "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", + "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", "block.create.mechanical_press.tooltip": "MECHANISCHE PRESSE", - "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", + "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", "block.create.mechanical_press.tooltip.condition1": "Wenn durch Redstone aktiviert", - "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", - "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", - "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", + "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", + "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", + "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", @@ -1100,26 +1100,26 @@ "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", "block.create.mechanical_piston.tooltip": "MECHANISCHER KOLBEN", - "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", "block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", "block.create.sticky_mechanical_piston.tooltip": "KLEBRIGER MECHANISCHER KOLBEN", - "block.create.sticky_mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Klebrigen_ _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Klolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Klebrigen_ _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Klolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Wenn angetrieben", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", - "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", - "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", + "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", + "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", "block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht", - "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", + "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", "block.create.mechanical_bearing.tooltip": "MECHANISCHES LAGER", - "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", + "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", "block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", + "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", "block.create.mechanical_bearing.tooltip.condition2": "Wenn durch Redstone aktiviert", - "block.create.mechanical_bearing.tooltip.behaviour2": "Fängt an, _Rotationsenergie_ durch das Drehen der angebrachten Struktur zu erzeugen. Die Struktur muss _geeignete_ _Segelblöcke_ beinhalten. (Momentan jede Art von Wolle).", + "block.create.mechanical_bearing.tooltip.behaviour2": "Fängt an, _Rotationsenergie_ durch das Drehen der angebrachten Struktur zu erzeugen. Die Struktur muss _geeignete_ _Segelblöcke_ beinhalten. (Momentan jede Art von Wolle).", "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", @@ -1149,35 +1149,35 @@ "block.create.rope_pulley.tooltip.condition1": "UNLOCALIZED: When Rotated", "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", - "block.create.linear_chassis.tooltip": "SCHUBGERÃœST", - "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", + "block.create.linear_chassis.tooltip": "SCHUBGERÜST", + "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", "block.create.linear_chassis.tooltip.condition1": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", + "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.linear_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", + "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", - "block.create.radial_chassis.tooltip": "DREHGERÃœST", - "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", + "block.create.radial_chassis.tooltip": "DREHGERÜST", + "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", "block.create.radial_chassis.tooltip.condition1": "Wenn durch ein Lager gedreht", - "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Ãœberträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", + "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Überträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.radial_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", + "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", "block.create.mechanical_drill.tooltip": "MECHANISCHER BOHRER", - "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", + "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", "block.create.mechanical_drill.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", + "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", "block.create.mechanical_drill.tooltip.condition2": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", + "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", "block.create.mechanical_harvester.tooltip": "MECHANISCHE ERNTEMASCHINE", - "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", + "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", "block.create.mechanical_harvester.tooltip.condition1": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", + "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1194,22 +1194,22 @@ "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", "block.create.stockpile_switch.tooltip": "VORRATSSENSOR", - "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", + "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", "block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit", "block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.", - "block.create.stockpile_switch.tooltip.condition2": "Wenn über dem oberen Limit", + "block.create.stockpile_switch.tooltip.condition2": "Wenn über dem oberen Limit", "block.create.stockpile_switch.tooltip.behaviour2": "Wird das Redstone-Signal eingeschaltet bis das untere Limit wieder erreicht wird.", "block.create.stockpile_switch.tooltip.control1": "Wenn R-geklickt", - "block.create.stockpile_switch.tooltip.action1": "Wird das _Konfigurationsmenü_ geöffnet", + "block.create.stockpile_switch.tooltip.action1": "Wird das _Konfigurationsmenü_ geöffnet", "block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG", - "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", + "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", "block.create.redstone_link.tooltip.condition1": "Wenn aktiv", "block.create.redstone_link.tooltip.behaviour1": "Liefern eingehende Verbindungen mit derselben _Frequenz_ ein Redstone-Signal.", "block.create.redstone_link.tooltip.control1": "Wenn mit einem Gegenstand R-geklickt", - "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", - "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", - "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", + "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", + "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", + "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,30 +1217,30 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "REDSTONE-KONTAKT", - "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", - "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", + "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", + "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", "block.create.redstone_contact.tooltip.behaviour1": "Liefert ein _Redstone-Signal._", "block.create.redstone_contact.tooltip.condition2": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", + "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", + "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", "block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt", - "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", + "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", "block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER", - "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", + "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "AUSWERFER", - "block.create.extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird keine Gegenstände auswerfen, bis der Platz dafür frei ist. Kann einen Stack von Gegenständen als _Filter_ zugewiesen bekommen.", + "block.create.extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird keine Gegenstände auswerfen, bis der Platz dafür frei ist. Kann einen Stack von Gegenständen als _Filter_ zugewiesen bekommen.", "block.create.extractor.tooltip.condition1": "Wenn durch Redstone aktiviert", "block.create.extractor.tooltip.behaviour1": "_Pausiert_ den Auswerfer", "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", "block.create.extractor.tooltip.control1": "R-Klick auf Filterplatz", - "block.create.extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter. ", + "block.create.extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter. ", "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", @@ -1258,14 +1258,14 @@ "block.create.deployer.tooltip.condition2": "UNLOCALIZED: R-Clicked with Wrench", "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", - "block.create.linked_extractor.tooltip": "VERKÃœPFTER AUSWERFER", - "block.create.linked_extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird Gegenstände nicht auswerfen, bis der Platz frei ist. Kann einen Stack von Gegenständen zugewiesen bekommen. Kann aus Distanz mit einer _Redstone-Verbindung_ kontrolliert werden.", + "block.create.linked_extractor.tooltip": "VERKÜPFTER AUSWERFER", + "block.create.linked_extractor.tooltip.summary": "_Nimmt_ _Gegenstände_ von einem verbundenen _Behälter_ und wirft diese auf den Boden. Wird Gegenstände nicht auswerfen, bis der Platz frei ist. Kann einen Stack von Gegenständen zugewiesen bekommen. Kann aus Distanz mit einer _Redstone-Verbindung_ kontrolliert werden.", "block.create.linked_extractor.tooltip.condition1": "Wenn die Restone-Verbindung aktiv ist", "block.create.linked_extractor.tooltip.behaviour1": "Wird der Auswerfer _pausiert._", "block.create.linked_extractor.tooltip.control1": "R-Klick auf den Filterplatz", - "block.create.linked_extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter.", + "block.create.linked_extractor.tooltip.action1": "Weist den momentan _gehaltenen_ _Stack_ als _Filter_ zu. Der Auswerfer zieht nur diesen _Gegenstandstyp_ und die _Anzahl_ des Stacks aus dem Behälter.", "block.create.linked_extractor.tooltip.control2": "R-Klick auf den Frequenzplatz", - "block.create.linked_extractor.tooltip.action2": "Weist den momentan _gehaltenen_ _Gegenstand_ als Teil der gelisteten Frequenz zu. Wann auch immer eine übertragende _Redstone-Verbindung_ derselben Frequenz aktiv ist, pausiert dieser Auswerfer.", + "block.create.linked_extractor.tooltip.action2": "Weist den momentan _gehaltenen_ _Gegenstand_ als Teil der gelisteten Frequenz zu. Wann auch immer eine übertragende _Redstone-Verbindung_ derselben Frequenz aktiv ist, pausiert dieser Auswerfer.", "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", @@ -1276,8 +1276,8 @@ "block.create.linked_transposer.tooltip.control2": "UNLOCALIZED: R-Click on Frequency Space", "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", - "block.create.funnel.tooltip": "FLIEẞBANDTRICHTER", - "block.create.funnel.tooltip.summary": "Sammelt eingehende Gegenstände auf einem _Mechanischen_ _Riemen_ und fügt diese in einen verbundenen _Behälter_ ein, wenn möglich. Muss direkt _auf_ dem Riemen sein, mit der Öffnung entgegen der Bewegungsrichtung des Riemens zeigend. Der Behälter muss auf der gleichen Höhe wie der Trichter sein.", + "block.create.funnel.tooltip": "FLIEẞBANDTRICHTER", + "block.create.funnel.tooltip.summary": "Sammelt eingehende Gegenstände auf einem _Mechanischen_ _Riemen_ und fügt diese in einen verbundenen _Behälter_ ein, wenn möglich. Muss direkt _auf_ dem Riemen sein, mit der Öffnung entgegen der Bewegungsrichtung des Riemens zeigend. Der Behälter muss auf der gleichen Höhe wie der Trichter sein.", "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", @@ -1293,10 +1293,10 @@ "block.create.brass_casing.tooltip.condition1": "UNLOCALIZED: When used on Mechanical Belt", "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", - "block.create.belt_observer.tooltip": "FLIEẞBAND-BEOBACHTER", - "block.create.belt_observer.tooltip.summary": "Erkennt Gegenstände, die vor ihm auf einem _Mechanischen_ _Riemen_ vorbeilaufen. Funktioniert wunderbar mit einem _Kolben_ über ihm, der gewisse Gegenstände runterschubst. ", - "block.create.belt_observer.tooltip.condition1": "Wenn ein Gegenstand mit dem Filter übereinstimmt", - "block.create.belt_observer.tooltip.behaviour1": "Sendet einen kurzen _Redstone-Puls_ an alle Seiten. Bei einem leeren Filter passiert dies mit allen Gegenständen.", + "block.create.belt_observer.tooltip": "FLIEẞBAND-BEOBACHTER", + "block.create.belt_observer.tooltip.summary": "Erkennt Gegenstände, die vor ihm auf einem _Mechanischen_ _Riemen_ vorbeilaufen. Funktioniert wunderbar mit einem _Kolben_ über ihm, der gewisse Gegenstände runterschubst. ", + "block.create.belt_observer.tooltip.condition1": "Wenn ein Gegenstand mit dem Filter übereinstimmt", + "block.create.belt_observer.tooltip.behaviour1": "Sendet einen kurzen _Redstone-Puls_ an alle Seiten. Bei einem leeren Filter passiert dies mit allen Gegenständen.", "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", @@ -1304,11 +1304,11 @@ "block.create.belt_observer.tooltip.condition4": "UNLOCALIZED: Split Mode", "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", - "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", - "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", + "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", + "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", - "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", - "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", + "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", + "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 81d6f2b2a..b4b09cdfc 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -7,14 +7,14 @@ "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "block.create.adjustable_crate": "Caisse ajustable", "block.create.adjustable_pulley": "Poulie de tapis roulant analogique", - "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", - "block.create.adjustable_repeater": "Répéteur réglable", + "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", + "block.create.adjustable_repeater": "Répéteur réglable", "block.create.analog_lever": "Levier analogique", - "block.create.andesite_bricks": "Briques d'andésite", + "block.create.andesite_bricks": "Briques d'andésite", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "Boîtier en andésite", + "block.create.andesite_casing": "Boîtier en andésite", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", @@ -23,12 +23,12 @@ "block.create.basin": "Bassin", "block.create.belt": "Tapis roulant", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "Observateur d'entité", + "block.create.belt_observer": "Observateur d'entité", "block.create.belt_tunnel": "Tunnel de convoyeur", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", "block.create.brass_block": "UNLOCALIZED: Brass Block", - "block.create.brass_casing": "Boîtier en laiton", + "block.create.brass_casing": "Boîtier en laiton", "block.create.cart_assembler": "Assembleur de wagon", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -38,18 +38,18 @@ "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "Roulement mécanique horloger", + "block.create.clockwork_bearing": "Roulement mécanique horloger", "block.create.clutch": "Embrayage", - "block.create.cogwheel": "Roue dentée", + "block.create.cogwheel": "Roue dentée", "block.create.copper_block": "Bloc de cuivre", - "block.create.copper_casing": "Boîtier en cuivre", + "block.create.copper_casing": "Boîtier en cuivre", "block.create.copper_ore": "Minerai de cuivre", "block.create.copper_shingles": "Bardeaux de cuivre", - "block.create.creative_crate": "Créateur de schémacanon", + "block.create.creative_crate": "Créateur de schémacanon", "block.create.creative_motor": "Moteur", "block.create.crushing_wheel": "Roue de concassage", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "Horloge à coucou", + "block.create.cuckoo_clock": "Horloge à coucou", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.dark_scoria": "Scorie sombre", @@ -62,7 +62,7 @@ "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "Déployeur", + "block.create.deployer": "Déployeur", "block.create.depot": "UNLOCALIZED: Depot", "block.create.diorite_bricks": "Briques de diorite", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", @@ -83,9 +83,9 @@ "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", "block.create.dolomite_pillar": "Pillier de dolomie", - "block.create.encased_belt": "Tapis roulant enfermé", - "block.create.encased_fan": "Ventilateur enfermé", - "block.create.encased_shaft": "Arbre mécanique enfermé", + "block.create.encased_belt": "Tapis roulant enfermé", + "block.create.encased_fan": "Ventilateur enfermé", + "block.create.encased_shaft": "Arbre mécanique enfermé", "block.create.extractor": "Extracteur", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", @@ -126,9 +126,9 @@ "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", "block.create.flywheel": "Volant d'inertie", - "block.create.framed_glass": "Grande fenêtre en verre", - "block.create.framed_glass_pane": "Grande vitre encadrée", - "block.create.funnel": "Entonnoir amélioré", + "block.create.framed_glass": "Grande fenêtre en verre", + "block.create.framed_glass_pane": "Grande vitre encadrée", + "block.create.funnel": "Entonnoir amélioré", "block.create.furnace_engine": "Moteur de four", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Briques de gabbro", @@ -140,8 +140,8 @@ "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "Boîte à roue dentée", - "block.create.gearshift": "Décaleur de rotation", + "block.create.gearbox": "Boîte à roue dentée", + "block.create.gearshift": "Décaleur de rotation", "block.create.granite_bricks": "Briques de granite", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", @@ -152,11 +152,11 @@ "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", "block.create.hand_crank": "Manivelle", - "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", - "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", + "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", + "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Grande roue dentée", + "block.create.large_cogwheel": "Grande roue dentée", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -177,21 +177,21 @@ "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", "block.create.limestone_pillar": "Pillier de calcaire", - "block.create.linear_chassis": "Châssis linéaire", - "block.create.linked_extractor": "Extracteur lié", - "block.create.linked_transposer": "Transposeur lié", + "block.create.linear_chassis": "Châssis linéaire", + "block.create.linked_extractor": "Extracteur lié", + "block.create.linked_transposer": "Transposeur lié", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Roulement mécanique", - "block.create.mechanical_crafter": "Établi mécanique", - "block.create.mechanical_drill": "Perceuse mécanique", - "block.create.mechanical_harvester": "Récolteuse mécanique", - "block.create.mechanical_mixer": "Mixeur mécanique", - "block.create.mechanical_piston": "Piston mécanique", - "block.create.mechanical_piston_head": "Tête de piston mécanique", + "block.create.mechanical_bearing": "Roulement mécanique", + "block.create.mechanical_crafter": "Établi mécanique", + "block.create.mechanical_drill": "Perceuse mécanique", + "block.create.mechanical_harvester": "Récolteuse mécanique", + "block.create.mechanical_mixer": "Mixeur mécanique", + "block.create.mechanical_piston": "Piston mécanique", + "block.create.mechanical_piston_head": "Tête de piston mécanique", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Presse mécanique", + "block.create.mechanical_press": "Presse mécanique", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "Scie mécanique", + "block.create.mechanical_saw": "Scie mécanique", "block.create.millstone": "UNLOCALIZED: Millstone", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", @@ -257,7 +257,7 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Pôle d'extension de piston", + "block.create.piston_extension_pole": "Pôle d'extension de piston", "block.create.polished_dark_scoria": "Scorie sombre polie", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", @@ -278,25 +278,25 @@ "block.create.polished_scoria_slab": "Dalle de scorie polie", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Calcaire patinées polies", - "block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées", + "block.create.polished_weathered_limestone": "Calcaire patinées polies", + "block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", "block.create.portable_storage_interface": "Interface de stockage portable", - "block.create.powered_latch": "Verrou alimenté", - "block.create.powered_toggle_latch": "Verrou alimenté à bascule", + "block.create.powered_latch": "Verrou alimenté", + "block.create.powered_toggle_latch": "Verrou alimenté à bascule", "block.create.pulley_magnet": "Aimant de poulie", - "block.create.pulse_repeater": "Répéteur d'impulsions", - "block.create.radial_chassis": "Châssis radial", + "block.create.pulse_repeater": "Répéteur d'impulsions", + "block.create.radial_chassis": "Châssis radial", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "redstone_contact Redstone", "block.create.redstone_link": "Liaison Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "Corde", - "block.create.rope_pulley": "Poulie à corde", - "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", - "block.create.schematic_table": "Table à schéma", - "block.create.schematicannon": "Schémacanon", + "block.create.rope_pulley": "Poulie à corde", + "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", + "block.create.schematic_table": "Table à schéma", + "block.create.schematicannon": "Schémacanon", "block.create.scoria": "Scorie", "block.create.scoria_bricks": "Briques de scorie", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", @@ -308,36 +308,36 @@ "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", "block.create.scoria_pillar": "Pillier de scorie", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", - "block.create.shaft": "Arbre mécanique", + "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", + "block.create.shaft": "Arbre mécanique", "block.create.speedometer": "Compteur de vitesse", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "Piston mécanique collant", - "block.create.stockpile_switch": "Détecteur de stockage", - "block.create.stressometer": "Stressomètre", - "block.create.tiled_glass": "Verre carrelé", - "block.create.tiled_glass_pane": "Vitre carrelé", + "block.create.sticky_mechanical_piston": "Piston mécanique collant", + "block.create.stockpile_switch": "Détecteur de stockage", + "block.create.stressometer": "Stressomètre", + "block.create.tiled_glass": "Verre carrelé", + "block.create.tiled_glass_pane": "Vitre carrelé", "block.create.transposer": "Transposeur", "block.create.turntable": "Plaque tournante", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", - "block.create.vertical_framed_glass": "Fenêtre en verre verticale", - "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", + "block.create.vertical_framed_glass": "Fenêtre en verre verticale", + "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "Roue à eau", - "block.create.weathered_limestone": "Calcaire patinées", - "block.create.weathered_limestone_bricks": "Briques de calcaire patinées", - "block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées", - "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées", - "block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées", + "block.create.water_wheel": "Roue à eau", + "block.create.weathered_limestone": "Calcaire patinées", + "block.create.weathered_limestone_bricks": "Briques de calcaire patinées", + "block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées", + "block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Pillier de calcaire patinées", + "block.create.weathered_limestone_pillar": "Pillier de calcaire patinées", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "Minerai de zinc", @@ -345,57 +345,57 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.andesite_alloy": "Alliage d'andésite", + "item.create.andesite_alloy": "Alliage d'andésite", "item.create.attribute_filter": "Filtre d'attribut", "item.create.belt_connector": "Tapis roulant", "item.create.brass_hand": "Main", "item.create.brass_ingot": "Lingot de laiton", - "item.create.brass_nugget": "Pépite de laiton", + "item.create.brass_nugget": "Pépite de laiton", "item.create.brass_sheet": "Plaques de laiton", - "item.create.chromatic_compound": "Composé chromatique", + "item.create.chromatic_compound": "Composé chromatique", "item.create.copper_ingot": "Lingot de cuivre", - "item.create.copper_nugget": "Pépite de cuivre", + "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", "item.create.crafter_slot_cover": "Couvercle", - "item.create.crushed_brass": "Laiton concassé", + "item.create.crushed_brass": "Laiton concassé", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "Déforesteur", - "item.create.dough": "Pâte", - "item.create.electron_tube": "Tube électronique", - "item.create.empty_schematic": "Schéma vide", + "item.create.deforester": "Déforesteur", + "item.create.dough": "Pâte", + "item.create.electron_tube": "Tube électronique", + "item.create.empty_schematic": "Schéma vide", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", "item.create.filter": "Filtre", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "Lunettes d'ingénieur", + "item.create.goggles": "Lunettes d'ingénieur", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Blockzappeur portable", - "item.create.handheld_worldshaper": "Térraformeur portable", - "item.create.integrated_circuit": "Circuit intégré", + "item.create.handheld_worldshaper": "Térraformeur portable", + "item.create.integrated_circuit": "Circuit intégré", "item.create.iron_sheet": "Plaque de Fer", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.polished_rose_quartz": "Quartz rose poli", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Hélice", + "item.create.propeller": "Hélice", "item.create.red_sand_paper": "Papier de verre rouge", - "item.create.refined_radiance": "Éclat raffiné", + "item.create.refined_radiance": "Éclat raffiné", "item.create.rose_quartz": "Quartz rose", "item.create.sand_paper": "Papier de verre", - "item.create.schematic": "Schéma", - "item.create.schematic_and_quill": "Schéma et plume", + "item.create.schematic": "Schéma", + "item.create.schematic_and_quill": "Schéma et plume", "item.create.shadow_steel": "Acier sombre", "item.create.super_glue": "UNLOCALIZED: Super Glue", "item.create.tree_fertilizer": "Engrais pour arbre", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "Bâton de symétrie", + "item.create.wand_of_symmetry": "Bâton de symétrie", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", "item.create.whisk": "Fouet", - "item.create.wrench": "Clé", + "item.create.wrench": "Clé", "item.create.zinc_ingot": "Barre de zinc", - "item.create.zinc_nugget": "Pépite de zinc", + "item.create.zinc_nugget": "Pépite de zinc", "_": "->------------------------] Advancements [------------------------<-", @@ -487,38 +487,38 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage", - "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", - "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", - "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", - "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", - "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", + "death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage", + "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", + "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", + "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", + "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", + "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", - "create.block.deployer.damage_source_name": "un déployeur voyou", + "create.block.deployer.damage_source_name": "un déployeur voyou", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", "create.recipe.crushing": "Ecrasement", "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.splashing": "Lavage en vrac", - "create.recipe.splashing.fan": "Ventilateur derrière de l'eau qui coule", + "create.recipe.splashing.fan": "Ventilateur derrière de l'eau qui coule", "create.recipe.smoking_via_fan": "Fumer en vrac", "create.recipe.smoking_via_fan.fan": "Fan behind Fire", - "create.recipe.blasting_via_fan": "Ventilateur derrière du feu", - "create.recipe.blasting_via_fan.fan": "Ventilateur derrière de la lave", + "create.recipe.blasting_via_fan": "Ventilateur derrière du feu", + "create.recipe.blasting_via_fan.fan": "Ventilateur derrière de la lave", "create.recipe.pressing": "Pressage", "create.recipe.mixing": "Mixage", "create.recipe.packing": "Compactage", "create.recipe.mechanical_sawing": "Sciage", - "create.recipe.mechanical_crafting": "Fabrication mécanique", + "create.recipe.mechanical_crafting": "Fabrication mécanique", "create.recipe.block_cutting": "Coupe de bloc", "create.recipe.blockzapper_upgrade": "Blockzappeur portable", "create.recipe.sandpaper_polishing": "Polissage au papier de verre", - "create.recipe.mystery_conversion": "Métamorphose chromatique", + "create.recipe.mystery_conversion": "Métamorphose chromatique", "create.recipe.processing.catalyst": "Catalyseur", "create.recipe.processing.chance": "%1$s%% de chance", "create.recipe.processing.chanceToReturn": "%1$s%% de chance de retour", - "create.generic.range": "Portée", + "create.generic.range": "Portée", "create.generic.radius": "Rayon", "create.generic.width": "Largeur", "create.generic.height": "Hauteur", @@ -530,9 +530,9 @@ "create.generic.unit.minutes": "Minutes", "create.generic.unit.rpm": "tr/min", "create.generic.unit.stress": "us", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "Faire défiler", + "create.action.scroll": "Faire défiler", "create.action.confirm": "Confirmer", "create.action.abort": "Abandonner", "create.action.saveToFile": "Sauvegarder", @@ -543,10 +543,10 @@ "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", "create.gui.scrollInput.defaultTitle": "Choisissez une option:", - "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", - "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", - "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", - "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", + "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", + "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", + "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", + "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", "create.gui.toolmenu.focusKey": "Enfoncez [%1$s] pour focus", "create.gui.toolmenu.cycle": "[SCROLL] pour cycler", "create.gui.symmetryWand.mirrorType": "Mirroir", @@ -565,24 +565,24 @@ "create.gui.blockzapper.title": "Blockzappeur portable", "create.gui.blockzapper.replaceMode": "Mode de remplacement", "create.gui.blockzapper.searchDiagonal": "Suivez les diagonales", - "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", + "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", "create.gui.blockzapper.range": "Plage de propagation", - "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", + "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", "create.gui.blockzapper.patternSection": "Motif", "create.gui.blockzapper.pattern.solid": "Solide", "create.gui.blockzapper.pattern.checkered": "Quamechanical_drillage", - "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", + "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", "create.gui.blockzapper.pattern.chance25": "25%", "create.gui.blockzapper.pattern.chance50": "50%", "create.gui.blockzapper.pattern.chance75": "75%", - "create.gui.terrainzapper.title": "Térraformeur portable", + "create.gui.terrainzapper.title": "Térraformeur portable", "create.gui.terrainzapper.placement": "Placement", "create.gui.terrainzapper.placement.merged": "Fusionner", "create.gui.terrainzapper.placement.attached": "Attacher", "create.gui.terrainzapper.placement.inserted": "Inserer", "create.gui.terrainzapper.brush": "Pinceau", - "create.gui.terrainzapper.brush.cuboid": "Cuboïde", - "create.gui.terrainzapper.brush.sphere": "Sphère", + "create.gui.terrainzapper.brush.cuboid": "Cuboïde", + "create.gui.terrainzapper.brush.sphere": "Sphère", "create.gui.terrainzapper.brush.cylinder": "Cylindre", "create.gui.terrainzapper.tool": "Outil", "create.gui.terrainzapper.tool.fill": "Remplir", @@ -592,28 +592,28 @@ "create.gui.terrainzapper.tool.overlay": "Recouvrir", "create.gui.terrainzapper.tool.flatten": "Applatir", - "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", + "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", "create.blockzapper.usingBlock": "Utilisation: %1$s", - "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", + "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", "create.blockzapper.component.body": "Corps", "create.blockzapper.component.amplifier": "Amplifieur", - "create.blockzapper.component.accelerator": "Accélérateur", - "create.blockzapper.component.retriever": "Récupérateur", + "create.blockzapper.component.accelerator": "Accélérateur", + "create.blockzapper.component.retriever": "Récupérateur", "create.blockzapper.component.scope": "Lunette", "create.blockzapper.componentTier.none": "Aucun", "create.blockzapper.componentTier.brass": "Laiton", "create.blockzapper.componentTier.chromatic": "Chromatique", - "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", + "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", "create.blockzapper.empty": "Plus de blocs!", "create.contraptions.movement_mode": "Mode de mouvement", - "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", - "create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite", - "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", - "create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", + "create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite", + "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", + "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", + "create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", @@ -623,52 +623,52 @@ "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", - "create.gui.goggles.generator_stats": "Statistiques du générateur:", - "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", - "create.gui.goggles.at_current_speed": "À la vitesse actuelle", + "create.gui.goggles.generator_stats": "Statistiques du générateur:", + "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", + "create.gui.goggles.at_current_speed": "À la vitesse actuelle", "create.gui.goggles.base_value": "Valeur de base", "create.gui.gauge.info_header": "Informations sur la jauge:", "create.gui.speedometer.title": "Vitesse de rotation", - "create.gui.stressometer.title": "Stress du réseau", - "create.gui.stressometer.capacity": "Capacité restante", - "create.gui.stressometer.overstressed": "Surmenée", + "create.gui.stressometer.title": "Stress du réseau", + "create.gui.stressometer.capacity": "Capacité restante", + "create.gui.stressometer.overstressed": "Surmenée", "create.gui.stressometer.no_rotation": "Pas de rotation", - "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", + "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "Caisse réglable", + "create.gui.adjustable_crate.title": "Caisse réglable", "create.gui.adjustable_crate.storageSpace": "Espace de stockage", "create.gui.stockpile_switch.title": "Commutateur de stockage", - "create.gui.stockpile_switch.lowerLimit": "Seuil inférieur", - "create.gui.stockpile_switch.upperLimit": "Seuil supérieur", - "create.gui.stockpile_switch.startAt": "Signal de départ à", - "create.gui.stockpile_switch.startAbove": "Signal de démarrage au-dessus", - "create.gui.stockpile_switch.stopAt": "Signal d'arrêt à", - "create.gui.stockpile_switch.stopBelow": "Signal d'arrêt en-dessous", - "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", + "create.gui.stockpile_switch.lowerLimit": "Seuil inférieur", + "create.gui.stockpile_switch.upperLimit": "Seuil supérieur", + "create.gui.stockpile_switch.startAt": "Signal de départ à", + "create.gui.stockpile_switch.startAbove": "Signal de démarrage au-dessus", + "create.gui.stockpile_switch.stopAt": "Signal d'arrêt à", + "create.gui.stockpile_switch.stopBelow": "Signal d'arrêt en-dessous", + "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", "create.gui.sequenced_gearshift.instruction": "Instructions", "create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner", "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", "create.gui.sequenced_gearshift.instruction.wait": "Attente", - "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", + "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", "create.gui.sequenced_gearshift.instruction.end": "Fin", "create.gui.sequenced_gearshift.speed": "Vitesse, direction", - "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", + "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", "create.gui.sequenced_gearshift.speed.forward_fast": "Vitesse double, normal", - "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", - "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", + "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", + "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", - "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Première position définie.", - "create.schematicAndQuill.secondPos": "Seconde position définie.", - "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", - "create.schematicAndQuill.abort": "Sélection supprimée.", - "create.schematicAndQuill.prompt": "Entrez un nom pour le schéma:", - "create.schematicAndQuill.fallbackName": "Mon schéma", - "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", + "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Première position définie.", + "create.schematicAndQuill.secondPos": "Seconde position définie.", + "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", + "create.schematicAndQuill.abort": "Sélection supprimée.", + "create.schematicAndQuill.prompt": "Entrez un nom pour le schéma:", + "create.schematicAndQuill.fallbackName": "Mon schéma", + "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", - "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", + "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", "create.schematic.position": "Position", "create.schematic.rotation": "Rotation", "create.schematic.rotation.none": "Aucune", @@ -677,121 +677,121 @@ "create.schematic.rotation.cw270": "Sens horaire 270", "create.schematic.mirror": "Mirroir", "create.schematic.mirror.none": "Aucun", - "create.schematic.mirror.frontBack": "Avant-Arrière", + "create.schematic.mirror.frontBack": "Avant-Arrière", "create.schematic.mirror.leftRight": "Gauche-Droite", - "create.schematic.tool.deploy": "Déployer", - "create.schematic.tool.move": "Déplacer XZ", - "create.schematic.tool.movey": "Déplacer Y", + "create.schematic.tool.deploy": "Déployer", + "create.schematic.tool.move": "Déplacer XZ", + "create.schematic.tool.movey": "Déplacer Y", "create.schematic.tool.rotate": "Tourner", "create.schematic.tool.print": "Imprimer", "create.schematic.tool.flip": "Retourner", - "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", + "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", "create.schematic.tool.deploy.description.1": "Clic droit sur le sol pour placer.", - "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", - "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", - "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", + "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", + "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", + "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", - "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", + "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", + "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", + "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", + "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", - "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", - "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", + "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", + "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", + "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", - "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", + "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", + "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", - "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", + "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", + "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", - "create.gui.schematicTable.title": "Table à schéma", - "create.gui.schematicTable.availableSchematics": "Schémas disponibles", - "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", - "create.gui.schematicTable.uploading": "Téléchargement...", - "create.gui.schematicTable.finished": "Téléchargement terminé!", - "create.gui.schematicannon.title": "Schémacanon", + "create.gui.schematicTable.title": "Table à schéma", + "create.gui.schematicTable.availableSchematics": "Schémas disponibles", + "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", + "create.gui.schematicTable.uploading": "Téléchargement...", + "create.gui.schematicTable.finished": "Téléchargement terminé!", + "create.gui.schematicannon.title": "Schémacanon", "create.gui.schematicannon.settingsTitle": "Options de placement", - "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", - "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", + "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", + "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", "create.gui.schematicannon.shotsRemaining": "Tirs restants: %1$s", "create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s", - "create.gui.schematicannon.optionEnabled": "Actuellement activé", - "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", + "create.gui.schematicannon.optionEnabled": "Actuellement activé", + "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", "create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides", "create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide", "create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi", "create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien", "create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants", - "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", + "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", "create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.", - "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", + "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", "create.gui.schematicannon.option.dontReplaceSolid.description": "Le canon ne remplacera jamais les blocs solides dans sa zone de travail, seulement non solides et air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", - "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", + "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", "create.schematicannon.status.idle": "Repos", - "create.schematicannon.status.ready": "Prêt", + "create.schematicannon.status.ready": "Prêt", "create.schematicannon.status.running": "En cours", - "create.schematicannon.status.finished": "Terminé", - "create.schematicannon.status.paused": "Pausé", - "create.schematicannon.status.stopped": "Arrêté", - "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", - "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", + "create.schematicannon.status.finished": "Terminé", + "create.schematicannon.status.paused": "Pausé", + "create.schematicannon.status.stopped": "Arrêté", + "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", + "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", "create.schematicannon.status.targetOutsideRange": "Cible trop lointaine", "create.schematicannon.status.searching": "Recherche", "create.schematicannon.status.skipping": "Saut", "create.schematicannon.status.missingBlock": "Blocs manquants:", "create.schematicannon.status.placing": "Placement", "create.schematicannon.status.clearing": "Suppression des blocs", - "create.schematicannon.status.schematicInvalid": "Schéma non valide", - "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", - "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", + "create.schematicannon.status.schematicInvalid": "Schéma non valide", + "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", + "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", "create.gui.filter.blacklist": "Liste noire", - "create.gui.filter.blacklist.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", + "create.gui.filter.blacklist.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", "create.gui.filter.whitelist": "Liste blanche", - "create.gui.filter.whitelist.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", - "create.gui.filter.respect_data": "Respect des données", - "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", - "create.gui.filter.ignore_data": "Ignorer les données", - "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", + "create.gui.filter.whitelist.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", + "create.gui.filter.respect_data": "Respect des données", + "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", + "create.gui.filter.ignore_data": "Ignorer les données", + "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", "create.item_attributes.placeable": "est placeable", - "create.item_attributes.consumable": "peut être mangé", + "create.item_attributes.consumable": "peut être mangé", "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", "create.item_attributes.washable": "UNLOCALIZED: can be Washed", "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.enchanted": "est enchanté", - "create.item_attributes.damaged": "est endommagé", + "create.item_attributes.enchanted": "est enchanté", + "create.item_attributes.damaged": "est endommagé", "create.item_attributes.badly_damaged": "est fortement damaged", "create.item_attributes.not_stackable": "ne peut pas s'empiler", - "create.item_attributes.equipable": "peut être équipé", + "create.item_attributes.equipable": "peut être équipé", "create.item_attributes.furnace_fuel": "est du combustible", - "create.item_attributes.in_tag": "est étiqueté %1$s", - "create.item_attributes.in_item_group": "appartient à %1$s", - "create.item_attributes.added_by": "a été ajouté par %1$s", + "create.item_attributes.in_tag": "est étiqueté %1$s", + "create.item_attributes.in_item_group": "appartient à %1$s", + "create.item_attributes.added_by": "a été ajouté par %1$s", - "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", - "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", + "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", + "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", "create.gui.attribute_filter.whitelist_disjunctive": "Liste blanche (n'importe)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", + "create.gui.attribute_filter.whitelist_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", "create.gui.attribute_filter.whitelist_conjunctive": "Liste blanche (tout)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", + "create.gui.attribute_filter.whitelist_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", "create.gui.attribute_filter.blacklist": "Liste noire", - "create.gui.attribute_filter.blacklist.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", - "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", + "create.gui.attribute_filter.blacklist.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", + "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", "create.tooltip.holdKey": "Enfoncez [%1$s]", "create.tooltip.holdKeyOrKey": "Enfoncez [%1$s] ou [%2$s]", @@ -799,22 +799,22 @@ "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "Vitesse requise: %1$s", "create.tooltip.speedRequirement.none": "Aucune", - "create.tooltip.speedRequirement.medium": "Modérée", + "create.tooltip.speedRequirement.medium": "Modérée", "create.tooltip.speedRequirement.high": "Rapide", "create.tooltip.stressImpact": "Impact du stress: %1$s", "create.tooltip.stressImpact.low": "Faible", - "create.tooltip.stressImpact.medium": "Modéré", - "create.tooltip.stressImpact.high": "Elevé", - "create.tooltip.stressImpact.overstressed": "Surmené", - "create.tooltip.capacityProvided": "Capacité de stress: %1$s", + "create.tooltip.stressImpact.medium": "Modéré", + "create.tooltip.stressImpact.high": "Elevé", + "create.tooltip.stressImpact.overstressed": "Surmené", + "create.tooltip.capacityProvided": "Capacité de stress: %1$s", "create.tooltip.capacityProvided.low": "Petite", "create.tooltip.capacityProvided.medium": "Moyenne", "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", - "create.tooltip.generationSpeed": "Génère à %1$s %2$s", + "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", + "create.tooltip.generationSpeed": "Génère à %1$s %2$s", "create.tooltip.analogStrength": "Force analogique: %1$s/15", - "create.mechanical_mixer.min_ingredients": "Ingrédients min.", + "create.mechanical_mixer.min_ingredients": "Ingrédients min.", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -833,63 +833,63 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "Tire de schémacanon", - "create.subtitle.schematicannon_finish": "Fin de schémacanon", + "create.subtitle.schematicannon_launch_block": "Tire de schémacanon", + "create.subtitle.schematicannon_finish": "Fin de schémacanon", "create.subtitle.slime_added": "Bruit de slime", "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", - "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", + "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", "create.subtitle.blockzapper_place": "Blocs se zappant en place", "create.subtitle.blockzapper_confirm": "Ding d'affirmation", - "create.subtitle.blockzapper_deny": "Boop de déclin", + "create.subtitle.blockzapper_deny": "Boop de déclin", "create.subtitle.block_funnel_eat": "Croc d'entonoir", "_": "->------------------------] Item Descriptions [------------------------<-", "item.create.example_item.tooltip": "OBJET EXEMPLE (juste une indication que cette info-bulle existe)", - "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", + "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", "item.create.example_item.tooltip.condition1": "Quand ceci", - "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", + "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", "item.create.example_item.tooltip.condition2": "Et quand cela", "item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez", - "item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé", - "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", + "item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé", + "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", - "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", - "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", - "item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active", + "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", + "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", + "item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active", "item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif", "item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol", - "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", + "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", "item.create.wand_of_symmetry.tooltip.control2": "Clic droit dans les airs", "item.create.wand_of_symmetry.tooltip.action2": "_Retire_ le mirroir actif", - "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", + "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", "item.create.wand_of_symmetry.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPEUR", - "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", + "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", "item.create.handheld_blockzapper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", "item.create.handheld_blockzapper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", - "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", + "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", "item.create.handheld_blockzapper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_.", "item.create.handheld_worldshaper.tooltip": "TERRAFORMEUR", - "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", + "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", "item.create.handheld_worldshaper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", + "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", "item.create.handheld_worldshaper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", - "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", + "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", + "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", "item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", "item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRE", - "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.", - "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre", - "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_", + "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.", + "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre", + "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_", - "item.create.deforester.tooltip": "DÉFORESTEUR", + "item.create.deforester.tooltip": "DÉFORESTEUR", "item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des arbres en une fraction de seconde.", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", @@ -898,141 +898,141 @@ "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", "item.create.filter.tooltip": "FILTRE", - "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", "item.create.filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", - "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", "item.create.filter.tooltip.condition2": "Clic droit", "item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", "item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS", - "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", + "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", "item.create.attribute_filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre", - "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", + "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", "item.create.attribute_filter.tooltip.condition2": "Clic droit", "item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", - "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", - "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", + "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", + "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", - "item.create.schematic.tooltip": "SCHÉMA", - "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", + "item.create.schematic.tooltip": "SCHÉMA", + "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", "item.create.schematic.tooltip.condition1": "Lorsque tenu en main", - "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", - "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", - "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", + "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", + "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", + "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", - "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", - "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", - "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", + "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", + "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", + "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", "item.create.schematic_and_quill.tooltip.control1": "Clic droit", - "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", + "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", "item.create.schematic_and_quill.tooltip.control2": "Ctrl maintenu", - "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", - "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", - "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", + "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", + "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", + "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", - "block.create.schematicannon.tooltip": "SCHÉMACANON", - "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", + "block.create.schematicannon.tooltip": "SCHÉMACANON", + "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", "block.create.schematicannon.tooltip.control1": "Clic droit", "block.create.schematicannon.tooltip.action1": "Ouvre l'_Interface_", - "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", - "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", - "block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide", - "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", + "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", + "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", + "block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide", + "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", - "block.create.shaft.tooltip": "ARBRE MÉCANIQUE", + "block.create.shaft.tooltip": "ARBRE MÉCANIQUE", "block.create.shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite.", - "block.create.cogwheel.tooltip": "ROUE DENTÉE", - "block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", + "block.create.cogwheel.tooltip": "ROUE DENTÉE", + "block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", - "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", - "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", + "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", + "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", - "block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÃŽTÉ", - "block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", + "block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÎTÉ", + "block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", - "block.create.gearbox.tooltip": "BOÃŽTE DE VITESSES", + "block.create.gearbox.tooltip": "BOÎTE DE VITESSES", "block.create.gearbox.tooltip.summary": "_Relais_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", - "block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION", - "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.", - "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", + "block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION", + "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.", + "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", "block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.", "block.create.clutch.tooltip": "EMBRAYAGE", - "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.", - "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", - "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", + "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.", + "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", + "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", - "block.create.encased_belt.tooltip": "TAPIS ROULANT ENFERMÉ", - "block.create.encased_belt.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés.", - "block.create.encased_belt.tooltip.condition1": "Lorsque connecté", - "block.create.encased_belt.tooltip.behaviour1": "Les blocs attachés auront la _même_ _vitesse_ _de_ _rotation_ et direction. Ils n'ont pas besoin de regarder dans la même direction.", + "block.create.encased_belt.tooltip": "TAPIS ROULANT ENFERMÉ", + "block.create.encased_belt.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés.", + "block.create.encased_belt.tooltip.condition1": "Lorsque connecté", + "block.create.encased_belt.tooltip.behaviour1": "Les blocs attachés auront la _même_ _vitesse_ _de_ _rotation_ et direction. Ils n'ont pas besoin de regarder dans la même direction.", "block.create.adjustable_pulley.tooltip": "POULIE DE TAPIS ROULANT ANALOGIQUE", - "block.create.adjustable_pulley.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés. Les _tapis_ _roulants_ _enfermés_ attachés _tourneront_ _plus_ _vite_ en fonction du _signal_ _de_ _redstone_ _analogique_ que ce bloc reçoit.", - "block.create.adjustable_pulley.tooltip.condition1": "Contrôle Redstone", - "block.create.adjustable_pulley.tooltip.behaviour1": "Sans signal, il ne va pas _accélérer_ les tapis roulants connectées. Avec un tapis roulant connectée au signal de pleine puissance, vitesse _doublées_.", + "block.create.adjustable_pulley.tooltip.summary": "_Relais_ la _rotation_ à travers son bloc et aux _tapis_ _roulants_ _enfermés_ attachés. Les _tapis_ _roulants_ _enfermés_ attachés _tourneront_ _plus_ _vite_ en fonction du _signal_ _de_ _redstone_ _analogique_ que ce bloc reçoit.", + "block.create.adjustable_pulley.tooltip.condition1": "Contrôle Redstone", + "block.create.adjustable_pulley.tooltip.behaviour1": "Sans signal, il ne va pas _accélérer_ les tapis roulants connectées. Avec un tapis roulant connectée au signal de pleine puissance, vitesse _doublées_.", "item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS", - "item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", + "item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", "item.create.belt_connector.tooltip.control1": "Clic droit sur arbre", - "item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", - "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", - "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", + "item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", + "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", + "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", "item.create.goggles.tooltip": "LUNETTES", - "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", - "item.create.goggles.tooltip.condition1": "Lorsque portées", - "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", - "item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge", - "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", + "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", + "item.create.goggles.tooltip.condition1": "Lorsque portées", + "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", + "item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge", + "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", - "item.create.wrench.tooltip": "CLÉ", - "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", + "item.create.wrench.tooltip": "CLÉ", + "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", "item.create.wrench.tooltip.control1": "Clic droit a kinetic block", "item.create.wrench.tooltip.action1": "_Tourne_ les _composents_ proche ou loin de la face avec lequel vous avez interagi.", - "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", - "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", + "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", + "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", - "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", + "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", "block.create.creative_motor.tooltip.summary": "Une source configurable de _force_ _de_ _rotation_.", - "block.create.water_wheel.tooltip": "ROUE À EAU", + "block.create.water_wheel.tooltip": "ROUE À EAU", "block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.", - "block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ", - "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", - "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", - "block.create.encased_fan.tooltip.condition2": "Lorsque tourné", - "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", - "block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux", - "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", + "block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ", + "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", + "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", + "block.create.encased_fan.tooltip.condition2": "Lorsque tourné", + "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", + "block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux", + "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", "block.create.nozzle.tooltip": "BUSE", - "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", + "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", "block.create.hand_crank.tooltip": "MANIVELLE", - "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", - "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", - "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", + "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", + "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", + "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", "block.create.cuckoo_clock.tooltip": "COUCOU", - "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", - "block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné", - "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", + "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", + "block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné", + "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", "block.create.turntable.tooltip": "PLAQUE TOURNANTE", - "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.", + "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1043,100 +1043,100 @@ "block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE", "block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.", - "block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage", - "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", + "block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage", + "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", - "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", - "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", - "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", - "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", - "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", + "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", + "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", + "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", + "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", + "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", "block.create.basin.tooltip": "BASSIN", - "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", + "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", - "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", - "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", + "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", + "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", "block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin", - "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.", - "block.create.mechanical_mixer.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.mechanical_mixer.tooltip.behaviour2": "_Configure_ la quantité minimale du _total_ _d'ingredients_ pour les recettes appliquées. Utilisez cette option pour _exclure_ les _recettes_ _indésirables_ avec des ingrédients similaires mais moins.", + "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.", + "block.create.mechanical_mixer.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configure_ la quantité minimale du _total_ _d'ingredients_ pour les recettes appliquées. Utilisez cette option pour _exclure_ les _recettes_ _indésirables_ avec des ingrédients similaires mais moins.", - "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", - "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", - "block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", + "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", + "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", + "block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", - "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", - "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", - "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", - "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", + "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", + "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", + "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", + "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", "block.create.furnace_engine.tooltip": "MOTEUR DE FOUR", - "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", - "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", - "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", + "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", + "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", + "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", "block.create.flywheel.tooltip": "VOLANT D'INERTIE", - "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", - "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", - "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", + "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", + "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", + "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", "block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE", - "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", + "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", "block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.", - "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", - "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", + "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", + "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", - "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", - "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", - "block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", + "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - "block.create.sticky_mechanical_piston.tooltip": "PISTON MÉCANIQUE COLLANT", - "block.create.sticky_mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_ _collant_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "Lorsque tourné", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + "block.create.sticky_mechanical_piston.tooltip": "PISTON MÉCANIQUE COLLANT", + "block.create.sticky_mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_ _collant_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "Lorsque tourné", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - "block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON", - "block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", - "block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", - "block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", + "block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON", + "block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", + "block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", + "block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", - "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", - "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", - "block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", - "block.create.mechanical_bearing.tooltip.condition2": "Lorsqu'alimenté par de la redstone", - "block.create.mechanical_bearing.tooltip.behaviour2": "Commence à fournir une _force_ _de_ rotation_ générée à partir de la rotation de la structure attachée. La structure doit inclure des _blocs_ _de_ _voiles_ appropriés (actuellement n'importe quel bloc de laine).", + "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", + "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", + "block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.mechanical_bearing.tooltip.condition2": "Lorsqu'alimenté par de la redstone", + "block.create.mechanical_bearing.tooltip.behaviour2": "Commence à fournir une _force_ _de_ rotation_ générée à partir de la rotation de la structure attachée. La structure doit inclure des _blocs_ _de_ _voiles_ appropriés (actuellement n'importe quel bloc de laine).", - "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", - "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", - "block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné", - "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", + "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", + "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", + "block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné", + "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", - "block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ", - "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", - "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", + "block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ", + "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", + "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", "block.create.sequenced_gearshift.tooltip.condition2": "Clic droit", "block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_", "block.create.cart_assembler.tooltip": "ASSEMBLEUR DE CHARIOT", - "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.", - "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.", + "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.", + "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.", "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", @@ -1145,70 +1145,70 @@ "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "POULIE DE CORDE", - "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", - "block.create.rope_pulley.tooltip.condition1": "Lorsque tourné", - "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", + "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", + "block.create.rope_pulley.tooltip.condition1": "Lorsque tourné", + "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - "block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION", + "block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION", "block.create.linear_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", - "block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé", - "block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", - "block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", + "block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", + "block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", "block.create.linear_chassis.tooltip.control1": "Clic droit avec une boule de slime", - "block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", + "block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", - "block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION", + "block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION", "block.create.radial_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", - "block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé", - "block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", - "block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", + "block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé", + "block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", + "block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", + "block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", "block.create.radial_chassis.tooltip.control1": "Clic droit avec une boule de slime", - "block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", + "block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", - "block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE", - "block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné", - "block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", + "block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE", + "block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné", + "block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", "block.create.mechanical_drill.tooltip.condition2": "Lorsqu'en mouvement", "block.create.mechanical_drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.", - "block.create.mechanical_harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", - "block.create.mechanical_harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", + "block.create.mechanical_harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", "block.create.mechanical_harvester.tooltip.condition1": "Lorsqu'en mouvement", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", - "block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE", - "block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut", - "block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", - "block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal", + "block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE", + "block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", + "block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut", + "block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", + "block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal", "block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un arbre, _l'arbre_ _tombera_ loin de la scie.", "block.create.mechanical_saw.tooltip.condition3": "Lorsqu'en mouvement", "block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _arbres_ avec lesquels la scie entre en collision.", - "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", - "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", + "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", + "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", "block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum", - "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", + "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", "block.create.stockpile_switch.tooltip.condition2": "Lorsqu'au dessus de la limite de stockage maximum", - "block.create.stockpile_switch.tooltip.behaviour2": "Commence à fournir de _l'énergie_ jusqu'à ce que la limite d'énergie soit réatteinte.", + "block.create.stockpile_switch.tooltip.behaviour2": "Commence à fournir de _l'énergie_ jusqu'à ce que la limite d'énergie soit réatteinte.", "block.create.stockpile_switch.tooltip.control1": "Clic droit", "block.create.stockpile_switch.tooltip.action1": "Ouvre l'_interface_ _de_ _configuration_.", "block.create.redstone_link.tooltip": "LIAISON REDSTONE", - "block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.", - "block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté", - "block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.", + "block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.", + "block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté", + "block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.", "block.create.redstone_link.tooltip.control1": "Clic droit avec un objet", - "block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", - "block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi", + "block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", + "block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi", "block.create.redstone_link.tooltip.action2": "TBascule entre le mode _receveur_ et _transmetteur_.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", @@ -1217,120 +1217,120 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "redstone_contact REDSTONE", - "block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.", - "block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact", + "block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.", + "block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact", "block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ _redstone_.", "block.create.redstone_contact.tooltip.condition2": "Lorsqu'en mouvement", - "block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.", + "block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.", "block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE", - "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", "block.create.adjustable_crate.tooltip.control1": "Clic droit", "block.create.adjustable_crate.tooltip.action1": "Ouvre _l'interface_.", - "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", - "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", + "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", + "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRACTEUR", - "block.create.extractor.tooltip.summary": "_Prend_ des _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être affecté à une pile d'objets en tant que _filtre_.", - "block.create.extractor.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.extractor.tooltip.summary": "_Prend_ des _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.extractor.tooltip.condition1": "Lorsqu'alimenté par de la redstone", "block.create.extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", "block.create.extractor.tooltip.condition2": "Tirage actif du tapis roulant", - "block.create.extractor.tooltip.behaviour2": "Les extracteurs peuvent extraire les objets _de_ _tapis_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque l'extracteur est bloqué, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.extractor.tooltip.behaviour2": "Les extracteurs peuvent extraire les objets _de_ _tapis_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque l'extracteur est bloqué, le _tapis_ _roulant_ _va_ _caler_.", "block.create.extractor.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", "block.create.transposer.tooltip": "TRANSPOSEUR", - "block.create.transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_.", - "block.create.transposer.tooltip.condition1": "Lorsqu'alimenté par de la redstone", + "block.create.transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_.", + "block.create.transposer.tooltip.condition1": "Lorsqu'alimenté par de la redstone", "block.create.transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", "block.create.transposer.tooltip.condition2": "Tirage actif du tapis roulant", - "block.create.transposer.tooltip.behaviour2": "Les transposeurs peuvent extraire des éléments _de_ _tapis_ _roulants_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque le transposeur est sauvegardé, le _tapis_ _roulant_ _va_ _caler_.", + "block.create.transposer.tooltip.behaviour2": "Les transposeurs peuvent extraire des éléments _de_ _tapis_ _roulants_ renforcés de _boîtiers_ _en_ _laiton_. Lorsque le transposeur est sauvegardé, le _tapis_ _roulant_ _va_ _caler_.", "block.create.transposer.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", - "block.create.deployer.tooltip": "DÉPLOYEUR", - "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", - "block.create.deployer.tooltip.condition1": "Lorsque tourné", - "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", - "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", - "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", + "block.create.deployer.tooltip": "DÉPLOYEUR", + "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", + "block.create.deployer.tooltip.condition1": "Lorsque tourné", + "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", + "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", + "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", - "block.create.linked_extractor.tooltip": "EXTRACTEUR LIÉ", - "block.create.linked_extractor.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être assigné une pile d'éléments en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_extractor.tooltip": "EXTRACTEUR LIÉ", + "block.create.linked_extractor.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les laisse tomber sur le sol. Ne laissera pas tomber les objets à moins que l'espace ne soit dégagé. Peut être assigné une pile d'éléments en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", "block.create.linked_extractor.tooltip.condition1": "Lorsque la liaison redstone est active", "block.create.linked_extractor.tooltip.behaviour1": "Met l'extracteur en _pause_.", "block.create.linked_extractor.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.linked_extractor.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur extrait exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", - "block.create.linked_extractor.tooltip.control2": "Clic droit sur l'espace des fréquences", - "block.create.linked_extractor.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, cet extracteur s'arrête.", + "block.create.linked_extractor.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_extractor.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, cet extracteur s'arrête.", - "block.create.linked_transposer.tooltip": "TRANSPOSEUR LIÉ", - "block.create.linked_transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", + "block.create.linked_transposer.tooltip": "TRANSPOSEUR LIÉ", + "block.create.linked_transposer.tooltip.summary": "_Prend_ les _objets_ d'un _inventaire_ attaché et les place immédiatement dans _l'inventaire_ cible. Peut être affecté à une pile d'objets en tant que _filtre_. Peut être contrôlé à distance via une _liaison_ _redstone_.", "block.create.linked_transposer.tooltip.condition1": "Lorsque la liaison redstone est active", "block.create.linked_transposer.tooltip.behaviour1": "Met le transposeur en _pause_.", "block.create.linked_transposer.tooltip.control1": "Clic droit sur l'espace du filtre", "block.create.linked_transposer.tooltip.action1": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ comme _filtre_. L'extracteur tire exclusivement les _types_ et _comptes_ des objets de la pile du filtre.", - "block.create.linked_transposer.tooltip.control2": "Clic droit sur l'espace des fréquences", - "block.create.linked_transposer.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, ce transposeur s'arrête.", + "block.create.linked_transposer.tooltip.control2": "Clic droit sur l'espace des fréquences", + "block.create.linked_transposer.tooltip.action2": "Assigne la _pile_ actuellement _tenue_ _en_ _main_ dans le cadre de la fréquence écoutée. Chaque fois qu'une _liaison_ _redstone_ de la même fréquence est alimenté, ce transposeur s'arrête.", - "block.create.funnel.tooltip": "ENTONNOIR AMÉLIORÉ", - "block.create.funnel.tooltip.summary": "_Collecte_ les _objets_ en _approche_ et les insère dans _l'inventaire_ attaché si possible. Peut collecter des objets dans le _monde_ et des objets sur un _tapis_ _roulant_.", + "block.create.funnel.tooltip": "ENTONNOIR AMÉLIORÉ", + "block.create.funnel.tooltip.summary": "_Collecte_ les _objets_ en _approche_ et les insère dans _l'inventaire_ attaché si possible. Peut collecter des objets dans le _monde_ et des objets sur un _tapis_ _roulant_.", "block.create.funnel.tooltip.condition1": "Passage de tapis roulant passif", - "block.create.funnel.tooltip.behaviour1": "Les entonnoirs améliorés peuvent extraire des éléments _des_ _tapis_ _roulant_ lorsqu'ils sont placés au-dessus d'eux, latéralement ou à l'extrémité. Lorsqu'un entonnoir amélioré latéral est sauvegardé, les éléments sur le _tapis_ roulant_ _ne_ _vont_ _pas_ _caler_.", + "block.create.funnel.tooltip.behaviour1": "Les entonnoirs améliorés peuvent extraire des éléments _des_ _tapis_ _roulant_ lorsqu'ils sont placés au-dessus d'eux, latéralement ou à l'extrémité. Lorsqu'un entonnoir amélioré latéral est sauvegardé, les éléments sur le _tapis_ roulant_ _ne_ _vont_ _pas_ _caler_.", "block.create.belt_tunnel.tooltip": "TUNNEL DE TAPIS ROULANT", - "block.create.belt_tunnel.tooltip.summary": "Une option esthétique pour faire passer vos _tapis_ _roulants_ _mécaniques_ à travers les murs. Les tapis roulants doivent être renforcées avec des _boîtiers_ _en_ _laiton_. Les tunnels peuvent se _synchroniser_ avec _leurs_voisins_, ne laissant passer les éléments que si tous les tunnels du groupe ont un en attente. [Ctrl]", - "block.create.belt_tunnel.tooltip.control1": "Clic droit avec une clé devant", - "block.create.belt_tunnel.tooltip.action1": "Active le _comportement_ _synchronisé_. Les tunnels synchronisés contiennent des objets jusqu'à ce que leurs voisins en aient également.", - "block.create.belt_tunnel.tooltip.control2": "Clic droit avec une clé sur les côtés", - "block.create.belt_tunnel.tooltip.action2": "_Ajuste_ _les_ _volets_ _des_ _fenêtres_ si le tunnel a une fenêtre sur cette face.", + "block.create.belt_tunnel.tooltip.summary": "Une option esthétique pour faire passer vos _tapis_ _roulants_ _mécaniques_ à travers les murs. Les tapis roulants doivent être renforcées avec des _boîtiers_ _en_ _laiton_. Les tunnels peuvent se _synchroniser_ avec _leurs_voisins_, ne laissant passer les éléments que si tous les tunnels du groupe ont un en attente. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "Clic droit avec une clé devant", + "block.create.belt_tunnel.tooltip.action1": "Active le _comportement_ _synchronisé_. Les tunnels synchronisés contiennent des objets jusqu'à ce que leurs voisins en aient également.", + "block.create.belt_tunnel.tooltip.control2": "Clic droit avec une clé sur les côtés", + "block.create.belt_tunnel.tooltip.action2": "_Ajuste_ _les_ _volets_ _des_ _fenêtres_ si le tunnel a une fenêtre sur cette face.", - "block.create.brass_casing.tooltip": "BOÃŽTIER EN LAITON", - "block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", - "block.create.brass_casing.tooltip.condition1": "Lorsqu'utilisé sur un tapis roulant mécanique", - "block.create.brass_casing.tooltip.behaviour1": "_Renforce_ les _tapis_ _roulants_ avec une fondation en laiton. Les tapis roulants renforcées peuvent prendre en charge les _tunnels_, _extracteurs_, _entonnoir améliorés_ et _transposeurs_ interagissant avec le tapis roulant sur les côtés et en dessous.", + "block.create.brass_casing.tooltip": "BOÎTIER EN LAITON", + "block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", + "block.create.brass_casing.tooltip.condition1": "Lorsqu'utilisé sur un tapis roulant mécanique", + "block.create.brass_casing.tooltip.behaviour1": "_Renforce_ les _tapis_ _roulants_ avec une fondation en laiton. Les tapis roulants renforcées peuvent prendre en charge les _tunnels_, _extracteurs_, _entonnoir améliorés_ et _transposeurs_ interagissant avec le tapis roulant sur les côtés et en dessous.", "block.create.belt_observer.tooltip": "OBSERVATEUR DE TAPIS ROULANT", - "block.create.belt_observer.tooltip.summary": "Détecte les éléments et les entités passant sur un _tapis_ _roulant_ _mécanique_ devant lui. Utilisez une _clé_ pour faire défiler son comportement. Les non-éléments seront toujours traités en mode détection quel que soit le paramètre.", - "block.create.belt_observer.tooltip.condition1": "Mode détection", - "block.create.belt_observer.tooltip.behaviour1": "Fournit un redstone _pendant_ qu'un _objet_ _correspondant_ _soit_ sur le segment de tapis roulant observé.", + "block.create.belt_observer.tooltip.summary": "Détecte les éléments et les entités passant sur un _tapis_ _roulant_ _mécanique_ devant lui. Utilisez une _clé_ pour faire défiler son comportement. Les non-éléments seront toujours traités en mode détection quel que soit le paramètre.", + "block.create.belt_observer.tooltip.condition1": "Mode détection", + "block.create.belt_observer.tooltip.behaviour1": "Fournit un redstone _pendant_ qu'un _objet_ _correspondant_ _soit_ sur le segment de tapis roulant observé.", "block.create.belt_observer.tooltip.condition2": "Mode impulsion", - "block.create.belt_observer.tooltip.behaviour2": "Émet une _impulsion_ lorsqu'un _objet_ _correspondant_ _passe_ au centre du segment de tapis roulant observé.", - "block.create.belt_observer.tooltip.condition3": "Mode éjection", - "block.create.belt_observer.tooltip.behaviour3": "_Éject_ les _objets_ _correspondants_ sur le côté. Si le tapis roulant ou l'espace cible est _occupé_, l'objet sera _tenu_ _en_ _place_.", + "block.create.belt_observer.tooltip.behaviour2": "Émet une _impulsion_ lorsqu'un _objet_ _correspondant_ _passe_ au centre du segment de tapis roulant observé.", + "block.create.belt_observer.tooltip.condition3": "Mode éjection", + "block.create.belt_observer.tooltip.behaviour3": "_Éject_ les _objets_ _correspondants_ sur le côté. Si le tapis roulant ou l'espace cible est _occupé_, l'objet sera _tenu_ _en_ _place_.", "block.create.belt_observer.tooltip.condition4": "Mode partage", - "block.create.belt_observer.tooltip.behaviour4": "_Partage_ une _pile_ _d'objets_ _correspondants_ et _éjecte_ _la_ _moitié_ de celui-ci sur le côté.", + "block.create.belt_observer.tooltip.behaviour4": "_Partage_ une _pile_ _d'objets_ _correspondants_ et _éjecte_ _la_ _moitié_ de celui-ci sur le côté.", - "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", - "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", + "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", + "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", - "block.create.adjustable_repeater.tooltip": "RÉPÉTEUR RÉGLABLE", - "block.create.adjustable_repeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + "block.create.adjustable_repeater.tooltip": "RÉPÉTEUR RÉGLABLE", + "block.create.adjustable_repeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", - "block.create.adjustable_pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", - "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", + "block.create.adjustable_pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", + "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", "block.create.analog_lever.tooltip": "LEVIER ANALOGIQUE", - "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", + "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", - "block.create.powered_toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", - "block.create.powered_toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", + "block.create.powered_toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", + "block.create.powered_toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", - "block.create.powered_latch.tooltip": "VERROU ALIMENTÉ", - "block.create.powered_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", + "block.create.powered_latch.tooltip": "VERROU ALIMENTÉ", + "block.create.powered_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", "block.create.speedometer.tooltip": "COMPTEUR DE VITESSE", - "block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.speedometer.tooltip.condition1": "Lorsque tourné", - "block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", + "block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.speedometer.tooltip.condition1": "Lorsque tourné", + "block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", - "block.create.stressometer.tooltip": "STRESSOMÈTRE", - "block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.stressometer.tooltip.condition1": "Lorsque tourné", - "block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", + "block.create.stressometer.tooltip": "STRESSOMÈTRE", + "block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", + "block.create.stressometer.tooltip.condition1": "Lorsque tourné", + "block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", "tool.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", "tool.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish_ _materials_. Can be automatically applied using the Deployer.", @@ -1344,26 +1344,26 @@ "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", - "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", - "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", + "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", + "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", "item.create.shadow_steel.tooltip": "ACIER SOMBRE", - "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", + "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", "item.create.crafter_slot_cover.tooltip": "COUVERCLE D'EMPLACEMENT", - "item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", + "item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", "create.tooltip.wip": "En cours", "create.tooltip.workInProgress": "En cours!", - "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", - "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", - "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", + "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", + "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", + "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", "create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agites les doigts* veuillez vous disperser.", - "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", + "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", "create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.", - "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", - "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", - "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", + "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", + "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", + "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 1358feb95..e477c8700 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -49,7 +49,7 @@ "block.create.creative_motor": "Motore", "block.create.crushing_wheel": "Ruota di Frantumazione", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "Orologio a Cucù", + "block.create.cuckoo_clock": "Orologio a Cucù", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", "block.create.dark_scoria": "Scoria Scura", @@ -294,7 +294,7 @@ "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "Corda", "block.create.rope_pulley": "Puleggia della Corda", - "block.create.rotation_speed_controller": "Regolatore di Velocità di Rotazione", + "block.create.rotation_speed_controller": "Regolatore di Velocità di Rotazione", "block.create.schematic_table": "Banco Schematico", "block.create.schematicannon": "Cannoneschematico", "block.create.scoria": "Scoria", @@ -487,12 +487,12 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s è stato elaborato dala Ruota di Frantumazione", - "death.attack.create.fan_fire": "%1$s è stato bruciato a morte da aria calda", - "death.attack.create.fan_lava": "%1$s è stato bruciato a morte dal ventilatore di lava", - "death.attack.create.mechanical_drill": "%1$s è stato impalato dal Trapano Meccanico", - "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla Sega Meccanica", - "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria dall'orologio a cucù manomesso", + "death.attack.create.crush": "%1$s è stato elaborato dala Ruota di Frantumazione", + "death.attack.create.fan_fire": "%1$s è stato bruciato a morte da aria calda", + "death.attack.create.fan_lava": "%1$s è stato bruciato a morte dal ventilatore di lava", + "death.attack.create.mechanical_drill": "%1$s è stato impalato dal Trapano Meccanico", + "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla Sega Meccanica", + "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria dall'orologio a cucù manomesso", "create.block.deployer.damage_source_name": "un Disadattato", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", @@ -515,22 +515,22 @@ "create.recipe.sandpaper_polishing": "Carta Vetrata Levigata", "create.recipe.mystery_conversion": "Metamorfosi Cromatica", "create.recipe.processing.catalyst": "Catalizzatore", - "create.recipe.processing.chance": "%1$s%% Possibilità", - "create.recipe.processing.chanceToReturn": "%1$s%% Possibilità di Ritorno", + "create.recipe.processing.chance": "%1$s%% Possibilità", + "create.recipe.processing.chanceToReturn": "%1$s%% Possibilità di Ritorno", "create.generic.range": "Gamma", "create.generic.radius": "Raggio", "create.generic.width": "Larghezza", "create.generic.height": "Altezza", "create.generic.length": "Lunghezza", - "create.generic.speed": "Velocità", + "create.generic.speed": "Velocità", "create.generic.delay": "Ritardo", "create.generic.unit.ticks": "Tick", "create.generic.unit.seconds": "Secondi", "create.generic.unit.minutes": "Minuti", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", "create.action.scroll": "Scorri", "create.action.confirm": "Conferma", @@ -540,13 +540,13 @@ "create.keyinfo.toolmenu": "Focalizza sul Menu Strumento", "create.keyinfo.scrollup": "Simula Rotellina del Mouse Verso Su (nel mondo)", - "create.keyinfo.scrolldown": "Simula Rotellina del Mouse Verso Giù (nel mondo)", + "create.keyinfo.scrolldown": "Simula Rotellina del Mouse Verso Giù (nel mondo)", "create.gui.scrollInput.defaultTitle": "Scegli un Opzione:", "create.gui.scrollInput.scrollToModify": "Scorri per Modificare", "create.gui.scrollInput.scrollToAdjustAmount": "Scorri Fino a Regolare l'Importo", "create.gui.scrollInput.scrollToSelect": "Scorri per Selezionare", - "create.gui.scrollInput.shiftScrollsFaster": "Premi Shift per Scorrere più Velocemente", + "create.gui.scrollInput.shiftScrollsFaster": "Premi Shift per Scorrere più Velocemente", "create.gui.toolmenu.focusKey": "Premi [%1$s] per Aprire il Menu", "create.gui.toolmenu.cycle": "[SCORRI] per navigare", "create.gui.symmetryWand.mirrorType": "Specchio", @@ -563,7 +563,7 @@ "create.orientation.alongX": "Lungo X", "create.gui.blockzapper.title": "Posizionatore di Blocchi", - "create.gui.blockzapper.replaceMode": "Modalità Sostituire", + "create.gui.blockzapper.replaceMode": "Modalità Sostituire", "create.gui.blockzapper.searchDiagonal": "Segui Diagonali", "create.gui.blockzapper.searchFuzzy": "Ignora i Bordi dei Materiali", "create.gui.blockzapper.range": "Gamma Diffusione", @@ -607,11 +607,11 @@ "create.blockzapper.leftClickToSet": "Clic-Sinistro su un blocco per impostare il materiale", "create.blockzapper.empty": "Fuori dai Blocchi!", - "create.contraptions.movement_mode": "Modalità Movimento", - "create.contraptions.movement_mode.move_place": "Posizionare Sempre quando è Fermo", + "create.contraptions.movement_mode": "Modalità Movimento", + "create.contraptions.movement_mode.move_place": "Posizionare Sempre quando è Fermo", "create.contraptions.movement_mode.move_place_returned": "Posiziona solo nella Posizione Iniziale", "create.contraptions.movement_mode.move_never_place": "Posiziona solo quando Ancora Distrutto", - "create.contraptions.movement_mode.rotate_place": "Posiziona Sempre quando è Fermo", + "create.contraptions.movement_mode.rotate_place": "Posiziona Sempre quando è Fermo", "create.contraptions.movement_mode.rotate_place_returned": "Posiziona solo vicino all'Angolo Iniziale", "create.contraptions.movement_mode.rotate_never_place": "Posiziona Solo quando l'Ancora viene Distrutta", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", @@ -625,16 +625,16 @@ "create.gui.goggles.generator_stats": "Statistiche del Generatore:", "create.gui.goggles.kinetic_stats": "Statistiche Cinetiche:", - "create.gui.goggles.at_current_speed": "Alla velocità Attuale", + "create.gui.goggles.at_current_speed": "Alla velocità Attuale", "create.gui.goggles.base_value": "Valore Base", "create.gui.gauge.info_header": "Informazioni sul Calibro:", - "create.gui.speedometer.title": "Velocità di Rotazione", + "create.gui.speedometer.title": "Velocità di Rotazione", "create.gui.stressometer.title": "Stress della Rete", - "create.gui.stressometer.capacity": "Capacità Rimanente", + "create.gui.stressometer.capacity": "Capacità Rimanente", "create.gui.stressometer.overstressed": "Sovrastressato", "create.gui.stressometer.no_rotation": "Nessuna Rotazione", - "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", - "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", + "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", + "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", "create.gui.adjustable_crate.title": "Baule Regolabile", "create.gui.adjustable_crate.storageSpace": "Spazio di Immagazzinamento", "create.gui.stockpile_switch.title": "Interruttore Accumulatore", @@ -653,11 +653,11 @@ "create.gui.sequenced_gearshift.instruction.wait": "Aspetta", "create.gui.sequenced_gearshift.instruction.wait.duration": "Durata", "create.gui.sequenced_gearshift.instruction.end": "Fine", - "create.gui.sequenced_gearshift.speed": "Velocità, Direzione", - "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, Avanti", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, Avanti", - "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, Invertita", - "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, Invertita", + "create.gui.sequenced_gearshift.speed": "Velocità, Direzione", + "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, Avanti", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, Avanti", + "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, Invertita", + "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, Invertita", "create.schematicAndQuill.dimensions": "Dimensione Schematica: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Prima posizione impostata.", @@ -694,7 +694,7 @@ "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", "create.schematic.tool.movey.description.0": "Sposta la Schematica verticalmente.", - "create.schematic.tool.movey.description.1": "[CTRL]-Scorri per spostarla su/giù.", + "create.schematic.tool.movey.description.1": "[CTRL]-Scorri per spostarla su/giù.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", "create.schematic.tool.rotate.description.0": "Ruota la Schematica attorno al suo centro.", @@ -703,7 +703,7 @@ "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Posiziona istantaneamente la struttura nel mondo.", "create.schematic.tool.print.description.1": "[Clic-Destro] per confermare la posizione corrente.", - "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", + "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", "create.schematic.tool.print.description.3": "", "create.schematic.tool.flip.description.0": "Capovolge la schematica lungo la faccia selezionata.", "create.schematic.tool.flip.description.1": "Indica la schematica e [CTRL]-Scorri per capovolgerla.", @@ -711,8 +711,8 @@ "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Sincronizzazione...", - "create.schematics.uploadTooLarge": "La schematica è troppo grande.", - "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", + "create.schematics.uploadTooLarge": "La schematica è troppo grande.", + "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", "create.gui.schematicTable.title": "Banco Schematico", "create.gui.schematicTable.availableSchematics": "Schatiche disponibili", @@ -732,13 +732,13 @@ "create.gui.schematicannon.option.replaceWithAny": "Sostituisci Solidi con Qualsiasi", "create.gui.schematicannon.option.replaceWithEmpty": "Sostituisci Solidi con il Vuoto", "create.gui.schematicannon.option.skipMissing": "Salta i Blocchi Mancanti", - "create.gui.schematicannon.option.skipTileEntities": "Proteggi i Blocchi Entità", - "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", - "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco Solido nella sua area di lavoro, solo non solidi e aria.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", - "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dal aria.", + "create.gui.schematicannon.option.skipTileEntities": "Proteggi i Blocchi Entità", + "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", + "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco Solido nella sua area di lavoro, solo non solidi e aria.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", + "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dal aria.", "create.schematicannon.status.idle": "Inattivo", "create.schematicannon.status.ready": "Pronto", @@ -747,7 +747,7 @@ "create.schematicannon.status.paused": "In Pausa", "create.schematicannon.status.stopped": "Fermato", "create.schematicannon.status.noGunpowder": "Niente Polvere da sparo", - "create.schematicannon.status.targetNotLoaded": "Il Blocco non è Caricato", + "create.schematicannon.status.targetNotLoaded": "Il Blocco non è Caricato", "create.schematicannon.status.targetOutsideRange": "Obbiettivo Troppo Lontano", "create.schematicannon.status.searching": "Ricercando", "create.schematicannon.status.skipping": "Saltando", @@ -767,21 +767,21 @@ "create.gui.filter.ignore_data": "Ignora Dati", "create.gui.filter.ignore_data.description": "Gli oggetti corrispondono indipendentemente dai loro attributi.", - "create.item_attributes.placeable": "è posizionabile", - "create.item_attributes.consumable": "può essere mangiato", - "create.item_attributes.smeltable": "può essere Fuso", - "create.item_attributes.washable": "può essere Lavato", - "create.item_attributes.smokable": "può essere Affumicato", - "create.item_attributes.blastable": "è fondibile in un Forno fusorio", - "create.item_attributes.enchanted": "è incantato", - "create.item_attributes.damaged": "è danneggiato", - "create.item_attributes.badly_damaged": "è gravemente danneggiato", + "create.item_attributes.placeable": "è posizionabile", + "create.item_attributes.consumable": "può essere mangiato", + "create.item_attributes.smeltable": "può essere Fuso", + "create.item_attributes.washable": "può essere Lavato", + "create.item_attributes.smokable": "può essere Affumicato", + "create.item_attributes.blastable": "è fondibile in un Forno fusorio", + "create.item_attributes.enchanted": "è incantato", + "create.item_attributes.damaged": "è danneggiato", + "create.item_attributes.badly_damaged": "è gravemente danneggiato", "create.item_attributes.not_stackable": "non impilabile", - "create.item_attributes.equipable": "può essere equipaggiato", - "create.item_attributes.furnace_fuel": "è il combustibile della fornace", - "create.item_attributes.in_tag": "è etichettato %1$s", + "create.item_attributes.equipable": "può essere equipaggiato", + "create.item_attributes.furnace_fuel": "è il combustibile della fornace", + "create.item_attributes.in_tag": "è etichettato %1$s", "create.item_attributes.in_item_group": "appartiene a %1$s", - "create.item_attributes.added_by": "è stato aggiunto da %1$s", + "create.item_attributes.added_by": "è stato aggiunto da %1$s", "create.gui.attribute_filter.no_selected_attributes": "Nessun attributo selezionato", "create.gui.attribute_filter.selected_attributes": "Attributi selezionati:", @@ -797,7 +797,7 @@ "create.tooltip.holdKeyOrKey": "Premi [%1$s] o [%2$s]", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Velocità Richiesta: %1$s", + "create.tooltip.speedRequirement": "Velocità Richiesta: %1$s", "create.tooltip.speedRequirement.none": "Nessuna", "create.tooltip.speedRequirement.medium": "Moderata", "create.tooltip.speedRequirement.high": "Veloce", @@ -806,7 +806,7 @@ "create.tooltip.stressImpact.medium": "Moderato", "create.tooltip.stressImpact.high": "Alto", "create.tooltip.stressImpact.overstressed": "Sovrastressato", - "create.tooltip.capacityProvided": "Capacità dello Stress: %1$s", + "create.tooltip.capacityProvided": "Capacità dello Stress: %1$s", "create.tooltip.capacityProvided.low": "Piccola", "create.tooltip.capacityProvided.medium": "Media", "create.tooltip.capacityProvided.high": "Grande", @@ -826,10 +826,10 @@ "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps avvia per rallentare artificialmente il tick del server", "create.command.killTPSCommand.argument.tickTime": "tickTime", @@ -917,7 +917,7 @@ "item.create.schematic.tooltip": "SCHEMATICA", "item.create.schematic.tooltip.summary": "Contiene una struttura da posizionare e collocare nel mondo. Posiziona l'ologramma come desiderato e usa un _Cannoneschematico_ per costruirla.", "item.create.schematic.tooltip.condition1": "Quando Tenuto", - "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli Strumenti sullo Schermo.", + "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli Strumenti sullo Schermo.", "item.create.schematic.tooltip.control1": "Clic-Destro da Accovacciato", "item.create.schematic.tooltip.action1": "Apre un'_Interfaccia_ per l'immissione di _Coordinate_ esatte.", @@ -945,19 +945,19 @@ "block.create.schematic_table.tooltip.behaviour1": "Carica un file selezionato dalla cartella Schematics.", "block.create.shaft.tooltip": "ALBERO", - "block.create.shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta.", + "block.create.shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta.", "block.create.cogwheel.tooltip": "RUOTA DENTATA", - "block.create.cogwheel.tooltip.summary": "_Rotazione_ _Relè_ in linea retta e su _Ruote_ _Dentate_ adiacenti.", + "block.create.cogwheel.tooltip.summary": "_Rotazione_ _Relè_ in linea retta e su _Ruote_ _Dentate_ adiacenti.", "block.create.large_cogwheel.tooltip": "RUOTA DENTATA GRANDE", - "block.create.large_cogwheel.tooltip.summary": "Una versione più grande della _Ruota_ _Dentata_, consente di _modificare_ la _Velocità_ _di_ _Rotazione_ quando è collegato alla sua controparte più piccola.", + "block.create.large_cogwheel.tooltip.summary": "Una versione più grande della _Ruota_ _Dentata_, consente di _modificare_ la _Velocità_ _di_ _Rotazione_ quando è collegato alla sua controparte più piccola.", "block.create.encased_shaft.tooltip": "ALBERO INCASSATO", - "block.create.encased_shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta. Adatto per propagare la rotazione attraverso le pareti.", + "block.create.encased_shaft.tooltip.summary": "_Rotazione_ _Relè_ in linea retta. Adatto per propagare la rotazione attraverso le pareti.", "block.create.gearbox.tooltip": "RIDUTTORE", - "block.create.gearbox.tooltip.summary": "_Rotazione_ _Relè_ in _quatro_ _direzioni_ Inverte le connessioni diritte.", + "block.create.gearbox.tooltip.summary": "_Rotazione_ _Relè_ in _quatro_ _direzioni_ Inverte le connessioni diritte.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", @@ -973,17 +973,17 @@ "block.create.clutch.tooltip.behaviour1": "_Interrompe_ il trasferimento della rotazione dall'altro lato.", "block.create.encased_belt.tooltip": "NASTRO INCASSATO", - "block.create.encased_belt.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_", + "block.create.encased_belt.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_", "block.create.encased_belt.tooltip.condition1": "Quando Connesso", - "block.create.encased_belt.tooltip.behaviour1": "I blocchi collegati avranno la _stessa_ _velocità_ _di_ _rotazione_ e direzione esatte. Non devono affrontare allo stesso modo.", + "block.create.encased_belt.tooltip.behaviour1": "I blocchi collegati avranno la _stessa_ _velocità_ _di_ _rotazione_ e direzione esatte. Non devono affrontare allo stesso modo.", "block.create.adjustable_pulley.tooltip": "PULEGGIA ANALOGICA", - "block.create.adjustable_pulley.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_. I nastri incassati attaccati _ruoteranno_ _più_ _velocemente_ in base al _segnale_ _analogico_ _di_ _redstone_ ricevuto da questo blocco.", + "block.create.adjustable_pulley.tooltip.summary": "_Rotazione_ _Relè_ attraverso il suo blocco attaccato ai _Nastri_ _Incassati_. I nastri incassati attaccati _ruoteranno_ _più_ _velocemente_ in base al _segnale_ _analogico_ _di_ _redstone_ ricevuto da questo blocco.", "block.create.adjustable_pulley.tooltip.condition1": "Controllo Redstone", - "block.create.adjustable_pulley.tooltip.behaviour1": "Senza un segnale, _non_ _accelererà_ i nastri collegati. Con un segnale a piena forza collegato al nastro, la velocità _raddoppia_.", + "block.create.adjustable_pulley.tooltip.behaviour1": "Senza un segnale, _non_ _accelererà_ i nastri collegati. Con un segnale a piena forza collegato al nastro, la velocità _raddoppia_.", "item.create.belt_connector.tooltip": "NASTRO MECCANICO", - "item.create.belt_connector.tooltip.summary": "Collega due o più _Alberi_ con un _Nastro_ _Meccanico_. Gli alberi collegati avranno la stessa velocità e direzione di rotazione esatte. Il Nastro può fungere da _Trasportatore_ per _Oggetti_ ed _Entità_.", + "item.create.belt_connector.tooltip.summary": "Collega due o più _Alberi_ con un _Nastro_ _Meccanico_. Gli alberi collegati avranno la stessa velocità e direzione di rotazione esatte. Il Nastro può fungere da _Trasportatore_ per _Oggetti_ ed _Entità_.", "item.create.belt_connector.tooltip.control1": "Clic-Destro sui Alberi", "item.create.belt_connector.tooltip.action1": "Seleziona l'albero come una puleggia del Nastro. Entrambi gli Alberi selezionati devono _allinearsi_ _Verticalmente_, _Orizzontalmente_, o _Diagonalmente_ verso la direzione del Nastro.", "item.create.belt_connector.tooltip.control2": "Clic-Destro da Accovacciato", @@ -992,12 +992,12 @@ "item.create.goggles.tooltip": "OCCHIALI DA INGEGNERE", "item.create.goggles.tooltip.summary": "Un paio di occhiali per migliorare la tua visione con utili _informazioni_ _cinetiche_.", "item.create.goggles.tooltip.condition1": "Quando indossati", - "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _Livello_ _di_ _Velocità_ di un componente cinetico posizionato, nonché all'_Impatto_ _dello_ _Stress_ e la capacità dei singoli componenti.", + "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _Livello_ _di_ _Velocità_ di un componente cinetico posizionato, nonché all'_Impatto_ _dello_ _Stress_ e la capacità dei singoli componenti.", "item.create.goggles.tooltip.condition2": "Quando si guarda il calibro", - "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _Velocità_ o lo _Stress_ della rete a cui è collegato il misuratore.", + "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _Velocità_ o lo _Stress_ della rete a cui è collegato il misuratore.", "item.create.wrench.tooltip": "CHIAVE INGLESE", - "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _Ruotare_, _Smontare_ e _Configurare_ i componenti.", + "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _Ruotare_, _Smontare_ e _Configurare_ i componenti.", "item.create.wrench.tooltip.control1": "Clic-Destro su un blocco cinetico", "item.create.wrench.tooltip.action1": "_Ruota_ _i_ _componenti_ verso o lontano dalla faccia con cui hai interagito.", "item.create.wrench.tooltip.control2": "Clic-Destro da Accovacciato", @@ -1010,23 +1010,23 @@ "block.create.water_wheel.tooltip.summary": "Fornisce un _Forza_ _di_ _Rotazione_ prelevata da correnti d'_Acqua_ _Adiacenti_.", "block.create.encased_fan.tooltip": "VENTILATORE INCASSATO", - "block.create.encased_fan.tooltip.summary": "Converte la _Forza_ _di_ _Rotazione_ in _Correnti_ _d'Aria_ e ritorno. Ha una varietà di usi.", + "block.create.encased_fan.tooltip.summary": "Converte la _Forza_ _di_ _Rotazione_ in _Correnti_ _d'Aria_ e ritorno. Ha una varietà di usi.", "block.create.encased_fan.tooltip.condition1": "Quando Alimentato da Redstone", - "block.create.encased_fan.tooltip.behaviour1": "Fornisce _forza_ _di_ _rotazione_ da qualsiasi _fonte_ _di_ _calore_ immediatamente al di sotto di sé. Il ventilatore deve essere rivolto verso il basso.", + "block.create.encased_fan.tooltip.behaviour1": "Fornisce _forza_ _di_ _rotazione_ da qualsiasi _fonte_ _di_ _calore_ immediatamente al di sotto di sé. Il ventilatore deve essere rivolto verso il basso.", "block.create.encased_fan.tooltip.condition2": "Quando in Ruotazione", - "block.create.encased_fan.tooltip.behaviour2": "_Spinge_ o _Tira_ Entità, a seconda della velocità di Rotazione in entrata.", + "block.create.encased_fan.tooltip.behaviour2": "_Spinge_ o _Tira_ Entità, a seconda della velocità di Rotazione in entrata.", "block.create.encased_fan.tooltip.condition3": "Quando soffia attraverso blocchi speciali", - "block.create.encased_fan.tooltip.behaviour3": "_Liquidi_ e particelle di _Fuoco_ vengono emessi nel flusso d'aria. Questo può essere usato per _elaborare_ _oggetti_.", + "block.create.encased_fan.tooltip.behaviour3": "_Liquidi_ e particelle di _Fuoco_ vengono emessi nel flusso d'aria. Questo può essere usato per _elaborare_ _oggetti_.", "block.create.nozzle.tooltip": "UGELLO", - "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _Ventilatore_ _Incassato_ per distribuire il suo effetto sulle Entità in _tutte_ _le_ _direzioni_.", + "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _Ventilatore_ _Incassato_ per distribuire il suo effetto sulle Entità in _tutte_ _le_ _direzioni_.", "block.create.hand_crank.tooltip": "MANOVELLA", "block.create.hand_crank.tooltip.summary": "Una semplice _fonte_ di _Forza_ _di_ _Rotazione_ che richiede l'interazione dei giocatori.", "block.create.hand_crank.tooltip.condition1": "Quando usata", "block.create.hand_crank.tooltip.behaviour1": "Fornisce una _Forza_ _di_ _Rotazione_ a un aggeggio attaccato. _Accovacciati_ _per_ _invertire_ la rotazione.", - "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", + "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", "block.create.cuckoo_clock.tooltip.summary": "Artigianato raffinato per _decorare_ uno spazio e _tener_ _traccia_ _del_ _tempo_.", "block.create.cuckoo_clock.tooltip.condition1": "Quando Ruotato", "block.create.cuckoo_clock.tooltip.behaviour1": "Mostra l'_ora_ _corrente_ e suona una melodia due volte al giorno. Si _attiva_ una volta a mezzogiorno e al crepuscolo, non appena i _giocatori_ _possono_ _dormire_.", @@ -1035,7 +1035,7 @@ "block.create.turntable.tooltip.summary": "Trasforma la _Forza_ _di_ _Rotazione_ in una Raffinata Cinetosi.", "block.create.millstone.tooltip": "MACINA", - "block.create.millstone.tooltip.summary": "Un componente cinetico adatto per la _rettifica_ dei _materiali_ inseriti. Può essere alimentato da una ruota dentata adiacente o collegandosi all'albero nella parte inferiore. I risultati devono essere estratti dal componente.", + "block.create.millstone.tooltip.summary": "Un componente cinetico adatto per la _rettifica_ dei _materiali_ inseriti. Può essere alimentato da una ruota dentata adiacente o collegandosi all'albero nella parte inferiore. I risultati devono essere estratti dal componente.", "block.create.millstone.tooltip.condition1": "Quando Ruotato", "block.create.millstone.tooltip.behaviour1": "Inizia ad applicare le _ricette_ di _fresatura_ a tutti gli elementi inseriti dal lato o dalla parte superiore del blocco.", "block.create.millstone.tooltip.condition2": "Quando Toccato con Clic-Destro", @@ -1044,7 +1044,7 @@ "block.create.crushing_wheel.tooltip": "RUOTA DI FRANTUMAZIONE", "block.create.crushing_wheel.tooltip.summary": "Grandi ruote girevoli che _rompono_ qualsiasi cosa.", "block.create.crushing_wheel.tooltip.condition1": "Se collegata ad altre ruote di frantumazione", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma una frantumatrice per la lavorazione di una varietà di cose. I denti delle ruote devono connettersi e muoversi con la _stessa_ _velocità_ in _direzioni_ _opposte_.", + "block.create.crushing_wheel.tooltip.behaviour1": "Forma una frantumatrice per la lavorazione di una varietà di cose. I denti delle ruote devono connettersi e muoversi con la _stessa_ _velocità_ in _direzioni_ _opposte_.", "block.create.mechanical_press.tooltip": "PRESSA MECCANICA", "block.create.mechanical_press.tooltip.summary": "Un pistone potente per comprimere gli oggetti sottostanti. Richiede una _Forza_ _di_ _Rotazione_ costante.", @@ -1066,12 +1066,12 @@ "block.create.mechanical_mixer.tooltip.condition1": "Quando sopra a una Bacinella", "block.create.mechanical_mixer.tooltip.behaviour1": "Inizia a mescolare gli oggetti nella bacinella ogni volta che sono presenti tutti gli ingredienti necessari.", "block.create.mechanical_mixer.tooltip.condition2": "Se utilizzato con la Chiave Inglese", - "block.create.mechanical_mixer.tooltip.behaviour2": "Configura la quantità minima di _ingredienti_ _totali_ per le ricette applicate. Utilizzare questa opzione per _escludere_ _ricette_ _indesiderate_ con ingredienti simili o meno.", + "block.create.mechanical_mixer.tooltip.behaviour2": "Configura la quantità minima di _ingredienti_ _totali_ per le ricette applicate. Utilizzare questa opzione per _escludere_ _ricette_ _indesiderate_ con ingredienti simili o meno.", "block.create.mechanical_crafter.tooltip": "COSTRUTTORE MECCANICO", "block.create.mechanical_crafter.tooltip.summary": "Un assemblatore cinetico per _automatizzare_ qualsiasi ricetta di _creazione_ _modellata_. Posiziona i _multipli_ _in_ _una_ _griglia_ corrispondente alla tua ricetta, e _disponi_ _i_ _loro_ _nastri_ per creare un _flusso_ che esce dalla griglia su uno degli costruttori.", "block.create.mechanical_crafter.tooltip.condition1": "Quando ruotato", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Inizia_ _il_ _processo_ _di_ _creazione_ non appena a tutti i costruttori della griglia è stato assegnato un oggetto.", + "block.create.mechanical_crafter.tooltip.behaviour1": "_Inizia_ _il_ _processo_ _di_ _creazione_ non appena a tutti i costruttori della griglia è stato assegnato un oggetto.", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", "block.create.mechanical_crafter.tooltip.control1": "Quando Strappato sul Davanti", @@ -1082,32 +1082,32 @@ "block.create.furnace_engine.tooltip": "MOTORE FORNACE", "block.create.furnace_engine.tooltip.summary": "Una potente fonte di _Potenza_ _Rotazionale_ che richiede un _forno_ _funzionante_ per funzionare.", "block.create.furnace_engine.tooltip.condition1": "Se Collegato alla Fornace Accesa", - "block.create.furnace_engine.tooltip.behaviour1": "_Inizia_ _a_ _alimentare_ un _Volano_ posto di fronte (a 1m di distanza). Utilizza un Forno Fusorio per velocità più elevate.", + "block.create.furnace_engine.tooltip.behaviour1": "_Inizia_ _a_ _alimentare_ un _Volano_ posto di fronte (a 1m di distanza). Utilizza un Forno Fusorio per velocità più elevate.", "block.create.flywheel.tooltip": "VOLANO", - "block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1m_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.", + "block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1m_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.", "block.create.flywheel.tooltip.condition1": "Se collegato a un Motore in Funzione", - "block.create.flywheel.tooltip.behaviour1": "Fornisce la _Forza_ _di_ _Rotazione_ a un aggeggio connesso in base alla forza e alla velocità del generatore.", + "block.create.flywheel.tooltip.behaviour1": "Fornisce la _Forza_ _di_ _Rotazione_ a un aggeggio connesso in base alla forza e alla velocità del generatore.", "block.create.portable_storage_interface.tooltip": "INTERFACCIA DI ARCHIVIAZIONE PORTATILE", "block.create.portable_storage_interface.tooltip.summary": "Un punto di interscambio portatile per _spostare_ _oggetti_ da e verso una _struttura_ mossa da un pistone, supporto, carrello da miniera o puleggia.", "block.create.portable_storage_interface.tooltip.condition1": "In Movimento", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interagisce con i _traspositori_ fissi in modo tale che i traspositori _rivolti_ _lontano_ dall'interfaccia _estraggano_ _gli_ _oggetti_, e i traspositori che puntano l'interfaccia _inseriranno_ _gli_ _oggetti_ dall'inventario allegato. Il congegno si arresterà brevemente quando gli oggetti vengono scambiati.", + "block.create.portable_storage_interface.tooltip.behaviour1": "Interagisce con i _traspositori_ fissi in modo tale che i traspositori _rivolti_ _lontano_ dall'interfaccia _estraggano_ _gli_ _oggetti_, e i traspositori che puntano l'interfaccia _inseriranno_ _gli_ _oggetti_ dall'inventario allegato. Il congegno si arresterà brevemente quando gli oggetti vengono scambiati.", - "block.create.rotation_speed_controller.tooltip": "REGOLATORE DI VELOCITÀ DI ROTAZIONE", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relè_ _configurabile_ in grado di accelerare o rallentare il componente selezionato a qualsiasi velocità desiderata.", + "block.create.rotation_speed_controller.tooltip": "REGOLATORE DI VELOCITÀ DI ROTAZIONE", + "block.create.rotation_speed_controller.tooltip.summary": "Un _relè_ _configurabile_ in grado di accelerare o rallentare il componente selezionato a qualsiasi velocità desiderata.", "block.create.rotation_speed_controller.tooltip.condition1": "Se collegato a una Ruota Dentata Grande", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Inoltra la forza di rotazione in entrata alla ruota, cercando di far _corrispondere_ la _velocità_ con cui è configurata come obbiettivo. La ruota dentata deve essere fissata sulla parte superiore del controllo.", + "block.create.rotation_speed_controller.tooltip.behaviour1": "Inoltra la forza di rotazione in entrata alla ruota, cercando di far _corrispondere_ la _velocità_ con cui è configurata come obbiettivo. La ruota dentata deve essere fissata sulla parte superiore del controllo.", "block.create.mechanical_piston.tooltip": "PISTOME MECCANICO", - "block.create.mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", + "block.create.mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", "block.create.mechanical_piston.tooltip.condition1": "Quando Ruotato", - "block.create.mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", + "block.create.mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", "block.create.sticky_mechanical_piston.tooltip": "PISTOME MECCANICO APPICCICOSO", - "block.create.sticky_mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_ _Appiccicoso_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Una versione più avanzata del _Pistone_ _Appiccicoso_. Usa la _Forza_ _di_ _Rotazione_ per spostare con precisione le strutture attaccate. I _Pali_ _di_ _Estensione_ _del_ _Pistone_ nella parte posteriore definiscono la _Gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per muovere più di una singola linea di blocchi.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Ruotato", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La Velocità e la direzione sono correlate alla Velocità di Rotazione in entrata.", "block.create.piston_extension_pole.tooltip": "PALO PISTOME", "block.create.piston_extension_pole.tooltip.summary": "Estende la gamma dei _Pistoni_ _Meccanici_.", @@ -1117,19 +1117,19 @@ "block.create.mechanical_bearing.tooltip": "SUPPORTO MECCANICO", "block.create.mechanical_bearing.tooltip.summary": "Utilizzato per ruotare _strutture_ _grandi_ o sfruttare la _Forza_ _di_ _Rotazione_ dal vento.", "block.create.mechanical_bearing.tooltip.condition1": "Quando Ruotato", - "block.create.mechanical_bearing.tooltip.behaviour1": "Inizia a ruotare i blocchi collegati. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", + "block.create.mechanical_bearing.tooltip.behaviour1": "Inizia a ruotare i blocchi collegati. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", "block.create.mechanical_bearing.tooltip.condition2": "Quando Alimentato da Redstone", "block.create.mechanical_bearing.tooltip.behaviour2": "Inizia a fornire _Forza_ _di_ _Rotazione_ generata dalla rotazione della struttura collegata. La struttura deve includere _Blocchi_ _di_ _Vela_ adatti (attualmente qualsiasi blocco di lana).", "block.create.clockwork_bearing.tooltip": "SUPPORTO DEL OROLOGIO", "block.create.clockwork_bearing.tooltip.summary": "Una versione avanzata del _Supporto_ _Meccanico_ per ruotare fino a due _lancette_ in base al _tempo_ _di_ _gioco_ corrente.", "block.create.clockwork_bearing.tooltip.condition1": "Quando Ruotato", - "block.create.clockwork_bearing.tooltip.behaviour1": "Inizia a ruotare la Struttura collegata verso l'_ora_ _corrente_. Se è presente una seconda struttura, fungerà da _lancetta_ _dei_ _minuti_.", + "block.create.clockwork_bearing.tooltip.behaviour1": "Inizia a ruotare la Struttura collegata verso l'_ora_ _corrente_. Se è presente una seconda struttura, fungerà da _lancetta_ _dei_ _minuti_.", "block.create.sequenced_gearshift.tooltip": "CAMBIO SEQUENZIALE", - "block.create.sequenced_gearshift.tooltip.summary": "Un _componente_ _di_ _utilità_ _programmabile_, che può cambiare il suo _throughput_ _rotazionale_ secondo un massimo di _5_ _istruzioni_ _consecutive_. Utilizzalo per alimentare i Supporti Meccanici, Pistoni o Pulegge con un maggiore controllo sui tempi e sulla velocità. Può diventare meno preciso a velocità più elevate.", + "block.create.sequenced_gearshift.tooltip.summary": "Un _componente_ _di_ _utilità_ _programmabile_, che può cambiare il suo _throughput_ _rotazionale_ secondo un massimo di _5_ _istruzioni_ _consecutive_. Utilizzalo per alimentare i Supporti Meccanici, Pistoni o Pulegge con un maggiore controllo sui tempi e sulla velocità. Può diventare meno preciso a velocità più elevate.", "block.create.sequenced_gearshift.tooltip.condition1": "Quando alimentato da Redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Inizia_ _l'esecuzione_ delle istruzioni programmate in base alla velocità in input.", + "block.create.sequenced_gearshift.tooltip.behaviour1": "_Inizia_ _l'esecuzione_ delle istruzioni programmate in base alla velocità in input.", "block.create.sequenced_gearshift.tooltip.condition2": "Quando Toccato con Clic-Destro", "block.create.sequenced_gearshift.tooltip.behaviour2": "Apre l'_Interfaccia_ _di_ _Configurazione_", @@ -1145,18 +1145,18 @@ "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "PULEGGIA DELLA CORDA", - "block.create.rope_pulley.tooltip.summary": "Sposta i blocchi e le strutture collegati in verticale. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", + "block.create.rope_pulley.tooltip.summary": "Sposta i blocchi e le strutture collegati in verticale. Usa _Telai_ o _Blocchi_ _di_ _Slime_ per spostare più di un singolo blocco.", "block.create.rope_pulley.tooltip.condition1": "Quando Ruotato", - "block.create.rope_pulley.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla Velocità di Rotazione in input.", + "block.create.rope_pulley.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla Velocità di Rotazione in input.", "block.create.linear_chassis.tooltip": "TELAIO LINEARE", "block.create.linear_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", "block.create.linear_chassis.tooltip.condition1": "Quando Spostato", - "block.create.linear_chassis.tooltip.behaviour1": "_Sposta_ tutti i _Telai_ _attaccati_ con lo stesso orientamento e una colonna di Blocchi all'interno della sua gamma. I blocchi verranno tirati solo se la faccia del telaio è _Appiccicosa_ (Vedi con [Ctrl]).", + "block.create.linear_chassis.tooltip.behaviour1": "_Sposta_ tutti i _Telai_ _attaccati_ con lo stesso orientamento e una colonna di Blocchi all'interno della sua gamma. I blocchi verranno tirati solo se la faccia del telaio è _Appiccicosa_ (Vedi con [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "Con Chiave Inglese", "block.create.linear_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi CTRL per modificare anche la gamma di tutti i blocchi telaio collegati.", "block.create.linear_chassis.tooltip.control1": "Quando si fa Clic-Destro con la Palla di slime", - "block.create.linear_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", + "block.create.linear_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", "block.create.radial_chassis.tooltip": "TELAIO RADIALE", "block.create.radial_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", @@ -1165,17 +1165,17 @@ "block.create.radial_chassis.tooltip.condition2": "Con Chiave Inglese", "block.create.radial_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi CTRL per modificare anche la gamma di tutti i blocchi telaio collegati.", "block.create.radial_chassis.tooltip.control1": "Quando si fa Clic-Destro con la Palla di slime", - "block.create.radial_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", + "block.create.radial_chassis.tooltip.action1": "Crea la faccia cliccata _Appiccicosa_. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", "block.create.mechanical_drill.tooltip": "TRAPANO MECCANICO", - "block.create.mechanical_drill.tooltip.summary": "Un dispositivo meccanico adatto per _rompere_ i _blocchi_. È mobile con _Pistoni_ o _Supporti_ _meccanici_.", + "block.create.mechanical_drill.tooltip.summary": "Un dispositivo meccanico adatto per _rompere_ i _blocchi_. È mobile con _Pistoni_ o _Supporti_ _meccanici_.", "block.create.mechanical_drill.tooltip.condition1": "Quando Ruotato", - "block.create.mechanical_drill.tooltip.behaviour1": "Funziona come un Rompi blocchi _stazionario_. Fa anche _male_ _alle_ _entità_ nella sua area effettiva", + "block.create.mechanical_drill.tooltip.behaviour1": "Funziona come un Rompi blocchi _stazionario_. Fa anche _male_ _alle_ _entità_ nella sua area effettiva", "block.create.mechanical_drill.tooltip.condition2": "In Movimento", "block.create.mechanical_drill.tooltip.behaviour2": "Rompe i blocchi con cui il trapano si scontra.", "block.create.mechanical_harvester.tooltip": "MIETITRICE MECCANICA", - "block.create.mechanical_harvester.tooltip.summary": "Una mietitrice meccanica adatta per l'automazione delle colture di medie dimensioni. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.mechanical_harvester.tooltip.summary": "Una mietitrice meccanica adatta per l'automazione delle colture di medie dimensioni. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", "block.create.mechanical_harvester.tooltip.condition1": "In Movimento", "block.create.mechanical_harvester.tooltip.behaviour1": "_Raccoglie_ tutte le _colture_ _mature_ con cui la lama si scontra e ripristina il loro stato iniziale di crescita.", @@ -1185,7 +1185,7 @@ "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", "block.create.mechanical_saw.tooltip": "SEGA MECCANICA", - "block.create.mechanical_saw.tooltip.summary": "Adatto per _tagliare_ _alberi_ in modo efficace e per _tagliare_ _blocchi_ nelle loro controparti carpentate. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.mechanical_saw.tooltip.summary": "Adatto per _tagliare_ _alberi_ in modo efficace e per _tagliare_ _blocchi_ nelle loro controparti carpentate. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", "block.create.mechanical_saw.tooltip.condition1": "Di fronte", "block.create.mechanical_saw.tooltip.behaviour1": "Applica le _Ricette_ di _Segatura_ e _Lavorazione_ _della_ _Pietra_ agli oggetti rilasciati o inseriti al suo interno. Quando sono possibili gli output, le scorre ciclicamente a meno che non sia assegnato un _filtro_.", "block.create.mechanical_saw.tooltip.condition2": "Di fronte in orizzontale", @@ -1203,13 +1203,13 @@ "block.create.stockpile_switch.tooltip.action1": "Apre l'_Interfaccia_ _di_ _Configurazione_.", "block.create.redstone_link.tooltip": "COLLEGAMENTO REDSTONE", - "block.create.redstone_link.tooltip.summary": "Endpoint per connessioni _Wireless_ _di_ _Redstone_. Le _Frequenze_ possono essere assegnate utilizzando qualsiasi oggetto. La gamma del segnale è limitata, sebbene ragionevolmente lontana.", + "block.create.redstone_link.tooltip.summary": "Endpoint per connessioni _Wireless_ _di_ _Redstone_. Le _Frequenze_ possono essere assegnate utilizzando qualsiasi oggetto. La gamma del segnale è limitata, sebbene ragionevolmente lontana.", "block.create.redstone_link.tooltip.condition1": "Quando Alimentato", - "block.create.redstone_link.tooltip.behaviour1": "La ricezione di collegamenti della stessa _Frequenza_ produrrà un segnale Redstone.", + "block.create.redstone_link.tooltip.behaviour1": "La ricezione di collegamenti della stessa _Frequenza_ produrrà un segnale Redstone.", "block.create.redstone_link.tooltip.control1": "Quando Clic-Destro su un oggetto", - "block.create.redstone_link.tooltip.action1": "Imposta la _Frequenza_ su quell'oggetto. È possibile utilizzare un totale di _due_ _oggetti_ _differenti_ in combinazione per definire una frequenza.", + "block.create.redstone_link.tooltip.action1": "Imposta la _Frequenza_ su quell'oggetto. È possibile utilizzare un totale di _due_ _oggetti_ _differenti_ in combinazione per definire una frequenza.", "block.create.redstone_link.tooltip.control2": "Clic-Destro da Accovacciato", - "block.create.redstone_link.tooltip.action2": "Alterna tra la modalità _Ricevitore_ e _Trasmettitore_.", + "block.create.redstone_link.tooltip.action2": "Alterna tra la modalità _Ricevitore_ e _Trasmettitore_.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,14 +1217,14 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "CONTATTO REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Emette solo un segnale di pietrarossa in coppia. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", + "block.create.redstone_contact.tooltip.summary": "Emette solo un segnale di pietrarossa in coppia. È mobile con _Pistoni_ o _Supporti_ _Meccanici_.", "block.create.redstone_contact.tooltip.condition1": "Di fronte ad altri Contatti", "block.create.redstone_contact.tooltip.behaviour1": "Fornisce un _Segnale_ _Redstone_.", "block.create.redstone_contact.tooltip.condition2": "In Movimento", "block.create.redstone_contact.tooltip.behaviour2": "Attiva tutti i contatti fissi che passa.", "block.create.adjustable_crate.tooltip": "BAULE REGOLABILE", - "block.create.adjustable_crate.tooltip.summary": "Questo _Contenitore_ _di_ _Stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _Pile_ di qualsiasi oggetto. Supporta _Comparatori_ _Redstone_.", + "block.create.adjustable_crate.tooltip.summary": "Questo _Contenitore_ _di_ _Stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _Pile_ di qualsiasi oggetto. Supporta _Comparatori_ _Redstone_.", "block.create.adjustable_crate.tooltip.control1": "Quando Cliccato con Clic-Destro", "block.create.adjustable_crate.tooltip.action1": "Apre l'_Interfaccia_.", @@ -1234,42 +1234,42 @@ "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "ESTRATTORE", - "block.create.extractor.tooltip.summary": "_Prende_ _Oggetti_ da un _Inventario _ allegato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.extractor.tooltip.summary": "_Prende_ _Oggetti_ da un _Inventario _ allegato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_.", "block.create.extractor.tooltip.condition1": "Quando alimentato da Redstone", "block.create.extractor.tooltip.behaviour1": "_Ferma_ l'Estrattore.", "block.create.extractor.tooltip.condition2": "Attiva Tiraggio del Nastro", - "block.create.extractor.tooltip.behaviour2": "Gli estrattori possono estrarre oggetti _da_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando l'estrattore è bloccato, il _nastro_ _si_ _arresterà_.", + "block.create.extractor.tooltip.behaviour2": "Gli estrattori possono estrarre oggetti _da_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando l'estrattore è bloccato, il _nastro_ _si_ _arresterà_.", "block.create.extractor.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", - "block.create.extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", "block.create.transposer.tooltip": "TRASPOSITORE", - "block.create.transposer.tooltip.summary": "_Prende_ _oggetti_ da un _inventario_ allegato e li inserisce immediatamente nell'_inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.transposer.tooltip.summary": "_Prende_ _oggetti_ da un _inventario_ allegato e li inserisce immediatamente nell'_inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_.", "block.create.transposer.tooltip.condition1": "Quando Alimentato da Redstone", "block.create.transposer.tooltip.behaviour1": "_Ferma_ il Traspositore.", "block.create.transposer.tooltip.condition2": "Attiva Tiraggio del Nastro", - "block.create.transposer.tooltip.behaviour2": "I Traspositori possono estrarre oggetti _dai_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando viene eseguito il backup del traspositore, il _nastro_ _si_ _arresterà_.", + "block.create.transposer.tooltip.behaviour2": "I Traspositori possono estrarre oggetti _dai_ _nastri_ rinforzati con un _involucro_ _di_ _ottone_. Quando viene eseguito il backup del traspositore, il _nastro_ _si_ _arresterà_.", "block.create.transposer.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", - "block.create.transposer.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.transposer.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", "block.create.deployer.tooltip": "INSTALLATORE", - "block.create.deployer.tooltip.summary": "_Punzoni_, _Usi_ e _Attivazioni_. Questa macchina proverà a _imitare_ un _giocatore_ il più possibile. Può _Prendere_ e _depositare_ _oggetti_ nell'_Inventario_ adiacente. Può essere assegnata una pila di oggetti come _filtro_.", + "block.create.deployer.tooltip.summary": "_Punzoni_, _Usi_ e _Attivazioni_. Questa macchina proverà a _imitare_ un _giocatore_ il più possibile. Può _Prendere_ e _depositare_ _oggetti_ nell'_Inventario_ adiacente. Può essere assegnata una pila di oggetti come _filtro_.", "block.create.deployer.tooltip.condition1": "Quando Ruotato", - "block.create.deployer.tooltip.behaviour1": "Allunga il braccio e si _attiva_ nello spazio di un blocco _2m_ _davanti_ a sé.", + "block.create.deployer.tooltip.behaviour1": "Allunga il braccio e si _attiva_ nello spazio di un blocco _2m_ _davanti_ a sé.", "block.create.deployer.tooltip.condition2": "Clic-Destro con la Chiave Inglese", - "block.create.deployer.tooltip.behaviour2": "Attiva / disattiva la modalità di perforazione. In _modalità_ _pugno_, l'Installatore tenterà di usare il suo oggetto per _rompere_ _blocchi_ o _ferire_ _entità_.", + "block.create.deployer.tooltip.behaviour2": "Attiva / disattiva la modalità di perforazione. In _modalità_ _pugno_, l'Installatore tenterà di usare il suo oggetto per _rompere_ _blocchi_ o _ferire_ _entità_.", "block.create.linked_extractor.tooltip": "ESTRATTORE CONNESSO", - "block.create.linked_extractor.tooltip.summary": "_Prende_ _gli_ _oggetti_ da un _Inventario_ attaccato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", - "block.create.linked_extractor.tooltip.condition1": "Quando il Collegamento Redstone è attivo", + "block.create.linked_extractor.tooltip.summary": "_Prende_ _gli_ _oggetti_ da un _Inventario_ attaccato e li lascia cadere a terra. Non lascerà cadere gli oggetti a meno che lo spazio non sia libero. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", + "block.create.linked_extractor.tooltip.condition1": "Quando il Collegamento Redstone è attivo", "block.create.linked_extractor.tooltip.behaviour1": "_Ferma_ l'Estrattore.", "block.create.linked_extractor.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", - "block.create.linked_extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", + "block.create.linked_extractor.tooltip.action1": "Assegna la _pila_ attualmente _trattenuta_ come _Filtro_. L'estrattore estrarrà esclusivamente il _tipo_ di oggetto e il _conteggio_ della pila come filtro.", "block.create.linked_extractor.tooltip.control2": "Clic-Destro sullo Spazio di Frequenza", "block.create.linked_extractor.tooltip.action2": "Assegna l'_oggetto_ attualmente _trattenuto_ come parte della Frequenza ascoltata. Ogni volta che viene alimentato un _Collegamento_ _Redstone_ della stessa frequenza di trasmissione, questo estrattore si mette in pausa.", "block.create.linked_transposer.tooltip": "TRASPOSITORE CONNESSO", - "block.create.linked_transposer.tooltip.summary": "_Prende_ _oggetti_ da un _Inventario_ allegato e li inserisce immediatamente nell'_Inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", - "block.create.linked_transposer.tooltip.condition1": "Quando il Collegamento Redstone è Attivo", + "block.create.linked_transposer.tooltip.summary": "_Prende_ _oggetti_ da un _Inventario_ allegato e li inserisce immediatamente nell'_Inventario_ di destinazione. Può essere assegnata una pila di oggetti come _filtro_. Può essere controllato a distanza tramite un _Collegamento_ _Redstone_.", + "block.create.linked_transposer.tooltip.condition1": "Quando il Collegamento Redstone è Attivo", "block.create.linked_transposer.tooltip.behaviour1": "_Ferma_ il Traspositore.", "block.create.linked_transposer.tooltip.control1": "Clic-Destro sullo Spazio del Filtro", "block.create.linked_transposer.tooltip.action1": "Assegna la _pila_ attualmente _tenuta_ come _Filtro_. Il Traspositore estrae solo gli oggetti che corrispondono al tipo di oggetto e al conteggio della pila di filtri.", @@ -1277,7 +1277,7 @@ "block.create.linked_transposer.tooltip.action2": "Assegna l'_oggetto_ attualmente _tenuto_ come parte della Frequenza ascoltata. Ogni volta che viene alimentato un _Collegamento_ _Redstone_ della stessa frequenza di trasmissione, questo Traspositore si ferma.", "block.create.funnel.tooltip": "IMBUTO", - "block.create.funnel.tooltip.summary": "_Raccoglie_ _gli_ _oggetti_ _in_ _arrivo_ e li inserisce nell'_inventario_ allegato, se possibile. Può raccogliere oggetti nel _mondo_ e oggetti su un _nastro_.", + "block.create.funnel.tooltip.summary": "_Raccoglie_ _gli_ _oggetti_ _in_ _arrivo_ e li inserisce nell'_inventario_ allegato, se possibile. Può raccogliere oggetti nel _mondo_ e oggetti su un _nastro_.", "block.create.funnel.tooltip.condition1": "Tirare il Nastro passivamente", "block.create.funnel.tooltip.behaviour1": "Gli imbuti possono estrarre gli oggetti _dai_ _nastri_ quando vengono posizionati sopra di essi, lateralmente o alla fine. Quando viene eseguito il backup di un imbuto laterale, gli oggetti sul _nastro_ _non_ _si_ _arrestano_.", @@ -1289,20 +1289,20 @@ "block.create.belt_tunnel.tooltip.action2": "_Regola_ _le_ _finestre_ se il tunnel ha una finestra su quella faccia.", "block.create.brass_casing.tooltip": "INVOLUCRO DI OTTONE", - "block.create.brass_casing.tooltip.summary": "Involucro delle macchine robusto con una varietà di usi. Di sicuro per la decorazione.", + "block.create.brass_casing.tooltip.summary": "Involucro delle macchine robusto con una varietà di usi. Di sicuro per la decorazione.", "block.create.brass_casing.tooltip.condition1": "Se utilizzato su un Nastro Meccanico", "block.create.brass_casing.tooltip.behaviour1": "_Rinforza_ _i_ _nastri_ con una base in ottone. I nastri rinforzati possono supportare i _Tunnel_ _Trasportatori_, _Estrattori_, _Imbuti_ e _Traspositori_ interagendo con i nastri dai lati e sotto.", "block.create.belt_observer.tooltip": "OSSERVATORE A CINGHIA", - "block.create.belt_observer.tooltip.summary": "Rileva oggetti ed entità che passano su un _Nastro_ _Meccanico_ di fronte. Usa una _Chiave_ _Inglese_ per scorrere il suo comportamento. I non oggetti verranno sempre gestiti in modalità rilevamento indipendentemente dall'impostazione.", - "block.create.belt_observer.tooltip.condition1": "Modalità di Rilevamento", + "block.create.belt_observer.tooltip.summary": "Rileva oggetti ed entità che passano su un _Nastro_ _Meccanico_ di fronte. Usa una _Chiave_ _Inglese_ per scorrere il suo comportamento. I non oggetti verranno sempre gestiti in modalità rilevamento indipendentemente dall'impostazione.", + "block.create.belt_observer.tooltip.condition1": "Modalità di Rilevamento", "block.create.belt_observer.tooltip.behaviour1": "Fornisce un segnale redstone _mentre_ un _oggetto_ _corrispondente_ si _trova_ nel segmento del nastro osservato.", - "block.create.belt_observer.tooltip.condition2": "Modalità a Impulsi", + "block.create.belt_observer.tooltip.condition2": "Modalità a Impulsi", "block.create.belt_observer.tooltip.behaviour2": "Emette un _impulso_ quando un _oggetto_ _corrispondente_ _passa_ al centro del segmento del nastro osservato.", - "block.create.belt_observer.tooltip.condition3": "Modalità di Espulsione", - "block.create.belt_observer.tooltip.behaviour3": "_Espelle_ _gli_ _oggetti_ _corrispondenti_ dal lato. Se il nastro bersaglio o lo spazio è _occupato_, l'oggetto verrà _tenuto_ _in_ _posizione_.", - "block.create.belt_observer.tooltip.condition4": "Modalità Divisa", - "block.create.belt_observer.tooltip.behaviour4": "_Divide_ una _pila_ _di_ _oggetti_ _corrispondenti_ ed _espelle_ _metà_ di essa dal lato.", + "block.create.belt_observer.tooltip.condition3": "Modalità di Espulsione", + "block.create.belt_observer.tooltip.behaviour3": "_Espelle_ _gli_ _oggetti_ _corrispondenti_ dal lato. Se il nastro bersaglio o lo spazio è _occupato_, l'oggetto verrà _tenuto_ _in_ _posizione_.", + "block.create.belt_observer.tooltip.condition4": "Modalità Divisa", + "block.create.belt_observer.tooltip.behaviour4": "_Divide_ una _pila_ _di_ _oggetti_ _corrispondenti_ ed _espelle_ _metà_ di essa dal lato.", "block.create.pulse_repeater.tooltip": "RIPETITORE DI IMPULSI", "block.create.pulse_repeater.tooltip.summary": "Un semplice circuito per tagliare i segnali redstone di passaggio ad una lunghezza di _1_ _tick_.", @@ -1314,26 +1314,26 @@ "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _Ripetitore_ _di_ _Impulsi_ con un _Ritardo_ _configurabile_ fino a 30 minuti.", "block.create.analog_lever.tooltip": "LEVA ANALOGICA", - "block.create.analog_lever.tooltip.summary": "Una leva con un _controllo_ _più_ _preciso_ sulla _potenza_ _del_ _segnale_ emesso.", + "block.create.analog_lever.tooltip.summary": "Una leva con un _controllo_ _più_ _preciso_ sulla _potenza_ _del_ _segnale_ emesso.", "block.create.powered_toggle_latch.tooltip": "LEVA ALIMENTATA ALTERATA", - "block.create.powered_toggle_latch.tooltip.summary": "Una leva che può essere attivata/disattivata da un _Impulso_ _Redstone_.", + "block.create.powered_toggle_latch.tooltip.summary": "Una leva che può essere attivata/disattivata da un _Impulso_ _Redstone_.", "block.create.powered_latch.tooltip": "LEVA ALIMENTATA", - "block.create.powered_latch.tooltip.summary": "Una leva che può essere controllata dai _Segnali_ _Redstone. Un segnale sul _retro_ _la_ _abilita_, un _segnale_ _laterale_ _la_ _resetterà_ .", + "block.create.powered_latch.tooltip.summary": "Una leva che può essere controllata dai _Segnali_ _Redstone. Un segnale sul _retro_ _la_ _abilita_, un _segnale_ _laterale_ _la_ _resetterà_ .", "block.create.speedometer.tooltip": "TACHIMETRO", - "block.create.speedometer.tooltip.summary": "Misura e visualizza la _velocità_ _di_ _rotazione_ dei componenti cinetici collegati. Supporta _Comparatori_ _Redstone_.", + "block.create.speedometer.tooltip.summary": "Misura e visualizza la _velocità_ _di_ _rotazione_ dei componenti cinetici collegati. Supporta _Comparatori_ _Redstone_.", "block.create.speedometer.tooltip.condition1": "Quando Ruotato", - "block.create.speedometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di velocità. Il _Verde_ indica una rotazione Lenta, _Blu_ Moderata e _Viola_ Veloce. Alcuni componenti meccanici richiedono un livello di velocità sufficiente per funzionare correttamente.", + "block.create.speedometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di velocità. Il _Verde_ indica una rotazione Lenta, _Blu_ Moderata e _Viola_ Veloce. Alcuni componenti meccanici richiedono un livello di velocità sufficiente per funzionare correttamente.", "block.create.stressometer.tooltip": "STRESSOMETRO", "block.create.stressometer.tooltip.summary": "Misura e visualizza lo _stress_ _complessivo_ della rete cinetica collegata. Supporta _Comparatori_ _Redstone_.", "block.create.stressometer.tooltip.condition1": "Quando Ruotato", - "block.create.stressometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di stress. Le _reti_ _troppo_ _stressate_ cesseranno di muoversi. Lo stress può essere alleviato aggiungendo più _fonti_ _di_ _rotazione_ alla rete.", + "block.create.stressometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di stress. Le _reti_ _troppo_ _stressate_ cesseranno di muoversi. Lo stress può essere alleviato aggiungendo più _fonti_ _di_ _rotazione_ alla rete.", "tool.create.sand_paper.tooltip": "CARTA VETRATA", - "tool.create.sand_paper.tooltip.summary": "Una carta ruvida che può essere utilizzata per _levigare_ _materiali_ o affilare i tuoi _strumenti_.", + "tool.create.sand_paper.tooltip.summary": "Una carta ruvida che può essere utilizzata per _levigare_ _materiali_ o affilare i tuoi _strumenti_.", "tool.create.sand_paper.tooltip.condition1": "Quando Usata", "tool.create.sand_paper.tooltip.behaviour1": "Applica la lucidatura agli oggetti _tenuti_ _in_ _mano_ o distesi a _terra_ quando _li_ _guardi_", @@ -1351,16 +1351,16 @@ "item.create.shadow_steel.tooltip.summary": "Un Materiale Cromatico forgiato _nel_ _vuoto_.", "item.create.crafter_slot_cover.tooltip": "RIVESTIMENTO SLOT CREAZIONE", - "item.create.crafter_slot_cover.tooltip.summary": "Utilizzato per coprire uno slot vuoto in un _Costruttore_ _Meccanico_ in una ricetta. I Costruttori non devono necessariamente formare una griglia quadrata completa. Questo è utile quando ci sono ricette in cui gli _ingredienti_ _sono_ _in_ _diagonale_ tra loro.", + "item.create.crafter_slot_cover.tooltip.summary": "Utilizzato per coprire uno slot vuoto in un _Costruttore_ _Meccanico_ in una ricetta. I Costruttori non devono necessariamente formare una griglia quadrata completa. Questo è utile quando ci sono ricette in cui gli _ingredienti_ _sono_ _in_ _diagonale_ tra loro.", "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "Work in progress!", "create.tooltip.randomWipDescription0": "Si prega di tenere questo oggetto lontano dai bambini.", "create.tooltip.randomWipDescription1": "Un cucciolo di panda muore ogni volta che usi questo oggetto. Ogni. Volta.", "create.tooltip.randomWipDescription2": "Da utilizzare a proprio rischio.", - "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* perfavore dispartene.", - "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Credimi, è inutile.", + "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* perfavore dispartene.", + "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Credimi, è inutile.", "create.tooltip.randomWipDescription6": "Utilizzando questo articolo, acconsenti al nostro disclaimer e accetti i suoi termini.", "create.tooltip.randomWipDescription7": "Questo forse non fa per te. Che ne dici di quello?", "create.tooltip.randomWipDescription8": "Usalo e rimpiangi immediatamente la tua decisione.", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 8774371a5..eb1aba63d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -5,31 +5,31 @@ "block.create.acacia_window": "UNLOCALIZED: Acacia Window", "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_crate": "調整å�¯èƒ½ã�ªã‚¯ãƒ¬ãƒ¼ãƒˆ", - "block.create.adjustable_pulley": "アナログベルトプーリー", - "block.create.adjustable_pulse_repeater": "調整å�¯èƒ½ã�ªãƒ‘ルスリピーター", - "block.create.adjustable_repeater": "調整å�¯èƒ½ã�ªãƒªãƒ”ーター", - "block.create.analog_lever": "アナログレãƒ�ー", - "block.create.andesite_bricks": "安山岩レンガ", + "block.create.adjustable_crate": "調整可能なクレート", + "block.create.adjustable_pulley": "アナログベルトプーリー", + "block.create.adjustable_pulse_repeater": "調整可能なパルスリピーター", + "block.create.adjustable_repeater": "調整可能なリピーター", + "block.create.analog_lever": "アナログレバー", + "block.create.andesite_bricks": "安山岩レンガ", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "安山岩ケーシング", + "block.create.andesite_casing": "安山岩ケーシング", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", - "block.create.basin": "鉢", - "block.create.belt": "メカニカルベルト", + "block.create.basin": "鉢", + "block.create.belt": "メカニカルベルト", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "ベルトオブザーãƒ�ー", - "block.create.belt_tunnel": "コンベアトンãƒ�ル", + "block.create.belt_observer": "ベルトオブザーバー", + "block.create.belt_tunnel": "コンベアトンネル", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.brass_block": "真é�®ãƒ–ロック", - "block.create.brass_casing": "真é�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°", - "block.create.cart_assembler": "カートアセンブラ", + "block.create.brass_block": "真鍮ブロック", + "block.create.brass_casing": "真鍮ケーシング", + "block.create.cart_assembler": "カートアセンブラ", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", @@ -38,33 +38,33 @@ "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "時計仕掛ã�‘ã�®ãƒ™ã‚¢ãƒªãƒ³ã‚°", - "block.create.clutch": "クラッãƒ�", - "block.create.cogwheel": "歯車", - "block.create.copper_block": "銅ブロック", - "block.create.copper_casing": "銅ケーシング", - "block.create.copper_ore": "銅鉱石", - "block.create.copper_shingles": "銅ã�®ã�“ã�‘らæ�¿", - "block.create.creative_crate": "概略図砲クリエティフィアー", - "block.create.creative_motor": "モーター", - "block.create.crushing_wheel": "破砕ホイール", + "block.create.clockwork_bearing": "時計仕掛けのベアリング", + "block.create.clutch": "クラッチ", + "block.create.cogwheel": "歯車", + "block.create.copper_block": "銅ブロック", + "block.create.copper_casing": "銅ケーシング", + "block.create.copper_ore": "銅鉱石", + "block.create.copper_shingles": "銅のこけら板", + "block.create.creative_crate": "概略図砲クリエティフィアー", + "block.create.creative_motor": "モーター", + "block.create.crushing_wheel": "破砕ホイール", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "鳩時計", + "block.create.cuckoo_clock": "鳩時計", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "ダークスコリア", - "block.create.dark_scoria_bricks": "ダークスコリアレンガ", - "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガã�®ãƒ�ーフブロック", - "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガã�®éšŽæ®µ", - "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガã�®å¡€", + "block.create.dark_scoria": "ダークスコリア", + "block.create.dark_scoria_bricks": "ダークスコリアレンガ", + "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガのハーフブロック", + "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガの階段", + "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガの塀", "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "デプロイヤー", + "block.create.deployer": "デプロイヤー", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "閃緑岩レンガ", + "block.create.diorite_bricks": "閃緑岩レンガ", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", @@ -73,20 +73,20 @@ "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "苦ç�°çŸ³", - "block.create.dolomite_bricks": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬", - "block.create.dolomite_bricks_slab": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬ã�®ãƒ�ーフブロック", - "block.create.dolomite_bricks_stairs": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬ã�®éšŽæ®µ", - "block.create.dolomite_bricks_wall": "苦ç�°çŸ³ãƒ¬ãƒ³ã‚¬ã�®å¡€", + "block.create.dolomite": "苦灰石", + "block.create.dolomite_bricks": "苦灰石レンガ", + "block.create.dolomite_bricks_slab": "苦灰石レンガのハーフブロック", + "block.create.dolomite_bricks_stairs": "苦灰石レンガの階段", + "block.create.dolomite_bricks_wall": "苦灰石レンガの塀", "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "苦ç�°çŸ³ã�®æŸ±", - "block.create.encased_belt": "ケース入りベルト", - "block.create.encased_fan": "ケース入りファン", - "block.create.encased_shaft": "ケース入りシャフト", - "block.create.extractor": "エクストラクター", + "block.create.dolomite_pillar": "苦灰石の柱", + "block.create.encased_belt": "ケース入りベルト", + "block.create.encased_fan": "ケース入りファン", + "block.create.encased_shaft": "ケース入りシャフト", + "block.create.extractor": "エクストラクター", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", @@ -125,24 +125,24 @@ "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.flywheel": "勢車", - "block.create.framed_glass": "大ã��ã�ªã‚¬ãƒ©ã‚¹çª“", - "block.create.framed_glass_pane": "大ã��ã�ªã‚¬ãƒ©ã‚¹çª“æ�¿", - "block.create.funnel": "æ¼�æ–—", - "block.create.furnace_engine": "ã�‹ã�¾ã�©ã‚¨ãƒ³ã‚¸ãƒ³", - "block.create.gabbro": "æ–‘ã‚Œã�„岩", - "block.create.gabbro_bricks": "æ–‘ã‚Œã�„岩レンガ", + "block.create.flywheel": "勢車", + "block.create.framed_glass": "大きなガラス窓", + "block.create.framed_glass_pane": "大きなガラス窓板", + "block.create.funnel": "漏斗", + "block.create.furnace_engine": "かまどエンジン", + "block.create.gabbro": "斑れい岩", + "block.create.gabbro_bricks": "斑れい岩レンガ", "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "æ–‘ã‚Œã�„岩レンガã�®éšŽæ®µ", - "block.create.gabbro_bricks_wall": "æ–‘ã‚Œã�„岩レンガã�®å¡€", + "block.create.gabbro_bricks_stairs": "斑れい岩レンガの階段", + "block.create.gabbro_bricks_wall": "斑れい岩レンガの塀", "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "ギアボックス", - "block.create.gearshift": "ギアシフト", - "block.create.granite_bricks": "花崗岩レンガ", + "block.create.gearbox": "ギアボックス", + "block.create.gearshift": "ギアシフト", + "block.create.granite_bricks": "花崗岩レンガ", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", @@ -151,12 +151,12 @@ "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.hand_crank": "ãƒ�ンドクランク", - "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓æ�¿", + "block.create.hand_crank": "ハンドクランク", + "block.create.horizontal_framed_glass": "横型ガラス窓", + "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "大ã��ã�ªæ­¯è»Š", + "block.create.large_cogwheel": "大きな歯車", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -166,33 +166,33 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "石ç�°ç •ç ‚", - "block.create.limestone": "石ç�°å²©", - "block.create.limestone_bricks": "石ç�°å²©ãƒ¬ãƒ³ã‚¬", - "block.create.limestone_bricks_slab": "石ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®ãƒ�ーフブロック", - "block.create.limestone_bricks_stairs": "石ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®éšŽæ®µ", - "block.create.limestone_bricks_wall": "石ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®å¡€", + "block.create.limesand": "石灰砕砂", + "block.create.limestone": "石灰岩", + "block.create.limestone_bricks": "石灰岩レンガ", + "block.create.limestone_bricks_slab": "石灰岩レンガのハーフブロック", + "block.create.limestone_bricks_stairs": "石灰岩レンガの階段", + "block.create.limestone_bricks_wall": "石灰岩レンガの塀", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "石ç�°å²©ã�®æŸ±", - "block.create.linear_chassis": "リニアシャーシ", - "block.create.linked_extractor": "リンクã�•ã‚Œã�Ÿã‚¨ã‚¯ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ¼", - "block.create.linked_transposer": "リンクã�•ã‚Œã�Ÿãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザー", + "block.create.limestone_pillar": "石灰岩の柱", + "block.create.linear_chassis": "リニアシャーシ", + "block.create.linked_extractor": "リンクされたエクストラクター", + "block.create.linked_transposer": "リンクされたトランスポーザー", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "メカニカルベアリング", - "block.create.mechanical_crafter": "メカニカルクラフター", - "block.create.mechanical_drill": "メカニカルドリル", - "block.create.mechanical_harvester": "メカニカルãƒ�ーベスター", - "block.create.mechanical_mixer": "メカニカルミキサー", - "block.create.mechanical_piston": "メカニカルピストン", - "block.create.mechanical_piston_head": "メカニカルピストンヘッド", + "block.create.mechanical_bearing": "メカニカルベアリング", + "block.create.mechanical_crafter": "メカニカルクラフター", + "block.create.mechanical_drill": "メカニカルドリル", + "block.create.mechanical_harvester": "メカニカルハーベスター", + "block.create.mechanical_mixer": "メカニカルミキサー", + "block.create.mechanical_piston": "メカニカルピストン", + "block.create.mechanical_piston_head": "メカニカルピストンヘッド", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "メカニカルプレス", + "block.create.mechanical_press": "メカニカルプレス", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "メカニカル鋸", - "block.create.millstone": "石臼", + "block.create.mechanical_saw": "メカニカル鋸", + "block.create.millstone": "石臼", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", @@ -204,9 +204,9 @@ "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "自然スコリア", + "block.create.natural_scoria": "自然スコリア", "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "ノズル", + "block.create.nozzle": "ノズル", "block.create.oak_window": "UNLOCALIZED: Oak Window", "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", @@ -257,48 +257,48 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "ピストン延長ãƒ�ール", - "block.create.polished_dark_scoria": "磨ã�‹ã‚Œã�Ÿãƒ€ãƒ¼ã‚¯ã‚¹ã‚³ãƒªã‚¢", + "block.create.piston_extension_pole": "ピストン延長ポール", + "block.create.polished_dark_scoria": "磨かれたダークスコリア", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "磨ã�‹ã‚Œã�Ÿè‹¦ç�°çŸ³", + "block.create.polished_dolomite": "磨かれた苦灰石", "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "磨ã�‹ã‚Œã�Ÿæ–‘ã‚Œã�„岩", + "block.create.polished_gabbro": "磨かれた斑れい岩", "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "磨ã�‹ã‚Œã�ŸçŸ³ç�°å²©", - "block.create.polished_limestone_slab": "磨ã�‹ã‚Œã�ŸçŸ³ç�°å²©ã�®ãƒ�ーフブロック", + "block.create.polished_limestone": "磨かれた石灰岩", + "block.create.polished_limestone_slab": "磨かれた石灰岩のハーフブロック", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "磨ã�‹ã‚Œã�Ÿã‚¹ã‚³ãƒªã‚¢", - "block.create.polished_scoria_slab": "磨ã�‹ã‚Œã�Ÿã‚¹ã‚³ãƒªã‚¢ã�®ãƒ�ーフブロック", + "block.create.polished_scoria": "磨かれたスコリア", + "block.create.polished_scoria_slab": "磨かれたスコリアのハーフブロック", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "磨ã�‹ã‚Œã�Ÿé¢¨åŒ–石ç�°å²©", - "block.create.polished_weathered_limestone_slab": "磨ã�‹ã‚Œã�Ÿé¢¨åŒ–石ç�°å²©ã�®ãƒ�ーフブロック", + "block.create.polished_weathered_limestone": "磨かれた風化石灰岩", + "block.create.polished_weathered_limestone_slab": "磨かれた風化石灰岩のハーフブロック", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_storage_interface": "ãƒ�ータブルストレージインターフェイス", - "block.create.powered_latch": "パワードラッãƒ�", - "block.create.powered_toggle_latch": "パワードトグルラッãƒ�", - "block.create.pulley_magnet": "プーリーマグãƒ�ット", - "block.create.pulse_repeater": "パルスリピーター", - "block.create.radial_chassis": "ラジアルシャーシ", + "block.create.portable_storage_interface": "ポータブルストレージインターフェイス", + "block.create.powered_latch": "パワードラッチ", + "block.create.powered_toggle_latch": "パワードトグルラッチ", + "block.create.pulley_magnet": "プーリーマグネット", + "block.create.pulse_repeater": "パルスリピーター", + "block.create.radial_chassis": "ラジアルシャーシ", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "レッドストーンコンタクト", - "block.create.redstone_link": "レッドストーンリンク", + "block.create.redstone_contact": "レッドストーンコンタクト", + "block.create.redstone_link": "レッドストーンリンク", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "ロープ", - "block.create.rope_pulley": "ローププーリー", - "block.create.rotation_speed_controller": "回転速度制御器", - "block.create.schematic_table": "概略図テーブル", - "block.create.schematicannon": "概略図砲", - "block.create.scoria": "スコリア", - "block.create.scoria_bricks": "スコリアレンガ", + "block.create.rope": "ロープ", + "block.create.rope_pulley": "ローププーリー", + "block.create.rotation_speed_controller": "回転速度制御器", + "block.create.schematic_table": "概略図テーブル", + "block.create.schematicannon": "概略図砲", + "block.create.scoria": "スコリア", + "block.create.scoria_bricks": "スコリアレンガ", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", @@ -306,96 +306,96 @@ "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "スコリアã�®æŸ±", + "block.create.scoria_pillar": "スコリアの柱", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "シーケンスギアシフト", - "block.create.shaft": "軸", - "block.create.speedometer": "スピードメーター", + "block.create.sequenced_gearshift": "シーケンスギアシフト", + "block.create.shaft": "軸", + "block.create.speedometer": "スピードメーター", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "粘ç�€ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ”ストン", - "block.create.stockpile_switch": "在庫スイッãƒ�", - "block.create.stressometer": "ストレスメーター", - "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイルガラスæ�¿", - "block.create.transposer": "トランスãƒ�ーザー", - "block.create.turntable": "ターンテーブル", + "block.create.sticky_mechanical_piston": "粘着メカニカルピストン", + "block.create.stockpile_switch": "在庫スイッチ", + "block.create.stressometer": "ストレスメーター", + "block.create.tiled_glass": "タイルガラス", + "block.create.tiled_glass_pane": "タイルガラス板", + "block.create.transposer": "トランスポーザー", + "block.create.turntable": "ターンテーブル", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", - "block.create.vertical_framed_glass": "垂直ガラス窓", - "block.create.vertical_framed_glass_pane": "垂直ガラス窓æ�¿", + "block.create.vertical_framed_glass": "垂直ガラス窓", + "block.create.vertical_framed_glass_pane": "垂直ガラス窓板", "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化ã�—ã�ŸçŸ³ç�°å²©", - "block.create.weathered_limestone_bricks": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬", - "block.create.weathered_limestone_bricks_slab": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®ãƒ�ーフブロック", - "block.create.weathered_limestone_bricks_stairs": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®éšŽæ®µ", - "block.create.weathered_limestone_bricks_wall": "風化ã�—ã�ŸçŸ³ç�°å²©ãƒ¬ãƒ³ã‚¬ã�®å¡€", + "block.create.water_wheel": "水車", + "block.create.weathered_limestone": "風化した石灰岩", + "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", + "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", + "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", + "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの塀", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "風化ã�—ã�ŸçŸ³ç�°å²©ã�®æŸ±", - "block.create.zinc_block": "亜鉛ブロック", - "block.create.zinc_ore": "亜鉛鉱石", + "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", + "block.create.zinc_block": "亜鉛ブロック", + "block.create.zinc_ore": "亜鉛鉱石", "entity.create.contraption": "UNLOCALIZED: Contraption", "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.andesite_alloy": "安山岩å�ˆé‡‘", - "item.create.attribute_filter": "属性フィルター", - "item.create.belt_connector": "メカニカルベルト", - "item.create.brass_hand": "手", - "item.create.brass_ingot": "真é�®ã‚¤ãƒ³ã‚´ãƒƒãƒˆ", - "item.create.brass_nugget": "真é�®ãƒŠã‚²ãƒƒãƒˆ", - "item.create.brass_sheet": "真é�®ã‚·ãƒ¼ãƒˆ", - "item.create.chromatic_compound": "色彩ã�®åŒ–å�ˆç‰©", - "item.create.copper_ingot": "銅インゴット", - "item.create.copper_nugget": "銅塊", - "item.create.copper_sheet": "銅æ�¿", - "item.create.crafter_slot_cover": "クラフタースロットカãƒ�ー", - "item.create.crushed_brass": "ç •ã�„ã�ŸçœŸé�®", + "item.create.andesite_alloy": "安山岩合金", + "item.create.attribute_filter": "属性フィルター", + "item.create.belt_connector": "メカニカルベルト", + "item.create.brass_hand": "手", + "item.create.brass_ingot": "真鍮インゴット", + "item.create.brass_nugget": "真鍮ナゲット", + "item.create.brass_sheet": "真鍮シート", + "item.create.chromatic_compound": "色彩の化合物", + "item.create.copper_ingot": "銅インゴット", + "item.create.copper_nugget": "銅塊", + "item.create.copper_sheet": "銅板", + "item.create.crafter_slot_cover": "クラフタースロットカバー", + "item.create.crushed_brass": "砕いた真鍮", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "デフォレスター", - "item.create.dough": "生地", - "item.create.electron_tube": "é›»å­�管", - "item.create.empty_schematic": "空ã�®æ¦‚略図", + "item.create.deforester": "デフォレスター", + "item.create.dough": "生地", + "item.create.electron_tube": "電子管", + "item.create.empty_schematic": "空の概略図", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "フィルター", + "item.create.filter": "フィルター", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "エンジニアã�®ã‚´ãƒ¼ã‚°ãƒ«", + "item.create.goggles": "エンジニアのゴーグル", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "æ�ºå¸¯åž‹ãƒ–ロックザッパー", - "item.create.handheld_worldshaper": "æ�ºå¸¯åž‹ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚·ã‚§ã‚¤ãƒ‘ー", - "item.create.integrated_circuit": "集ç©�回路", - "item.create.iron_sheet": "鉄æ�¿", + "item.create.handheld_blockzapper": "携帯型ブロックザッパー", + "item.create.handheld_worldshaper": "携帯型ワールドシェイパー", + "item.create.integrated_circuit": "集積回路", + "item.create.iron_sheet": "鉄板", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", - "item.create.polished_rose_quartz": "磨ã�‹ã‚Œã�Ÿãƒ­ãƒ¼ã‚ºã‚¯ã‚©ãƒ¼ãƒ„", + "item.create.polished_rose_quartz": "磨かれたローズクォーツ", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "プロペラ", - "item.create.red_sand_paper": "赤ã�„紙やã�™ã‚Š", - "item.create.refined_radiance": "æ´—ç·´ã�•ã‚Œã�Ÿè¼�ã��", - "item.create.rose_quartz": "ローズクォーツ", - "item.create.sand_paper": "紙やã�™ã‚Š", - "item.create.schematic": "概略図", - "item.create.schematic_and_quill": "概略図ã�¨ç¾½æ ¹ãƒšãƒ³", - "item.create.shadow_steel": "シャドウスãƒ�ール", + "item.create.propeller": "プロペラ", + "item.create.red_sand_paper": "赤い紙やすり", + "item.create.refined_radiance": "洗練された輝き", + "item.create.rose_quartz": "ローズクォーツ", + "item.create.sand_paper": "紙やすり", + "item.create.schematic": "概略図", + "item.create.schematic_and_quill": "概略図と羽根ペン", + "item.create.shadow_steel": "シャドウスチール", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "木ã�®è‚¥æ–™", + "item.create.tree_fertilizer": "木の肥料", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "対称ã�®æ�–", + "item.create.wand_of_symmetry": "対称の杖", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", - "item.create.whisk": "泡立ã�¦å™¨", - "item.create.wrench": "レンãƒ�", - "item.create.zinc_ingot": "亜鉛棒", - "item.create.zinc_nugget": "亜鉛塊", + "item.create.whisk": "泡立て器", + "item.create.wrench": "レンチ", + "item.create.zinc_ingot": "亜鉛棒", + "item.create.zinc_nugget": "亜鉛塊", "_": "->------------------------] Advancements [------------------------<-", @@ -487,334 +487,334 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s ã�¯ç ´ç •ãƒ›ã‚¤ãƒ¼ãƒ«ã�«ã‚ˆã�£ã�¦å‡¦ç�†ã�•ã‚Œã�¾ã�—ã�Ÿ", - "death.attack.create.fan_fire": "%1$s ã�¯ç†±é¢¨ã�§ç„¼æ­»ã�—ã�Ÿ", - "death.attack.create.fan_lava": "%1$s ã�¯æº¶å²©ãƒ•ã‚¡ãƒ³ã�«ã‚ˆã�£ã�¦ç„¼æ­»ã�—ã�Ÿ", - "death.attack.create.mechanical_drill": "%1$s ã�¯ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ‰ãƒªãƒ«ã�«çª�ã��刺ã�•ã�£ã�Ÿ", - "death.attack.create.mechanical_saw": "%1$s ã�¯ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«é‹¸ã�§å�Šåˆ†ã�«ã‚«ãƒƒãƒˆã�•ã‚Œã�Ÿ", - "death.attack.create.cuckoo_clock_explosion": "%1$s ã�¯æ”¹ã�–ã‚“ã�•ã‚Œã�Ÿé³©æ™‚計ã�«çˆ†ç ´ã�•ã‚Œã�Ÿ", + "death.attack.create.crush": "%1$s は破砕ホイールによって処理されました", + "death.attack.create.fan_fire": "%1$s は熱風で焼死した", + "death.attack.create.fan_lava": "%1$s は溶岩ファンによって焼死した", + "death.attack.create.mechanical_drill": "%1$s はメカニカルドリルに突き刺さった", + "death.attack.create.mechanical_saw": "%1$s はメカニカル鋸で半分にカットされた", + "death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された", - "create.block.deployer.damage_source_name": "悪ã�„デプロイヤー", + "create.block.deployer.damage_source_name": "悪いデプロイヤー", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "粉砕", - "create.recipe.milling": "製粉", - "create.recipe.splashing": "一括洗浄", - "create.recipe.splashing.fan": "æµ�れる水ã�®å¾Œã‚�ã�«ãƒ•ã‚¡ãƒ³ã‚’ç½®ã��", - "create.recipe.smoking_via_fan": "一括燻製", - "create.recipe.smoking_via_fan.fan": "ç‚Žã�®å¾Œã‚�ã�«ãƒ•ã‚¡ãƒ³ã‚’ç½®ã��", - "create.recipe.blasting_via_fan": "一括製錬", - "create.recipe.blasting_via_fan.fan": "溶岩ã�®å¾Œã‚�ã�«ãƒ•ã‚¡ãƒ³ã‚’ç½®ã��", - "create.recipe.pressing": "押ã�—ã�¤ã�¶ã�—", - "create.recipe.mixing": "æ··å�ˆ", - "create.recipe.packing": "圧縮", - "create.recipe.mechanical_sawing": "製æ��", - "create.recipe.mechanical_crafting": "メカニカルクラフト", - "create.recipe.block_cutting": "ブロックカット", - "create.recipe.blockzapper_upgrade": "æ�ºå¸¯åž‹ãƒ–ロックザッパー", - "create.recipe.sandpaper_polishing": "紙やã�™ã‚Šã�§ã�®ç ”磨", - "create.recipe.mystery_conversion": "色彩変態", - "create.recipe.processing.catalyst": "触媒", - "create.recipe.processing.chance": "%1$s%%ãƒ�ャンス", - "create.recipe.processing.chanceToReturn": "%1$s%%ãƒ�ャンスã�§æˆ»ã‚‹", + "create.recipe.crushing": "粉砕", + "create.recipe.milling": "製粉", + "create.recipe.splashing": "一括洗浄", + "create.recipe.splashing.fan": "流れる水の後ろにファンを置く", + "create.recipe.smoking_via_fan": "一括燻製", + "create.recipe.smoking_via_fan.fan": "炎の後ろにファンを置く", + "create.recipe.blasting_via_fan": "一括製錬", + "create.recipe.blasting_via_fan.fan": "溶岩の後ろにファンを置く", + "create.recipe.pressing": "押しつぶし", + "create.recipe.mixing": "混合", + "create.recipe.packing": "圧縮", + "create.recipe.mechanical_sawing": "製材", + "create.recipe.mechanical_crafting": "メカニカルクラフト", + "create.recipe.block_cutting": "ブロックカット", + "create.recipe.blockzapper_upgrade": "携帯型ブロックザッパー", + "create.recipe.sandpaper_polishing": "紙やすりでの研磨", + "create.recipe.mystery_conversion": "色彩変態", + "create.recipe.processing.catalyst": "触媒", + "create.recipe.processing.chance": "%1$s%%チャンス", + "create.recipe.processing.chanceToReturn": "%1$s%%チャンスで戻る", - "create.generic.range": "範囲", - "create.generic.radius": "å�Šå¾„", - "create.generic.width": "å¹…", - "create.generic.height": "高ã�•", - "create.generic.length": "é•·ã�•", - "create.generic.speed": "速度", - "create.generic.delay": "é�…延", - "create.generic.unit.ticks": "ティック", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分", + "create.generic.range": "範囲", + "create.generic.radius": "半径", + "create.generic.width": "幅", + "create.generic.height": "高さ", + "create.generic.length": "長さ", + "create.generic.speed": "速度", + "create.generic.delay": "遅延", + "create.generic.unit.ticks": "ティック", + "create.generic.unit.seconds": "秒", + "create.generic.unit.minutes": "分", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "スクロール", - "create.action.confirm": "確èª�", - "create.action.abort": "中止", - "create.action.saveToFile": "ä¿�å­˜", - "create.action.discard": "æ�¨ã�¦ã‚‹", + "create.action.scroll": "スクロール", + "create.action.confirm": "確認", + "create.action.abort": "中止", + "create.action.saveToFile": "保存", + "create.action.discard": "捨てる", - "create.keyinfo.toolmenu": "フォーカスツールメニュー", - "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(ã�“ã�®ä¸–ç•Œã�§)", - "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(ã�“ã�®ä¸–ç•Œã�§)", + "create.keyinfo.toolmenu": "フォーカスツールメニュー", + "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", + "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", - "create.gui.scrollInput.defaultTitle": "オプションをé�¸æŠž:", - "create.gui.scrollInput.scrollToModify": "スクロールã�—ã�¦å¤‰æ›´", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールã�—ã�¦é‡‘é¡�を調整", - "create.gui.scrollInput.scrollToSelect": "スクロールã�—ã�¦é�¸æŠž", - "create.gui.scrollInput.shiftScrollsFaster": "シフトを押ã�—ã�¦ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã‚’加速", - "create.gui.toolmenu.focusKey": "[%1$s] 長押ã�—ã�§ãƒ•ã‚©ãƒ¼ã‚«ã‚¹", - "create.gui.toolmenu.cycle": "[SCROLL] ã�§ã‚µã‚¤ã‚¯ãƒ«", - "create.gui.symmetryWand.mirrorType": "ミラー", - "create.gui.symmetryWand.orientation": "オリエンテーション", + "create.gui.scrollInput.defaultTitle": "オプションを選択:", + "create.gui.scrollInput.scrollToModify": "スクロールして変更", + "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして金額を調整", + "create.gui.scrollInput.scrollToSelect": "スクロールして選択", + "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", + "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカス", + "create.gui.toolmenu.cycle": "[SCROLL] でサイクル", + "create.gui.symmetryWand.mirrorType": "ミラー", + "create.gui.symmetryWand.orientation": "オリエンテーション", - "create.symmetry.mirror.plane": "線対称", - "create.symmetry.mirror.doublePlane": "長方形", - "create.symmetry.mirror.triplePlane": "八角形", + "create.symmetry.mirror.plane": "線対称", + "create.symmetry.mirror.doublePlane": "長方形", + "create.symmetry.mirror.triplePlane": "八角形", - "create.orientation.orthogonal": "直交", - "create.orientation.diagonal": "対角線", - "create.orientation.horizontal": "横型", - "create.orientation.alongZ": "Zã�«æ²¿ã‚‹", - "create.orientation.alongX": "Xã�«æ²¿ã‚‹", + "create.orientation.orthogonal": "直交", + "create.orientation.diagonal": "対角線", + "create.orientation.horizontal": "横型", + "create.orientation.alongZ": "Zに沿る", + "create.orientation.alongX": "Xに沿る", - "create.gui.blockzapper.title": "æ�ºå¸¯åž‹ãƒ–ロックザッパー", - "create.gui.blockzapper.replaceMode": "ç½®æ�›ãƒ¢ãƒ¼ãƒ‰", - "create.gui.blockzapper.searchDiagonal": "対角線ã�«ãƒ•ã‚©ãƒ­ãƒ¼", - "create.gui.blockzapper.searchFuzzy": "マテリアルã�®å¢ƒç•Œã‚’無視", - "create.gui.blockzapper.range": "範囲", - "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードã�Œå¿…è¦�", - "create.gui.blockzapper.patternSection": "模様", - "create.gui.blockzapper.pattern.solid": "æ•·ã��è©°ã‚�", - "create.gui.blockzapper.pattern.checkered": "ãƒ�ェッカーボード", - "create.gui.blockzapper.pattern.inversecheckered": "逆ãƒ�ェッカーボード", - "create.gui.blockzapper.pattern.chance25": "25% ロール", - "create.gui.blockzapper.pattern.chance50": "50% ロール", - "create.gui.blockzapper.pattern.chance75": "75% ロール", - "create.gui.terrainzapper.title": "æ�ºå¸¯åž‹ãƒ¯ãƒ¼ãƒ«ãƒ‰ã‚·ã‚§ã‚¤ãƒ‘ー", - "create.gui.terrainzapper.placement": "é…�ç½®", - "create.gui.terrainzapper.placement.merged": "å�ˆä½µ", - "create.gui.terrainzapper.placement.attached": "æ·»ã�ˆã‚‹", - "create.gui.terrainzapper.placement.inserted": "挿入", - "create.gui.terrainzapper.brush": "磨ã��", - "create.gui.terrainzapper.brush.cuboid": "立方体", - "create.gui.terrainzapper.brush.sphere": "ç�ƒä½“", - "create.gui.terrainzapper.brush.cylinder": "円筒", - "create.gui.terrainzapper.tool": "ツール", - "create.gui.terrainzapper.tool.fill": "埋立", - "create.gui.terrainzapper.tool.place": "設置", - "create.gui.terrainzapper.tool.replace": "ç½®æ�›", - "create.gui.terrainzapper.tool.clear": "削除", - "create.gui.terrainzapper.tool.overlay": "é‡�ã�­ã‚‹", - "create.gui.terrainzapper.tool.flatten": "å¹³å�¦åŒ–", + "create.gui.blockzapper.title": "携帯型ブロックザッパー", + "create.gui.blockzapper.replaceMode": "置換モード", + "create.gui.blockzapper.searchDiagonal": "対角線にフォロー", + "create.gui.blockzapper.searchFuzzy": "マテリアルの境界を無視", + "create.gui.blockzapper.range": "範囲", + "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードが必要", + "create.gui.blockzapper.patternSection": "模様", + "create.gui.blockzapper.pattern.solid": "敷き詰め", + "create.gui.blockzapper.pattern.checkered": "チェッカーボード", + "create.gui.blockzapper.pattern.inversecheckered": "逆チェッカーボード", + "create.gui.blockzapper.pattern.chance25": "25% ロール", + "create.gui.blockzapper.pattern.chance50": "50% ロール", + "create.gui.blockzapper.pattern.chance75": "75% ロール", + "create.gui.terrainzapper.title": "携帯型ワールドシェイパー", + "create.gui.terrainzapper.placement": "配置", + "create.gui.terrainzapper.placement.merged": "合併", + "create.gui.terrainzapper.placement.attached": "添える", + "create.gui.terrainzapper.placement.inserted": "挿入", + "create.gui.terrainzapper.brush": "磨き", + "create.gui.terrainzapper.brush.cuboid": "立方体", + "create.gui.terrainzapper.brush.sphere": "球体", + "create.gui.terrainzapper.brush.cylinder": "円筒", + "create.gui.terrainzapper.tool": "ツール", + "create.gui.terrainzapper.tool.fill": "埋立", + "create.gui.terrainzapper.tool.place": "設置", + "create.gui.terrainzapper.tool.replace": "置換", + "create.gui.terrainzapper.tool.clear": "削除", + "create.gui.terrainzapper.tool.overlay": "重ねる", + "create.gui.terrainzapper.tool.flatten": "平坦化", - "create.terrainzapper.shiftRightClickToSet": "シフト-å�³ã‚¯ãƒªãƒƒã‚¯ã�§å½¢çŠ¶ã‚’é�¸æŠž", + "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", - "create.blockzapper.usingBlock": "使用中: %1$s", - "create.blockzapper.componentUpgrades": "コンãƒ�ーãƒ�ントアップグレード:", - "create.blockzapper.component.body": "ボディー", - "create.blockzapper.component.amplifier": "増幅", - "create.blockzapper.component.accelerator": "加速", - "create.blockzapper.component.retriever": "レトリーãƒ�ー", - "create.blockzapper.component.scope": "範囲", - "create.blockzapper.componentTier.none": "ç„¡ã�—", - "create.blockzapper.componentTier.brass": "真é�®", - "create.blockzapper.componentTier.chromatic": "色彩", - "create.blockzapper.leftClickToSet": "ブロックをシフト-左クリックã�§ãƒžãƒ†ãƒªã‚¢ãƒ«ã‚’é�¸æŠž", - "create.blockzapper.empty": "ブロックä¸�足!", + "create.blockzapper.usingBlock": "使用中: %1$s", + "create.blockzapper.componentUpgrades": "コンポーネントアップグレード:", + "create.blockzapper.component.body": "ボディー", + "create.blockzapper.component.amplifier": "増幅", + "create.blockzapper.component.accelerator": "加速", + "create.blockzapper.component.retriever": "レトリーバー", + "create.blockzapper.component.scope": "範囲", + "create.blockzapper.componentTier.none": "無し", + "create.blockzapper.componentTier.brass": "真鍮", + "create.blockzapper.componentTier.chromatic": "色彩", + "create.blockzapper.leftClickToSet": "ブロックをシフト-左クリックでマテリアルを選択", + "create.blockzapper.empty": "ブロック不足!", - "create.contraptions.movement_mode": "移動モード", - "create.contraptions.movement_mode.move_place": "å�œæ­¢æ™‚ã�«å¸¸ã�«é…�ç½®", - "create.contraptions.movement_mode.move_place_returned": "開始ä½�ç½®ã�®ã�¿ã�«é…�ç½®", - "create.contraptions.movement_mode.move_never_place": "アンカーã�Œç ´å£Šã�•ã‚Œã�Ÿã�¨ã��ã�«ã�®ã�¿é…�ç½®", - "create.contraptions.movement_mode.rotate_place": "å�œæ­¢æ™‚ã�«å¸¸ã�«é…�ç½®", - "create.contraptions.movement_mode.rotate_place_returned": "åˆ�期角度付近ã�®ã�¿é…�ç½®", - "create.contraptions.movement_mode.rotate_never_place": "アンカーã�Œç ´å£Šã�•ã‚Œã�Ÿã�¨ã��ã�«ã�®ã�¿é…�ç½®", + "create.contraptions.movement_mode": "移動モード", + "create.contraptions.movement_mode.move_place": "停止時に常に配置", + "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", + "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", + "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", + "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", + "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.logistics.filter": "フィルタ", + "create.logistics.filter": "フィルタ", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", - "create.gui.goggles.generator_stats": "ジェãƒ�レータã�®çµ±è¨ˆ:", - "create.gui.goggles.kinetic_stats": "動力ã�®çµ±è¨ˆ:", - "create.gui.goggles.at_current_speed": "ç�¾åœ¨ã�®é€Ÿåº¦", - "create.gui.goggles.base_value": "基本値", - "create.gui.gauge.info_header": "計器ã�®æƒ…å ±:", - "create.gui.speedometer.title": "回転速度", - "create.gui.stressometer.title": "ãƒ�ットワークã�®å¿œåŠ›", - "create.gui.stressometer.capacity": "残りã�®å®¹é‡�", - "create.gui.stressometer.overstressed": "超é�Žå¿œåŠ›", - "create.gui.stressometer.no_rotation": "回転ã�ªã�—", - "create.gui.contraptions.not_fast_enough": "ã�“ã�® %1$s ã�¯_å��分ã�ª_回転を_ã�—ã�¦ã�„ã�ªã�„_よã�†ã�§ã�™ã€‚", - "create.gui.contraptions.network_overstressed": "ã�“ã�®ä»•æŽ›ã�‘ã�¯_超é�Žå¿œåŠ›_ã�®ã‚ˆã�†ã�§ã�™ã€‚ã�•ã‚‰ã�«ã‚½ãƒ¼ã‚¹ã‚’追加ã�™ã‚‹ã�‹ã€�コンãƒ�ーãƒ�ントã�«_è² è�·ã‚’ã�‹ã�‘_応力ã�®å½±éŸ¿ã‚’大ã��ã��ã�—ã�¾ã�™ã€‚", - "create.gui.adjustable_crate.title": "調整å�¯èƒ½ã�ªã‚¯ãƒ¬ãƒ¼ãƒˆ", - "create.gui.adjustable_crate.storageSpace": "å�Žç´�スペース", - "create.gui.stockpile_switch.title": "在庫スイッãƒ�", - "create.gui.stockpile_switch.lowerLimit": "下é™�ã�—ã��ã�„値", - "create.gui.stockpile_switch.upperLimit": "上é™�ã�—ã��ã�„値", - "create.gui.stockpile_switch.startAt": "開始信å�·", - "create.gui.stockpile_switch.startAbove": "以上ã�®é–‹å§‹ä¿¡å�·", - "create.gui.stockpile_switch.stopAt": "å�œæ­¢ä¿¡å�·", - "create.gui.stockpile_switch.stopBelow": "以下ã�®å�œæ­¢ä¿¡å�·", - "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", - "create.gui.sequenced_gearshift.instruction": "命令", - "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "è·�離", - "create.gui.sequenced_gearshift.instruction.wait": "å¾…æ©Ÿ", - "create.gui.sequenced_gearshift.instruction.wait.duration": "期間", - "create.gui.sequenced_gearshift.instruction.end": "終了", - "create.gui.sequenced_gearshift.speed": "速度, æ–¹å�‘", - "create.gui.sequenced_gearshift.speed.forward": "入力速度, フォワード", - "create.gui.sequenced_gearshift.speed.forward_fast": "å€�速, フォワード", - "create.gui.sequenced_gearshift.speed.back": "入力速度, å��転", - "create.gui.sequenced_gearshift.speed.back_fast": "å€�速, å��転", + "create.gui.goggles.generator_stats": "ジェネレータの統計:", + "create.gui.goggles.kinetic_stats": "動力の統計:", + "create.gui.goggles.at_current_speed": "現在の速度", + "create.gui.goggles.base_value": "基本値", + "create.gui.gauge.info_header": "計器の情報:", + "create.gui.speedometer.title": "回転速度", + "create.gui.stressometer.title": "ネットワークの応力", + "create.gui.stressometer.capacity": "残りの容量", + "create.gui.stressometer.overstressed": "超過応力", + "create.gui.stressometer.no_rotation": "回転なし", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", + "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらにソースを追加するか、コンポーネントに_負荷をかけ_応力の影響を大きくします。", + "create.gui.adjustable_crate.title": "調整可能なクレート", + "create.gui.adjustable_crate.storageSpace": "収納スペース", + "create.gui.stockpile_switch.title": "在庫スイッチ", + "create.gui.stockpile_switch.lowerLimit": "下限しきい値", + "create.gui.stockpile_switch.upperLimit": "上限しきい値", + "create.gui.stockpile_switch.startAt": "開始信号", + "create.gui.stockpile_switch.startAbove": "以上の開始信号", + "create.gui.stockpile_switch.stopAt": "停止信号", + "create.gui.stockpile_switch.stopBelow": "以下の停止信号", + "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", + "create.gui.sequenced_gearshift.instruction": "命令", + "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", + "create.gui.sequenced_gearshift.instruction.wait": "待機", + "create.gui.sequenced_gearshift.instruction.wait.duration": "期間", + "create.gui.sequenced_gearshift.instruction.end": "終了", + "create.gui.sequenced_gearshift.speed": "速度, 方向", + "create.gui.sequenced_gearshift.speed.forward": "入力速度, フォワード", + "create.gui.sequenced_gearshift.speed.forward_fast": "倍速, フォワード", + "create.gui.sequenced_gearshift.speed.back": "入力速度, 反転", + "create.gui.sequenced_gearshift.speed.back_fast": "倍速, 反転", - "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "最åˆ�ã�®ä½�置セット。", - "create.schematicAndQuill.secondPos": "2番目ã�®ä½�置セット。", - "create.schematicAndQuill.noTarget": "[Ctrl] を押ã�—ã�Ÿã�¾ã�¾ã�§ç©ºæ°—ブロックをé�¸æŠžã�—ã�¾ã�™", - "create.schematicAndQuill.abort": "é�¸æŠžã‚’削除ã�—ã�¾ã�—ã�Ÿã€‚", - "create.schematicAndQuill.prompt": "概略図ã�®å��å‰�を入力ã�—ã�¦ã��ã� ã�•ã�„:", + "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "最初の位置セット。", + "create.schematicAndQuill.secondPos": "2番目の位置セット。", + "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", + "create.schematicAndQuill.abort": "選択を削除しました。", + "create.schematicAndQuill.prompt": "概略図の名前を入力してください:", "create.schematicAndQuill.fallbackName": "My Schematic", - "create.schematicAndQuill.saved": "%1$s ã�¨ã�—ã�¦ä¿�å­˜ã�—ã�¾ã�—ã�Ÿ", + "create.schematicAndQuill.saved": "%1$s として保存しました", - "create.schematic.invalid": "[!] 無効ã�ªã‚¢ã‚¤ãƒ†ãƒ -代ã‚�ã‚Šã�«æ¦‚略図テーブルを使用ã�—ã�¦ã��ã� ã�•ã�„", - "create.schematic.position": "ä½�ç½®", - "create.schematic.rotation": "回転", - "create.schematic.rotation.none": "ç„¡ã�—", - "create.schematic.rotation.cw90": "時計回りã�«90", - "create.schematic.rotation.cw180": "時計回りã�«180", - "create.schematic.rotation.cw270": "時計回りã�«270", - "create.schematic.mirror": "ミラー", - "create.schematic.mirror.none": "ç„¡ã�—", - "create.schematic.mirror.frontBack": "æ­£é�¢-背é�¢", - "create.schematic.mirror.leftRight": "å·¦-å�³", - "create.schematic.tool.deploy": "é…�ç½®ã�™ã‚‹", - "create.schematic.tool.move": "XZを移動", - "create.schematic.tool.movey": "Yを移動", - "create.schematic.tool.rotate": "回転", - "create.schematic.tool.print": "å�°åˆ·", - "create.schematic.tool.flip": "フリップ", - "create.schematic.tool.deploy.description.0": "構造を特定ã�®å ´æ‰€ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.deploy.description.1": "地é�¢ã‚’å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦é…�ç½®ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.deploy.description.2": "[Ctrl] を押ã�—ã�Ÿã�¾ã�¾ã€�一定ã�®è·�離ã�§é�¸æŠžã�—ã�¾ã�™ã€‚", - "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールã�—ã�¦è·�離を変更ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.move.description.0": "概略図を水平ã�«å‹•ã�‹ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.move.description.1": "概略図をãƒ�イントã�—ã€� [Ctrl]-スクロールã�—ã�¦æŠ¼ã�—出ã�—ã�¾ã�™ã€‚", + "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使用してください", + "create.schematic.position": "位置", + "create.schematic.rotation": "回転", + "create.schematic.rotation.none": "無し", + "create.schematic.rotation.cw90": "時計回りに90", + "create.schematic.rotation.cw180": "時計回りに180", + "create.schematic.rotation.cw270": "時計回りに270", + "create.schematic.mirror": "ミラー", + "create.schematic.mirror.none": "無し", + "create.schematic.mirror.frontBack": "正面-背面", + "create.schematic.mirror.leftRight": "左-右", + "create.schematic.tool.deploy": "配置する", + "create.schematic.tool.move": "XZを移動", + "create.schematic.tool.movey": "Yを移動", + "create.schematic.tool.rotate": "回転", + "create.schematic.tool.print": "印刷", + "create.schematic.tool.flip": "フリップ", + "create.schematic.tool.deploy.description.0": "構造を特定の場所に移動します。", + "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します。", + "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します。", + "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します。", + "create.schematic.tool.move.description.0": "概略図を水平に動かします。", + "create.schematic.tool.move.description.1": "概略図をポイントし、 [Ctrl]-スクロールして押し出します。", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "概略図を垂直ã�«å‹•ã�‹ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールã�—ã�¦ä¸Šä¸‹ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.movey.description.0": "概略図を垂直に動かします。", + "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します。", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "概略図をã��ã�®ä¸­å¿ƒã‚’中心ã�«å›žè»¢ã�•ã�›ã�¾ã�™ã€‚", - "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールã�—ã�¦90度回転ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます。", + "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します。", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "構造物をå�³åº§ã�«ãƒ¯ãƒ¼ãƒ«ãƒ‰ã�«é…�ç½®ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.print.description.1": "[å�³ã‚¯ãƒªãƒƒã‚¯] ã�—ã�¦ã€�ç�¾åœ¨ã�®å ´æ‰€ã�¸ã�®é…�置を確èª�ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.print.description.2": "ã�“ã�®ãƒ„ールã�¯ã‚¯ãƒªã‚¨ã‚¤ãƒ†ã‚£ãƒ–モード専用ã�§ã�™ã€‚", + "create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します。", + "create.schematic.tool.print.description.1": "[右クリック] して、現在の場所への配置を確認します。", + "create.schematic.tool.print.description.2": "このツールはクリエイティブモード専用です。", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "é�¸æŠžã�—ã�Ÿé�¢ã�«æ²¿ã�£ã�¦æ¦‚略図をå��転ã�—ã�¾ã�™ã€‚", - "create.schematic.tool.flip.description.1": "概略図をãƒ�イントã�—ã€� [CTRL]-スクロールã�—ã�¦å��転ã�—ã�¾ã�™ã€‚", + "create.schematic.tool.flip.description.0": "選択した面に沿って概略図を反転します。", + "create.schematic.tool.flip.description.1": "概略図をポイントし、 [CTRL]-スクロールして反転します。", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "å�ŒæœŸã�—ã�¦ã�„ã�¾ã�™...", - "create.schematics.uploadTooLarge": "概略図ã�Œå¤§ã��ã�™ã�Žã�¾ã�™ã€‚", - "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズã�¯:", + "create.schematics.synchronizing": "同期しています...", + "create.schematics.uploadTooLarge": "概略図が大きすぎます。", + "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", - "create.gui.schematicTable.title": "概略図テーブル", - "create.gui.schematicTable.availableSchematics": "利用å�¯èƒ½ã�ªæ¦‚略図", - "create.gui.schematicTable.noSchematics": "ä¿�å­˜ã�•ã‚Œã�Ÿæ¦‚略図ã�¯ã�‚ã‚Šã�¾ã�›ã‚“", - "create.gui.schematicTable.uploading": "アップロードã�—ã�¦ã�„ã�¾ã�™...", - "create.gui.schematicTable.finished": "アップロードã�Œå®Œäº†ã�—ã�¾ã�—ã�Ÿï¼�", - "create.gui.schematicannon.title": "概略図砲", - "create.gui.schematicannon.settingsTitle": "é…�置設定", - "create.gui.schematicannon.listPrinter": "æ��料リストプリンター", - "create.gui.schematicannon.gunpowderLevel": "ç�«è–¬ã�¯ã�‚ã�¨ %1$s%% 残ã�£ã�¦ã�„ã�¾ã�™", - "create.gui.schematicannon.shotsRemaining": "残りã�®ã‚·ãƒ§ãƒƒãƒˆæ•°: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "ãƒ�ックアップã�‚ã‚Š: %1$s", - "create.gui.schematicannon.optionEnabled": "ç�¾åœ¨æœ‰åŠ¹", - "create.gui.schematicannon.optionDisabled": "ç�¾åœ¨ç„¡åŠ¹", - "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置ã��æ�›ã�ˆã�ªã�„", - "create.gui.schematicannon.option.replaceWithSolid": "固体を固体ã�«ç½®ã��æ�›ã�ˆã‚‹", - "create.gui.schematicannon.option.replaceWithAny": "固体を任æ„�ã�®ã‚‚ã�®ã�«ç½®ã��æ�›ã�ˆã‚‹", - "create.gui.schematicannon.option.replaceWithEmpty": "空ã�®å›ºä½“ã�¨äº¤æ�›", - "create.gui.schematicannon.option.skipMissing": "ä¸�足ã�—ã�¦ã�„るブロックをスキップ", - "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティをä¿�è­·ã�™ã‚‹", - "create.gui.schematicannon.option.skipMissing.description": "大砲ã�Œé…�ç½®ã�«å¿…è¦�ã�ªãƒ–ロックを見ã�¤ã�‘られã�ªã�„å ´å�ˆã€�次ã�®å ´æ‰€ã�«é€²ã�¿ã�¾ã�™ã€‚", - "create.gui.schematicannon.option.skipTileEntities.description": "大砲ã�¯ã€�ãƒ�ェストã�ªã�©ã�®ãƒ‡ãƒ¼ã‚¿ä¿�æŒ�ブロックã�®äº¤æ�›ã‚’回é�¿ã�—ã�¾ã�™ã€‚", - "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲ã�¯ã€�ã��ã�®ä½œæ¥­é ˜åŸŸã�®å›ºä½“ブロックを置ã��æ�›ã�ˆã‚‹ã�“ã�¨ã�¯ã�ªã��ã€�é�žå›ºä½“ã�¨ç©ºæ°—ã�®ã�¿ã‚’ç½®ã��æ�›ã�ˆã�¾ã�™ã€‚", - "create.gui.schematicannon.option.replaceWithSolid.description": "大砲ã�¯ã€�概略図ã�®ä½�ç½®ã�«ã‚½ãƒªãƒƒãƒ‰ãƒ–ロックã�Œå�«ã�¾ã‚Œã�¦ã�„ã‚‹å ´å�ˆã�«ã�®ã�¿ã€�ã��ã�®ä½œæ¥­é ˜åŸŸã�®ã‚½ãƒªãƒƒãƒ‰ãƒ–ロックを置ã��æ�›ã�ˆã�¾ã�™ã€‚", - "create.gui.schematicannon.option.replaceWithAny.description": "概略図ã�®ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã�«ãƒ–ロックã�Œå�«ã�¾ã‚Œã�¦ã�„ã‚‹å ´å�ˆã€�大砲ã�¯ã��ã�®ä½œæ¥­é ˜åŸŸã�®å€‹ä½“ブロックを置ã��æ�›ã�ˆã�¾ã�™ã€‚", - "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲ã�¯ã€�空気ã�«ç½®ã��æ�›ã�ˆã‚‰ã‚Œã�Ÿã‚‚ã�®ã‚’å�«ã‚�ã€�ã��ã�®ä½œæ¥­ã‚¨ãƒªã‚¢å†…ã�®ã�™ã�¹ã�¦ã�®ãƒ–ロックを一掃ã�—ã�¾ã�™ã€‚", + "create.gui.schematicTable.title": "概略図テーブル", + "create.gui.schematicTable.availableSchematics": "利用可能な概略図", + "create.gui.schematicTable.noSchematics": "保存された概略図はありません", + "create.gui.schematicTable.uploading": "アップロードしています...", + "create.gui.schematicTable.finished": "アップロードが完了しました!", + "create.gui.schematicannon.title": "概略図砲", + "create.gui.schematicannon.settingsTitle": "配置設定", + "create.gui.schematicannon.listPrinter": "材料リストプリンター", + "create.gui.schematicannon.gunpowderLevel": "火薬はあと %1$s%% 残っています", + "create.gui.schematicannon.shotsRemaining": "残りのショット数: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップあり: %1$s", + "create.gui.schematicannon.optionEnabled": "現在有効", + "create.gui.schematicannon.optionDisabled": "現在無効", + "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", + "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", + "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", + "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", + "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", + "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", + "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", + "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", + "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業領域の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", + "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置にソリッドブロックが含まれている場合にのみ、その作業領域のソリッドブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithAny.description": "概略図のロケーションにブロックが含まれている場合、大砲はその作業領域の個体ブロックを置き換えます。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", - "create.schematicannon.status.idle": "å�œæ­¢ä¸­", - "create.schematicannon.status.ready": "準備完了", - "create.schematicannon.status.running": "稼åƒ�中", - "create.schematicannon.status.finished": "完æˆ�", - "create.schematicannon.status.paused": "一時å�œæ­¢ä¸­", - "create.schematicannon.status.stopped": "å�œæ­¢", - "create.schematicannon.status.noGunpowder": "ç�«è–¬ä¸�足", - "create.schematicannon.status.targetNotLoaded": "ブロックã�Œèª­ã�¿è¾¼ã�¾ã‚Œã�¦ã�„ã�¾ã�›ã‚“", - "create.schematicannon.status.targetOutsideRange": "ターゲットã�Œé� ã�™ã�Žã�¾ã�™", - "create.schematicannon.status.searching": "検索中", - "create.schematicannon.status.skipping": "スキップ", - "create.schematicannon.status.missingBlock": "ä¸�明ã�ªãƒ–ロック:", - "create.schematicannon.status.placing": "é…�置中", - "create.schematicannon.status.clearing": "ブロックをクリア中", - "create.schematicannon.status.schematicInvalid": "概略図ã�Œç„¡åŠ¹ã�§ã�™", - "create.schematicannon.status.schematicNotPlaced": "é…�ç½®ã�•ã‚Œã�¦ã�„ã�ªã�„概略図ã�§ã�™", - "create.schematicannon.status.schematicExpired": "概略図ファイルã�ŒæœŸé™�切れã�§ã�™", + "create.schematicannon.status.idle": "停止中", + "create.schematicannon.status.ready": "準備完了", + "create.schematicannon.status.running": "稼働中", + "create.schematicannon.status.finished": "完成", + "create.schematicannon.status.paused": "一時停止中", + "create.schematicannon.status.stopped": "停止", + "create.schematicannon.status.noGunpowder": "火薬不足", + "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", + "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", + "create.schematicannon.status.searching": "検索中", + "create.schematicannon.status.skipping": "スキップ", + "create.schematicannon.status.missingBlock": "不明なブロック:", + "create.schematicannon.status.placing": "配置中", + "create.schematicannon.status.clearing": "ブロックをクリア中", + "create.schematicannon.status.schematicInvalid": "概略図が無効です", + "create.schematicannon.status.schematicNotPlaced": "配置されていない概略図です", + "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", - "create.gui.filter.blacklist": "ブラックリスト", - "create.gui.filter.blacklist.description": "上記ã�®ã�„ã�šã‚Œã�«ã‚‚一致ã�—ã�ªã�„å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚ 空ã�®ãƒ–ラックリストã�¯ã�™ã�¹ã�¦ã‚’å�—ã�‘入れã�¾ã�™ã€‚", - "create.gui.filter.whitelist": "ホワイトリスト", - "create.gui.filter.whitelist.description": "上記ã�®ã�„ã�šã‚Œã�‹ã�«ä¸€è‡´ã�—ã�Ÿå ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚ 空ã�®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã�¯ã�™ã�¹ã�¦ã‚’æ‹’å�¦ã�—ã�¾ã�™ã€‚", - "create.gui.filter.respect_data": "データをé‡�視", - "create.gui.filter.respect_data.description": "アイテムã�¯ã€�è€�久性ã€�エンãƒ�ャントã€�ã��ã�®ä»–ã�®å±žæ€§ã‚‚一致ã�™ã‚‹å ´å�ˆã�«ã�®ã�¿ä¸€è‡´ã�—ã�¾ã�™ã€‚", - "create.gui.filter.ignore_data": "データを無視", - "create.gui.filter.ignore_data.description": "アイテムã�¯å±žæ€§ã�«é–¢ä¿‚ã�ªã��一致ã�—ã�¾ã�™ã€‚", + "create.gui.filter.blacklist": "ブラックリスト", + "create.gui.filter.blacklist.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。 空のブラックリストはすべてを受け入れます。", + "create.gui.filter.whitelist": "ホワイトリスト", + "create.gui.filter.whitelist.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。 空のホワイトリストはすべてを拒否します。", + "create.gui.filter.respect_data": "データを重視", + "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", + "create.gui.filter.ignore_data": "データを無視", + "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", - "create.item_attributes.placeable": "設置å�¯èƒ½ã�‹", - "create.item_attributes.consumable": "食ã�¹ã‚‰ã‚Œã‚‹ã�‹", - "create.item_attributes.smeltable": "精錬å�¯èƒ½ã�‹", - "create.item_attributes.washable": "æ´—ã�ˆã‚‹ã�‹", - "create.item_attributes.smokable": "燻製å�¯èƒ½ã�‹", - "create.item_attributes.blastable": "高炉ã�§è£½éŒ¬å�¯èƒ½ã�‹", - "create.item_attributes.enchanted": "エンãƒ�ャント済ã�¿ã�‹", - "create.item_attributes.damaged": "ç ´æ��ã�—ã�¦ã‚‹ã�‹", - "create.item_attributes.badly_damaged": "ã�²ã�©ã��æ��å‚·ã�—ã�¦ã‚‹ã�‹", - "create.item_attributes.not_stackable": "スタックå�¯èƒ½ã�‹", - "create.item_attributes.equipable": "装備å�¯èƒ½ã�‹", - "create.item_attributes.furnace_fuel": "ã�‹ã�¾ã�©ã�®ç‡ƒæ–™ã�‹", - "create.item_attributes.in_tag": "%1$s ã�®ã‚¿ã‚°ã�Œä»˜ã�‘られã�¦ã‚‹ã�‹", - "create.item_attributes.in_item_group": "%1$s ã�«å±žã�—ã�¦ã‚‹ã�‹", - "create.item_attributes.added_by": "%1$s ã�«ã‚ˆã�£ã�¦è¿½åŠ ã�•ã‚Œã�Ÿã�‹", + "create.item_attributes.placeable": "設置可能か", + "create.item_attributes.consumable": "食べられるか", + "create.item_attributes.smeltable": "精錬可能か", + "create.item_attributes.washable": "洗えるか", + "create.item_attributes.smokable": "燻製可能か", + "create.item_attributes.blastable": "高炉で製錬可能か", + "create.item_attributes.enchanted": "エンチャント済みか", + "create.item_attributes.damaged": "破損してるか", + "create.item_attributes.badly_damaged": "ひどく損傷してるか", + "create.item_attributes.not_stackable": "スタック可能か", + "create.item_attributes.equipable": "装備可能か", + "create.item_attributes.furnace_fuel": "かまどの燃料か", + "create.item_attributes.in_tag": "%1$s のタグが付けられてるか", + "create.item_attributes.in_item_group": "%1$s に属してるか", + "create.item_attributes.added_by": "%1$s によって追加されたか", - "create.gui.attribute_filter.no_selected_attributes": "属性ã�Œé�¸æŠžã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“", - "create.gui.attribute_filter.selected_attributes": "é�¸æŠžã�•ã‚Œã�Ÿå±žæ€§:", - "create.gui.attribute_filter.whitelist_disjunctive": "ホワイトリスト(ã�©ã‚Œã�‹ï¼‰", - "create.gui.attribute_filter.whitelist_disjunctive.description": "é�¸æŠžã�—ã�Ÿå±žæ€§ã�®ã�„ã�šã‚Œã�‹ã‚’æŒ�ã�£ã�¦ã�„ã‚‹å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚", - "create.gui.attribute_filter.whitelist_conjunctive": "ホワイトリスト(全ã�¦ï¼‰", - "create.gui.attribute_filter.whitelist_conjunctive.description": "é�¸æŠžã�—ã�Ÿå±žæ€§ã‚’ã�™ã�¹ã�¦ã‚’æŒ�ã�£ã�¦ã�„ã‚‹å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚", - "create.gui.attribute_filter.blacklist": "ブラックリスト", - "create.gui.attribute_filter.blacklist.description": "é�¸æŠžã�•ã‚Œã�Ÿå±žæ€§ã‚’æŒ�ã�Ÿã�ªã�„å ´å�ˆã€�アイテムã�¯é€šã‚ŠæŠœã�‘ã�¾ã�™ã€‚", - "create.gui.attribute_filter.add_reference_item": "å�‚照アイテムを追加", + "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", + "create.gui.attribute_filter.selected_attributes": "選択された属性:", + "create.gui.attribute_filter.whitelist_disjunctive": "ホワイトリスト(どれか)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.whitelist_conjunctive": "ホワイトリスト(全て)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.blacklist": "ブラックリスト", + "create.gui.attribute_filter.blacklist.description": "選択された属性を持たない場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", - "create.tooltip.holdKey": "[%1$s] を長押ã�—", - "create.tooltip.holdKeyOrKey": "[%1$s] ã�¾ã�Ÿã�¯ [%2$s] を長押ã�—", + "create.tooltip.holdKey": "[%1$s] を長押し", + "create.tooltip.holdKeyOrKey": "[%1$s] または [%2$s] を長押し", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "スピードè¦�件: %1$s", - "create.tooltip.speedRequirement.none": "ç„¡ã�—", - "create.tooltip.speedRequirement.medium": "中速", - "create.tooltip.speedRequirement.high": "高速", - "create.tooltip.stressImpact": "応力ã�¸ã�®å½±éŸ¿: %1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "超é�Žå¿œåŠ›", - "create.tooltip.capacityProvided": "応力許容é‡�: %1$s", - "create.tooltip.capacityProvided.low": "å°�", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.capacityProvided.asGenerator": "(ジェãƒ�レータã�¨ã�—ã�¦)", - "create.tooltip.generationSpeed": "%1$s %2$sを生æˆ�", - "create.tooltip.analogStrength": "アナログ強度: %1$s/15", + "create.tooltip.speedRequirement": "スピード要件: %1$s", + "create.tooltip.speedRequirement.none": "無し", + "create.tooltip.speedRequirement.medium": "中速", + "create.tooltip.speedRequirement.high": "高速", + "create.tooltip.stressImpact": "応力への影響: %1$s", + "create.tooltip.stressImpact.low": "低", + "create.tooltip.stressImpact.medium": "中", + "create.tooltip.stressImpact.high": "高", + "create.tooltip.stressImpact.overstressed": "超過応力", + "create.tooltip.capacityProvided": "応力許容量: %1$s", + "create.tooltip.capacityProvided.low": "小", + "create.tooltip.capacityProvided.medium": "中", + "create.tooltip.capacityProvided.high": "大", + "create.tooltip.capacityProvided.asGenerator": "(ジェネレータとして)", + "create.tooltip.generationSpeed": "%1$s %2$sを生成", + "create.tooltip.analogStrength": "アナログ強度: %1$s/15", - "create.mechanical_mixer.min_ingredients": "最å°� æ��æ–™", + "create.mechanical_mixer.min_ingredients": "最小 材料", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -826,317 +826,317 @@ "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーãƒ�ーティックã�¯ç�¾åœ¨ %s ms é�…ã��ã�ªã�£ã�¦ã�„ã�¾ã�™ :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーãƒ�ーティックã�Œ %s ms é�…ã��ã�ªã‚Šã�¾ã�—ã�Ÿ >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーãƒ�ーティックã�Œé€šå¸¸ã�®é€Ÿåº¦ã�«æˆ»ã‚Šã�¾ã�—ã�Ÿ:D", - "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用ã�—ã�¦ã‚µãƒ¼ãƒ�ーã�®ãƒ†ã‚£ãƒƒã‚¯ã‚’通常ã�®é€Ÿåº¦ã�«æˆ»ã�—ã�¾ã�™", - "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用ã�—ã�¦ã€�サーãƒ�ーã�®ãƒ†ã‚£ãƒƒã‚¯ã‚’æ„�図的ã�«é�…ã��ã�—ã�¾ã�™", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーバーティックが通常の速度に戻りました:D", + "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用してサーバーのティックを通常の速度に戻します", + "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "概略図砲ã�Œç™ºå°„ã�™ã‚‹", - "create.subtitle.schematicannon_finish": "概略図砲ã�Œçµ‚了ã�™ã‚‹", - "create.subtitle.slime_added": "スライムスクイーズ", - "create.subtitle.mechanical_press_activation": "メカニカルプレスã�Œä½œå‹•ã�™ã‚‹", - "create.subtitle.mechanical_press_item_break": "金属クランク", - "create.subtitle.blockzapper_place": "ブロックザップã�•ã‚Œã‚‹", - "create.subtitle.blockzapper_confirm": "アファーマティブディン", - "create.subtitle.blockzapper_deny": "衰退ã�™ã‚‹ãƒ–ープ", - "create.subtitle.block_funnel_eat": "ファンãƒ�ルCHOMPS", + "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", + "create.subtitle.schematicannon_finish": "概略図砲が終了する", + "create.subtitle.slime_added": "スライムスクイーズ", + "create.subtitle.mechanical_press_activation": "メカニカルプレスが作動する", + "create.subtitle.mechanical_press_item_break": "金属クランク", + "create.subtitle.blockzapper_place": "ブロックザップされる", + "create.subtitle.blockzapper_confirm": "アファーマティブディン", + "create.subtitle.blockzapper_deny": "衰退するブープ", + "create.subtitle.block_funnel_eat": "ファンネルCHOMPS", "_": "->------------------------] Item Descriptions [------------------------<-", - "item.create.example_item.tooltip": "アイテムã�®ä¾‹ï¼ˆã�“ã�®ãƒ„ールãƒ�ップã�Œå­˜åœ¨ã�™ã‚‹å�˜ã�ªã‚‹ãƒžãƒ¼ã‚«ãƒ¼ï¼‰", - "item.create.example_item.tooltip.summary": "アイテムã�®ç°¡å�˜ã�ªèª¬æ˜Žã€‚ _アンダースコア_用語を強調表示ã�—ã�¾ã�™ã€‚", - "item.create.example_item.tooltip.condition1": "ã�“ã‚Œã�¯", - "item.create.example_item.tooltip.behaviour1": "次ã�«ã€�ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�¯ã�“れを行ã�„ã�¾ã�™ã€‚ (行動ã�¯ã‚·ãƒ•ãƒˆã�§ç¤ºã�•ã‚Œã�¾ã�™ï¼‰", - "item.create.example_item.tooltip.condition2": "ã��ã�—ã�¦ã�“ã‚Œã�¯", - "item.create.example_item.tooltip.behaviour2": "ã�‚ã�ªã�Ÿã�¯å¥½ã��ã�ªã� ã�‘行動を追加ã�™ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™", - "item.create.example_item.tooltip.control1": "Ctrlを押ã�—ã�Ÿã�¨ã��", - "item.create.example_item.tooltip.action1": "ã�“れらã�®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã�Œè¡¨ç¤ºã�•ã‚Œã�¾ã�™ã€‚", + "item.create.example_item.tooltip": "アイテムの例(このツールチップが存在する単なるマーカー)", + "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。 _アンダースコア_用語を強調表示します。", + "item.create.example_item.tooltip.condition1": "これは", + "item.create.example_item.tooltip.behaviour1": "次に、このアイテムはこれを行います。 (行動はシフトで示されます)", + "item.create.example_item.tooltip.condition2": "そしてこれは", + "item.create.example_item.tooltip.behaviour2": "あなたは好きなだけ行動を追加することができます", + "item.create.example_item.tooltip.control1": "Ctrlを押したとき", + "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", - "item.create.wand_of_symmetry.tooltip": "対称性ã�Œå¿…è¦�", - "item.create.wand_of_symmetry.tooltip.summary": "構æˆ�ã�•ã‚Œã�Ÿãƒ—レーン全体ã�®ãƒ–ロックé…�置を完全ã�«ãƒŸãƒ©ãƒ¼ãƒªãƒ³ã‚°ã�—ã�¾ã�™ã€‚", - "item.create.wand_of_symmetry.tooltip.condition1": "ホットãƒ�ーã�«ã�‚ã‚‹ã�¨ã��", - "item.create.wand_of_symmetry.tooltip.behaviour1": "アクティブã�®ã�¾ã�¾", - "item.create.wand_of_symmetry.tooltip.control1": "地é�¢ã‚’å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.wand_of_symmetry.tooltip.action1": "ミラーを_作æˆ�_ã�¾ã�Ÿã�¯_移動_", - "item.create.wand_of_symmetry.tooltip.control2": "空中をå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.wand_of_symmetry.tooltip.action2": "アクティブã�ªãƒŸãƒ©ãƒ¼ã‚’_削除_", - "item.create.wand_of_symmetry.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "item.create.wand_of_symmetry.tooltip": "対称性が必要", + "item.create.wand_of_symmetry.tooltip.summary": "構成されたプレーン全体のブロック配置を完全にミラーリングします。", + "item.create.wand_of_symmetry.tooltip.condition1": "ホットバーにあるとき", + "item.create.wand_of_symmetry.tooltip.behaviour1": "アクティブのまま", + "item.create.wand_of_symmetry.tooltip.control1": "地面を右クリックしたとき", + "item.create.wand_of_symmetry.tooltip.action1": "ミラーを_作成_または_移動_", + "item.create.wand_of_symmetry.tooltip.control2": "空中を右クリックしたとき", + "item.create.wand_of_symmetry.tooltip.action2": "アクティブなミラーを_削除_", + "item.create.wand_of_symmetry.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_を開きます", - "item.create.handheld_blockzapper.tooltip": "ブロックザッパー", - "item.create.handheld_blockzapper.tooltip.summary": "離れã�Ÿå ´æ‰€ã�«ãƒ–ロックをé…�ç½®ã�¾ã�Ÿã�¯äº¤æ�›ã�™ã‚‹ã�Ÿã‚�ã�®æ–°ã�—ã�„ガジェット。", - "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックã�—ã�Ÿã�¨ã��", - "item.create.handheld_blockzapper.tooltip.action1": "ターゲットã�®ãƒ–ロックをã�“ã�®ãƒ„ールã�«è¨­å®šã�—ã�¾ã�™ã€‚", - "item.create.handheld_blockzapper.tooltip.control2": "ブロックをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_é…�ç½®_ã�¾ã�Ÿã�¯_ç½®æ�›_ã�—ã�¾ã�™ã€‚", - "item.create.handheld_blockzapper.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "item.create.handheld_blockzapper.tooltip": "ブロックザッパー", + "item.create.handheld_blockzapper.tooltip.summary": "離れた場所にブロックを配置または交換するための新しいガジェット。", + "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックしたとき", + "item.create.handheld_blockzapper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", + "item.create.handheld_blockzapper.tooltip.control2": "ブロックを右クリックしたとき", + "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_配置_または_置換_します。", + "item.create.handheld_blockzapper.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_を開きます", - "item.create.handheld_worldshaper.tooltip": "ãƒ�ンドヘルドワールドシェーパー", - "item.create.handheld_worldshaper.tooltip.summary": "_風景_ã‚„_地形ã�®ç‰¹å¾´_を作æˆ�ã�™ã‚‹ã�Ÿã‚�ã�®ä¾¿åˆ©ã�ªãƒ„ール。", - "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックã�—ã�Ÿã�¨ã��", - "item.create.handheld_worldshaper.tooltip.action1": "ターゲットã�®ãƒ–ロックをã�“ã�®ãƒ„ールã�«è¨­å®šã�—ã�¾ã�™ã€‚", - "item.create.handheld_worldshaper.tooltip.control2": "ブロックをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.handheld_worldshaper.tooltip.action2": "ç�¾åœ¨é�¸æŠžã�•ã‚Œã�¦ã�„ã‚‹_ブラシ_ã�¨_ツール_をターゲットã�®å ´æ‰€ã�«é�©ç”¨ã�—ã�¾ã�™ã€‚", - "item.create.handheld_worldshaper.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "item.create.handheld_worldshaper.tooltip": "ハンドヘルドワールドシェーパー", + "item.create.handheld_worldshaper.tooltip.summary": "_風景_や_地形の特徴_を作成するための便利なツール。", + "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", + "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", + "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", + "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_をターゲットの場所に適用します。", + "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_を開きます", - "item.create.tree_fertilizer.tooltip": "木質肥料", - "item.create.tree_fertilizer.tooltip.summary": "一般的ã�ªæœ¨ã�®ç¨®é¡žã�®æˆ�長を加速ã�™ã‚‹ã�®ã�«é�©ã�—ã�ŸãƒŸãƒ�ラルã�®å¼·åŠ›ã�ªçµ„ã�¿å�ˆã‚�ã�›ã€‚", - "item.create.tree_fertilizer.tooltip.condition1": "苗木ã�«ä½¿ç”¨ã�—ã�Ÿã�¨ã��", - "item.create.tree_fertilizer.tooltip.behaviour1": "_é–“éš”ã�®æ�¡ä»¶_ã�«_関係ã�ªã��_ツリーをæˆ�é•·ã�•ã�›ã‚‹", + "item.create.tree_fertilizer.tooltip": "木質肥料", + "item.create.tree_fertilizer.tooltip.summary": "一般的な木の種類の成長を加速するのに適したミネラルの強力な組み合わせ。", + "item.create.tree_fertilizer.tooltip.condition1": "苗木に使用したとき", + "item.create.tree_fertilizer.tooltip.behaviour1": "_間隔の条件_に_関係なく_ツリーを成長させる", - "item.create.deforester.tooltip": "デフォレスター", - "item.create.deforester.tooltip.summary": "一瞬ã�§æœ¨ã‚’切り倒ã�™ã�“ã�¨ã�Œã�§ã��ã‚‹_è¼�ã��æ–§_。", + "item.create.deforester.tooltip": "デフォレスター", + "item.create.deforester.tooltip.summary": "一瞬で木を切り倒すことができる_輝く斧_。", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", - "item.create.filter.tooltip": "フィルタ", - "item.create.filter.tooltip.summary": "ロジスティックデãƒ�イスã�®_出力_ã�¨_入力_をより_正確_ã�«_制御_ã�—ã€�_アイテムã�®ã‚»ãƒƒãƒˆ_ã�¾ã�Ÿã�¯ã�„ã��ã�¤ã�‹ã�®_ãƒ�ストã�•ã‚Œã�Ÿãƒ•ã‚£ãƒ«ã‚¿ãƒ¼_ã�¨ç…§å�ˆã�—ã�¾ã�™ã€‚", - "item.create.filter.tooltip.condition1": "フィルタースロットã�«ã‚»ãƒƒãƒˆã�—ã�Ÿã�¨ã��", - "item.create.filter.tooltip.behaviour1": "_構æˆ�_ã�«å¿œã�˜ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã�®æµ�れを_制御_ã�—ã�¾ã�™ã€‚", - "item.create.filter.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.filter.tooltip.behaviour2": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "item.create.filter.tooltip": "フィルタ", + "item.create.filter.tooltip.summary": "ロジスティックデバイスの_出力_と_入力_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_ネストされたフィルター_と照合します。", + "item.create.filter.tooltip.condition1": "フィルタースロットにセットしたとき", + "item.create.filter.tooltip.behaviour1": "_構成_に応じてアイテムの流れを_制御_します。", + "item.create.filter.tooltip.condition2": "右クリックしたとき", + "item.create.filter.tooltip.behaviour2": "_設定インターフェース_を開きます", - "item.create.attribute_filter.tooltip": "属性フィルター", - "item.create.attribute_filter.tooltip.summary": "ロジスティックデãƒ�イスã�®_出力_ã�¨_入力_をより_正確_ã�«_制御_ã�—ã€�アイテムã�®_属性_ã�¨_カテゴリã�®ã‚»ãƒƒãƒˆ_ã�¨ç…§å�ˆã�—ã�¾ã�™ã€‚", - "item.create.attribute_filter.tooltip.condition1": "フィルタースロットã�«ã‚»ãƒƒãƒˆã�—ã�Ÿã�¨ã��", - "item.create.attribute_filter.tooltip.behaviour1": "_構æˆ�_ã�«å¿œã�˜ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã�®æµ�れを_制御_ã�—ã�¾ã�™ã€‚", - "item.create.attribute_filter.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "item.create.attribute_filter.tooltip": "属性フィルター", + "item.create.attribute_filter.tooltip.summary": "ロジスティックデバイスの_出力_と_入力_をより_正確_に_制御_し、アイテムの_属性_と_カテゴリのセット_と照合します。", + "item.create.attribute_filter.tooltip.condition1": "フィルタースロットにセットしたとき", + "item.create.attribute_filter.tooltip.behaviour1": "_構成_に応じてアイテムの流れを_制御_します。", + "item.create.attribute_filter.tooltip.condition2": "右クリックしたとき", + "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_を開きます", - "item.create.empty_schematic.tooltip": "空ã�®ã‚¹ã‚­ãƒ¼ãƒž", - "item.create.empty_schematic.tooltip.summary": "レシピã�®æ��æ–™ã�¨ã�—ã�¦ã€�ã�Šã‚ˆã�³_概略図テーブル_ã�§ã�®è¨˜è¿°ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚", + "item.create.empty_schematic.tooltip": "空のスキーマ", + "item.create.empty_schematic.tooltip.summary": "レシピの材料として、および_概略図テーブル_での記述に使用されます。", - "item.create.schematic.tooltip": "概略図", - "item.create.schematic.tooltip.summary": "ワールドã�«é…�ç½®ã�Šã‚ˆã�³é…�ç½®ã�•ã‚Œã‚‹æ§‹é€ ã‚’ä¿�æŒ�ã�—ã�¾ã�™ã€‚ ホログラムを必è¦�ã�«å¿œã�˜ã�¦é…�ç½®ã�—ã€�_概略図砲_を使用ã�—ã�¦ä½œæˆ�ã�—ã�¾ã�™ã€‚", - "item.create.schematic.tooltip.condition1": "æŒ�ã�£ã�Ÿã�¨ã��", - "item.create.schematic.tooltip.behaviour1": "ç”»é�¢ä¸Šã�®ãƒ„ールを使用ã�—ã�¦é…�ç½®ã�§ã��ã�¾ã�™ã€‚", - "item.create.schematic.tooltip.control1": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.schematic.tooltip.action1": "正確ã�ª_座標_を入力ã�™ã‚‹ã�Ÿã‚�ã�®_インターフェース_ã‚’é–‹ã��ã�¾ã�™ã€‚", + "item.create.schematic.tooltip": "概略図", + "item.create.schematic.tooltip.summary": "ワールドに配置および配置される構造を保持します。 ホログラムを必要に応じて配置し、_概略図砲_を使用して作成します。", + "item.create.schematic.tooltip.condition1": "持ったとき", + "item.create.schematic.tooltip.behaviour1": "画面上のツールを使用して配置できます。", + "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", + "item.create.schematic.tooltip.action1": "正確な_座標_を入力するための_インターフェース_を開きます。", - "item.create.schematic_and_quill.tooltip": "概略図ã�¨ç¾½æ ¹ãƒšãƒ³", - "item.create.schematic_and_quill.tooltip.summary": "ワールドã�®æ§‹é€ ç‰©ã‚’.nbtファイルã�«ä¿�å­˜ã�™ã‚‹ã�Ÿã‚�ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚", - "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", - "item.create.schematic_and_quill.tooltip.behaviour1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦2ã�¤ã�®ã‚³ãƒ¼ãƒŠãƒ¼ãƒ�イントをé�¸æŠžã�—ã�¾ã�™ã€‚", - "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押ã�—ã�ªã�Œã‚‰ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«_ã�—ã�¦ã€�サイズを調整ã�—ã�¾ã�™ã€‚ ã‚‚ã�†ä¸€åº¦å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�¦ä¿�å­˜ã�—ã�¾ã�™ã€‚", - "item.create.schematic_and_quill.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.schematic_and_quill.tooltip.action1": "コーナーãƒ�イントをé�¸æŠž/ä¿�存を確èª�ã�—ã�¾ã�™ã€‚", - "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押ã�—ã�¦ã‚‹ã�¨ã��", - "item.create.schematic_and_quill.tooltip.action2": "_空中_ã�§ãƒ�イントをé�¸æŠžã�—ã�¾ã�™ã€‚ _スクロール_ã�—ã�¦è·�離を調整ã�—ã�¾ã�™ã€‚", - "item.create.schematic_and_quill.tooltip.control3": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.schematic_and_quill.tooltip.action3": "é�¸æŠžã‚’_リセット_ã�—ã�¦å‰Šé™¤ã�—ã�¾ã�™ã€‚", + "item.create.schematic_and_quill.tooltip": "概略図と羽根ペン", + "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存するために使用されます。", + "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", + "item.create.schematic_and_quill.tooltip.behaviour1": "右クリックして2つのコーナーポイントを選択します。", + "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。 もう一度右クリックして保存します。", + "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", + "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", + "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", + "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。 _スクロール_して距離を調整します。", + "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", + "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", - "block.create.schematicannon.tooltip": "スキーマキャノン", - "block.create.schematicannon.tooltip.summary": "ブロックを撃ã�£ã�¦ã€�展開ã�•ã‚Œã�Ÿ_概略図_ã‚’ã‚‚ã�¨ã�«ãƒ¯ãƒ¼ãƒ«ãƒ‰ã�«è¨­ç½®ã�—ã�¾ã�™ã€‚ 隣接ã�™ã‚‹ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’供給ã�—ã€�_ç�«è–¬_を燃料ã�¨ã�—ã�¦ä½¿ç”¨ã�—ã�¾ã�™ã€‚", - "block.create.schematicannon.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.schematicannon.tooltip.action1": "_インターフェイス_ã‚’é–‹ã��ã�¾ã�™", + "block.create.schematicannon.tooltip": "スキーマキャノン", + "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。 隣接するインベントリからのアイテムを供給し、_火薬_を燃料として使用します。", + "block.create.schematicannon.tooltip.control1": "右クリックしたとき", + "block.create.schematicannon.tooltip.action1": "_インターフェイス_を開きます", - "block.create.schematic_table.tooltip": "概略図テーブル", - "block.create.schematic_table.tooltip.summary": "ä¿�å­˜ã�•ã‚Œã�Ÿæ¦‚略図を_空ã�®æ¦‚略図_ã�«æ›¸ã��è¾¼ã�¿ã�¾ã�™ã€‚", - "block.create.schematic_table.tooltip.condition1": "空ã�®æ¦‚略図ã�Œä¸Žã�ˆã‚‰ã‚Œã�Ÿã�¨ã��", - "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダã�‹ã‚‰é�¸æŠžã�—ã�Ÿãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã�—ã�¾ã�™ã€‚", + "block.create.schematic_table.tooltip": "概略図テーブル", + "block.create.schematic_table.tooltip.summary": "保存された概略図を_空の概略図_に書き込みます。", + "block.create.schematic_table.tooltip.condition1": "空の概略図が与えられたとき", + "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", - "block.create.shaft.tooltip": "軸", - "block.create.shaft.tooltip.summary": "_回転_ã‚’ç›´ç·šã�§_中継_ã�—ã�¾ã�™ã€‚", + "block.create.shaft.tooltip": "軸", + "block.create.shaft.tooltip.summary": "_回転_を直線で_中継_します。", - "block.create.cogwheel.tooltip": "コグホイール", - "block.create.cogwheel.tooltip.summary": "_回転_ã‚’ç›´ç·šã�§ã€�隣接ã�™ã‚‹_歯車_ã�«_中継_ã�—ã�¾ã�™ã€‚", + "block.create.cogwheel.tooltip": "コグホイール", + "block.create.cogwheel.tooltip.summary": "_回転_を直線で、隣接する_歯車_に_中継_します。", - "block.create.large_cogwheel.tooltip": "大型コグホイール", - "block.create.large_cogwheel.tooltip.summary": "より大ã��ã�ªãƒ�ージョンã�®_歯車_ã�«ã‚ˆã‚Šã€�å°�ã�•ã�ªå¯¾å¿œç‰©ã�«æŽ¥ç¶šã�—ã�Ÿã�¨ã��ã�«_回転速度_ã‚’_変更_ã�§ã��ã�¾ã�™ã€‚", + "block.create.large_cogwheel.tooltip": "大型コグホイール", + "block.create.large_cogwheel.tooltip.summary": "より大きなバージョンの_歯車_により、小さな対応物に接続したときに_回転速度_を_変更_できます。", - "block.create.encased_shaft.tooltip": "内蔵シャフト", - "block.create.encased_shaft.tooltip.summary": "_回転_ã‚’ç›´ç·šã�§_中継_ã�—ã�¾ã�™ã€‚ å£�を通é�Žã�™ã‚‹å›žè»¢ã�®ä¼�æ’­ã�«é�©ã�—ã�¦ã�„ã�¾ã�™ã€‚", + "block.create.encased_shaft.tooltip": "内蔵シャフト", + "block.create.encased_shaft.tooltip.summary": "_回転_を直線で_中継_します。 壁を通過する回転の伝播に適しています。", - "block.create.gearbox.tooltip": "ギアボックス", - "block.create.gearbox.tooltip.summary": "_中継_ã�™ã‚‹_4æ–¹å�‘_ã�®_回転_直線接続を逆ã�«ã�—ã�¾ã�™ã€‚", + "block.create.gearbox.tooltip": "ギアボックス", + "block.create.gearbox.tooltip.summary": "_中継_する_4方向_の_回転_直線接続を逆にします。", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", - "block.create.gearshift.tooltip": "ギアシフト", - "block.create.gearshift.tooltip.summary": "接続ã�•ã‚Œã�Ÿã‚·ãƒ£ãƒ•ãƒˆã�®å›žè»¢æ–¹å�‘を切り替ã�ˆã‚‹ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã€‚", - "block.create.gearshift.tooltip.condition1": "パワーã�Œå…¥ã�£ã�¦ã‚‹ã�¨ã��", - "block.create.gearshift.tooltip.behaviour1": "出ã�¦è¡Œã��回転を_逆_ã�«ã�—ã�¾ã�™ã€‚", + "block.create.gearshift.tooltip": "ギアシフト", + "block.create.gearshift.tooltip.summary": "接続されたシャフトの回転方向を切り替えるコントロール。", + "block.create.gearshift.tooltip.condition1": "パワーが入ってるとき", + "block.create.gearshift.tooltip.behaviour1": "出て行く回転を_逆_にします。", - "block.create.clutch.tooltip": "クラッãƒ�", - "block.create.clutch.tooltip.summary": "接続ã�•ã‚Œã�Ÿã‚·ãƒ£ãƒ•ãƒˆã�®å›žè»¢ã‚’オン/オフã�™ã‚‹ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã€‚", - "block.create.clutch.tooltip.condition1": "パワーã�Œå…¥ã�£ã�¦ã‚‹ã�¨ã��", - "block.create.clutch.tooltip.behaviour1": "å��対å�´ã�¸ã�®å›žè»¢ã�®ä¼�é�”ã‚’_å�œæ­¢_ã�—ã�¾ã�™ã€‚", + "block.create.clutch.tooltip": "クラッチ", + "block.create.clutch.tooltip.summary": "接続されたシャフトの回転をオン/オフするコントロール。", + "block.create.clutch.tooltip.condition1": "パワーが入ってるとき", + "block.create.clutch.tooltip.behaviour1": "反対側への回転の伝達を_停止_します。", - "block.create.encased_belt.tooltip": "ケース入りベルト", - "block.create.encased_belt.tooltip.summary": "_回転_ã‚’ã��ã�®ãƒ–ロックã�¨æŽ¥ç¶šã�•ã‚Œã�Ÿ_ケース入りベルト_ã�«_中継_ã�—ã�¾ã�™ã€‚", - "block.create.encased_belt.tooltip.condition1": "接続ã�—ã�Ÿã�¨ã��", - "block.create.encased_belt.tooltip.behaviour1": "アタッãƒ�ã�•ã‚Œã�Ÿãƒ–ロックã�®_回転速度_ã�¨æ–¹å�‘ã�¯ã�¾ã�£ã�Ÿã��_å�Œã�˜_ã�§ã�™ã€‚ 彼らã�¯å�Œã�˜ã‚ˆã�†ã�«å�‘ã��å�ˆã�†å¿…è¦�ã�¯ã�‚ã‚Šã�¾ã�›ã‚“。", + "block.create.encased_belt.tooltip": "ケース入りベルト", + "block.create.encased_belt.tooltip.summary": "_回転_をそのブロックと接続された_ケース入りベルト_に_中継_します。", + "block.create.encased_belt.tooltip.condition1": "接続したとき", + "block.create.encased_belt.tooltip.behaviour1": "アタッチされたブロックの_回転速度_と方向はまったく_同じ_です。 彼らは同じように向き合う必要はありません。", - "block.create.adjustable_pulley.tooltip": "アナログベルトプーリー", - "block.create.adjustable_pulley.tooltip.summary": "ブロックを介ã�—ã�¦_回転を中継_ã�—ã€�å�–り付ã�‘られã�Ÿ_ケース入りベルト_ã�«ä¼�é�”ã�—ã�¾ã�™ã€‚ å�–り付ã�‘られã�ŸåŒ…ã�¿è¾¼ã�¾ã‚Œã�Ÿãƒ™ãƒ«ãƒˆã�¯ã€�ã�“ã�®ãƒ–ロックã�Œå�—ä¿¡ã�™ã‚‹_アナログレッドストーン信å�·_ã�«åŸºã�¥ã�„ã�¦_より速ã��回転_ã�—ã�¾ã�™ã€‚", - "block.create.adjustable_pulley.tooltip.condition1": "レッドストーンコントロール", - "block.create.adjustable_pulley.tooltip.behaviour1": "ä¿¡å�·ã�Œã�ªã�„ã�¨ã€�接続ã�•ã‚Œã�¦ã�„るベルトã�®_速度ã�Œä¸Šã�Œã‚Šã�¾ã�›ã‚“_。 フルストレングスシグナル接続ベルトã�«ã‚ˆã‚Šã€�_速度ã�¯2å€�ã�«ã�ªã‚Šã�¾ã�™_。", + "block.create.adjustable_pulley.tooltip": "アナログベルトプーリー", + "block.create.adjustable_pulley.tooltip.summary": "ブロックを介して_回転を中継_し、取り付けられた_ケース入りベルト_に伝達します。 取り付けられた包み込まれたベルトは、このブロックが受信する_アナログレッドストーン信号_に基づいて_より速く回転_します。", + "block.create.adjustable_pulley.tooltip.condition1": "レッドストーンコントロール", + "block.create.adjustable_pulley.tooltip.behaviour1": "信号がないと、接続されているベルトの_速度が上がりません_。 フルストレングスシグナル接続ベルトにより、_速度は2倍になります_。", - "item.create.belt_connector.tooltip": "ベルトコãƒ�クター", - "item.create.belt_connector.tooltip.summary": "2ã�¤ä»¥ä¸Šã�®_シャフト_ã‚’_メカニカルベルト_ã�§æŽ¥ç¶šã�—ã�¾ã�™ã€‚ 接続ã�•ã‚Œã�Ÿã‚·ãƒ£ãƒ•ãƒˆã�®å›žè»¢é€Ÿåº¦ã�¨æ–¹å�‘ã�¯ã�¾ã�£ã�Ÿã��å�Œã�˜ã�§ã�™ã€‚ ベルトã�¯ã€�_アイテム_ã�¨_エンティティ_ã�®_コンベア_ã�¨ã�—ã�¦æ©Ÿèƒ½ã�§ã��ã�¾ã�™ã€‚", - "item.create.belt_connector.tooltip.control1": "シャフトをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.belt_connector.tooltip.action1": "ベルトã�®1ã�¤ã�®ãƒ—ーリーã�¨ã�—ã�¦ã‚·ãƒ£ãƒ•ãƒˆã‚’é�¸æŠžã�—ã�¾ã�™ã€‚ é�¸æŠžã�—ã�Ÿä¸¡æ–¹ã�®ã‚·ãƒ£ãƒ•ãƒˆã�¯ã€�_ベルトã�®æ–¹å�‘_ã�«å�‘ã�‹ã�£ã�¦_åž‚ç›´_ã€�_æ°´å¹³_ã€�ã�¾ã�Ÿã�¯_æ–œã‚�_ã�«æ•´åˆ—ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "item.create.belt_connector.tooltip.control2": "スニークã�—ã�ªã�Œã‚‰ã‚·ãƒ£ãƒ•ãƒˆã‚’å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.belt_connector.tooltip.action2": "ベルトã�®æœ€åˆ�ã�«é�¸æŠžã�•ã‚Œã�Ÿä½�置を_リセット_ã�—ã�¾ã�™ã€‚", + "item.create.belt_connector.tooltip": "ベルトコネクター", + "item.create.belt_connector.tooltip.summary": "2つ以上の_シャフト_を_メカニカルベルト_で接続します。 接続されたシャフトの回転速度と方向はまったく同じです。 ベルトは、_アイテム_と_エンティティ_の_コンベア_として機能できます。", + "item.create.belt_connector.tooltip.control1": "シャフトを右クリックしたとき", + "item.create.belt_connector.tooltip.action1": "ベルトの1つのプーリーとしてシャフトを選択します。 選択した両方のシャフトは、_ベルトの方向_に向かって_垂直_、_水平_、または_斜め_に整列する必要があります。", + "item.create.belt_connector.tooltip.control2": "スニークしながらシャフトを右クリックしたとき", + "item.create.belt_connector.tooltip.action2": "ベルトの最初に選択された位置を_リセット_します。", - "item.create.goggles.tooltip": "ゴーグル", - "item.create.goggles.tooltip.summary": "有用ã�ªå‹•åŠ›æƒ…å ±ã�§è¦–覚を強化ã�™ã‚‹ã�Ÿã‚�ã�®çœ¼é�¡ã€‚", - "item.create.goggles.tooltip.condition1": "ç�€ç”¨ã�—ã�Ÿã�¨ã��", - "item.create.goggles.tooltip.behaviour1": "é…�ç½®ã�•ã‚Œã�Ÿã‚­ãƒ�ティックコンãƒ�ーãƒ�ントã�®_速度レベル_ã�«å¯¾å¿œã�™ã‚‹_色付ã��ã�®ã‚¤ãƒ³ã‚¸ã‚±ãƒ¼ã‚¿ãƒ¼_ã�¨ã€�個々ã�®ã‚³ãƒ³ãƒ�ーãƒ�ント_ã�®å¿œåŠ›ã�®å½±éŸ¿_ã�¨_容é‡�_を表示ã�—ã�¾ã�™ã€‚", - "item.create.goggles.tooltip.condition2": "計器を見ã�Ÿã�¨ã��", - "item.create.goggles.tooltip.behaviour2": "計器ã�ŒæŽ¥ç¶šã�•ã‚Œã�¦ã�„ã‚‹ãƒ�ットワークã�®é€Ÿåº¦ã�¾ã�Ÿã�¯å¿œåŠ›ã�«é–¢ã�™ã‚‹è©³ç´°æƒ…報を表示ã�—ã�¾ã�™ã€‚", + "item.create.goggles.tooltip": "ゴーグル", + "item.create.goggles.tooltip.summary": "有用な動力情報で視覚を強化するための眼鏡。", + "item.create.goggles.tooltip.condition1": "着用したとき", + "item.create.goggles.tooltip.behaviour1": "配置されたキネティックコンポーネントの_速度レベル_に対応する_色付きのインジケーター_と、個々のコンポーネント_の応力の影響_と_容量_を表示します。", + "item.create.goggles.tooltip.condition2": "計器を見たとき", + "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの速度または応力に関する詳細情報を表示します。", - "item.create.wrench.tooltip": "レンãƒ�", - "item.create.wrench.tooltip.summary": "動力論的ã�‹ã‚‰ã��ã‚Šã�«å�–り組むã�Ÿã‚�ã�®ä¾¿åˆ©ã�ªãƒ„ール。 コンãƒ�ーãƒ�ントã�®_回転_ã€�_解体_ã€�_設定_ã�«ä½¿ç”¨ã�§ã��ã�¾ã�™ã€‚", - "item.create.wrench.tooltip.control1": "動力ブロックをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.wrench.tooltip.action1": "_æ“�作ã�—ã�Ÿé�¢ã�«å�‘ã�‹ã�£ã�¦ã€�ã�¾ã�Ÿã�¯é�¢ã�‹ã‚‰é›¢ã‚Œã‚‹ã‚ˆã�†ã�«_コンãƒ�ーãƒ�ントを回転ã�•ã�›ã�¾ã�™_。", - "item.create.wrench.tooltip.control2": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "item.create.wrench.tooltip.action2": "_動力コンãƒ�ーãƒ�ントを分解_ã�—ã€�_インベントリ_ã�«æˆ»ã�—ã�¾ã�™ã€‚", + "item.create.wrench.tooltip": "レンチ", + "item.create.wrench.tooltip.summary": "動力論的からくりに取り組むための便利なツール。 コンポーネントの_回転_、_解体_、_設定_に使用できます。", + "item.create.wrench.tooltip.control1": "動力ブロックを右クリックしたとき", + "item.create.wrench.tooltip.action1": "_操作した面に向かって、または面から離れるように_コンポーネントを回転させます_。", + "item.create.wrench.tooltip.control2": "スニークしながら右クリックしたとき", + "item.create.wrench.tooltip.action2": "_動力コンポーネントを分解_し、_インベントリ_に戻します。", - "block.create.creative_motor.tooltip": "クリエイティブモーター", - "block.create.creative_motor.tooltip.summary": "_回転力_を設定å�¯èƒ½ã�ªã‚½ãƒ¼ã‚¹ã€‚", + "block.create.creative_motor.tooltip": "クリエイティブモーター", + "block.create.creative_motor.tooltip.summary": "_回転力_を設定可能なソース。", - "block.create.water_wheel.tooltip": "水車", - "block.create.water_wheel.tooltip.summary": "_隣接ã�™ã‚‹æ°´æµ�_ã�‹ã‚‰å�–å¾—ã�•ã‚Œã‚‹_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚", + "block.create.water_wheel.tooltip": "水車", + "block.create.water_wheel.tooltip.summary": "_隣接する水流_から取得される_回転力_を提供します。", - "block.create.encased_fan.tooltip": "内蔵ファン", - "block.create.encased_fan.tooltip.summary": "_回転力_ã‚’_æ°—æµ�_ã�«å¤‰æ�›ã�—ã€�戻ã�—ã�¾ã�™ã€‚ã�•ã�¾ã�–ã�¾ã�ªç”¨é€”ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.encased_fan.tooltip.condition1": "レッドストーン動力を与ã�ˆã�Ÿã�¨ã��", - "block.create.encased_fan.tooltip.behaviour1": "直下ã�®_熱æº�_ã�‹ã‚‰_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚ ファンã�¯ä¸‹å�‘ã��ã�«ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.encased_fan.tooltip.condition2": "回転ã�—ã�Ÿã�¨ã��", - "block.create.encased_fan.tooltip.behaviour2": "入力回転速度ã�«å¿œã�˜ã�¦ã€�エンティティを_押ã�™_ã�¾ã�Ÿã�¯_引ã��戻_ã�—ã�¾ã�™ã€‚", - "block.create.encased_fan.tooltip.condition3": "特別ã�ªãƒ–ロックをå�¹ã��抜ã�‘ã‚‹ã�¨ã��", - "block.create.encased_fan.tooltip.behaviour3": "_液体_ã�¨_ç‚Ž_ã�®ç²’å­�ã�Œç©ºæ°—ã�®æµ�ã‚Œã�«æ”¾å‡ºã�•ã‚Œã�¾ã�™ã€‚ ã�“ã‚Œã�¯ã€�_アイテムã�®å‡¦ç�†_ã�«ä½¿ç”¨ã�§ã��ã�¾ã�™ã€‚", + "block.create.encased_fan.tooltip": "内蔵ファン", + "block.create.encased_fan.tooltip.summary": "_回転力_を_気流_に変換し、戻します。さまざまな用途があります。", + "block.create.encased_fan.tooltip.condition1": "レッドストーン動力を与えたとき", + "block.create.encased_fan.tooltip.behaviour1": "直下の_熱源_から_回転力_を提供します。 ファンは下向きにする必要があります。", + "block.create.encased_fan.tooltip.condition2": "回転したとき", + "block.create.encased_fan.tooltip.behaviour2": "入力回転速度に応じて、エンティティを_押す_または_引き戻_します。", + "block.create.encased_fan.tooltip.condition3": "特別なブロックを吹き抜けるとき", + "block.create.encased_fan.tooltip.behaviour3": "_液体_と_炎_の粒子が空気の流れに放出されます。 これは、_アイテムの処理_に使用できます。", - "block.create.nozzle.tooltip": "ノズル", - "block.create.nozzle.tooltip.summary": "_ケース入りファン_ã�®å‰�é�¢ã�«å�–り付ã�‘ã�¦ã€�エンティティã�¸ã�®å½±éŸ¿ã‚’_全方å�‘_ã�«åˆ†æ•£ã�—ã�¾ã�™ã€‚", + "block.create.nozzle.tooltip": "ノズル", + "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", - "block.create.hand_crank.tooltip": "ãƒ�ンドクランク", - "block.create.hand_crank.tooltip.summary": "プレイヤーã�®ç›¸äº’作用を必è¦�ã�¨ã�™ã‚‹_回転力ã�®å�˜ç´”ã�ªæƒ…å ±æº�_。", - "block.create.hand_crank.tooltip.condition1": "使用ã�—ã�¦ã‚‹ã�¨ã��", - "block.create.hand_crank.tooltip.behaviour1": "付属ã�®ä»•æŽ›ã�‘ã�«_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚ _スニークã�§å›žè»¢ã‚’逆_ã�«ã�—ã�¾ã�™ã€‚", + "block.create.hand_crank.tooltip": "ハンドクランク", + "block.create.hand_crank.tooltip.summary": "プレイヤーの相互作用を必要とする_回転力の単純な情報源_。", + "block.create.hand_crank.tooltip.condition1": "使用してるとき", + "block.create.hand_crank.tooltip.behaviour1": "付属の仕掛けに_回転力_を提供します。 _スニークで回転を逆_にします。", - "block.create.cuckoo_clock.tooltip": "鳩時計", - "block.create.cuckoo_clock.tooltip.summary": "空間を_飾り_ã€�_時間を追跡ã�™ã‚‹_ã�Ÿã‚�ã�®ç´ æ™´ã‚‰ã�—ã�„è�·äººæŠ€ã€‚", - "block.create.cuckoo_clock.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.cuckoo_clock.tooltip.behaviour1": "_ç�¾åœ¨ã�®æ™‚刻_を表示ã�—ã€�1æ—¥ã�«2回曲をå†�生ã�—ã�¾ã�™ã€‚ _プレイヤーã�Œçœ ã‚Œã‚‹ã‚ˆã�†ã�«ã�ªã‚‹_ã�¨ã�™ã��ã�«ã€�_æ­£å�ˆ_ã�¨å¤•æš®ã‚Œã�«1回_アクティブ_ã�«ã�ªã‚Šã�¾ã�™ã€‚", + "block.create.cuckoo_clock.tooltip": "鳩時計", + "block.create.cuckoo_clock.tooltip.summary": "空間を_飾り_、_時間を追跡する_ための素晴らしい職人技。", + "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", + "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。 _プレイヤーが眠れるようになる_とすぐに、_正午_と夕暮れに1回_アクティブ_になります。", - "block.create.turntable.tooltip": "ターンテーブル", - "block.create.turntable.tooltip.summary": "_回転力_ã‚’æ´—ç·´ã�•ã‚Œã�Ÿä¹—り物酔ã�„ã�«å¤‰ã�ˆã�¾ã�™ã€‚", + "block.create.turntable.tooltip": "ターンテーブル", + "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", - "block.create.millstone.tooltip": "石臼", - "block.create.millstone.tooltip.summary": "挿入ã�•ã‚Œã�Ÿ_æ��æ–™_ã�®_研削_ã�«é�©ã�—ã�Ÿã‚­ãƒ�ティックコンãƒ�ーãƒ�ント。 隣接ã�™ã‚‹æ­¯è»Šã�«ã‚ˆã�£ã�¦ã€�ã�¾ã�Ÿã�¯ä¸‹éƒ¨ã�®ã‚·ãƒ£ãƒ•ãƒˆã�«æŽ¥ç¶šã�™ã‚‹ã�“ã�¨ã�«ã‚ˆã�£ã�¦ã€�動力を供給ã�§ã��ã�¾ã�™ã€‚ çµ�æžœã�¯ã‚³ãƒ³ãƒ�ーãƒ�ントã�‹ã‚‰æŠ½å‡ºã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.millstone.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.millstone.tooltip.behaviour1": "ブロックã�®å�´é�¢ã�¾ã�Ÿã�¯ä¸Šé�¢ã�‹ã‚‰æŒ¿å…¥ã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ã‚’_粉砕_を開始ã�—ã�¾ã�™ã€‚", - "block.create.millstone.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.millstone.tooltip.behaviour2": "出力物を手動ã�§å�Žé›†ã�—ã�¾ã�™ã€‚", + "block.create.millstone.tooltip": "石臼", + "block.create.millstone.tooltip.summary": "挿入された_材料_の_研削_に適したキネティックコンポーネント。 隣接する歯車によって、または下部のシャフトに接続することによって、動力を供給できます。 結果はコンポーネントから抽出する必要があります。", + "block.create.millstone.tooltip.condition1": "回転したとき", + "block.create.millstone.tooltip.behaviour1": "ブロックの側面または上面から挿入されたアイテムを_粉砕_を開始します。", + "block.create.millstone.tooltip.condition2": "右クリックしたとき", + "block.create.millstone.tooltip.behaviour2": "出力物を手動で収集します。", - "block.create.crushing_wheel.tooltip": "クラッシングホイール", - "block.create.crushing_wheel.tooltip.summary": "何ã�‹ã‚’_分解_ã�™ã‚‹å¤§ã��ã�ªå›žè»¢å�¯èƒ½ã�ªãƒ›ã‚¤ãƒ¼ãƒ«ã€‚", - "block.create.crushing_wheel.tooltip.condition1": "ä»–ã�®ç ´ç •ãƒ›ã‚¤ãƒ¼ãƒ«ã�«å�–り付ã�‘ã�Ÿã�¨ã��", - "block.create.crushing_wheel.tooltip.behaviour1": "様々ã�ªç‰©ã‚’処ç�†ã�™ã‚‹ã�Ÿã‚�ã�®ç ´ç •æ©Ÿã‚’å½¢æˆ�ã�—ã�¾ã�™ã€‚ ホイールã�®æ­¯ã�¯ã€�å�Œã�˜é€Ÿåº¦ã�§æŽ¥ç¶šã�—ã€�å��対方å�‘ã�«å‹•ã��å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.crushing_wheel.tooltip": "クラッシングホイール", + "block.create.crushing_wheel.tooltip.summary": "何かを_分解_する大きな回転可能なホイール。", + "block.create.crushing_wheel.tooltip.condition1": "他の破砕ホイールに取り付けたとき", + "block.create.crushing_wheel.tooltip.behaviour1": "様々な物を処理するための破砕機を形成します。 ホイールの歯は、同じ速度で接続し、反対方向に動く必要があります。", - "block.create.mechanical_press.tooltip": "メカニカルプレス", - "block.create.mechanical_press.tooltip.summary": "ã��ã�®ä¸‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’圧縮ã�™ã‚‹ã�Ÿã‚�ã�®å¼·åŠ›ã�ªãƒ”ストン。 一定ã�®_回転力_ã�Œå¿…è¦�ã�§ã�™ã€‚", - "block.create.mechanical_press.tooltip.condition1": "レッドストーン動力をå�—ã�‘ã�Ÿã�¨ã��", - "block.create.mechanical_press.tooltip.behaviour1": "ã��ã�®ä¸‹ã�«ãƒ‰ãƒ­ãƒƒãƒ—ã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ã�®åœ§ç¸®ã‚’_開始_ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_press.tooltip.condition2": "メカニカルベルトã�®ä¸Šã�«ã�‚ã‚‹ã�¨ã��", - "block.create.mechanical_press.tooltip.behaviour2": "ベルト上ã�®ãƒ�イパスアイテムを_自動的_ã�«åœ§ç¸®ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_press.tooltip": "メカニカルプレス", + "block.create.mechanical_press.tooltip.summary": "その下のアイテムを圧縮するための強力なピストン。 一定の_回転力_が必要です。", + "block.create.mechanical_press.tooltip.condition1": "レッドストーン動力を受けたとき", + "block.create.mechanical_press.tooltip.behaviour1": "その下にドロップされたアイテムの圧縮を_開始_します。", + "block.create.mechanical_press.tooltip.condition2": "メカニカルベルトの上にあるとき", + "block.create.mechanical_press.tooltip.behaviour2": "ベルト上のバイパスアイテムを_自動的_に圧縮します。", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", - "block.create.basin.tooltip": "鉢", - "block.create.basin.tooltip.summary": "_メカニカルミキサー_ã�¨_メカニカルプレス_ã�§ã�®å‡¦ç�†ã�«ä½¿ç”¨ã�•ã‚Œã‚‹ä¾¿åˆ©ã�ª_アイテムã�®å…¥ã‚Œç‰©_。_レッドストーンコンパレータ_をサãƒ�ートã�—ã�¾ã�™ã€‚", + "block.create.basin.tooltip": "鉢", + "block.create.basin.tooltip.summary": "_メカニカルミキサー_と_メカニカルプレス_での処理に使用される便利な_アイテムの入れ物_。_レッドストーンコンパレータ_をサポートします。", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", - "block.create.mechanical_mixer.tooltip": "メカニカルミキサー", - "block.create.mechanical_mixer.tooltip.summary": "ã��ã�®ä¸‹ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�«å½¢çŠ¶ã�®ã�ªã�„製作レシピをé�©ç”¨ã�™ã‚‹ã�Ÿã‚�ã�®å‹•åŠ›ãƒŸã‚­ã‚µãƒ¼ã€‚ 一定ã�®_回転力_ã�¨ä¸‹ã�«é…�ç½®ã�•ã‚Œã�Ÿ_鉢_ã�Œå¿…è¦�ã�§ã�™ï¼ˆé–“ã�«ã‚®ãƒ£ãƒƒãƒ—ã�Œã�‚ã‚Šã�¾ã�™ï¼‰ã€‚", - "block.create.mechanical_mixer.tooltip.condition1": "鉢ã�®ä¸Šã�«ã�‚ã‚‹ã�¨ã��", - "block.create.mechanical_mixer.tooltip.behaviour1": "å¿…è¦�ã�ªã�™ã�¹ã�¦ã�®æˆ�分ã�Œå­˜åœ¨ã�™ã‚‹ã�¨ã��ã�¯ã�„ã�¤ã�§ã‚‚ã€�鉢ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�®æ··å�ˆã‚’開始ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_mixer.tooltip.condition2": "レンãƒ�ã�¨ä½µç”¨ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_mixer.tooltip.behaviour2": "é�©ç”¨ã�•ã‚Œã‚‹ãƒ¬ã‚·ãƒ”ã�®_ç·�æ��æ–™_ã�®æœ€å°�é‡�ã‚’_構æˆ�_ã�—ã�¾ã�™ã€‚ ã�“ã�®ã‚ªãƒ—ションを使用ã�—ã�¦ã€�ä¼¼ã�¦ã�„ã‚‹ã�Œæˆ�分ã�Œå°‘ã�ªã�„_ä¸�è¦�ã�ªãƒ¬ã‚·ãƒ”を除外_ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_mixer.tooltip": "メカニカルミキサー", + "block.create.mechanical_mixer.tooltip.summary": "その下のアイテムに形状のない製作レシピを適用するための動力ミキサー。 一定の_回転力_と下に配置された_鉢_が必要です(間にギャップがあります)。", + "block.create.mechanical_mixer.tooltip.condition1": "鉢の上にあるとき", + "block.create.mechanical_mixer.tooltip.behaviour1": "必要なすべての成分が存在するときはいつでも、鉢のアイテムの混合を開始します。", + "block.create.mechanical_mixer.tooltip.condition2": "レンチと併用したとき", + "block.create.mechanical_mixer.tooltip.behaviour2": "適用されるレシピの_総材料_の最小量を_構成_します。 このオプションを使用して、似ているが成分が少ない_不要なレシピを除外_します。", - "block.create.mechanical_crafter.tooltip": "メカニカルクラフト", - "block.create.mechanical_crafter.tooltip.summary": "_ã�‚らゆる形状ã�®è£½ä½œãƒ¬ã‚·ãƒ”_を自動化ã�™ã‚‹ã�Ÿã‚�ã�®å‹•çš„アセンブラー。 _レシピã�«å¯¾å¿œã�™ã‚‹ã‚°ãƒªãƒƒãƒ‰ã�«è¤‡æ•°ã‚’é…�ç½®_ã�—ã€�_フェアベルトをé…�ç½®ã�—ã�¦_ã€�ã�„ã�šã‚Œã�‹ã�®ã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�®ã‚°ãƒªãƒƒãƒ‰ã�‹ã‚‰å‡ºã‚‹_æµ�ã‚Œ_を作æˆ�ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_crafter.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_crafter.tooltip.behaviour1": "グリッド内ã�®_ã�™ã�¹ã�¦ã�®ã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼_ã�«ãƒ†ãƒ³ãƒ—レートã�Œ_与ã�ˆã‚‰ã‚Œã‚‹_ã�¨ã�™ã��ã�«ã€�_生産プロセスを開始_ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_crafter.tooltip": "メカニカルクラフト", + "block.create.mechanical_crafter.tooltip.summary": "_あらゆる形状の製作レシピ_を自動化するための動的アセンブラー。 _レシピに対応するグリッドに複数を配置_し、_フェアベルトを配置して_、いずれかのクラフターのグリッドから出る_流れ_を作成します。", + "block.create.mechanical_crafter.tooltip.condition1": "回転したとき", + "block.create.mechanical_crafter.tooltip.behaviour1": "グリッド内の_すべてのクラフター_にテンプレートが_与えられる_とすぐに、_生産プロセスを開始_します。", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", - "block.create.mechanical_crafter.tooltip.control1": "フロントã�§ãƒ¬ãƒ³ãƒ�ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_crafter.tooltip.action1": "_個々ã�®ç”Ÿç”£è€…ã�Œ_アイテムを移動_ã�™ã‚‹_æ–¹å�‘_を循環ã�•ã�›ã�¾ã�™ã€‚ 作業グリッドを形æˆ�ã�™ã‚‹ã�«ã�¯ã€�ã�™ã�¹ã�¦ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’最終的ã�ªã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�«å�‘ã�‹ã�£ã�¦_移動ã�•ã�›ã‚‹æµ�ã‚Œ_ã�«_ベルト_ã‚’é…�ç½®ã�—ã�¾ã�™ã€‚ 最終的ã�ªã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�¯ã‚°ãƒªãƒƒãƒ‰ã�‹ã‚‰_離れる_æ–¹å�‘を指ã�•ã�ªã�‘ã‚Œã�°ã�ªã‚Šã�¾ã�›ã‚“。", - "block.create.mechanical_crafter.tooltip.control2": "後ã‚�ã�§ãƒ¬ãƒ³ãƒ�ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_crafter.tooltip.action2": "隣接ã�™ã‚‹ã‚¯ãƒ©ãƒ•ã‚¿ãƒ¼ã�®_入力インベントリ_ã‚’_接続_ã�—ã�¾ã�™ã€‚ ã�“れを使用ã�—ã�¦ã€�クラフトグリッドã�®_スロットをçµ�å�ˆ_ã�—ã€�_入力作業を節約_ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_crafter.tooltip.control1": "フロントでレンチしたとき", + "block.create.mechanical_crafter.tooltip.action1": "_個々の生産者が_アイテムを移動_する_方向_を循環させます。 作業グリッドを形成するには、すべてのアイテムを最終的なクラフターに向かって_移動させる流れ_に_ベルト_を配置します。 最終的なクラフターはグリッドから_離れる_方向を指さなければなりません。", + "block.create.mechanical_crafter.tooltip.control2": "後ろでレンチしたとき", + "block.create.mechanical_crafter.tooltip.action2": "隣接するクラフターの_入力インベントリ_を_接続_します。 これを使用して、クラフトグリッドの_スロットを結合_し、_入力作業を節約_します。", - "block.create.furnace_engine.tooltip": "ã�‹ã�¾ã�©ã‚¨ãƒ³ã‚¸ãƒ³", - "block.create.furnace_engine.tooltip.summary": "_稼åƒ�ã�™ã‚‹ã�‹ã�¾ã�©_ã�Œæ©Ÿèƒ½ã�™ã‚‹ã�“ã�¨ã‚’å¿…è¦�ã�¨ã�™ã‚‹å¼·åŠ›ã�ª_回転動力æº�_。", - "block.create.furnace_engine.tooltip.condition1": "燃ã�ˆã�¦ã‚‹ã�‹ã�¾ã�©ã�«å�–り付ã�‘ã�Ÿã�¨ã��", - "block.create.furnace_engine.tooltip.behaviour1": "ã��ã�®å‰�(1m離れã�¦ï¼‰ã�«é…�ç½®ã�•ã‚Œã�Ÿ_フライホイールã�¸ã�®å‹•åŠ›ä¾›çµ¦ã‚’開始_ã�—ã�¾ã�™ã€‚ 高速化ã�™ã‚‹ã�«ã�¯é«˜ç‚‰ã‚’使用ã�—ã�¦ã��ã� ã�•ã�„。", + "block.create.furnace_engine.tooltip": "かまどエンジン", + "block.create.furnace_engine.tooltip.summary": "_稼働するかまど_が機能することを必要とする強力な_回転動力源_。", + "block.create.furnace_engine.tooltip.condition1": "燃えてるかまどに取り付けたとき", + "block.create.furnace_engine.tooltip.behaviour1": "その前(1m離れて)に配置された_フライホイールへの動力供給を開始_します。 高速化するには高炉を使用してください。", - "block.create.flywheel.tooltip": "勢車", - "block.create.flywheel.tooltip.summary": "_å�–り付ã�‘ã�Ÿã�®ã‚¨ãƒ³ã‚¸ãƒ³_ã�Œç™ºç”Ÿã�™ã‚‹_力を利用ã�—ã�¦å®‰å®š_ã�•ã�›ã‚‹å¤§åž‹ã�®é‡‘属ホイール。 勢車ã�Œ_1 m離れã�¦ã�„ã�¦_ã€�_互ã�„ã�«90°ã�®è§’度ã�«ã�‚ã‚‹_å ´å�ˆã€�エンジンã�«æŽ¥ç¶šã�—ã�¾ã�™ã€‚", - "block.create.flywheel.tooltip.condition1": "実行中ã�®ã‚¨ãƒ³ã‚¸ãƒ³ã�«å�–り付ã�‘られã�¦ã‚‹ã�¨ã��", - "block.create.flywheel.tooltip.behaviour1": "ジェãƒ�レータã�®å¼·åº¦ã�¨é€Ÿåº¦ã�«åŸºã�¥ã�„ã�¦ã€�å�–り付ã�‘ã�Ÿä»•æŽ›ã�‘ã�«_回転力_ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚", + "block.create.flywheel.tooltip": "勢車", + "block.create.flywheel.tooltip.summary": "_取り付けたのエンジン_が発生する_力を利用して安定_させる大型の金属ホイール。 勢車が_1 m離れていて_、_互いに90°の角度にある_場合、エンジンに接続します。", + "block.create.flywheel.tooltip.condition1": "実行中のエンジンに取り付けられてるとき", + "block.create.flywheel.tooltip.behaviour1": "ジェネレータの強度と速度に基づいて、取り付けた仕掛けに_回転力_を提供します。", - "block.create.portable_storage_interface.tooltip": "ãƒ�ータブルストレージインターフェイス", - "block.create.portable_storage_interface.tooltip.summary": "ピストンã€�ベアリングã€�トロッコã€�ã�¾ã�Ÿã�¯ãƒ—ーリーã�«ã‚ˆã�£ã�¦ç§»å‹•ã�•ã‚Œã‚‹_構造物_ã�¨ã�®é–“ã�§_アイテムを移動_ã�™ã‚‹ã�Ÿã‚�ã�®ãƒ�ータブル交æ�›ãƒ�イント。", - "block.create.portable_storage_interface.tooltip.condition1": "移動ã�—ã�¦ã‚‹ã�¨ã��", - "block.create.portable_storage_interface.tooltip.behaviour1": "インターフェースã�®_å��対å�´_ã�«ã�‚ã‚‹_トランスãƒ�ーザー_ã�Œ_アイテムを引ã�£å¼µã‚Š_ã€�インターフェースをターゲットã�¨ã�™ã‚‹ãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザーã�ŒæŽ¥ç¶šã�•ã‚Œã�Ÿã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰_アイテムを挿入_ã�™ã‚‹ã‚ˆã�†ã�«ã€�固定トランスãƒ�ーザーã�¨ç›¸äº’作用ã�—ã�¾ã�™ã€‚ アイテムã�Œäº¤æ�›ã�•ã‚Œã‚‹ã�¨ã€�ã�‹ã‚‰ã��ã‚Šã�¯ä¸€æ™‚çš„ã�«å�œæ­¢ã�—ã�¾ã�™ã€‚", + "block.create.portable_storage_interface.tooltip": "ポータブルストレージインターフェイス", + "block.create.portable_storage_interface.tooltip.summary": "ピストン、ベアリング、トロッコ、またはプーリーによって移動される_構造物_との間で_アイテムを移動_するためのポータブル交換ポイント。", + "block.create.portable_storage_interface.tooltip.condition1": "移動してるとき", + "block.create.portable_storage_interface.tooltip.behaviour1": "インターフェースの_反対側_にある_トランスポーザー_が_アイテムを引っ張り_、インターフェースをターゲットとするトランスポーザーが接続されたインベントリから_アイテムを挿入_するように、固定トランスポーザーと相互作用します。 アイテムが交換されると、からくりは一時的に停止します。", - "block.create.rotation_speed_controller.tooltip": "回転速度コントローラー", - "block.create.rotation_speed_controller.tooltip.summary": "ターゲットコンãƒ�ーãƒ�ントを任æ„�ã�®é€Ÿåº¦ã�«åŠ é€Ÿã�¾ã�Ÿã�¯æ¸›é€Ÿã�§ã��ã‚‹_構æˆ�å�¯èƒ½ã�ªä¸­ç¶™_。", - "block.create.rotation_speed_controller.tooltip.condition1": "大ã��ã�ªæ­¯è»Šã�«å�–り付ã�‘ã�Ÿã�¨ã��", - "block.create.rotation_speed_controller.tooltip.behaviour1": "å…¥ã�£ã�¦ã��る回転力をホイールã�«ä¸­ç¶™ã�—ã€�目標ã�¨ã�™ã‚‹ã‚ˆã�†ã�«æ§‹æˆ�ã�•ã‚Œã�Ÿ_速度ã�«ä¸€è‡´_ã�•ã�›ã‚ˆã�†ã�¨ã�—ã�¾ã�™ã€‚ _歯車ã�¯ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãƒ¼ã�®ä¸Šã�«å�–り付ã�‘ã‚‹_å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.rotation_speed_controller.tooltip": "回転速度コントローラー", + "block.create.rotation_speed_controller.tooltip.summary": "ターゲットコンポーネントを任意の速度に加速または減速できる_構成可能な中継_。", + "block.create.rotation_speed_controller.tooltip.condition1": "大きな歯車に取り付けたとき", + "block.create.rotation_speed_controller.tooltip.behaviour1": "入ってくる回転力をホイールに中継し、目標とするように構成された_速度に一致_させようとします。 _歯車はコントローラーの上に取り付ける_必要があります。", - "block.create.mechanical_piston.tooltip": "メカニカルピストン", - "block.create.mechanical_piston.tooltip.summary": "_ピストン_より高度ã�ªã‚‚ã�®ã€‚ _回転力_を使用ã�—ã�¦ã€�å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã‚’正確ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ 背é�¢ã�®_ピストン延長極_ã�¯ã€�ã�“ã�®ãƒ‡ãƒ�イスã�®_範囲_を定義ã�—ã�¾ã�™ã€‚ 延長ã�Œã�ªã�„ã�¨ã€�ピストンã�¯å‹•ã��ã�¾ã�›ã‚“。 _シャーシ_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�1行以上ã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_piston.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_piston.tooltip.behaviour1": "å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã�®ç§»å‹•ã‚’開始ã�—ã�¾ã�™ã€‚ 速度ã�¨æ–¹å�‘ã�¯ã€�入力ã�•ã‚Œã‚‹å›žè»¢é€Ÿåº¦ã�¨ç›¸é–¢ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_piston.tooltip": "メカニカルピストン", + "block.create.mechanical_piston.tooltip.summary": "_ピストン_より高度なもの。 _回転力_を使用して、取り付けられた構造物を正確に移動します。 背面の_ピストン延長極_は、このデバイスの_範囲_を定義します。 延長がないと、ピストンは動きません。 _シャーシ_または_スライムブロック_を使用して、1行以上のブロックを移動します。", + "block.create.mechanical_piston.tooltip.condition1": "回転したとき", + "block.create.mechanical_piston.tooltip.behaviour1": "取り付けられた構造物の移動を開始します。 速度と方向は、入力される回転速度と相関します。", - "block.create.sticky_mechanical_piston.tooltip": "粘ç�€ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ”ストン", - "block.create.sticky_mechanical_piston.tooltip.summary": "_粘ç�€ãƒ”ストン_より高度ã�ªã‚‚ã�®ã€‚ _回転力_を使用ã�—ã�¦ã€�å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã‚’正確ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ 背é�¢ã�®_ピストン延長極_ã�¯ã€�ã�“ã�®ãƒ‡ãƒ�イスã�®_範囲_を定義ã�—ã�¾ã�™ã€‚ 延長ã�Œã�ªã�„ã�¨ã€�ピストンã�¯å‹•ã��ã�¾ã�›ã‚“。 _シャーシ_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�1行以上ã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", - "block.create.sticky_mechanical_piston.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "å�–り付ã�‘られã�Ÿæ§‹é€ ç‰©ã�®ç§»å‹•ã‚’開始ã�—ã�¾ã�™ã€‚ 速度ã�¨æ–¹å�‘ã�¯ã€�入力ã�•ã‚Œã‚‹å›žè»¢é€Ÿåº¦ã�¨ç›¸é–¢ã�—ã�¾ã�™ã€‚", + "block.create.sticky_mechanical_piston.tooltip": "粘着メカニカルピストン", + "block.create.sticky_mechanical_piston.tooltip.summary": "_粘着ピストン_より高度なもの。 _回転力_を使用して、取り付けられた構造物を正確に移動します。 背面の_ピストン延長極_は、このデバイスの_範囲_を定義します。 延長がないと、ピストンは動きません。 _シャーシ_または_スライムブロック_を使用して、1行以上のブロックを移動します。", + "block.create.sticky_mechanical_piston.tooltip.condition1": "回転したとき", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "取り付けられた構造物の移動を開始します。 速度と方向は、入力される回転速度と相関します。", - "block.create.piston_extension_pole.tooltip": "ピストンãƒ�ール", - "block.create.piston_extension_pole.tooltip.summary": "メカニカルピストンã�®ç¯„囲を拡張ã�—ã�¾ã�™ã€‚", - "block.create.piston_extension_pole.tooltip.condition1": "メカニカルピストンã�«å�–り付ã�‘ã�Ÿã�¨ã��", - "block.create.piston_extension_pole.tooltip.behaviour1": "ピストンã�®ç¯„囲を1ブロック拡張", + "block.create.piston_extension_pole.tooltip": "ピストンポール", + "block.create.piston_extension_pole.tooltip.summary": "メカニカルピストンの範囲を拡張します。", + "block.create.piston_extension_pole.tooltip.condition1": "メカニカルピストンに取り付けたとき", + "block.create.piston_extension_pole.tooltip.behaviour1": "ピストンの範囲を1ブロック拡張", - "block.create.mechanical_bearing.tooltip": "メカニカルベアリング", - "block.create.mechanical_bearing.tooltip.summary": "_大ã��ã�ªæ§‹é€ ç‰©_を回転ã�•ã�›ã�Ÿã‚Šã€�風ã�‹ã‚‰ã�®_回転力_を利用ã�—ã�Ÿã‚Šã�™ã‚‹ã�Ÿã‚�ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚", - "block.create.mechanical_bearing.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_bearing.tooltip.behaviour1": "アタッãƒ�ã�•ã‚Œã�Ÿãƒ–ロックã�®å›žè»¢ã‚’開始ã�—ã�¾ã�™ã€‚_シャーシ_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�複数ã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_bearing.tooltip.condition2": "レッドストーン動力を与ã�ˆã�Ÿã�¨ã��", - "block.create.mechanical_bearing.tooltip.behaviour2": "å�–り付ã�‘ã�Ÿæ§‹é€ ç‰©ã�®å›žè»¢ã�‹ã‚‰ç”Ÿæˆ�ã�•ã‚Œã‚‹_回転力_ã�®æ��供を開始ã�—ã�¾ã�™ã€‚ 構造ã�«ã�¯ã€�é�©åˆ‡ã�ª_帆ブロック_(ç�¾åœ¨ã�¯ã�™ã�¹ã�¦ã�®ã‚¦ãƒ¼ãƒ«ãƒ–ロック)をå�«ã‚�ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚", + "block.create.mechanical_bearing.tooltip": "メカニカルベアリング", + "block.create.mechanical_bearing.tooltip.summary": "_大きな構造物_を回転させたり、風からの_回転力_を利用したりするために使用されます。", + "block.create.mechanical_bearing.tooltip.condition1": "回転したとき", + "block.create.mechanical_bearing.tooltip.behaviour1": "アタッチされたブロックの回転を開始します。_シャーシ_または_スライムブロック_を使用して、複数のブロックを移動します。", + "block.create.mechanical_bearing.tooltip.condition2": "レッドストーン動力を与えたとき", + "block.create.mechanical_bearing.tooltip.behaviour2": "取り付けた構造物の回転から生成される_回転力_の提供を開始します。 構造には、適切な_帆ブロック_(現在はすべてのウールブロック)を含める必要があります。", - "block.create.clockwork_bearing.tooltip": "時計仕掛ã�‘ベアリング", - "block.create.clockwork_bearing.tooltip.summary": "ç�¾åœ¨ã�®_ゲーム内時間_ã�«å¿œã�˜ã�¦æœ€å¤§2ã�¤ã�®_時計ã�®é‡�_を回転ã�•ã�›ã‚‹ã€�_メカニカルベアリング_より高度ã�ªã‚‚ã�®ã€‚", - "block.create.clockwork_bearing.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.clockwork_bearing.tooltip.behaviour1": "ç�¾åœ¨ã�®æ™‚é–“ã�«å�‘ã�‹ã�£ã�¦å�–り付ã�‘ã�Ÿæ§‹é€ ç‰©ã�®å›žè»¢ã‚’開始ã�—ã�¾ã�™ã€‚ 2番目ã�®æ§‹é€ ã�Œå­˜åœ¨ã�™ã‚‹å ´å�ˆã€�ã��ã‚Œã�¯åˆ†é‡�ã�¨ã�—ã�¦æ©Ÿèƒ½ã�—ã�¾ã�™ã€‚", + "block.create.clockwork_bearing.tooltip": "時計仕掛けベアリング", + "block.create.clockwork_bearing.tooltip.summary": "現在の_ゲーム内時間_に応じて最大2つの_時計の針_を回転させる、_メカニカルベアリング_より高度なもの。", + "block.create.clockwork_bearing.tooltip.condition1": "回転したとき", + "block.create.clockwork_bearing.tooltip.behaviour1": "現在の時間に向かって取り付けた構造物の回転を開始します。 2番目の構造が存在する場合、それは分針として機能します。", - "block.create.sequenced_gearshift.tooltip": "順次ギアシフト", - "block.create.sequenced_gearshift.tooltip.summary": "最大_5ã�¤ã�®é€£ç¶šã�™ã‚‹å‘½ä»¤_ã�«å¾“ã�£ã�¦_回転スループット_を変更ã�§ã��ã‚‹_プログラムå�¯èƒ½_ã�ª_ユーティリティコンãƒ�ーãƒ�ント_。 ã�“れを使用ã�—ã�¦ã€�メカニカルベアリングã€�ピストンã€�ã�¾ã�Ÿã�¯ãƒ—ーリーã�«å‹•åŠ›ã‚’供給ã�—ã€�タイミングã�¨é€Ÿåº¦ã‚’より細ã�‹ã��制御ã�—ã�¾ã�™ã€‚ 高速ã�§ã�¯ç²¾åº¦ã�Œä½Žä¸‹ã�™ã‚‹å�¯èƒ½æ€§ã�Œã�‚ã‚Šã�¾ã�™ã€‚", - "block.create.sequenced_gearshift.tooltip.condition1": "レッドストーン信å�·ã‚’与ã�ˆã�Ÿã�¨ã��", - "block.create.sequenced_gearshift.tooltip.behaviour1": "入力速度ã�«åŸºã�¥ã�„ã�¦ãƒ—ログラムã�•ã‚Œã�Ÿå‘½ä»¤ã�®å®Ÿè¡Œã‚’開始ã�—ã�¾ã�™ã€‚", - "block.create.sequenced_gearshift.tooltip.condition2": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.sequenced_gearshift.tooltip.behaviour2": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "block.create.sequenced_gearshift.tooltip": "順次ギアシフト", + "block.create.sequenced_gearshift.tooltip.summary": "最大_5つの連続する命令_に従って_回転スループット_を変更できる_プログラム可能_な_ユーティリティコンポーネント_。 これを使用して、メカニカルベアリング、ピストン、またはプーリーに動力を供給し、タイミングと速度をより細かく制御します。 高速では精度が低下する可能性があります。", + "block.create.sequenced_gearshift.tooltip.condition1": "レッドストーン信号を与えたとき", + "block.create.sequenced_gearshift.tooltip.behaviour1": "入力速度に基づいてプログラムされた命令の実行を開始します。", + "block.create.sequenced_gearshift.tooltip.condition2": "右クリックしたとき", + "block.create.sequenced_gearshift.tooltip.behaviour2": "_設定インターフェース_を開きます", - "block.create.cart_assembler.tooltip": "カートアッセンブラー", - "block.create.cart_assembler.tooltip.summary": "接続ã�•ã‚Œã�Ÿæ§‹é€ ç‰©ã‚’_通é�Žã�™ã‚‹ãƒˆãƒ­ãƒƒã‚³_ã�«å�–り付ã�‘ã�¾ã�™ã€‚", - "block.create.cart_assembler.tooltip.condition1": "レッドストーン信å�·ã‚’与ã�ˆã�Ÿã�¨ã��", - "block.create.cart_assembler.tooltip.behaviour1": "_通é�Žã�™ã‚‹ã‚«ãƒ¼ãƒˆ_ã�®ãƒžã‚¦ãƒ³ãƒˆã�•ã‚Œã�Ÿæ§‹é€ ç‰©ã‚’_分解_ã�—ã€�ã��れらをワールドã�«æˆ»ã�—ã�¾ã�™ã€‚", + "block.create.cart_assembler.tooltip": "カートアッセンブラー", + "block.create.cart_assembler.tooltip.summary": "接続された構造物を_通過するトロッコ_に取り付けます。", + "block.create.cart_assembler.tooltip.condition1": "レッドストーン信号を与えたとき", + "block.create.cart_assembler.tooltip.behaviour1": "_通過するカート_のマウントされた構造物を_分解_し、それらをワールドに戻します。", "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", @@ -1144,198 +1144,198 @@ "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", - "block.create.rope_pulley.tooltip": "ローププーリー", - "block.create.rope_pulley.tooltip.summary": "å�–り付ã�‘ã�Ÿ_ブロックã�¨æ§‹é€ ç‰©ã‚’åž‚ç›´_ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ _シャーシブロック_ã�¾ã�Ÿã�¯_スライムブロック_を使用ã�—ã�¦ã€�1ã�¤ä»¥ä¸Šã�®ãƒ–ロックを移動ã�—ã�¾ã�™ã€‚", - "block.create.rope_pulley.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.rope_pulley.tooltip.behaviour1": "å�–り付ã�‘ã�Ÿæ§‹é€ ç‰©ã�®ç§»å‹•ã‚’開始ã�—ã�¾ã�™ã€‚ 速度ã�¨æ–¹å�‘ã�¯ã€�入力ã�•ã‚Œã‚‹å›žè»¢é€Ÿåº¦ã�«ç›¸é–¢ã�—ã�¾ã�™ã€‚", + "block.create.rope_pulley.tooltip": "ローププーリー", + "block.create.rope_pulley.tooltip.summary": "取り付けた_ブロックと構造物を垂直_に移動します。 _シャーシブロック_または_スライムブロック_を使用して、1つ以上のブロックを移動します。", + "block.create.rope_pulley.tooltip.condition1": "回転したとき", + "block.create.rope_pulley.tooltip.behaviour1": "取り付けた構造物の移動を開始します。 速度と方向は、入力される回転速度に相関します。", - "block.create.linear_chassis.tooltip": "トランスシャーシ", - "block.create.linear_chassis.tooltip.summary": "移動用ã�®æ§‹é€ ã‚’接続ã�™ã‚‹æ§‹æˆ�å�¯èƒ½ã�ªãƒ™ãƒ¼ã‚¹ãƒ–ロック。", - "block.create.linear_chassis.tooltip.condition1": "移動ã�—ã�Ÿã�¨ã��", - "block.create.linear_chassis.tooltip.behaviour1": "_å�–り付ã�‘られるã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·_ã‚’å�Œã�˜æ–¹å�‘ã�«ç§»å‹•ã�—ã€�ブロックã�®åˆ—ã‚’ã��ã�®ç¯„囲内ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚ ブロックã�¯ã€�シャーシã�®è¡¨é�¢ã�Œ_粘ç�€æ€§_ã�Œã�‚ã‚‹å ´å�ˆã�«ã�®ã�¿å¼•ã�£å¼µã‚‰ã‚Œã�¾ã�™ï¼ˆ[Ctrl]ã‚’å�‚照)。", - "block.create.linear_chassis.tooltip.condition2": "レンãƒ�ã�—ã�Ÿã�¨ã��", - "block.create.linear_chassis.tooltip.behaviour2": "ã�“ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®_範囲_を構æˆ�ã�—ã�¾ã�™ã€‚ CTRLキーを押ã�—ã�Ÿã�¾ã�¾ã€�接続ã�•ã‚Œã�¦ã�„ã‚‹ã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®ç¯„囲も変更ã�—ã�¾ã�™ã€‚", - "block.create.linear_chassis.tooltip.control1": "スライムボールã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.linear_chassis.tooltip.action1": "クリックã�—ã�Ÿé�¢ã‚’_粘ç�€æ€§_ã�«ã�—ã�¾ã�™ã€‚ 移動ã�™ã‚‹ã�¨ã€�シャーシã�¯ç§»å‹•æ–¹å�‘ã�«é–¢ä¿‚ã�ªã��ã€�å�–り付ã�‘られã�Ÿãƒ–ロックを_引ã�£å¼µã‚Š_ã�¾ã�™ã€‚", + "block.create.linear_chassis.tooltip": "トランスシャーシ", + "block.create.linear_chassis.tooltip.summary": "移動用の構造を接続する構成可能なベースブロック。", + "block.create.linear_chassis.tooltip.condition1": "移動したとき", + "block.create.linear_chassis.tooltip.behaviour1": "_取り付けられるすべてのシャーシ_を同じ方向に移動し、ブロックの列をその範囲内に移動します。 ブロックは、シャーシの表面が_粘着性_がある場合にのみ引っ張られます([Ctrl]を参照)。", + "block.create.linear_chassis.tooltip.condition2": "レンチしたとき", + "block.create.linear_chassis.tooltip.behaviour2": "このシャーシブロックの_範囲_を構成します。 CTRLキーを押したまま、接続されているすべてのシャーシブロックの範囲も変更します。", + "block.create.linear_chassis.tooltip.control1": "スライムボールで右クリックしたとき", + "block.create.linear_chassis.tooltip.action1": "クリックした面を_粘着性_にします。 移動すると、シャーシは移動方向に関係なく、取り付けられたブロックを_引っ張り_ます。", - "block.create.radial_chassis.tooltip": "回転シャーシ", - "block.create.radial_chassis.tooltip.summary": "移動用ã�®æ§‹é€ ã‚’å�–り付ã�‘る構æˆ�å�¯èƒ½ã�ªãƒ™ãƒ¼ã‚¹ãƒ–ロック。", - "block.create.radial_chassis.tooltip.condition1": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", - "block.create.radial_chassis.tooltip.behaviour1": "列ã�«_å�–り付ã�‘られã�¦ã‚‹ã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·_ã€�ã�Šã‚ˆã�³ã��れ自体ã�®å‘¨ã‚Šã�®ãƒ–ロックã�®ã‚·ãƒªãƒ³ãƒ€ãƒ¼ã‚’_移動_ã�—ã�¾ã�™ã€‚ 周囲ã�®ãƒ–ロックã�¯ã€�範囲内ã�«ã�‚ã‚Šã€�粘ç�€é�¢ã�«æŽ¥ç¶šã�•ã‚Œã�¦ã�„ã‚‹å ´å�ˆã�«ã�®ã�¿ç§»å‹•ã�•ã‚Œã�¾ã�™ï¼ˆ[Ctrl]ã‚’å�‚照)。", - "block.create.radial_chassis.tooltip.condition2": "レンãƒ�を使ã�£ã�Ÿã�¨ã��", - "block.create.radial_chassis.tooltip.behaviour2": "ã�“ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®_範囲_を構æˆ�ã�—ã�¾ã�™ã€‚ CTRLキーを押ã�—ã�Ÿã�¾ã�¾ã€�接続ã�•ã‚Œã�¦ã�„ã‚‹ã�™ã�¹ã�¦ã�®ã‚·ãƒ£ãƒ¼ã‚·ãƒ–ロックã�®ç¯„囲も変更ã�—ã�¾ã�™ã€‚", - "block.create.radial_chassis.tooltip.control1": "スライムボールã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.radial_chassis.tooltip.action1": "クリックã�—ã�Ÿé�¢ã‚’_粘ç�€æ€§_ã�«ã�—ã�¾ã�™ã€‚ シャーシã�Œç§»å‹•ã�™ã‚‹ã�¨ã€�粘ç�€é�¢ã�«æŽ¥ç¶šã�•ã‚Œã�¦ã�„ã‚‹ã�™ã�¹ã�¦ã�®æŒ‡å®šãƒ–ロックã�Œä¸€ç·’ã�«ç§»å‹•ã�—ã�¾ã�™ã€‚", + "block.create.radial_chassis.tooltip": "回転シャーシ", + "block.create.radial_chassis.tooltip.summary": "移動用の構造を取り付ける構成可能なベースブロック。", + "block.create.radial_chassis.tooltip.condition1": "動かしたとき", + "block.create.radial_chassis.tooltip.behaviour1": "列に_取り付けられてるすべてのシャーシ_、およびそれ自体の周りのブロックのシリンダーを_移動_します。 周囲のブロックは、範囲内にあり、粘着面に接続されている場合にのみ移動されます([Ctrl]を参照)。", + "block.create.radial_chassis.tooltip.condition2": "レンチを使ったとき", + "block.create.radial_chassis.tooltip.behaviour2": "このシャーシブロックの_範囲_を構成します。 CTRLキーを押したまま、接続されているすべてのシャーシブロックの範囲も変更します。", + "block.create.radial_chassis.tooltip.control1": "スライムボールで右クリックしたとき", + "block.create.radial_chassis.tooltip.action1": "クリックした面を_粘着性_にします。 シャーシが移動すると、粘着面に接続されているすべての指定ブロックが一緒に移動します。", - "block.create.mechanical_drill.tooltip": "機械ドリル", - "block.create.mechanical_drill.tooltip.summary": "_ブロックを壊ã�™_ã�®ã�«é�©ã�—ã�Ÿæ©Ÿæ¢°è£…置。 _メカニカルピストン_ã�¾ã�Ÿã�¯_ベアリング_ã�§ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", - "block.create.mechanical_drill.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_drill.tooltip.behaviour1": "_é�™æ­¢_ã�—ã�Ÿãƒ–ロックブレーカーã�¨ã�—ã�¦æ©Ÿèƒ½ã�—ã�¾ã�™ã€‚ ã�¾ã�Ÿã€�有効領域ã�®_エンティティを傷ã�¤ã�‘ã�¾ã�™_。", - "block.create.mechanical_drill.tooltip.condition2": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_drill.tooltip.behaviour2": "ドリルã�Œè¡�çª�ã�™ã‚‹ãƒ–ロックを壊ã�—ã�¾ã�™ã€‚", + "block.create.mechanical_drill.tooltip": "機械ドリル", + "block.create.mechanical_drill.tooltip.summary": "_ブロックを壊す_のに適した機械装置。 _メカニカルピストン_または_ベアリング_で移動可能です。", + "block.create.mechanical_drill.tooltip.condition1": "回転したとき", + "block.create.mechanical_drill.tooltip.behaviour1": "_静止_したブロックブレーカーとして機能します。 また、有効領域の_エンティティを傷つけます_。", + "block.create.mechanical_drill.tooltip.condition2": "動かしたとき", + "block.create.mechanical_drill.tooltip.behaviour2": "ドリルが衝突するブロックを壊します。", - "block.create.mechanical_harvester.tooltip": "メカニカルãƒ�ーベスター", - "block.create.mechanical_harvester.tooltip.summary": "中è¦�模ã�®ä½œç‰©ã�®è‡ªå‹•åŒ–ã�«é�©ã�—ã�Ÿæ©Ÿæ¢°å¼�æ¤�物カッター。 _メカニカルピストン_ã�¾ã�Ÿã�¯_ベアリング_ã�§ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", - "block.create.mechanical_harvester.tooltip.condition1": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_harvester.tooltip.behaviour1": "ブレードã�Œè¡�çª�ã�™ã‚‹_ã�™ã�¹ã�¦ã�®æˆ�熟ã�—ã�Ÿä½œç‰©ã‚’å�Žç©«_ã�—ã€�ã��れらをåˆ�期ã�®æˆ�長状態ã�«ãƒªã‚»ãƒƒãƒˆã�—ã�¾ã�™ã€‚", + "block.create.mechanical_harvester.tooltip": "メカニカルハーベスター", + "block.create.mechanical_harvester.tooltip.summary": "中規模の作物の自動化に適した機械式植物カッター。 _メカニカルピストン_または_ベアリング_で移動可能です。", + "block.create.mechanical_harvester.tooltip.condition1": "動かしたとき", + "block.create.mechanical_harvester.tooltip.behaviour1": "ブレードが衝突する_すべての成熟した作物を収穫_し、それらを初期の成長状態にリセットします。", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", "block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving", "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", - "block.create.mechanical_saw.tooltip": "メカニカル鋸", - "block.create.mechanical_saw.tooltip.summary": "木を効果的ã�«åˆ‡æ–­ã�—ã�Ÿã‚Šã€�大工ã�—ã�Ÿã‚‚ã�®ã�«ãƒ–ロックを切断ã�—ã�Ÿã‚Šã�™ã‚‹ã�®ã�«é�©ã�—ã�¦ã�„ã�¾ã�™ã€‚ メカニカルピストンã�¾ã�Ÿã�¯ãƒ™ã‚¢ãƒªãƒ³ã‚°ã‚’使用ã�—ã�¦ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", - "block.create.mechanical_saw.tooltip.condition1": "上å�‘ã��ã�®ã�¨ã��", - "block.create.mechanical_saw.tooltip.behaviour1": "ã��ã�“ã�«ãƒ‰ãƒ­ãƒƒãƒ—ã�¾ã�Ÿã�¯æŒ¿å…¥ã�•ã‚Œã�Ÿã‚¢ã‚¤ãƒ†ãƒ ã�«_製æ��_ã�Šã‚ˆã�³ã‚¹ãƒˆãƒ¼ãƒ³ã‚«ãƒƒãƒ†ã‚£ãƒ³ã‚°ãƒ¬ã‚·ãƒ”ã‚’é�©ç”¨ã�—ã�¾ã�™ã€‚ 複数ã�®å‡ºåŠ›ã�Œå�¯èƒ½ã�ªå ´å�ˆã€�フィルターã�Œå‰²ã‚Šå½“ã�¦ã‚‰ã‚Œã�¦ã�„ã�ªã�„é™�ã‚Šã€�出力ã�Œå¾ªç’°ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_saw.tooltip.condition2": "横å�‘ã��ã�®å ´å�ˆ", - "block.create.mechanical_saw.tooltip.behaviour2": "ã��ã�®å‰�ã�§_原木を分割_ã�—ã�¾ã�™ã€‚ 原木ã�Œã��れ自体ã�§ãƒ„リーをサãƒ�ートã�—ã�¦ã�„ã�Ÿå ´å�ˆã€�_木ã�¯ã�®ã�“ã�Žã‚Šã�‹ã‚‰é›¢ã‚Œã�¦å´©å£Š_ã�—ã�¾ã�™ã€‚", - "block.create.mechanical_saw.tooltip.condition3": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", - "block.create.mechanical_saw.tooltip.behaviour3": "ã�®ã�“ã�Žã‚Šã�Œè¡�çª�ã�™ã‚‹_ã�™ã�¹ã�¦ã�®æœ¨ã‚’切り倒ã�—ã�¾ã�™_。", + "block.create.mechanical_saw.tooltip": "メカニカル鋸", + "block.create.mechanical_saw.tooltip.summary": "木を効果的に切断したり、大工したものにブロックを切断したりするのに適しています。 メカニカルピストンまたはベアリングを使用して移動可能です。", + "block.create.mechanical_saw.tooltip.condition1": "上向きのとき", + "block.create.mechanical_saw.tooltip.behaviour1": "そこにドロップまたは挿入されたアイテムに_製材_およびストーンカッティングレシピを適用します。 複数の出力が可能な場合、フィルターが割り当てられていない限り、出力が循環します。", + "block.create.mechanical_saw.tooltip.condition2": "横向きの場合", + "block.create.mechanical_saw.tooltip.behaviour2": "その前で_原木を分割_します。 原木がそれ自体でツリーをサポートしていた場合、_木はのこぎりから離れて崩壊_します。", + "block.create.mechanical_saw.tooltip.condition3": "動かしたとき", + "block.create.mechanical_saw.tooltip.behaviour3": "のこぎりが衝突する_すべての木を切り倒します_。", - "block.create.stockpile_switch.tooltip": "在庫スイッãƒ�", - "block.create.stockpile_switch.tooltip.summary": "接続ã�•ã‚Œã�Ÿã‚³ãƒ³ãƒ†ãƒŠã�®_空ã��容é‡�_ã�«åŸºã�¥ã�„ã�¦ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ä¿¡å�·ã‚’切り替ã�ˆã�¾ã�™ã€‚", - "block.create.stockpile_switch.tooltip.condition1": "下é™�を下回ã�£ã�Ÿã�¨ã��", - "block.create.stockpile_switch.tooltip.behaviour1": "レッドストーン信å�·ã‚’å�œæ­¢", - "block.create.stockpile_switch.tooltip.condition2": "上é™�を超ã�ˆã�Ÿã�¨ã��。", - "block.create.stockpile_switch.tooltip.behaviour2": "å†�ã�³ä¸‹é™�ã�«é�”ã�™ã‚‹ã�¾ã�§ã€�レッドストーン信å�·ã�®æ��供を開始ã�—ã�¾ã�™ã€‚", - "block.create.stockpile_switch.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.stockpile_switch.tooltip.action1": "_設定インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "block.create.stockpile_switch.tooltip": "在庫スイッチ", + "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。", + "block.create.stockpile_switch.tooltip.condition1": "下限を下回ったとき", + "block.create.stockpile_switch.tooltip.behaviour1": "レッドストーン信号を停止", + "block.create.stockpile_switch.tooltip.condition2": "上限を超えたとき。", + "block.create.stockpile_switch.tooltip.behaviour2": "再び下限に達するまで、レッドストーン信号の提供を開始します。", + "block.create.stockpile_switch.tooltip.control1": "右クリックしたとき", + "block.create.stockpile_switch.tooltip.action1": "_設定インターフェース_を開きます", - "block.create.redstone_link.tooltip": "レッドストーンリンク", - "block.create.redstone_link.tooltip.summary": "_ワイヤレスレッドストーン_接続ã�®ã‚¨ãƒ³ãƒ‰ãƒ�イント。 ä»»æ„�ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�—ã�¦_周波数_を割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ ä¿¡å�·ç¯„囲ã�¯é™�られã�¦ã�„ã�¾ã�™ã�Œã€�ã�‹ã�ªã‚Šé›¢ã‚Œã�¦ã�„ã�¾ã�™ã€‚", - "block.create.redstone_link.tooltip.condition1": "入力ã�Œã�‚ã‚‹ã�¨ã��", - "block.create.redstone_link.tooltip.behaviour1": "å�Œã�˜å‘¨æ³¢æ•°ã�®ãƒªãƒ³ã‚¯ã‚’å�—ä¿¡ã�™ã‚‹ã�¨ã€�レッドストーン信å�·ã�Œç”Ÿæˆ�ã�•ã‚Œã�¾ã�™ã€‚", - "block.create.redstone_link.tooltip.control1": "アイテムã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.redstone_link.tooltip.action1": "_周波数_ã‚’ã��ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�«è¨­å®šã�—ã�¾ã�™ã€‚ 周波数を定義ã�™ã‚‹ã�Ÿã‚�ã�«ã€�_å�ˆè¨ˆ2ã�¤ã�®ç•°ã�ªã‚‹ã‚¢ã‚¤ãƒ†ãƒ _を組ã�¿å�ˆã‚�ã�›ã�¦ä½¿ç”¨ã�§ã��ã�¾ã�™ã€‚", - "block.create.redstone_link.tooltip.control2": "スニークã�—ã�ªã�Œã‚‰å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.redstone_link.tooltip.action2": "_å�—ä¿¡æ©Ÿ_モードã�¨_é€�ä¿¡æ©Ÿ_モードを切り替ã�ˆã�¾ã�™ã€‚", + "block.create.redstone_link.tooltip": "レッドストーンリンク", + "block.create.redstone_link.tooltip.summary": "_ワイヤレスレッドストーン_接続のエンドポイント。 任意のアイテムを使用して_周波数_を割り当てることができます。 信号範囲は限られていますが、かなり離れています。", + "block.create.redstone_link.tooltip.condition1": "入力があるとき", + "block.create.redstone_link.tooltip.behaviour1": "同じ周波数のリンクを受信すると、レッドストーン信号が生成されます。", + "block.create.redstone_link.tooltip.control1": "アイテムで右クリックしたとき", + "block.create.redstone_link.tooltip.action1": "_周波数_をそのアイテムに設定します。 周波数を定義するために、_合計2つの異なるアイテム_を組み合わせて使用できます。", + "block.create.redstone_link.tooltip.control2": "スニークしながら右クリックしたとき", + "block.create.redstone_link.tooltip.action2": "_受信機_モードと_送信機_モードを切り替えます。", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", "block.create.nixie_tube.tooltip.condition1": "UNLOCALIZED: When Powered", "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", - "block.create.redstone_contact.tooltip": "レッドストーンコンタクト", - "block.create.redstone_contact.tooltip.summary": "レッドストーンパワーã�®ã�¿ã‚’ペアã�§æ”¾å‡ºã�—ã�¾ã�™ã€‚ _メカニカルピストン_ã�¾ã�Ÿã�¯_ベアリング_ã�§ç§»å‹•å�¯èƒ½ã�§ã�™ã€‚", - "block.create.redstone_contact.tooltip.condition1": "ä»–ã�®ã‚³ãƒ³ã‚¿ã‚¯ãƒˆã�«ç›´é�¢ã�—ã�Ÿã�¨ã��", - "block.create.redstone_contact.tooltip.behaviour1": "レッドストーン信å�·ã‚’æ��ä¾›ã�—ã�¾ã�™ã€‚", - "block.create.redstone_contact.tooltip.condition2": "å‹•ã�‹ã�—ã�Ÿã�¨ã��", - "block.create.redstone_contact.tooltip.behaviour2": "通é�Žã�™ã‚‹ã�™ã�¹ã�¦ã�®å›ºå®šæŽ¥ç‚¹ã‚’トリガーã�—ã�¾ã�™ã€‚", + "block.create.redstone_contact.tooltip": "レッドストーンコンタクト", + "block.create.redstone_contact.tooltip.summary": "レッドストーンパワーのみをペアで放出します。 _メカニカルピストン_または_ベアリング_で移動可能です。", + "block.create.redstone_contact.tooltip.condition1": "他のコンタクトに直面したとき", + "block.create.redstone_contact.tooltip.behaviour1": "レッドストーン信号を提供します。", + "block.create.redstone_contact.tooltip.condition2": "動かしたとき", + "block.create.redstone_contact.tooltip.behaviour2": "通過するすべての固定接点をトリガーします。", - "block.create.adjustable_crate.tooltip": "調整å�¯èƒ½ã�ªã‚¯ãƒ¬ãƒ¼ãƒˆ", - "block.create.adjustable_crate.tooltip.summary": "ã�“ã�®_ストレージコンテナ_ã�§ã�¯ã€�容é‡�を手動ã�§åˆ¶å¾¡ã�§ã��ã�¾ã�™ã€‚ ä»»æ„�ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�®æœ€å¤§_16スタック_ã‚’ä¿�æŒ�ã�§ã��ã�¾ã�™ã€‚ _レッドストーンコンパレータ_をサãƒ�ートã�—ã�¾ã�™ã€‚", - "block.create.adjustable_crate.tooltip.control1": "å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.adjustable_crate.tooltip.action1": "_インターフェース_ã‚’é–‹ã��ã�¾ã�™", + "block.create.adjustable_crate.tooltip": "調整可能なクレート", + "block.create.adjustable_crate.tooltip.summary": "この_ストレージコンテナ_では、容量を手動で制御できます。 任意のアイテムの最大_16スタック_を保持できます。 _レッドストーンコンパレータ_をサポートします。", + "block.create.adjustable_crate.tooltip.control1": "右クリックしたとき", + "block.create.adjustable_crate.tooltip.action1": "_インターフェース_を開きます", - "block.create.creative_crate.tooltip": "クリエイティブクレート", - "block.create.creative_crate.tooltip.summary": "隣接ã�™ã‚‹æ¦‚略図砲ã�¸ãƒ–ロックã�®ç„¡é™�ã�«ä¾›çµ¦ã�—ã�¾ã�™ã€‚", + "block.create.creative_crate.tooltip": "クリエイティブクレート", + "block.create.creative_crate.tooltip.summary": "隣接する概略図砲へブロックの無限に供給します。", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", - "block.create.extractor.tooltip": "抽出器", - "block.create.extractor.tooltip.summary": "付属ã�®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰_アイテムをå�–ã‚Š_ã€�地é�¢ã�«ãƒ‰ãƒ­ãƒƒãƒ—ã�—ã�¾ã�™ã€‚ スペースã�Œç©ºã�„ã�¦ã�„ã�ªã�„é™�ã‚Šã€�アイテムã�¯ãƒ‰ãƒ­ãƒƒãƒ—ã�•ã‚Œã�¾ã�›ã‚“。 _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", - "block.create.extractor.tooltip.condition1": "レッドストーン信å�·ã�Œã�‚ã‚‹ã�¨ã��", - "block.create.extractor.tooltip.behaviour1": "エクストラクタを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.extractor.tooltip.condition2": "アクティブベルト牽引ã�•ã‚Œã�Ÿã�¨ã��", - "block.create.extractor.tooltip.behaviour2": "エクストラクタã�¯ã€�_真ã�¡ã‚…ã�†è£½ã�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°_ã�§è£œå¼·ã�•ã‚Œã�Ÿ_ベルトã�‹ã‚‰_アイテムを引ã��出ã�™ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ エクストラクタã�Œè©°ã�¾ã‚‹ã�¨ã€�_ベルトã�Œå�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.extractor.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯", - "block.create.extractor.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚ エクストラクターã�¯ã€�アイテム_タイプ_ã�¨ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚¹ã‚¿ãƒƒã‚¯ã�®_æ•°_を排他的ã�«å�–å¾—ã�—ã�¾ã�™ã€‚", + "block.create.extractor.tooltip": "抽出器", + "block.create.extractor.tooltip.summary": "付属のインベントリから_アイテムを取り_、地面にドロップします。 スペースが空いていない限り、アイテムはドロップされません。 _フィルター_としてアイテムスタックを割り当てることができます。", + "block.create.extractor.tooltip.condition1": "レッドストーン信号があるとき", + "block.create.extractor.tooltip.behaviour1": "エクストラクタを_一時停止_します。", + "block.create.extractor.tooltip.condition2": "アクティブベルト牽引されたとき", + "block.create.extractor.tooltip.behaviour2": "エクストラクタは、_真ちゅう製のケーシング_で補強された_ベルトから_アイテムを引き出すことができます。 エクストラクタが詰まると、_ベルトが停止_します。", + "block.create.extractor.tooltip.control1": "フィルタースペースを右クリック", + "block.create.extractor.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 エクストラクターは、アイテム_タイプ_とフィルタースタックの_数_を排他的に取得します。", - "block.create.transposer.tooltip": "トランスãƒ�ーザー", - "block.create.transposer.tooltip.summary": "å�–り付ã�‘ã�•ã‚Œã�Ÿã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�‹ã‚‰_アイテムをå�–å¾—_ã�—ã€�ã�™ã��ã�«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ_インベントリ_ã�«å…¥ã‚Œã�¾ã�™ã€‚ _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", - "block.create.transposer.tooltip.condition1": "レッドストーン信å�·ã�Œã�‚ã‚‹ã�¨ã��", - "block.create.transposer.tooltip.behaviour1": "トランスãƒ�ーザを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.transposer.tooltip.condition2": "アクティブベルト牽引ã�•ã‚Œã�Ÿã�¨ã��", - "block.create.transposer.tooltip.behaviour2": "トランスãƒ�ーザーã�¯ã€�_真é�®ã�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°ã�§è£œå¼·_ã�•ã‚Œã�Ÿ_ベルトã�‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ _を引ã�£å¼µã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ トランスãƒ�ーザã�Œãƒ�ックアップã�•ã‚Œã‚‹ã�¨ã€�_ベルトã�Œå�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.transposer.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯", - "block.create.transposer.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚トランスãƒ�ーザーã�¯ã€�フィルタースタックã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚¿ã‚¤ãƒ—ã�¨_カウント_を排他的ã�«ãƒ—ルã�—ã�¾ã�™ã€‚", + "block.create.transposer.tooltip": "トランスポーザー", + "block.create.transposer.tooltip.summary": "取り付けされたインベントリから_アイテムを取得_し、すぐにターゲット_インベントリ_に入れます。 _フィルター_としてアイテムスタックを割り当てることができます。", + "block.create.transposer.tooltip.condition1": "レッドストーン信号があるとき", + "block.create.transposer.tooltip.behaviour1": "トランスポーザを_一時停止_します。", + "block.create.transposer.tooltip.condition2": "アクティブベルト牽引されたとき", + "block.create.transposer.tooltip.behaviour2": "トランスポーザーは、_真鍮のケーシングで補強_された_ベルトからアイテム_を引っ張ることができます。 トランスポーザがバックアップされると、_ベルトが停止_します。", + "block.create.transposer.tooltip.control1": "フィルタースペースを右クリック", + "block.create.transposer.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。トランスポーザーは、フィルタースタックのアイテムタイプと_カウント_を排他的にプルします。", - "block.create.deployer.tooltip": "デプロイヤ", - "block.create.deployer.tooltip.summary": "_パンãƒ�_ã€�_使用_ã€�_有効化_。 ã�“ã�®ãƒžã‚·ãƒ³ã�¯ã€�_プレイヤー_ã‚’ã�§ã��ã‚‹ã� ã�‘_真似_ã�—よã�†ã�¨ã�—ã�¾ã�™ã€‚ 隣接ã�™ã‚‹ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã�®_アイテムをå�—ã�‘å�–ã‚Š_ã€�_é �ã�‘ã‚‹_ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", - "block.create.deployer.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.deployer.tooltip.behaviour1": "腕を伸ã�°ã�—ã€�_2må…ˆ_ã�®ãƒ–ロックスペースã�§_発動_。", - "block.create.deployer.tooltip.condition2": "レンãƒ�ã�§å�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.deployer.tooltip.behaviour2": "パンãƒ�モードを切り替ã�ˆã�¾ã�™ã€‚ _パンãƒ�モード_ã�§ã�¯ã€�デプロイヤã�¯ã��ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�—ã�¦_ブロックを壊ã�—ã�Ÿã‚Šã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’å‚·ã�¤ã�‘_ã�Ÿã‚Šã�—よã�†ã�¨ã�—ã�¾ã�™ã€‚", + "block.create.deployer.tooltip": "デプロイヤ", + "block.create.deployer.tooltip.summary": "_パンチ_、_使用_、_有効化_。 このマシンは、_プレイヤー_をできるだけ_真似_しようとします。 隣接するインベントリの_アイテムを受け取り_、_預ける_ことができます。 _フィルター_としてアイテムスタックを割り当てることができます。", + "block.create.deployer.tooltip.condition1": "回転したとき", + "block.create.deployer.tooltip.behaviour1": "腕を伸ばし、_2m先_のブロックスペースで_発動_。", + "block.create.deployer.tooltip.condition2": "レンチで右クリックしたとき", + "block.create.deployer.tooltip.behaviour2": "パンチモードを切り替えます。 _パンチモード_では、デプロイヤはそのアイテムを使用して_ブロックを壊したりエンティティを傷つけ_たりしようとします。", - "block.create.linked_extractor.tooltip": "リンクエクストラクター", - "block.create.linked_extractor.tooltip.summary": "å�–り付ã�‘ã�¦ã‚‹_インベントリ_ã�‹ã‚‰_アイテムをå�–ã‚Š_ã€�ã��れらを地é�¢ã�«è�½ã�¨ã�—ã�¾ã�™ã€‚ スペースã�Œç©ºã�„ã�¦ã�„ã�ªã�„é™�ã‚Šã€�アイテムã�¯ãƒ‰ãƒ­ãƒƒãƒ—ã�•ã‚Œã�¾ã�›ã‚“。 _フィルター_ã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ _レッドストーンリンク_を介ã�—ã�¦ãƒªãƒ¢ãƒ¼ãƒˆã�§åˆ¶å¾¡ã�§ã��ã�¾ã�™ã€‚", - "block.create.linked_extractor.tooltip.condition1": "レッドストーンリンクã�Œã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã�ªå ´å�ˆ", - "block.create.linked_extractor.tooltip.behaviour1": "エクストラクタを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.linked_extractor.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.linked_extractor.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚ エクストラクターã�¯ã€�_アイテムタイプ_ã�¨ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚¹ã‚¿ãƒƒã‚¯ã�®_æ•°_を排他的ã�«å�–å¾—ã�—ã�¾ã�™ã€‚", - "block.create.linked_extractor.tooltip.control2": "周波数スペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.linked_extractor.tooltip.action2": "リッスンã�•ã‚Œã�¦ã�„る周波数ã�®ä¸€éƒ¨ã�¨ã�—ã�¦_ç�¾åœ¨ä¿�æŒ�_ã�•ã‚Œã�¦ã�„るアイテムを割り当ã�¦ã�¾ã�™ã€‚ å�Œã�˜å‘¨æ³¢æ•°ã�®é€�ä¿¡_レッドストーンリンク_ã�«å‹•åŠ›ã�Œä¾›çµ¦ã�•ã‚Œã‚‹ã�¨ã€�ã�“ã�®ã‚¨ã‚¯ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãƒ¼ã�¯ä¸€æ™‚å�œæ­¢ã�—ã�¾ã�™ã€‚", + "block.create.linked_extractor.tooltip": "リンクエクストラクター", + "block.create.linked_extractor.tooltip.summary": "取り付けてる_インベントリ_から_アイテムを取り_、それらを地面に落とします。 スペースが空いていない限り、アイテムはドロップされません。 _フィルター_としてアイテムスタックを割り当てることができます。 _レッドストーンリンク_を介してリモートで制御できます。", + "block.create.linked_extractor.tooltip.condition1": "レッドストーンリンクがアクティブな場合", + "block.create.linked_extractor.tooltip.behaviour1": "エクストラクタを_一時停止_します。", + "block.create.linked_extractor.tooltip.control1": "フィルタースペースを右クリックしたとき", + "block.create.linked_extractor.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 エクストラクターは、_アイテムタイプ_とフィルタースタックの_数_を排他的に取得します。", + "block.create.linked_extractor.tooltip.control2": "周波数スペースを右クリックしたとき", + "block.create.linked_extractor.tooltip.action2": "リッスンされている周波数の一部として_現在保持_されているアイテムを割り当てます。 同じ周波数の送信_レッドストーンリンク_に動力が供給されると、このエクストラクターは一時停止します。", - "block.create.linked_transposer.tooltip": "リンクã�•ã‚Œã�Ÿãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザー", - "block.create.linked_transposer.tooltip.summary": "å�–り付ã�‘ã�¦ã‚‹_インベントリ_ã�‹ã‚‰_アイテムをå�–å¾—_ã�—ã€�ã�™ã��ã�«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ_インベントリ_ã�«å…¥ã‚Œã�¾ã�™ã€‚ フィルターã�¨ã�—ã�¦ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯ã‚’割り当ã�¦ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ _レッドストーンリンク_を介ã�—ã�¦ãƒªãƒ¢ãƒ¼ãƒˆã�§åˆ¶å¾¡ã�§ã��ã�¾ã�™ã€‚", - "block.create.linked_transposer.tooltip.condition1": "レッドストーンリンクã�Œã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã�®ã�¨ã��", - "block.create.linked_transposer.tooltip.behaviour1": "トランスãƒ�ーザを_一時å�œæ­¢_ã�—ã�¾ã�™ã€‚", - "block.create.linked_transposer.tooltip.control1": "フィルタースペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.linked_transposer.tooltip.action1": "ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るスタック_ã‚’_フィルター_ã�¨ã�—ã�¦å‰²ã‚Šå½“ã�¦ã�¾ã�™ã€‚ トランスãƒ�ーザーã�¯ã€�アイテム_タイプ_ã�¨ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼_スタック_ã�®æ•°ã�«ä¸€è‡´ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�®ã�¿ã‚’プルã�—ã�¾ã�™ã€‚", - "block.create.linked_transposer.tooltip.control2": "周波数スペースをå�³ã‚¯ãƒªãƒƒã‚¯ã�—ã�Ÿã�¨ã��", - "block.create.linked_transposer.tooltip.action2": "è�´ã�„ã�¦ã‚‹å‘¨æ³¢æ•°ã�®ä¸€éƒ¨ã�¨ã�—ã�¦ç�¾åœ¨_ä¿�æŒ�ã�•ã‚Œã�¦ã�„るアイテム_を割り当ã�¦ã�¾ã�™ã€‚ å�Œã�˜å‘¨æ³¢æ•°ã�®é€�信レッドストーンリンクã�«å‹•åŠ›ã�Œä¾›çµ¦ã�•ã‚Œã‚‹ã�¨ã€�ã�“ã�®ãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザーã�¯ä¸€æ™‚å�œæ­¢ã�—ã�¾ã�™ã€‚", + "block.create.linked_transposer.tooltip": "リンクされたトランスポーザー", + "block.create.linked_transposer.tooltip.summary": "取り付けてる_インベントリ_から_アイテムを取得_し、すぐにターゲット_インベントリ_に入れます。 フィルターとしてアイテムスタックを割り当てることができます。 _レッドストーンリンク_を介してリモートで制御できます。", + "block.create.linked_transposer.tooltip.condition1": "レッドストーンリンクがアクティブのとき", + "block.create.linked_transposer.tooltip.behaviour1": "トランスポーザを_一時停止_します。", + "block.create.linked_transposer.tooltip.control1": "フィルタースペースを右クリックしたとき", + "block.create.linked_transposer.tooltip.action1": "現在_保持されているスタック_を_フィルター_として割り当てます。 トランスポーザーは、アイテム_タイプ_とフィルター_スタック_の数に一致するアイテムのみをプルします。", + "block.create.linked_transposer.tooltip.control2": "周波数スペースを右クリックしたとき", + "block.create.linked_transposer.tooltip.action2": "聴いてる周波数の一部として現在_保持されているアイテム_を割り当てます。 同じ周波数の送信レッドストーンリンクに動力が供給されると、このトランスポーザーは一時停止します。", - "block.create.funnel.tooltip": "æ¼�æ–—", - "block.create.funnel.tooltip.summary": "_入力アイテムをå�Žé›†_ã�—ã€�å�¯èƒ½ã�ªå ´å�ˆã�¯ã��れらをå�–り付ã�‘ã�Ÿ_インベントリ_ã�«æŒ¿å…¥ã�—ã�¾ã�™ã€‚ _世界_ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚„_ベルト_ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’集ã‚�ã‚‹ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚", - "block.create.funnel.tooltip.condition1": "パッシブベルト引ã�£å¼µã‚Š", - "block.create.funnel.tooltip.behaviour1": "æ¼�æ–—ã�¯ã€�_ベルトã�®ä¸Š_ã�‹ã‚‰æ¨ªã�¾ã�Ÿã�¯ç«¯ã�«é…�ç½®ã�™ã‚‹ã�¨ã€�ベルトã�‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’引ã��出ã�™ã�“ã�¨ã�Œã�§ã��ã�¾ã�™ã€‚ 横å�‘ã��ã�®ãƒ•ã‚¡ãƒ³ãƒ�ルをãƒ�ックアップã�™ã‚‹ã�¨ã€�_ベルト上ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�Œå�œæ­¢ã�™ã‚‹ã�“ã�¨ã�¯ã�‚ã‚Šã�¾ã�›ã‚“_。", + "block.create.funnel.tooltip": "漏斗", + "block.create.funnel.tooltip.summary": "_入力アイテムを収集_し、可能な場合はそれらを取り付けた_インベントリ_に挿入します。 _世界_のアイテムや_ベルト_のアイテムを集めることができます。", + "block.create.funnel.tooltip.condition1": "パッシブベルト引っ張り", + "block.create.funnel.tooltip.behaviour1": "漏斗は、_ベルトの上_から横または端に配置すると、ベルトからアイテムを引き出すことができます。 横向きのファンネルをバックアップすると、_ベルト上のアイテムが停止することはありません_。", - "block.create.belt_tunnel.tooltip": "ベルトトンãƒ�ル", - "block.create.belt_tunnel.tooltip.summary": "_メカニカルベルト_ã‚’å£�ã�«é€šã�™ã�Ÿã‚�ã�®ç¾Žçš„ã�ªã‚ªãƒ—ション。 ベルトã�¯çœŸé�®ã�®_ケーシング_ã�§_補強_ã�™ã‚‹å¿…è¦�ã�Œã�‚ã‚Šã�¾ã�™ã€‚ トンãƒ�ルã�¯_隣接_グループã�¨å�ŒæœŸã�§ã��ã€�グループ内ã�®ã�™ã�¹ã�¦ã�®ãƒˆãƒ³ãƒ�ルã�«1ã�¤ã�®å¾…æ©Ÿã�Œã�‚ã‚‹å ´å�ˆã�«ã�®ã�¿ã‚¢ã‚¤ãƒ†ãƒ ã‚’通é�Žã�•ã�›ã�¾ã�™ã€‚ [Ctrl]", - "block.create.belt_tunnel.tooltip.control1": "å‰�é�¢ã‚’レンãƒ�ã�§å�³ã‚¯ãƒªãƒƒã‚¯", - "block.create.belt_tunnel.tooltip.action1": "_å�ŒæœŸå‹•ä½œ_を切り替ã�ˆã�¾ã�™ã€‚ å�ŒæœŸã�•ã‚Œã�Ÿãƒˆãƒ³ãƒ�ルã�¯ã€�ãƒ�イãƒ�ーã�Œã‚¢ã‚¤ãƒ†ãƒ ã‚’å�–å¾—ã�™ã‚‹ã�¾ã�§ã‚¢ã‚¤ãƒ†ãƒ ã‚’ä¿�æŒ�ã�—ã�¾ã�™ã€‚", - "block.create.belt_tunnel.tooltip.control2": "横é�¢ã‚’レンãƒ�ã�§å�³ã‚¯ãƒªãƒƒã‚¯", - "block.create.belt_tunnel.tooltip.action2": "トンãƒ�ルã�«ã��ã�®é�¢ã�«çª“ã�Œã�‚ã‚‹å ´å�ˆã€�_窓シャッターを調整_ã�—ã�¾ã�™ã€‚", + "block.create.belt_tunnel.tooltip": "ベルトトンネル", + "block.create.belt_tunnel.tooltip.summary": "_メカニカルベルト_を壁に通すための美的なオプション。 ベルトは真鍮の_ケーシング_で_補強_する必要があります。 トンネルは_隣接_グループと同期でき、グループ内のすべてのトンネルに1つの待機がある場合にのみアイテムを通過させます。 [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "前面をレンチで右クリック", + "block.create.belt_tunnel.tooltip.action1": "_同期動作_を切り替えます。 同期されたトンネルは、ネイバーがアイテムを取得するまでアイテムを保持します。", + "block.create.belt_tunnel.tooltip.control2": "横面をレンチで右クリック", + "block.create.belt_tunnel.tooltip.action2": "トンネルにその面に窓がある場合、_窓シャッターを調整_します。", - "block.create.brass_casing.tooltip": "真ã�¡ã‚…ã�†ã�®ã‚±ãƒ¼ã‚·ãƒ³ã‚°", - "block.create.brass_casing.tooltip.summary": "ã�•ã�¾ã�–ã�¾ã�ªç”¨é€”ã�«ä½¿ç”¨ã�§ã��る頑丈ã�ªæ©Ÿæ¢°ã‚±ãƒ¼ã‚·ãƒ³ã‚°ã€‚ 装飾用ã�«ã‚‚安全ã�§ã�™ã€‚", - "block.create.brass_casing.tooltip.condition1": "メカニカルベルトã�«ä½¿ç”¨ã�—ã�Ÿã�¨ã��", - "block.create.brass_casing.tooltip.behaviour1": "真é�®è£½ã�®ãƒ•ã‚¡ãƒ³ãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã�§ãƒ™ãƒ«ãƒˆã‚’補強ã�—ã�¾ã�™ã€‚ 強化ベルトã�¯ã€�ベルトトンãƒ�ルã€�エクストラクタã€�ファンãƒ�ルã€�ã�Šã‚ˆã�³ãƒˆãƒ©ãƒ³ã‚¹ãƒ�ーザをベルトã�®å�´é�¢ã�Šã‚ˆã�³ä¸‹ã�‹ã‚‰ç›¸äº’作用ã�™ã‚‹ã�“ã�¨ã‚’サãƒ�ートã�§ã��ã�¾ã�™ã€‚", + "block.create.brass_casing.tooltip": "真ちゅうのケーシング", + "block.create.brass_casing.tooltip.summary": "さまざまな用途に使用できる頑丈な機械ケーシング。 装飾用にも安全です。", + "block.create.brass_casing.tooltip.condition1": "メカニカルベルトに使用したとき", + "block.create.brass_casing.tooltip.behaviour1": "真鍮製のファンデーションでベルトを補強します。 強化ベルトは、ベルトトンネル、エクストラクタ、ファンネル、およびトランスポーザをベルトの側面および下から相互作用することをサポートできます。", - "block.create.belt_observer.tooltip": "ベルトオブザーãƒ�ー", - "block.create.belt_observer.tooltip.summary": "ã��ã�®å‰�ã�®ãƒ¡ã‚«ãƒ‹ã‚«ãƒ«ãƒ™ãƒ«ãƒˆä¸Šã‚’通りé�Žã�Žã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�¨ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚’検出ã�—ã�¾ã�™ã€‚ レンãƒ�を使用ã�—ã�¦ã€�ã��ã�®å‹•ä½œã‚’循環ã�•ã�›ã�¾ã�™ã€‚ é�žã‚¢ã‚¤ãƒ†ãƒ ã�¯ã€�設定ã�«é–¢ä¿‚ã�ªã��常ã�«æ¤œå‡ºãƒ¢ãƒ¼ãƒ‰ã�§å‡¦ç�†ã�•ã‚Œã�¾ã�™ã€‚", - "block.create.belt_observer.tooltip.condition1": "検出モード", - "block.create.belt_observer.tooltip.behaviour1": "_一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�Œè¦³æ¸¬_ã�•ã‚Œã�Ÿãƒ™ãƒ«ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆã�«ã�‚ã‚‹é–“ã€�レッドストーンを出力ã�—ã�¾ã�™ã€‚", - "block.create.belt_observer.tooltip.condition2": "パルスモード", - "block.create.belt_observer.tooltip.behaviour2": "一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã�Œè¦³æ¸¬_ã�•ã‚Œã�Ÿãƒ™ãƒ«ãƒˆã‚»ã‚°ãƒ¡ãƒ³ãƒˆã�®ä¸­å¿ƒã‚’通é�Žã�™ã‚‹ã�¨ã��ã�«_パルス_を発ã�—ã�¾ã�™ã€‚", - "block.create.belt_observer.tooltip.condition3": "イジェクトモード", - "block.create.belt_observer.tooltip.behaviour3": "_一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ _ã‚’å�´é�¢ã�‹ã‚‰æŽ’出ã�—ã�¾ã�™ã€‚ 対象ã�®ãƒ™ãƒ«ãƒˆã‚„スペースã�Œå� æœ‰ã�•ã‚Œã�¦ã�„ã‚‹å ´å�ˆã€�アイテムã�¯_所定ã�®ä½�ç½®ã�«ä¿�æŒ�_ã�•ã‚Œã�¾ã�™ã€‚", - "block.create.belt_observer.tooltip.condition4": "分割モード", - "block.create.belt_observer.tooltip.behaviour4": "_一致ã�™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã‚¹ã‚¿ãƒƒã‚¯_を分割ã�—ã€�ã��ã�®_å�Šåˆ†_ã‚’å�´é�¢ã�‹ã‚‰_排出_ã�—ã�¾ã�™ã€‚", + "block.create.belt_observer.tooltip": "ベルトオブザーバー", + "block.create.belt_observer.tooltip.summary": "その前のメカニカルベルト上を通り過ぎるアイテムとエンティティを検出します。 レンチを使用して、その動作を循環させます。 非アイテムは、設定に関係なく常に検出モードで処理されます。", + "block.create.belt_observer.tooltip.condition1": "検出モード", + "block.create.belt_observer.tooltip.behaviour1": "_一致するアイテムが観測_されたベルトセグメントにある間、レッドストーンを出力します。", + "block.create.belt_observer.tooltip.condition2": "パルスモード", + "block.create.belt_observer.tooltip.behaviour2": "一致するアイテムが観測_されたベルトセグメントの中心を通過するときに_パルス_を発します。", + "block.create.belt_observer.tooltip.condition3": "イジェクトモード", + "block.create.belt_observer.tooltip.behaviour3": "_一致するアイテム_を側面から排出します。 対象のベルトやスペースが占有されている場合、アイテムは_所定の位置に保持_されます。", + "block.create.belt_observer.tooltip.condition4": "分割モード", + "block.create.belt_observer.tooltip.behaviour4": "_一致するアイテムスタック_を分割し、その_半分_を側面から_排出_します。", - "block.create.pulse_repeater.tooltip": "パルスリピーター", - "block.create.pulse_repeater.tooltip.summary": "通é�Žã�™ã‚‹ãƒ¬ãƒƒãƒ‰ã‚¹ãƒˆãƒ¼ãƒ³ä¿¡å�·ã‚’_1ティック_ã�®é•·ã�•ã�«ã‚«ãƒƒãƒˆã�™ã‚‹ç°¡å�˜ã�ªå›žè·¯ã€‚", + "block.create.pulse_repeater.tooltip": "パルスリピーター", + "block.create.pulse_repeater.tooltip.summary": "通過するレッドストーン信号を_1ティック_の長さにカットする簡単な回路。", - "block.create.adjustable_repeater.tooltip": "フレックスリピーター", - "block.create.adjustable_repeater.tooltip.summary": "最大_30分_ã�®é�…延を_設定å�¯èƒ½_ã�ªé«˜åº¦ã�ª_レッドストーンリピーター_。", + "block.create.adjustable_repeater.tooltip": "フレックスリピーター", + "block.create.adjustable_repeater.tooltip.summary": "最大_30分_の遅延を_設定可能_な高度な_レッドストーンリピーター_。", - "block.create.adjustable_pulse_repeater.tooltip": "フレックスパルスリピーター", - "block.create.adjustable_pulse_repeater.tooltip.summary": "最大_30分_ã�®é�…延を_設定å�¯èƒ½_ã�ª_パルスリピーター_。", + "block.create.adjustable_pulse_repeater.tooltip": "フレックスパルスリピーター", + "block.create.adjustable_pulse_repeater.tooltip.summary": "最大_30分_の遅延を_設定可能_な_パルスリピーター_。", - "block.create.analog_lever.tooltip": "アナログレãƒ�ー", - "block.create.analog_lever.tooltip.summary": "_発信信å�·å¼·åº¦_をより_正確ã�«åˆ¶å¾¡_ã�™ã‚‹ãƒ¬ãƒ�ー。", + "block.create.analog_lever.tooltip": "アナログレバー", + "block.create.analog_lever.tooltip.summary": "_発信信号強度_をより_正確に制御_するレバー。", - "block.create.powered_toggle_latch.tooltip": "パワードトグルラッãƒ�", - "block.create.powered_toggle_latch.tooltip.summary": "レッドストーンパルスã�«ã‚ˆã�£ã�¦ãƒˆã‚°ãƒ«ã�§ã��るレãƒ�ー。", + "block.create.powered_toggle_latch.tooltip": "パワードトグルラッチ", + "block.create.powered_toggle_latch.tooltip.summary": "レッドストーンパルスによってトグルできるレバー。", - "block.create.powered_latch.tooltip": "パワードラッãƒ�", - "block.create.powered_latch.tooltip.summary": "_レッドストーン信å�·_ã�§åˆ¶å¾¡ã�§ã��るレãƒ�ー。 _背é�¢ã�®ä¿¡å�·_ã�¯ã��れをå�¯èƒ½ã�«ã�—ã€�_å�´é�¢ã�‹ã‚‰ã�®ä¿¡å�·_ã�¯ã��れをリセットã�—ã�¾ã�™ã€‚", + "block.create.powered_latch.tooltip": "パワードラッチ", + "block.create.powered_latch.tooltip.summary": "_レッドストーン信号_で制御できるレバー。 _背面の信号_はそれを可能にし、_側面からの信号_はそれをリセットします。", - "block.create.speedometer.tooltip": "スピードメーター", - "block.create.speedometer.tooltip.summary": "接続ã�•ã‚Œã�Ÿå‹•åŠ›ã‚³ãƒ³ãƒ�ーãƒ�ントã�®_回転速度_を測定ã�—ã�¦è¡¨ç¤ºã�—ã�¾ã�™ã€‚ _レッドストーンコンパレータ_をサãƒ�ートã�—ã�¾ã�™ã€‚", - "block.create.speedometer.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.speedometer.tooltip.behaviour1": "速度ã�®ãƒ¬ãƒ™ãƒ«ã�«å¯¾å¿œã�™ã‚‹è‰²ã‚’示ã�—ã�¾ã�™ã€‚ _ç·‘_ã�¯ä½Žé€Ÿã€�_é�’_ã�¯ä¸­ç¨‹åº¦ã€�_ç´«_ã�¯é«˜é€Ÿå›žè»¢ã‚’示ã�—ã�¾ã�™ã€‚ 一部ã�®æ©Ÿæ¢°ã‚³ãƒ³ãƒ�ーãƒ�ントã�¯ã€�é�©åˆ‡ã�«æ©Ÿèƒ½ã�™ã‚‹ã�Ÿã‚�ã�«å��分ã�ªãƒ¬ãƒ™ãƒ«ã�®é€Ÿåº¦ã‚’å¿…è¦�ã�¨ã�—ã�¾ã�™ã€‚", + "block.create.speedometer.tooltip": "スピードメーター", + "block.create.speedometer.tooltip.summary": "接続された動力コンポーネントの_回転速度_を測定して表示します。 _レッドストーンコンパレータ_をサポートします。", + "block.create.speedometer.tooltip.condition1": "回転したとき", + "block.create.speedometer.tooltip.behaviour1": "速度のレベルに対応する色を示します。 _緑_は低速、_青_は中程度、_紫_は高速回転を示します。 一部の機械コンポーネントは、適切に機能するために十分なレベルの速度を必要とします。", - "block.create.stressometer.tooltip": "ストレスメーター", - "block.create.stressometer.tooltip.summary": "接続ã�•ã‚Œã�Ÿå‹•åŠ›ãƒ�ットワークã�®å…¨ä½“çš„ã�ªå¿œåŠ›ã‚’測定ã�—ã�¦è¡¨ç¤ºã�—ã�¾ã�™ã€‚ レッドストーンコンパレータをサãƒ�ートã�—ã�¾ã�™ã€‚", - "block.create.stressometer.tooltip.condition1": "回転ã�—ã�Ÿã�¨ã��", - "block.create.stressometer.tooltip.behaviour1": "応力ã�®ãƒ¬ãƒ™ãƒ«ã�«å¯¾å¿œã�™ã‚‹è‰²ã‚’示ã�—ã�¾ã�™ã€‚ _é�Žåº¦ã�«å¿œåŠ›ã�Œã�‹ã�‹ã�£ã�Ÿãƒ�ットワーク_ã�¯å‹•ã��ã‚’æ­¢ã‚�ã�¾ã�™ã€‚ ãƒ�ットワークã�«_回転æº�_を追加ã�™ã‚‹ã�“ã�¨ã�§ã€�応力を軽減ã�§ã��ã�¾ã�™ã€‚", + "block.create.stressometer.tooltip": "ストレスメーター", + "block.create.stressometer.tooltip.summary": "接続された動力ネットワークの全体的な応力を測定して表示します。 レッドストーンコンパレータをサポートします。", + "block.create.stressometer.tooltip.condition1": "回転したとき", + "block.create.stressometer.tooltip.behaviour1": "応力のレベルに対応する色を示します。 _過度に応力がかかったネットワーク_は動きを止めます。 ネットワークに_回転源_を追加することで、応力を軽減できます。", - "tool.create.sand_paper.tooltip": "サンドペーパー", - "tool.create.sand_paper.tooltip.summary": "_ç´ æ��を磨ã�„ã�Ÿã‚Š_ã€�_é�“å…·_ã‚’ç ”ã��ã�Ÿã‚�ã�«ä½¿ç”¨ã�§ã��ã‚‹ç²—ã�„紙。", - "tool.create.sand_paper.tooltip.condition1": "使用ã�—ã�Ÿã�¨ã��", - "tool.create.sand_paper.tooltip.behaviour1": "オフãƒ�ンドã�§æŒ�ã�£ã�¦ã�„るアイテムや地é�¢ã�«è�½ã�¡ã�¦ã�„るアイテムを見るã�¨ç ”磨ã�—ã�¾ã�™", + "tool.create.sand_paper.tooltip": "サンドペーパー", + "tool.create.sand_paper.tooltip.summary": "_素材を磨いたり_、_道具_を研ぐために使用できる粗い紙。", + "tool.create.sand_paper.tooltip.condition1": "使用したとき", + "tool.create.sand_paper.tooltip.behaviour1": "オフハンドで持っているアイテムや地面に落ちているアイテムを見ると研磨します", "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", @@ -1344,26 +1344,26 @@ "item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand", "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", - "item.create.refined_radiance.tooltip": "æ´—ç·´ã�•ã‚Œã�Ÿæ”¾å°„", - "item.create.refined_radiance.tooltip.summary": "_å�¸å�Žã�•ã‚Œã�Ÿå…‰_ã�‹ã‚‰é�›é€ ã�•ã‚Œã�Ÿã‚¯ãƒ­ãƒžãƒ�ックマテリアル。", + "item.create.refined_radiance.tooltip": "洗練された放射", + "item.create.refined_radiance.tooltip.summary": "_吸収された光_から鍛造されたクロマチックマテリアル。", - "item.create.shadow_steel.tooltip": "シャドウスãƒ�ール", - "item.create.shadow_steel.tooltip.summary": "_虚無_ã�‹ã‚‰é�›é€ ã�•ã‚Œã�Ÿã‚¯ãƒ­ãƒžãƒ†ã‚£ãƒƒã‚¯ãƒžãƒ†ãƒªã‚¢ãƒ«ã€‚", + "item.create.shadow_steel.tooltip": "シャドウスチール", + "item.create.shadow_steel.tooltip.summary": "_虚無_から鍛造されたクロマティックマテリアル。", - "item.create.crafter_slot_cover.tooltip": "スロットカãƒ�ー", - "item.create.crafter_slot_cover.tooltip.summary": "_メカニカルクラフター_ã�§ãƒ¬ã‚·ãƒ”ã�®ç©ºã�®ã‚¹ãƒ­ãƒƒãƒˆã�¨ã�—ã�¦ãƒžãƒ¼ã‚¯ã�™ã‚‹ã�Ÿã‚�ã�«ä½¿ç”¨ã�•ã‚Œã�¾ã�™ã€‚ クラフターã�¯å¿…ã�šã�—も完全ã�ªæ­£æ–¹æ ¼å­�ã‚’å½¢æˆ�ã�™ã‚‹å¿…è¦�ã�¯ã�‚ã‚Šã�¾ã�›ã‚“。 ã�“ã‚Œã�¯ã€�_æˆ�分ã�Œäº’ã�„ã�«å¯¾è§’ç·š_ã�§ã�‚るレシピã�Œã�‚ã‚‹å ´å�ˆã�«å½¹ç«‹ã�¡ã�¾ã�™ã€‚", + "item.create.crafter_slot_cover.tooltip": "スロットカバー", + "item.create.crafter_slot_cover.tooltip.summary": "_メカニカルクラフター_でレシピの空のスロットとしてマークするために使用されます。 クラフターは必ずしも完全な正方格子を形成する必要はありません。 これは、_成分が互いに対角線_であるレシピがある場合に役立ちます。", "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "作業中ã�§ã�™ï¼�", - "create.tooltip.randomWipDescription0": "ã�Šå­�様ã�®æ‰‹ã�®å±Šã�‹ã�ªã�„ã�¨ã�“ã‚�ã�«ä¿�管ã�—ã�¦ã��ã� ã�•ã�„。", - "create.tooltip.randomWipDescription1": "赤ã�¡ã‚ƒã‚“パンダã�¯ã€�ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�™ã‚‹ã�Ÿã�³ã�«æ­»ã�«ã�¾ã�™ã€‚ã��ã�†ã€�ã�™ã�¹ã�¦ã�®æ™‚間。", - "create.tooltip.randomWipDescription2": "自己責任。", - "create.tooltip.randomWipDescription3": "ã�“ã‚Œã�¯ã�‚ã�ªã�Ÿã�ŒæŽ¢ã�—ã�¦ã�„るアイテムã�§ã�¯ã�‚ã‚Šã�¾ã�›ã‚“。* finger-wiggles *を分散ã�•ã�›ã�¦ã��ã� ã�•ã�„。", - "create.tooltip.randomWipDescription4": "ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã�¯10秒ã�§è‡ªå·±ç ´å£Šã�—ã�¾ã�™ã€‚ 10ã€�9ã€�8 ...", - "create.tooltip.randomWipDescription5": "ç§�ã‚’ä¿¡ã�˜ã�¦ã€�ã��ã‚Œã�¯ç„¡é§„ã� ã€‚", - "create.tooltip.randomWipDescription6": "ã�“ã�®ã‚¢ã‚¤ãƒ†ãƒ ã‚’使用ã�™ã‚‹ã�“ã�¨ã�«ã‚ˆã‚Šã€�ã�Šå®¢æ§˜ã�¯ã�“ã�“ã�«å…�責事項ã�«å�Œæ„�ã�—ã€�ã��ã�®æ�¡ä»¶ã�«å�Œæ„�ã�™ã‚‹ã‚‚ã�®ã�¨ã�—ã�¾ã�™ã€‚", - "create.tooltip.randomWipDescription7": "ã�“ã‚Œã�¯ã�‚ã�ªã�Ÿã�®ã�Ÿã‚�ã�§ã�¯ã�ªã�„ã�‹ã‚‚ã�—ã‚Œã�¾ã�›ã‚“。 ã�‚ã‚Œã�¯ã�©ã�†ï¼Ÿï¼Ÿ", - "create.tooltip.randomWipDescription8": "ã��れを使ã�£ã�¦ã�™ã��ã�«æ±ºæ–­ã�—ã�Ÿã�“ã�¨ã�«å¾Œæ‚”ã�—ã�¦ã��ã� ã�•ã�„。", + "create.tooltip.workInProgress": "作業中です!", + "create.tooltip.randomWipDescription0": "お子様の手の届かないところに保管してください。", + "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使用するたびに死にます。そう、すべての時間。", + "create.tooltip.randomWipDescription2": "自己責任。", + "create.tooltip.randomWipDescription3": "これはあなたが探しているアイテムではありません。* finger-wiggles *を分散させてください。", + "create.tooltip.randomWipDescription4": "このアイテムは10秒で自己破壊します。 10、9、8 ...", + "create.tooltip.randomWipDescription5": "私を信じて、それは無駄だ。", + "create.tooltip.randomWipDescription6": "このアイテムを使用することにより、お客様はここに免責事項に同意し、その条件に同意するものとします。", + "create.tooltip.randomWipDescription7": "これはあなたのためではないかもしれません。 あれはどう??", + "create.tooltip.randomWipDescription8": "それを使ってすぐに決断したことに後悔してください。", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index f3196e08e..a46b6bf9b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -5,31 +5,31 @@ "block.create.acacia_window": "UNLOCALIZED: Acacia Window", "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_crate": "가변 창고", - "block.create.adjustable_pulley": "ë�®ížŒ 벨트 ë³€ì†�기", - "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", - "block.create.adjustable_repeater": "가변 리피터", - "block.create.analog_lever": "아날로그 레버", - "block.create.andesite_bricks": "안산안 ë²½ë�Œ", + "block.create.adjustable_crate": "가변 창고", + "block.create.adjustable_pulley": "덮힌 벨트 변속기", + "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", + "block.create.adjustable_repeater": "가변 리피터", + "block.create.analog_lever": "아날로그 레버", + "block.create.andesite_bricks": "안산안 벽돌", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "안산암 ì¼€ì�´ìŠ¤", + "block.create.andesite_casing": "안산암 케이스", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", - "block.create.basin": "대야", - "block.create.belt": "컨베ì�´ì–´ 벨트", + "block.create.basin": "대야", + "block.create.belt": "컨베이어 벨트", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "벨트 ê°�지기", - "block.create.belt_tunnel": "컨베ì�´ì–´ 벨트 í„°ë„�", + "block.create.belt_observer": "벨트 감지기", + "block.create.belt_tunnel": "컨베이어 벨트 터널", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.brass_block": "황ë�™ 블럭", - "block.create.brass_casing": "황ë�™ ì¼€ì�´ìŠ¤", - "block.create.cart_assembler": "카트 조립기", + "block.create.brass_block": "황동 블럭", + "block.create.brass_casing": "황동 케이스", + "block.create.cart_assembler": "카트 조립기", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", @@ -38,33 +38,33 @@ "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "시계 ë² ì–´ë§�", - "block.create.clutch": "í�´ëŸ¬ì¹˜", - "block.create.cogwheel": "톱나버퀴", - "block.create.copper_block": "구리 블럭", - "block.create.copper_casing": "구리 ì¼€ì�´ìŠ¤", - "block.create.copper_ore": "구리 ê´‘ì„�", - "block.create.copper_shingles": "구리 íŒ�ìž�", - "block.create.creative_crate": "청사진 대í�¬ 지ì›�기", - "block.create.creative_motor": "모터", - "block.create.crushing_wheel": "분쇄 휠", + "block.create.clockwork_bearing": "시계 베어링", + "block.create.clutch": "클러치", + "block.create.cogwheel": "톱나버퀴", + "block.create.copper_block": "구리 블럭", + "block.create.copper_casing": "구리 케이스", + "block.create.copper_ore": "구리 광석", + "block.create.copper_shingles": "구리 판자", + "block.create.creative_crate": "청사진 대포 지원기", + "block.create.creative_motor": "모터", + "block.create.crushing_wheel": "분쇄 휠", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "ë»�꾸기 시계", + "block.create.cuckoo_clock": "뻐꾸기 시계", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "짙ì�€ 스코리아", - "block.create.dark_scoria_bricks": "짙ì�€ 스코리아 ë²½ë�Œ", - "block.create.dark_scoria_bricks_slab": "짙ì�€ 스코리아 ë²½ë�Œ ë°˜ 블ë¡�", - "block.create.dark_scoria_bricks_stairs": "짙ì�€ 스코리아 ë²½ë�Œ 계단", - "block.create.dark_scoria_bricks_wall": "짙ì�€ 스코리아 ë²½ë�Œ 담장", + "block.create.dark_scoria": "짙은 스코리아", + "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", + "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", + "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", + "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "ë°°í�¬ê¸°", + "block.create.deployer": "배포기", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "섬ë¡�ì•” ë²½ë�Œ", + "block.create.diorite_bricks": "섬록암 벽돌", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", @@ -73,20 +73,20 @@ "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "백운암", - "block.create.dolomite_bricks": "백운암 ë²½ë�Œ", - "block.create.dolomite_bricks_slab": "백운암 ë²½ë�Œ ë°˜ 블ë¡�", - "block.create.dolomite_bricks_stairs": "백운암 ë²½ë�Œ 계단", - "block.create.dolomite_bricks_wall": "백운암 ë²½ë�Œ 담장", + "block.create.dolomite": "백운암", + "block.create.dolomite_bricks": "백운암 벽돌", + "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", + "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", + "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "백운암 기둥", - "block.create.encased_belt": "ë�®ížŒ 벨트", - "block.create.encased_fan": "ë�®ížŒ 환í’�기", - "block.create.encased_shaft": "ë�®ížŒ 축", - "block.create.extractor": "추출기", + "block.create.dolomite_pillar": "백운암 기둥", + "block.create.encased_belt": "덮힌 벨트", + "block.create.encased_fan": "덮힌 환풍기", + "block.create.encased_shaft": "덮힌 축", + "block.create.extractor": "추출기", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", @@ -125,24 +125,24 @@ "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.flywheel": "플ë�¼ì�´íœ ", - "block.create.framed_glass": "í�° 유리", - "block.create.framed_glass_pane": "í�° 유리íŒ�", - "block.create.funnel": "깔대기", - "block.create.furnace_engine": "화로 엔진", - "block.create.gabbro": "반려암", - "block.create.gabbro_bricks": "반려암 ë²½ë�Œ", + "block.create.flywheel": "플라이휠", + "block.create.framed_glass": "큰 유리", + "block.create.framed_glass_pane": "큰 유리판", + "block.create.funnel": "깔대기", + "block.create.furnace_engine": "화로 엔진", + "block.create.gabbro": "반려암", + "block.create.gabbro_bricks": "반려암 벽돌", "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "반려암 ë²½ë�Œ 계단", - "block.create.gabbro_bricks_wall": "반려암 ë²½ë�Œ 담장", + "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", + "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "기어박스", - "block.create.gearshift": "기어쉬프트", - "block.create.granite_bricks": "화강암 ë²½ë�Œ", + "block.create.gearbox": "기어박스", + "block.create.gearshift": "기어쉬프트", + "block.create.granite_bricks": "화강암 벽돌", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", @@ -151,12 +151,12 @@ "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.hand_crank": "핸드 í�¬ëž­í�¬", - "block.create.horizontal_framed_glass": "수í�‰ 유리", - "block.create.horizontal_framed_glass_pane": "수í�‰ 유리íŒ�", + "block.create.hand_crank": "핸드 크랭크", + "block.create.horizontal_framed_glass": "수평 유리", + "block.create.horizontal_framed_glass_pane": "수평 유리판", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "í�° 톱니바퀴", + "block.create.large_cogwheel": "큰 톱니바퀴", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -166,33 +166,33 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "ì„�회모래", - "block.create.limestone": "ì„�회암", - "block.create.limestone_bricks": "ì„�회암 ë²½ë�Œ", - "block.create.limestone_bricks_slab": "ì„�회암 ë²½ë�Œ ë°˜ 블ë¡�", - "block.create.limestone_bricks_stairs": "ì„�회암 ë²½ë�Œ 계단", - "block.create.limestone_bricks_wall": "ì„�회암 ë²½ë�Œ 담장", + "block.create.limesand": "석회모래", + "block.create.limestone": "석회암", + "block.create.limestone_bricks": "석회암 벽돌", + "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", + "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", + "block.create.limestone_bricks_wall": "석회암 벽돌 담장", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "ì„�회암 기둥", - "block.create.linear_chassis": "ì§�ì„  섀시", - "block.create.linked_extractor": "무선 추출기", - "block.create.linked_transposer": "무선 트랜스í�¬ì €", + "block.create.limestone_pillar": "석회암 기둥", + "block.create.linear_chassis": "직선 섀시", + "block.create.linked_extractor": "무선 추출기", + "block.create.linked_transposer": "무선 트랜스포저", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "ë² ì–´ë§�", - "block.create.mechanical_crafter": "기계ì‹� 조합기", - "block.create.mechanical_drill": "드릴", - "block.create.mechanical_harvester": "수확기", - "block.create.mechanical_mixer": "믹서", - "block.create.mechanical_piston": "기계ì‹� 피스톤", - "block.create.mechanical_piston_head": "기계ì‹� 피스톤 머리", + "block.create.mechanical_bearing": "베어링", + "block.create.mechanical_crafter": "기계식 조합기", + "block.create.mechanical_drill": "드릴", + "block.create.mechanical_harvester": "수확기", + "block.create.mechanical_mixer": "믹서", + "block.create.mechanical_piston": "기계식 피스톤", + "block.create.mechanical_piston_head": "기계식 피스톤 머리", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "압착기", + "block.create.mechanical_press": "압착기", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "톱", - "block.create.millstone": "맷ë�Œ", + "block.create.mechanical_saw": "톱", + "block.create.millstone": "맷돌", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", @@ -204,9 +204,9 @@ "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "ìž�ì—° 스코리아", + "block.create.natural_scoria": "자연 스코리아", "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "ë…¸ì¦�", + "block.create.nozzle": "노즐", "block.create.oak_window": "UNLOCALIZED: Oak Window", "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", @@ -257,48 +257,48 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.polished_dark_scoria": "윤나는 짙ì�€ 스코리아", + "block.create.piston_extension_pole": "피스톤 연장 축", + "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "윤나는 백운암", + "block.create.polished_dolomite": "윤나는 백운암", "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "윤나는 반려암", + "block.create.polished_gabbro": "윤나는 반려암", "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "윤나는 ì„�회암", - "block.create.polished_limestone_slab": "윤나는 ì„�회암 ë°˜ 블ë¡�", + "block.create.polished_limestone": "윤나는 석회암", + "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "윤나는 스코리아", - "block.create.polished_scoria_slab": "윤나는 스코리아 ë°˜ 블ë¡�", + "block.create.polished_scoria": "윤나는 스코리아", + "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "윤나는 í’�í™”ë�œ ì„�회암", - "block.create.polished_weathered_limestone_slab": "윤나는 í’�í™”ë�œ ì„�회암 ë°˜ 블ë¡�", + "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", + "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_storage_interface": "ì�´ë�™ì‹� 저장소 ì�¸í„°íŽ˜ì�´ìŠ¤", - "block.create.powered_latch": "레드스톤 걸쇠", - "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", - "block.create.pulley_magnet": "ë�„르래 ìž�ì„�", - "block.create.pulse_repeater": "펄스 리피터", - "block.create.radial_chassis": "ì›�형 섀시", + "block.create.portable_storage_interface": "이동식 저장소 인터페이스", + "block.create.powered_latch": "레드스톤 걸쇠", + "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", + "block.create.pulley_magnet": "도르래 자석", + "block.create.pulse_repeater": "펄스 리피터", + "block.create.radial_chassis": "원형 섀시", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "ë�™í˜• ê°�지기", - "block.create.redstone_link": "레드스톤 ë§�í�¬", + "block.create.redstone_contact": "동형 감지기", + "block.create.redstone_link": "레드스톤 링크", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "밧줄", - "block.create.rope_pulley": "밧줄 ë�„르래", - "block.create.rotation_speed_controller": "회전 ì†�ë�„ 컨트롤러", - "block.create.schematic_table": "청사진 í…Œì�´ë¸”", - "block.create.schematicannon": "청사진 대í�¬", - "block.create.scoria": "스코리아", - "block.create.scoria_bricks": "스코리아 ë²½ë�Œ", + "block.create.rope": "밧줄", + "block.create.rope_pulley": "밧줄 도르래", + "block.create.rotation_speed_controller": "회전 속도 컨트롤러", + "block.create.schematic_table": "청사진 테이블", + "block.create.schematicannon": "청사진 대포", + "block.create.scoria": "스코리아", + "block.create.scoria_bricks": "스코리아 벽돌", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", @@ -306,96 +306,96 @@ "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "스코리아 기둥", + "block.create.scoria_pillar": "스코리아 기둥", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "순서 기어쉬프트", - "block.create.shaft": "축", - "block.create.speedometer": "ì†�ë�„ 계측기", + "block.create.sequenced_gearshift": "순서 기어쉬프트", + "block.create.shaft": "축", + "block.create.speedometer": "속도 계측기", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "ë�ˆë�ˆì�´ 기계ì‹� 피스톤", - "block.create.stockpile_switch": "수량 스위치", - "block.create.stressometer": "피로ë�„ 계측기", - "block.create.tiled_glass": "타ì�¼ 유리", - "block.create.tiled_glass_pane": "타ì�¼ 유리íŒ�", - "block.create.transposer": "트랜스í�¬ì €", - "block.create.turntable": "ë�Œë¦¼íŒ�", + "block.create.sticky_mechanical_piston": "끈끈이 기계식 피스톤", + "block.create.stockpile_switch": "수량 스위치", + "block.create.stressometer": "피로도 계측기", + "block.create.tiled_glass": "타일 유리", + "block.create.tiled_glass_pane": "타일 유리판", + "block.create.transposer": "트랜스포저", + "block.create.turntable": "돌림판", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", - "block.create.vertical_framed_glass": "수ì§� 유리", - "block.create.vertical_framed_glass_pane": "수ì§� 유리íŒ�", + "block.create.vertical_framed_glass": "수직 유리", + "block.create.vertical_framed_glass_pane": "수직 유리판", "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "물레방아", - "block.create.weathered_limestone": "í’�í™”ë�œ ì„�회암", - "block.create.weathered_limestone_bricks": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ", - "block.create.weathered_limestone_bricks_slab": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ ë°˜ 블ë¡�", - "block.create.weathered_limestone_bricks_stairs": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ 계단", - "block.create.weathered_limestone_bricks_wall": "í’�í™”ë�œ ì„�회암 ë²½ë�Œ 담장", + "block.create.water_wheel": "물레방아", + "block.create.weathered_limestone": "풍화된 석회암", + "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", + "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", + "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", + "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "í’�í™”ë�œ ì„�회암 기둥", - "block.create.zinc_block": "ì•„ì—° 블럭", - "block.create.zinc_ore": "ì•„ì—° ê´‘ì„�", + "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", + "block.create.zinc_block": "아연 블럭", + "block.create.zinc_ore": "아연 광석", "entity.create.contraption": "UNLOCALIZED: Contraption", "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.andesite_alloy": "안산암 합금", - "item.create.attribute_filter": "ì†�성 í•„í„° í‹€", - "item.create.belt_connector": "기계ì‹� 벨트", - "item.create.brass_hand": "황ë�™ ì†�", - "item.create.brass_ingot": "황ë�™ 주괴", - "item.create.brass_nugget": "황ë�™ ì¡°ê°�", - "item.create.brass_sheet": "황ë�™ íŒ�", - "item.create.chromatic_compound": "색채 혼합물", - "item.create.copper_ingot": "구리 주괴", - "item.create.copper_nugget": "구리 ì¡°ê°�", - "item.create.copper_sheet": "구리 íŒ�", - "item.create.crafter_slot_cover": "작업대 슬롯 ë�®ê°œ", - "item.create.crushed_brass": "분쇄ë�œ 황ë�™", + "item.create.andesite_alloy": "안산암 합금", + "item.create.attribute_filter": "속성 필터 틀", + "item.create.belt_connector": "기계식 벨트", + "item.create.brass_hand": "황동 손", + "item.create.brass_ingot": "황동 주괴", + "item.create.brass_nugget": "황동 조각", + "item.create.brass_sheet": "황동 판", + "item.create.chromatic_compound": "색채 혼합물", + "item.create.copper_ingot": "구리 주괴", + "item.create.copper_nugget": "구리 조각", + "item.create.copper_sheet": "구리 판", + "item.create.crafter_slot_cover": "작업대 슬롯 덮개", + "item.create.crushed_brass": "분쇄된 황동", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.deforester": "산림파괴ìž�", - "item.create.dough": "반죽", - "item.create.electron_tube": "전지 튜브", - "item.create.empty_schematic": "빈 청사진", + "item.create.deforester": "산림파괴자", + "item.create.dough": "반죽", + "item.create.electron_tube": "전지 튜브", + "item.create.empty_schematic": "빈 청사진", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "í•„í„° í‹€", + "item.create.filter": "필터 틀", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "엔지니어ì�˜ 고글", + "item.create.goggles": "엔지니어의 고글", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "휴대용 블럭발사기", - "item.create.handheld_worldshaper": "휴대용 세계편집기", - "item.create.integrated_circuit": "집ì � 회로", - "item.create.iron_sheet": "ì²  íŒ�", + "item.create.handheld_blockzapper": "휴대용 블럭발사기", + "item.create.handheld_worldshaper": "휴대용 세계편집기", + "item.create.integrated_circuit": "집적 회로", + "item.create.iron_sheet": "철 판", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", - "item.create.polished_rose_quartz": "윤나는 장밋빛 ì„�ì˜�", + "item.create.polished_rose_quartz": "윤나는 장밋빛 석영", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "프로펠러", - "item.create.red_sand_paper": "붉ì�€ 사í�¬", - "item.create.refined_radiance": "ì •ì œë�œ 광채", - "item.create.rose_quartz": "장밋빛 ì„�ì˜�", - "item.create.sand_paper": "사í�¬", - "item.create.schematic": "청사진", - "item.create.schematic_and_quill": "청사진과 깃펜", - "item.create.shadow_steel": "그림ìž� ê°•ì² ", + "item.create.propeller": "프로펠러", + "item.create.red_sand_paper": "붉은 사포", + "item.create.refined_radiance": "정제된 광채", + "item.create.rose_quartz": "장밋빛 석영", + "item.create.sand_paper": "사포", + "item.create.schematic": "청사진", + "item.create.schematic_and_quill": "청사진과 깃펜", + "item.create.shadow_steel": "그림자 강철", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "나무 비료", + "item.create.tree_fertilizer": "나무 비료", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "대칭ì�˜ 지팡ì�´", + "item.create.wand_of_symmetry": "대칭의 지팡이", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", - "item.create.whisk": "혼합기", - "item.create.wrench": "렌치", - "item.create.zinc_ingot": "ì•„ì—° 주괴", - "item.create.zinc_nugget": "ì•„ì—° ì¡°ê°�", + "item.create.whisk": "혼합기", + "item.create.wrench": "렌치", + "item.create.zinc_ingot": "아연 주괴", + "item.create.zinc_nugget": "아연 조각", "_": "->------------------------] Advancements [------------------------<-", @@ -487,334 +487,334 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$sì�´(ê°€) 분쇄 휠ì—� ì�˜í•´ 가공ë�˜ì—ˆìŠµë‹ˆë‹¤", - "death.attack.create.fan_fire": "%1$sì�´(ê°€) 뜨거운 바람으로 타버렸습니다", - "death.attack.create.fan_lava": "%1$sì�´(ê°€) ìš©ì•” 바람으로 타버렸습니다", - "death.attack.create.mechanical_drill": "%1$sì�´(ê°€) 드릴ì—� 관통당했습니다", - "death.attack.create.mechanical_saw": "%1$sì�´(ê°€) 톱날ì—� 반으로 ê°ˆë�¼ì ¸ 죽었습니다", - "death.attack.create.cuckoo_clock_explosion": "%1$sì�´(ê°€) ì¡°ìž‘ë�œ ë»�꾸기 시계ì—� ì�˜í•´ í�­íŒŒë‹¹í–ˆìŠµë‹ˆë‹¤", + "death.attack.create.crush": "%1$s이(가) 분쇄 휠에 의해 가공되었습니다", + "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람으로 타버렸습니다", + "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 타버렸습니다", + "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", + "death.attack.create.mechanical_saw": "%1$s이(가) 톱날에 반으로 갈라져 죽었습니다", + "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", - "create.block.deployer.damage_source_name": "순수한 ë°°í�¬ê¸°", + "create.block.deployer.damage_source_name": "순수한 배포기", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "분쇄", - "create.recipe.milling": "맷ë�Œì§ˆ", - "create.recipe.splashing": "세척", - "create.recipe.splashing.fan": "물과 환í’�기", + "create.recipe.crushing": "분쇄", + "create.recipe.milling": "맷돌질", + "create.recipe.splashing": "세척", + "create.recipe.splashing.fan": "물과 환풍기", "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "ì••ì°©", - "create.recipe.mixing": "혼합", - "create.recipe.packing": "압축", - "create.recipe.mechanical_sawing": "제재", - "create.recipe.mechanical_crafting": "기계 ì¡°í•©", - "create.recipe.block_cutting": "블럭 절단", + "create.recipe.pressing": "압착", + "create.recipe.mixing": "혼합", + "create.recipe.packing": "압축", + "create.recipe.mechanical_sawing": "제재", + "create.recipe.mechanical_crafting": "기계 조합", + "create.recipe.block_cutting": "블럭 절단", "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", - "create.recipe.sandpaper_polishing": "사í�¬ 연마", + "create.recipe.sandpaper_polishing": "사포 연마", "create.recipe.mystery_conversion": "?", - "create.recipe.processing.catalyst": "촉매", - "create.recipe.processing.chance": "%1$s%% 확률", - "create.recipe.processing.chanceToReturn": "%1$s%% 확률로 반환", + "create.recipe.processing.catalyst": "촉매", + "create.recipe.processing.chance": "%1$s%% 확률", + "create.recipe.processing.chanceToReturn": "%1$s%% 확률로 반환", - "create.generic.range": "범위", - "create.generic.radius": "반지름", - "create.generic.width": "í�­", - "create.generic.height": "높ì�´", - "create.generic.length": "길ì�´", - "create.generic.speed": "ì†�ë�„", - "create.generic.delay": "딜레ì�´", - "create.generic.unit.ticks": "틱", - "create.generic.unit.seconds": "ì´ˆ", - "create.generic.unit.minutes": "분", + "create.generic.range": "범위", + "create.generic.radius": "반지름", + "create.generic.width": "폭", + "create.generic.height": "높이", + "create.generic.length": "길이", + "create.generic.speed": "속도", + "create.generic.delay": "딜레이", + "create.generic.unit.ticks": "틱", + "create.generic.unit.seconds": "초", + "create.generic.unit.minutes": "분", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "스í�¬ë¡¤í•˜ì„¸ìš”", - "create.action.confirm": "확ì�¸", - "create.action.abort": "중단", - "create.action.saveToFile": "저장", - "create.action.discard": "ì‚­ì œ", + "create.action.scroll": "스크롤하세요", + "create.action.confirm": "확인", + "create.action.abort": "중단", + "create.action.saveToFile": "저장", + "create.action.discard": "삭제", - "create.keyinfo.toolmenu": "메뉴 세부정보 보기", + "create.keyinfo.toolmenu": "메뉴 세부정보 보기", "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "옵션ì�„ ì„ íƒ�하세요:", - "create.gui.scrollInput.scrollToModify": "스í�¬ë¡¤ë¡œ 수정하기", - "create.gui.scrollInput.scrollToAdjustAmount": "스í�¬ë¡¤ë¡œ 수량 조절하기", - "create.gui.scrollInput.scrollToSelect": "스í�¬ë¡¤ë¡œ ì„ íƒ�", - "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스í�¬ë¡¤ë¡œ 빨리 수정하기", - "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", - "create.gui.toolmenu.cycle": "스í�¬ë¡¤ë¡œ 순환", - "create.gui.symmetryWand.mirrorType": "반사", - "create.gui.symmetryWand.orientation": "방위", + "create.gui.scrollInput.defaultTitle": "옵션을 선택하세요:", + "create.gui.scrollInput.scrollToModify": "스크롤로 수정하기", + "create.gui.scrollInput.scrollToAdjustAmount": "스크롤로 수량 조절하기", + "create.gui.scrollInput.scrollToSelect": "스크롤로 선택", + "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기", + "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", + "create.gui.toolmenu.cycle": "스크롤로 순환", + "create.gui.symmetryWand.mirrorType": "반사", + "create.gui.symmetryWand.orientation": "방위", - "create.symmetry.mirror.plane": "거울 모드", - "create.symmetry.mirror.doublePlane": "사ê°�형 모드", - "create.symmetry.mirror.triplePlane": "팔ê°�형 모드", + "create.symmetry.mirror.plane": "거울 모드", + "create.symmetry.mirror.doublePlane": "사각형 모드", + "create.symmetry.mirror.triplePlane": "팔각형 모드", - "create.orientation.orthogonal": "수ì§�으로", - "create.orientation.diagonal": "대ê°�선으로", - "create.orientation.horizontal": "수í�‰ìœ¼ë¡œ", - "create.orientation.alongZ": "Z좌표를 ë”°ë�¼", - "create.orientation.alongX": "X좌표를 ë”°ë�¼", + "create.orientation.orthogonal": "수직으로", + "create.orientation.diagonal": "대각선으로", + "create.orientation.horizontal": "수평으로", + "create.orientation.alongZ": "Z좌표를 따라", + "create.orientation.alongX": "X좌표를 따라", - "create.gui.blockzapper.title": "휴대용 블럭발사기", - "create.gui.blockzapper.replaceMode": "대체 모드", - "create.gui.blockzapper.searchDiagonal": "대ê°�ì„ ì�„ ë”°ë�¼", - "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", - "create.gui.blockzapper.range": "범위", - "create.gui.blockzapper.needsUpgradedAmplifier": "업그레ì�´ë“œê°€ 필요합니다", - "create.gui.blockzapper.patternSection": "패턴 설정", - "create.gui.blockzapper.pattern.solid": "ì›�형", - "create.gui.blockzapper.pattern.checkered": "체스íŒ�", - "create.gui.blockzapper.pattern.inversecheckered": "반전ë�œ 체스íŒ�", - "create.gui.blockzapper.pattern.chance25": "램ë�¤ìœ¼ë¡œ 25% 채우기", - "create.gui.blockzapper.pattern.chance50": "램ë�¤ìœ¼ë¡œ 50% 채우기", - "create.gui.blockzapper.pattern.chance75": "ëžœë�¤ìœ¼ë¡œ 75% 채우기", - "create.gui.terrainzapper.title": "휴대용 세계편집기", - "create.gui.terrainzapper.placement": "설치방ì‹�", - "create.gui.terrainzapper.placement.merged": "ì„ íƒ�í•œ 블럭ì—�", - "create.gui.terrainzapper.placement.attached": "ì„ íƒ�í•œ 블럭 옆ì—�", - "create.gui.terrainzapper.placement.inserted": "ì„ íƒ�í•œ 블럭 안ì—�", - "create.gui.terrainzapper.brush": "브러쉬", - "create.gui.terrainzapper.brush.cuboid": "정육면체", - "create.gui.terrainzapper.brush.sphere": "구", - "create.gui.terrainzapper.brush.cylinder": "ì›�통", - "create.gui.terrainzapper.tool": "ë�„구", - "create.gui.terrainzapper.tool.fill": "채우기", - "create.gui.terrainzapper.tool.place": "설치", - "create.gui.terrainzapper.tool.replace": "대체", - "create.gui.terrainzapper.tool.clear": "지우기", - "create.gui.terrainzapper.tool.overlay": "ë�®ì–´ì”Œìš°ê¸°", - "create.gui.terrainzapper.tool.flatten": "í�‰íƒ„í™”", + "create.gui.blockzapper.title": "휴대용 블럭발사기", + "create.gui.blockzapper.replaceMode": "대체 모드", + "create.gui.blockzapper.searchDiagonal": "대각선을 따라", + "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", + "create.gui.blockzapper.range": "범위", + "create.gui.blockzapper.needsUpgradedAmplifier": "업그레이드가 필요합니다", + "create.gui.blockzapper.patternSection": "패턴 설정", + "create.gui.blockzapper.pattern.solid": "원형", + "create.gui.blockzapper.pattern.checkered": "체스판", + "create.gui.blockzapper.pattern.inversecheckered": "반전된 체스판", + "create.gui.blockzapper.pattern.chance25": "램덤으로 25% 채우기", + "create.gui.blockzapper.pattern.chance50": "램덤으로 50% 채우기", + "create.gui.blockzapper.pattern.chance75": "랜덤으로 75% 채우기", + "create.gui.terrainzapper.title": "휴대용 세계편집기", + "create.gui.terrainzapper.placement": "설치방식", + "create.gui.terrainzapper.placement.merged": "선택한 블럭에", + "create.gui.terrainzapper.placement.attached": "선택한 블럭 옆에", + "create.gui.terrainzapper.placement.inserted": "선택한 블럭 안에", + "create.gui.terrainzapper.brush": "브러쉬", + "create.gui.terrainzapper.brush.cuboid": "정육면체", + "create.gui.terrainzapper.brush.sphere": "구", + "create.gui.terrainzapper.brush.cylinder": "원통", + "create.gui.terrainzapper.tool": "도구", + "create.gui.terrainzapper.tool.fill": "채우기", + "create.gui.terrainzapper.tool.place": "설치", + "create.gui.terrainzapper.tool.replace": "대체", + "create.gui.terrainzapper.tool.clear": "지우기", + "create.gui.terrainzapper.tool.overlay": "덮어씌우기", + "create.gui.terrainzapper.tool.flatten": "평탄화", - "create.terrainzapper.shiftRightClickToSet": "쉬프트-ìš°í�´ë¦­ìœ¼ë¡œ 모양 설정하기", + "create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기", - "create.blockzapper.usingBlock": "현재 블럭: %1$s", - "create.blockzapper.componentUpgrades": "부품 업그레ì�´ë“œ:", - "create.blockzapper.component.body": "몸통", - "create.blockzapper.component.amplifier": "ì¦�í�­ê¸°", - "create.blockzapper.component.accelerator": "ê°€ì†�기", - "create.blockzapper.component.retriever": "회수기", - "create.blockzapper.component.scope": "스코프", - "create.blockzapper.componentTier.none": "ì—†ì�Œ", - "create.blockzapper.componentTier.brass": "황ë�™", - "create.blockzapper.componentTier.chromatic": "혼ë�ˆì�˜ ê²°ì •ì²´", - "create.blockzapper.leftClickToSet": "좌í�´ë¦­ìœ¼ë¡œ 블럭 설정하기", - "create.blockzapper.empty": "블럭ì�´ 없습니다!", + "create.blockzapper.usingBlock": "현재 블럭: %1$s", + "create.blockzapper.componentUpgrades": "부품 업그레이드:", + "create.blockzapper.component.body": "몸통", + "create.blockzapper.component.amplifier": "증폭기", + "create.blockzapper.component.accelerator": "가속기", + "create.blockzapper.component.retriever": "회수기", + "create.blockzapper.component.scope": "스코프", + "create.blockzapper.componentTier.none": "없음", + "create.blockzapper.componentTier.brass": "황동", + "create.blockzapper.componentTier.chromatic": "혼돈의 결정체", + "create.blockzapper.leftClickToSet": "좌클릭으로 블럭 설정하기", + "create.blockzapper.empty": "블럭이 없습니다!", - "create.contraptions.movement_mode": "ì�´ë�™ 설정", - "create.contraptions.movement_mode.move_place": "멈췄ì�„ë•Œ í•­ìƒ� 블럭 설치하기", - "create.contraptions.movement_mode.move_place_returned": "멈췄ì�„ë–„ 최초 위치ì—�서만 블럭 설치하기", - "create.contraptions.movement_mode.move_never_place": "멈춰ë�„ 블럭 설치하지 않기", - "create.contraptions.movement_mode.rotate_place": "멈췄ì�„ë•Œ í•­ìƒ� 블럭 설치하기", - "create.contraptions.movement_mode.rotate_place_returned": "멈췄ì�„ë–„ 최초 ê°�ë�„ì—�서만 블럭 설치하기", - "create.contraptions.movement_mode.rotate_never_place": "멈춰ë�„ 블럭 설치하지 않기", + "create.contraptions.movement_mode": "이동 설정", + "create.contraptions.movement_mode.move_place": "멈췄을때 항상 블럭 설치하기", + "create.contraptions.movement_mode.move_place_returned": "멈췄을떄 최초 위치에서만 블럭 설치하기", + "create.contraptions.movement_mode.move_never_place": "멈춰도 블럭 설치하지 않기", + "create.contraptions.movement_mode.rotate_place": "멈췄을때 항상 블럭 설치하기", + "create.contraptions.movement_mode.rotate_place_returned": "멈췄을떄 최초 각도에서만 블럭 설치하기", + "create.contraptions.movement_mode.rotate_never_place": "멈춰도 블럭 설치하지 않기", "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.logistics.filter": "í•„í„°", - "create.logistics.firstFrequency": "주파수. #1", - "create.logistics.secondFrequency": "주파수. #2", + "create.logistics.filter": "필터", + "create.logistics.firstFrequency": "주파수. #1", + "create.logistics.secondFrequency": "주파수. #2", - "create.gui.goggles.generator_stats": "발전 ìƒ�태:", - "create.gui.goggles.kinetic_stats": "ê°€ë�™ ìƒ�태:", - "create.gui.goggles.at_current_speed": "현재 ì†�ë�„", - "create.gui.goggles.base_value": "기본 수치", - "create.gui.gauge.info_header": "게ì�´ì§€ ì •ë³´:", - "create.gui.speedometer.title": "회전 ì†�ë�„", - "create.gui.stressometer.title": "네트워í�¬ 부하", - "create.gui.stressometer.capacity": "용량", - "create.gui.stressometer.overstressed": "과부하ë�¨", - "create.gui.stressometer.no_rotation": "회전없ì�Œ", - "create.gui.contraptions.not_fast_enough": "ì�´ %1$sì�€(는) ìž‘ë�™í•˜ê¸°ì—� _회전 ì†�ë�„_ê°€ _부족합니다_", - "create.gui.contraptions.network_overstressed": "ì�´ 장치는 _과부하_ë�˜ì—ˆìŠµë‹ˆë‹¤. _높ì�€ 피로ë�„_ 용량ì�„ 가진 발전기를 추가로 설치하거나 장치 _ì†�ë�„_를 _늦추세요_.", - "create.gui.adjustable_crate.title": "가변 창고 ", - "create.gui.adjustable_crate.storageSpace": "저장 공간", - "create.gui.stockpile_switch.title": "수량 스위치", - "create.gui.stockpile_switch.lowerLimit": "최소 신호 유지수량", - "create.gui.stockpile_switch.upperLimit": "최초 신호 ë°œë�™ìˆ˜ëŸ‰", - "create.gui.stockpile_switch.startAt": "다ì�Œ 수량ì—� 신호 주기", - "create.gui.stockpile_switch.startAbove": "다ì�Œ 수량ì�´ìƒ�ì�¼ë–„ 신호 주기", - "create.gui.stockpile_switch.stopAt": "다ì�Œ 수량ì—� 신호 멈추기", - "create.gui.stockpile_switch.stopBelow": "다ì�Œ 수량ì�´í•˜ì�¼ë•Œ 신호 멈추기", - "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", - "create.gui.sequenced_gearshift.instruction": "설명", - "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "ê°�ë�„", - "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", - "create.gui.sequenced_gearshift.instruction.wait": "정지", - "create.gui.sequenced_gearshift.instruction.wait.duration": "지ì†�시간", - "create.gui.sequenced_gearshift.instruction.end": "마침", - "create.gui.sequenced_gearshift.speed": "ì†�ë�„, ë°©í–¥", - "create.gui.sequenced_gearshift.speed.forward": "ìž…ë ¥ë�œ ì†�ë�„, 그대로 회전", - "create.gui.sequenced_gearshift.speed.forward_fast": "ìž…ë ¥ë�œ ì†�ë�„ì�˜ 2ë°°, 그대로 회전", - "create.gui.sequenced_gearshift.speed.back": "ìž…ë ¥ë�œ ì†�ë�„, 반대로 회전", - "create.gui.sequenced_gearshift.speed.back_fast": "ìž…ë ¥ë�œ ì†�ë�„ì�˜ 2ë°°, 반대로 회전", + "create.gui.goggles.generator_stats": "발전 상태:", + "create.gui.goggles.kinetic_stats": "가동 상태:", + "create.gui.goggles.at_current_speed": "현재 속도", + "create.gui.goggles.base_value": "기본 수치", + "create.gui.gauge.info_header": "게이지 정보:", + "create.gui.speedometer.title": "회전 속도", + "create.gui.stressometer.title": "네트워크 부하", + "create.gui.stressometer.capacity": "용량", + "create.gui.stressometer.overstressed": "과부하됨", + "create.gui.stressometer.no_rotation": "회전없음", + "create.gui.contraptions.not_fast_enough": "이 %1$s은(는) 작동하기에 _회전 속도_가 _부족합니다_", + "create.gui.contraptions.network_overstressed": "이 장치는 _과부하_되었습니다. _높은 피로도_ 용량을 가진 발전기를 추가로 설치하거나 장치 _속도_를 _늦추세요_.", + "create.gui.adjustable_crate.title": "가변 창고 ", + "create.gui.adjustable_crate.storageSpace": "저장 공간", + "create.gui.stockpile_switch.title": "수량 스위치", + "create.gui.stockpile_switch.lowerLimit": "최소 신호 유지수량", + "create.gui.stockpile_switch.upperLimit": "최초 신호 발동수량", + "create.gui.stockpile_switch.startAt": "다음 수량에 신호 주기", + "create.gui.stockpile_switch.startAbove": "다음 수량이상일떄 신호 주기", + "create.gui.stockpile_switch.stopAt": "다음 수량에 신호 멈추기", + "create.gui.stockpile_switch.stopBelow": "다음 수량이하일때 신호 멈추기", + "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", + "create.gui.sequenced_gearshift.instruction": "설명", + "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "각도", + "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", + "create.gui.sequenced_gearshift.instruction.wait": "정지", + "create.gui.sequenced_gearshift.instruction.wait.duration": "지속시간", + "create.gui.sequenced_gearshift.instruction.end": "마침", + "create.gui.sequenced_gearshift.speed": "속도, 방향", + "create.gui.sequenced_gearshift.speed.forward": "입력된 속도, 그대로 회전", + "create.gui.sequenced_gearshift.speed.forward_fast": "입력된 속도의 2배, 그대로 회전", + "create.gui.sequenced_gearshift.speed.back": "입력된 속도, 반대로 회전", + "create.gui.sequenced_gearshift.speed.back_fast": "입력된 속도의 2배, 반대로 회전", - "create.schematicAndQuill.dimensions": "청사진 í�¬ê¸°: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정ë�¨.", - "create.schematicAndQuill.secondPos": "ë‘�번째 위치 지정ë�¨.", - "create.schematicAndQuill.noTarget": "[Ctrl]ì�„ 눌러 공기 블럭ì�„ ì„ íƒ�하기.", - "create.schematicAndQuill.abort": "위치 제거ë�¨.", - "create.schematicAndQuill.prompt": "청사진ì�˜ 제목ì�„ 작성하기:", - "create.schematicAndQuill.fallbackName": "ë‚´ 청사진", - "create.schematicAndQuill.saved": "%1$së¡œ 저장ë�¨", + "create.schematicAndQuill.dimensions": "청사진 크기: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정됨.", + "create.schematicAndQuill.secondPos": "두번째 위치 지정됨.", + "create.schematicAndQuill.noTarget": "[Ctrl]을 눌러 공기 블럭을 선택하기.", + "create.schematicAndQuill.abort": "위치 제거됨.", + "create.schematicAndQuill.prompt": "청사진의 제목을 작성하기:", + "create.schematicAndQuill.fallbackName": "내 청사진", + "create.schematicAndQuill.saved": "%1$s로 저장됨", - "create.schematic.invalid": "[!] 없는 ì•„ì�´í…œ - 청사진 í…Œì�´ë¸”ì�„ ì�´ìš©í•˜ì„¸ìš”", - "create.schematic.position": "위치", - "create.schematic.rotation": "회전", - "create.schematic.rotation.none": "ì—†ì�Œ", - "create.schematic.rotation.cw90": "90ë�„ 시계방향 회전", - "create.schematic.rotation.cw180": "180ë�„ 시계방향 회전", - "create.schematic.rotation.cw270": "270ë�„ 시계방향 회전", - "create.schematic.mirror": "거울", - "create.schematic.mirror.none": "ì—†ì�Œ", - "create.schematic.mirror.frontBack": "ì „-후", - "create.schematic.mirror.leftRight": "좌-ìš°", - "create.schematic.tool.deploy": "ì „ê°œ", - "create.schematic.tool.move": "X/Z좌표 ì�´ë�™", - "create.schematic.tool.movey": "Y좌표 ì�´ë�™", - "create.schematic.tool.rotate": "회전", - "create.schematic.tool.print": "설치", - "create.schematic.tool.flip": "뒤집기", - "create.schematic.tool.deploy.description.0": "구조물ì�„ 해당 위치로 고정합니다.", - "create.schematic.tool.deploy.description.1": "ë•…ì—�다 ìš°í�´ë¦­ìœ¼ë¡œ 설치합니다.", - "create.schematic.tool.deploy.description.2": "[Ctrl]ì�„ 눌러 플레ì�´ì–´-청사진ì�˜ 거리를 설정합니다.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-스í�¬ë¡¤ë¡œ 거리를 조정합니다.", - "create.schematic.tool.move.description.0": "청사진ì�„ 수í�‰ ì�´ë�™ì‹œí‚µë‹ˆë‹¤.", - "create.schematic.tool.move.description.1": "청사진ì�„ ë³´ê³  [CTRL]-스í�¬ë¡¤ë¡œ 밉니다.", + "create.schematic.invalid": "[!] 없는 아이템 - 청사진 테이블을 이용하세요", + "create.schematic.position": "위치", + "create.schematic.rotation": "회전", + "create.schematic.rotation.none": "없음", + "create.schematic.rotation.cw90": "90도 시계방향 회전", + "create.schematic.rotation.cw180": "180도 시계방향 회전", + "create.schematic.rotation.cw270": "270도 시계방향 회전", + "create.schematic.mirror": "거울", + "create.schematic.mirror.none": "없음", + "create.schematic.mirror.frontBack": "전-후", + "create.schematic.mirror.leftRight": "좌-우", + "create.schematic.tool.deploy": "전개", + "create.schematic.tool.move": "X/Z좌표 이동", + "create.schematic.tool.movey": "Y좌표 이동", + "create.schematic.tool.rotate": "회전", + "create.schematic.tool.print": "설치", + "create.schematic.tool.flip": "뒤집기", + "create.schematic.tool.deploy.description.0": "구조물을 해당 위치로 고정합니다.", + "create.schematic.tool.deploy.description.1": "땅에다 우클릭으로 설치합니다.", + "create.schematic.tool.deploy.description.2": "[Ctrl]을 눌러 플레이어-청사진의 거리를 설정합니다.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-스크롤로 거리를 조정합니다.", + "create.schematic.tool.move.description.0": "청사진을 수평 이동시킵니다.", + "create.schematic.tool.move.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "청사진ì�„ 수ì§� ì�´ë�™ì‹œí‚µë‹ˆë‹¤.", - "create.schematic.tool.movey.description.1": "청사진ì�„ ë³´ê³  [CTRL]-스í�¬ë¡¤ë¡œ 밉니다.", + "create.schematic.tool.movey.description.0": "청사진을 수직 이동시킵니다.", + "create.schematic.tool.movey.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "청사진ì�„ ë�Œë¦½ë‹ˆë‹¤.", - "create.schematic.tool.rotate.description.1": "[CTRL]-스í�¬ë¡¤ë¡œ 90ë�„ ë�Œë¦½ë‹ˆë‹¤.", + "create.schematic.tool.rotate.description.0": "청사진을 돌립니다.", + "create.schematic.tool.rotate.description.1": "[CTRL]-스크롤로 90도 돌립니다.", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "구조물ì�„ 즉시 설치합니다.", - "create.schematic.tool.print.description.1": "[ìš°í�´ë¦­]으로 현재 지ì �ì—� 설치를 허가합니다.", - "create.schematic.tool.print.description.2": "ì�´ ë�„구는 í�¬ë¦¬ì—�ì�´í‹°ë¸Œ 모드 전용입니다.", + "create.schematic.tool.print.description.0": "구조물을 즉시 설치합니다.", + "create.schematic.tool.print.description.1": "[우클릭]으로 현재 지점에 설치를 허가합니다.", + "create.schematic.tool.print.description.2": "이 도구는 크리에이티브 모드 전용입니다.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "당신ì�´ 보는 면으로 청사진ì�„ 뒤집습니다.", - "create.schematic.tool.flip.description.1": "청사진ì�„ ë³´ê³  [CTRL]-스í�¬ë¡¤ë¡œ 뒤집습니다.", + "create.schematic.tool.flip.description.0": "당신이 보는 면으로 청사진을 뒤집습니다.", + "create.schematic.tool.flip.description.1": "청사진을 보고 [CTRL]-스크롤로 뒤집습니다.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "ë�™ê¸°í™” 중...", - "create.schematics.uploadTooLarge": "청사진ì�´ 너무 í�½ë‹ˆë‹¤!.", - "create.schematics.maxAllowedSize": "최대 청사진 파ì�¼ í�¬ê¸°ëŠ”:", + "create.schematics.synchronizing": "동기화 중...", + "create.schematics.uploadTooLarge": "청사진이 너무 큽니다!.", + "create.schematics.maxAllowedSize": "최대 청사진 파일 크기는:", - "create.gui.schematicTable.title": "청사진 í…Œì�´ë¸”", - "create.gui.schematicTable.availableSchematics": "ì�´ìš©ê°€ëŠ¥í•œ 청사진", - "create.gui.schematicTable.noSchematics": "저장ë�œ 청사진 ì—†ì�Œ", - "create.gui.schematicTable.uploading": "업로딩 중...", - "create.gui.schematicTable.finished": "업로드 완료!", - "create.gui.schematicannon.title": "청사진 대í�¬", - "create.gui.schematicannon.settingsTitle": "설치 설정", - "create.gui.schematicannon.listPrinter": "재료 목ë¡� 프린터", - "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", - "create.gui.schematicannon.shotsRemaining": "남ì�€ ë°œí�¬ 수 : %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", - "create.gui.schematicannon.optionEnabled": "현재 활성화 ë�¨", - "create.gui.schematicannon.optionDisabled": "현재 비활성화 ë�¨", - "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블럭ì�„ 대체하지 ì•Šì�Œ", - "create.gui.schematicannon.option.replaceWithSolid": "온전한 블럭ì�„ 재료로 대체함", - "create.gui.schematicannon.option.replaceWithAny": "온전한 블럭ì�„ 아무 재료로 대체함", - "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블럭ì�„ 공기로 채움", - "create.gui.schematicannon.option.skipMissing": "부족한 블럭ì�„ 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타ì�¼ 엔티티를 보호", - "create.gui.schematicannon.option.skipMissing.description": "만약 대í�¬ê°€ 설치ì—� 필요한 블럭ì�„ 찾지 못할 경우,건너뛰고 다ì�Œ 블럭 설치를 진행합니다.", - "create.gui.schematicannon.option.skipTileEntities.description": "대í�¬ê°€ ìƒ�세정보가 ë“  ìƒ�ìž�ê°™ì�€ 타ì�¼ 엔티티 설치를 무시합니다.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "대í�¬ê°€ 작업구역ì�˜ 온전한 블럭ì�„ 대체하지 않습니다.", - "create.gui.schematicannon.option.replaceWithSolid.description": "대í�¬ê°€ 작업구역ì�˜ 온전한 블럭ì�„ 대í�¬ê°€ 가진 재료로 대체합니다.", - "create.gui.schematicannon.option.replaceWithAny.description": "대í�¬ê°€ 작업구역ì�˜ 온전한 블럭ì�„ 대í�¬ê°€ 가진 ì–´ë– í•œ 재료로든 대체합니다.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "대í�¬ê°€ 작업구역ì�˜ 블럭들ì�„ 제거하고 공기로 채ì›�니다.", + "create.gui.schematicTable.title": "청사진 테이블", + "create.gui.schematicTable.availableSchematics": "이용가능한 청사진", + "create.gui.schematicTable.noSchematics": "저장된 청사진 없음", + "create.gui.schematicTable.uploading": "업로딩 중...", + "create.gui.schematicTable.finished": "업로드 완료!", + "create.gui.schematicannon.title": "청사진 대포", + "create.gui.schematicannon.settingsTitle": "설치 설정", + "create.gui.schematicannon.listPrinter": "재료 목록 프린터", + "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "남은 발포 수 : %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", + "create.gui.schematicannon.optionEnabled": "현재 활성화 됨", + "create.gui.schematicannon.optionDisabled": "현재 비활성화 됨", + "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블럭을 대체하지 않음", + "create.gui.schematicannon.option.replaceWithSolid": "온전한 블럭을 재료로 대체함", + "create.gui.schematicannon.option.replaceWithAny": "온전한 블럭을 아무 재료로 대체함", + "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블럭을 공기로 채움", + "create.gui.schematicannon.option.skipMissing": "부족한 블럭을 무시하고 진행", + "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", + "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블럭을 찾지 못할 경우,건너뛰고 다음 블럭 설치를 진행합니다.", + "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블럭을 대체하지 않습니다.", + "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블럭을 대포가 가진 재료로 대체합니다.", + "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블럭을 대포가 가진 어떠한 재료로든 대체합니다.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "대포가 작업구역의 블럭들을 제거하고 공기로 채웁니다.", - "create.schematicannon.status.idle": "휴ì‹�", - "create.schematicannon.status.ready": "준비ë�¨", - "create.schematicannon.status.running": "ê°€ë�™ 중", - "create.schematicannon.status.finished": "완료", - "create.schematicannon.status.paused": "멈춤", - "create.schematicannon.status.stopped": "중단ë�¨", - "create.schematicannon.status.noGunpowder": "화약ì�´ 부족함", - "create.schematicannon.status.targetNotLoaded": "블럭ì�´ 준비ë�˜ì§€ ì•Šì�Œ", - "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", - "create.schematicannon.status.searching": "검색 중", - "create.schematicannon.status.skipping": "건너뛰는 중", - "create.schematicannon.status.missingBlock": "부족한 블럭:", - "create.schematicannon.status.placing": "설치 중", - "create.schematicannon.status.clearing": "블럭ì�„ 제거하는 중", - "create.schematicannon.status.schematicInvalid": "청사진 ì—†ì�Œ", - "create.schematicannon.status.schematicNotPlaced": "청사진ì�´ ì „ê°œë�˜ì§€ ì•Šì�Œ", - "create.schematicannon.status.schematicExpired": "청사진 파ì�¼ì�´ 제거ë�¨", + "create.schematicannon.status.idle": "휴식", + "create.schematicannon.status.ready": "준비됨", + "create.schematicannon.status.running": "가동 중", + "create.schematicannon.status.finished": "완료", + "create.schematicannon.status.paused": "멈춤", + "create.schematicannon.status.stopped": "중단됨", + "create.schematicannon.status.noGunpowder": "화약이 부족함", + "create.schematicannon.status.targetNotLoaded": "블럭이 준비되지 않음", + "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", + "create.schematicannon.status.searching": "검색 중", + "create.schematicannon.status.skipping": "건너뛰는 중", + "create.schematicannon.status.missingBlock": "부족한 블럭:", + "create.schematicannon.status.placing": "설치 중", + "create.schematicannon.status.clearing": "블럭을 제거하는 중", + "create.schematicannon.status.schematicInvalid": "청사진 없음", + "create.schematicannon.status.schematicNotPlaced": "청사진이 전개되지 않음", + "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", - "create.gui.filter.blacklist": "블랙리스트", - "create.gui.filter.blacklist.description": "위 목ë¡�ì—� 맞지않는 ì•„ì�´í…œì�´ë©´ 통과합니다. 빈 블랙리스트는 모ë‘� 통과시킵니다.", - "create.gui.filter.whitelist": "í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸", - "create.gui.filter.whitelist.description": "위 목ë¡�ì—� 맞는 ì•„ì�´í…œì�´ë©´ 통과합니다. 빈 í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸ëŠ” 모ë‘� 통과시키지 않습니다.", - "create.gui.filter.respect_data": "ìƒ�세정보 ì�¼ì¹˜", - "create.gui.filter.respect_data.description": "위 목ë¡� ì•„ì�´í…œì�˜ 내구ë�„, 마법부여, 그리고 다른 NBT와 ì�¼ì¹˜í•  ë•Œ 통과시킵니다.", - "create.gui.filter.ignore_data": "ìƒ�세정보 무시", - "create.gui.filter.ignore_data.description": "ìƒ�세정보와 ìƒ�관없ì�´ ì•„ì�´í…œ 종류만 ì�¼ì¹˜í•œë‹¤ë©´ 통과시킵니다.", + "create.gui.filter.blacklist": "블랙리스트", + "create.gui.filter.blacklist.description": "위 목록에 맞지않는 아이템이면 통과합니다. 빈 블랙리스트는 모두 통과시킵니다.", + "create.gui.filter.whitelist": "화이트리스트", + "create.gui.filter.whitelist.description": "위 목록에 맞는 아이템이면 통과합니다. 빈 화이트리스트는 모두 통과시키지 않습니다.", + "create.gui.filter.respect_data": "상세정보 일치", + "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", + "create.gui.filter.ignore_data": "상세정보 무시", + "create.gui.filter.ignore_data.description": "상세정보와 상관없이 아이템 종류만 일치한다면 통과시킵니다.", - "create.item_attributes.placeable": "설치할 수 있ì�Œ", - "create.item_attributes.consumable": "먹ì�„ 수 있ì�Œ", - "create.item_attributes.smeltable": "구워질 수 있ì�Œ", - "create.item_attributes.washable": "세척ë�  수 있ì�Œ", - "create.item_attributes.smokable": "훈연ë�  수 있ì�Œ", - "create.item_attributes.blastable": "ìš©ê´‘ë¡œì—� ë…¹ì�¼ 수 있ì�Œ", - "create.item_attributes.enchanted": "마법부여ë�¨", - "create.item_attributes.damaged": "내구ë�„ê°€ ë‹®", - "create.item_attributes.badly_damaged": "심ê°�하게 내구ë�„ê°€ ë‹®", - "create.item_attributes.not_stackable": "ê²¹ì³�질 수 ì—†ì�Œ", - "create.item_attributes.equipable": "장착할 수 있ì�Œ", - "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있ì�Œ", - "create.item_attributes.in_tag": "%1$së¡œ 등ë¡�ë�¨", - "create.item_attributes.in_item_group": "%1$s탭ì—� ì†�함", - "create.item_attributes.added_by": "%1$sê°€ 추가함", + "create.item_attributes.placeable": "설치할 수 있음", + "create.item_attributes.consumable": "먹을 수 있음", + "create.item_attributes.smeltable": "구워질 수 있음", + "create.item_attributes.washable": "세척될 수 있음", + "create.item_attributes.smokable": "훈연될 수 있음", + "create.item_attributes.blastable": "용광로에 녹일 수 있음", + "create.item_attributes.enchanted": "마법부여됨", + "create.item_attributes.damaged": "내구도가 닮", + "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", + "create.item_attributes.not_stackable": "겹쳐질 수 없음", + "create.item_attributes.equipable": "장착할 수 있음", + "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있음", + "create.item_attributes.in_tag": "%1$s로 등록됨", + "create.item_attributes.in_item_group": "%1$s탭에 속함", + "create.item_attributes.added_by": "%1$s가 추가함", - "create.gui.attribute_filter.no_selected_attributes": "ì†�성ì�´ ì„ íƒ�ë�˜ì§€ ì•Šì�Œ", - "create.gui.attribute_filter.selected_attributes": "ì„ íƒ�ë�œ ì†�성:", - "create.gui.attribute_filter.whitelist_disjunctive": "í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸ (최소)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "ì•„ì�´í…œì�´ ì„ íƒ�ë�œ ì†�성 중 하나ë�¼ë�„ 가지고 있다면 통과시킵니다.", - "create.gui.attribute_filter.whitelist_conjunctive": "í™”ì�´íŠ¸ë¦¬ìŠ¤íŠ¸ (모ë‘�)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "ì•„ì�´í…œì�´ ì„ íƒ�ë�œ ì†�성 모ë‘�를 가지고 있어야 통과시킵니다.", - "create.gui.attribute_filter.blacklist": "블랙리스트", - "create.gui.attribute_filter.blacklist.description": "ì•„ì�´í…œì�´ ì„ íƒ�ë�œ ì†�성ì�´ 없다면 통과시킵니다.", - "create.gui.attribute_filter.add_reference_item": "참고할 ì•„ì�´í…œì�„ 추가하기", + "create.gui.attribute_filter.no_selected_attributes": "속성이 선택되지 않음", + "create.gui.attribute_filter.selected_attributes": "선택된 속성:", + "create.gui.attribute_filter.whitelist_disjunctive": "화이트리스트 (최소)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "아이템이 선택된 속성 중 하나라도 가지고 있다면 통과시킵니다.", + "create.gui.attribute_filter.whitelist_conjunctive": "화이트리스트 (모두)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "아이템이 선택된 속성 모두를 가지고 있어야 통과시킵니다.", + "create.gui.attribute_filter.blacklist": "블랙리스트", + "create.gui.attribute_filter.blacklist.description": "아이템이 선택된 속성이 없다면 통과시킵니다.", + "create.gui.attribute_filter.add_reference_item": "참고할 아이템을 추가하기", - "create.tooltip.holdKey": "[%1$s]를 눌러 설명보기", - "create.tooltip.holdKeyOrKey": "[%1$s] ë˜�는 [%2$s]를 눌러 설명보기", + "create.tooltip.holdKey": "[%1$s]를 눌러 설명보기", + "create.tooltip.holdKeyOrKey": "[%1$s] 또는 [%2$s]를 눌러 설명보기", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "회전ì†�ë�„ 요구: %1$s", - "create.tooltip.speedRequirement.none": "ì—†ì�Œ", - "create.tooltip.speedRequirement.medium": "보통", - "create.tooltip.speedRequirement.high": "빠름", - "create.tooltip.stressImpact": "피로ë�„ 부하: %1$s", - "create.tooltip.stressImpact.low": "ë‚®ì�Œ", - "create.tooltip.stressImpact.medium": "보통", - "create.tooltip.stressImpact.high": "높ì�Œ", - "create.tooltip.stressImpact.overstressed": "과부하ë�¨", - "create.tooltip.capacityProvided": "피로ë�„ 용량: %1$s", - "create.tooltip.capacityProvided.low": "ì �ì�Œ", - "create.tooltip.capacityProvided.medium": "보통", - "create.tooltip.capacityProvided.high": "í�¼", - "create.tooltip.capacityProvided.asGenerator": "(발전기로ì�¨)", - "create.tooltip.generationSpeed": "%1$s %2$s만í�¼ 발전함", - "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", + "create.tooltip.speedRequirement": "회전속도 요구: %1$s", + "create.tooltip.speedRequirement.none": "없음", + "create.tooltip.speedRequirement.medium": "보통", + "create.tooltip.speedRequirement.high": "빠름", + "create.tooltip.stressImpact": "피로도 부하: %1$s", + "create.tooltip.stressImpact.low": "낮음", + "create.tooltip.stressImpact.medium": "보통", + "create.tooltip.stressImpact.high": "높음", + "create.tooltip.stressImpact.overstressed": "과부하됨", + "create.tooltip.capacityProvided": "피로도 용량: %1$s", + "create.tooltip.capacityProvided.low": "적음", + "create.tooltip.capacityProvided.medium": "보통", + "create.tooltip.capacityProvided.high": "큼", + "create.tooltip.capacityProvided.asGenerator": "(발전기로써)", + "create.tooltip.generationSpeed": "%1$s %2$s만큼 발전함", + "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", - "create.mechanical_mixer.min_ingredients": "최소 재료 종류", + "create.mechanical_mixer.min_ingredients": "최소 재료 종류", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -833,15 +833,15 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "청사진 대í�¬ê°€ ë°œí�¬í•¨", - "create.subtitle.schematicannon_finish": "청사진 대í�¬ê°€ ë��남", - "create.subtitle.slime_added": "슬ë�¼ìž„ì�´ ì² í�½ê±°ë¦¼", - "create.subtitle.mechanical_press_activation": "압착기가 ê°€ë�™ë�¨", - "create.subtitle.mechanical_press_item_break": "금ì†�ì�´ 부딫힘", - "create.subtitle.blockzapper_place": "블럭ì�´ 순간ì�´ë�™ë�¨", - "create.subtitle.blockzapper_confirm": "확ì�¸ 효과ì�Œ", - "create.subtitle.blockzapper_deny": "취소 효과ì�Œ", - "create.subtitle.block_funnel_eat": "깔때기가 í�¡ìž…함", + "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", + "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", + "create.subtitle.slime_added": "슬라임이 철퍽거림", + "create.subtitle.mechanical_press_activation": "압착기가 가동됨", + "create.subtitle.mechanical_press_item_break": "금속이 부딫힘", + "create.subtitle.blockzapper_place": "블럭이 순간이동됨", + "create.subtitle.blockzapper_confirm": "확인 효과음", + "create.subtitle.blockzapper_deny": "취소 효과음", + "create.subtitle.block_funnel_eat": "깔때기가 흡입함", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -856,41 +856,41 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "설정ë�œ 반사 모드ì—� ë”°ë�¼ 블럭 설치를 똑같ì�´ 재현합니다.", - "item.create.wand_of_symmetry.tooltip.condition1": "단축바ì—� 있ì�„ ë•Œ", - "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", - "item.create.wand_of_symmetry.tooltip.control1": "ë•…ì—�다 ìš°í�´ë¦­", - "item.create.wand_of_symmetry.tooltip.action1": "거울ì�„ _ìƒ�성하거나_ _옮ê¹�니다_.", - "item.create.wand_of_symmetry.tooltip.control2": "공중ì—� ìš°í�´ë¦­", - "item.create.wand_of_symmetry.tooltip.action2": "활성화ë�œ ê±°ì�„ì�„ _제거합니다_.", - "item.create.wand_of_symmetry.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _ì°½_ì�„ 엽니다.", + "item.create.wand_of_symmetry.tooltip.summary": "설정된 반사 모드에 따라 블럭 설치를 똑같이 재현합니다.", + "item.create.wand_of_symmetry.tooltip.condition1": "단축바에 있을 때", + "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", + "item.create.wand_of_symmetry.tooltip.control1": "땅에다 우클릭", + "item.create.wand_of_symmetry.tooltip.action1": "거울을 _생성하거나_ _옮깁니다_.", + "item.create.wand_of_symmetry.tooltip.control2": "공중에 우클릭", + "item.create.wand_of_symmetry.tooltip.action2": "활성화된 거을을 _제거합니다_.", + "item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블럭ì�„ êµ�ì²´, 설치하는 놀ë�¼ìš´ ë�„구입니다.", - "item.create.handheld_blockzapper.tooltip.control1": "블럭ì�„ ë³´ê³  좌í�´ë¦­", - "item.create.handheld_blockzapper.tooltip.action1": "ì�´ ë�„구로 설치할 블럭ì�„ 설정합니다.", - "item.create.handheld_blockzapper.tooltip.control2": "블럭ì�„ ë³´ê³  ìš°í�´ë¦­", - "item.create.handheld_blockzapper.tooltip.action2": "해당 위치ì—� 설정ë�œ 블럭으로 설치하거나 êµ�체합니다.", - "item.create.handheld_blockzapper.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _ì°½_ì�„ 엽니다.", + "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블럭을 교체, 설치하는 놀라운 도구입니다.", + "item.create.handheld_blockzapper.tooltip.control1": "블럭을 보고 좌클릭", + "item.create.handheld_blockzapper.tooltip.action1": "이 도구로 설치할 블럭을 설정합니다.", + "item.create.handheld_blockzapper.tooltip.control2": "블럭을 보고 우클릭", + "item.create.handheld_blockzapper.tooltip.action2": "해당 위치에 설정된 블럭으로 설치하거나 교체합니다.", + "item.create.handheld_blockzapper.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _창_을 엽니다.", "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_ì�„ 만들 ë•Œ 좋ì�€ 간편한 ë�„구입니다.", - "item.create.handheld_worldshaper.tooltip.control1": "블럭ì�„ ë³´ê³  좌í�´ë¦­", - "item.create.handheld_worldshaper.tooltip.action1": "ì�´ ë�„구로 설치할 블럭ì�„ 설정합니다.", - "item.create.handheld_worldshaper.tooltip.control2": "블럭ì�„ ë³´ê³  ìš°í�´ë¦­", - "item.create.handheld_worldshaper.tooltip.action2": "해당 위치ì—� 설정ë�œ _브러쉬_ 와 _ë�„구_를 ì �용합니다.", - "item.create.handheld_worldshaper.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _ì°½_ì�„ 엽니다.", + "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.", + "item.create.handheld_worldshaper.tooltip.control1": "블럭을 보고 좌클릭", + "item.create.handheld_worldshaper.tooltip.action1": "이 도구로 설치할 블럭을 설정합니다.", + "item.create.handheld_worldshaper.tooltip.control2": "블럭을 보고 우클릭", + "item.create.handheld_worldshaper.tooltip.action2": "해당 위치에 설정된 _브러쉬_ 와 _도구_를 적용합니다.", + "item.create.handheld_worldshaper.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _창_을 엽니다.", "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "ì�¼ë°˜ì �ì�¸ 나무 종류들ì�˜ 성장ì�„ 촉진시킬 강력한 미네랄ì�˜ 혼합물입니다.", - "item.create.tree_fertilizer.tooltip.condition1": "묘목ì—� 사용했ì�„ ë•Œ", - "item.create.tree_fertilizer.tooltip.behaviour1": "묘목ì�„ 주위 공간과 _ìƒ�관없ì�´_ 성장시킵니다.", + "item.create.tree_fertilizer.tooltip.summary": "일반적인 나무 종류들의 성장을 촉진시킬 강력한 미네랄의 혼합물입니다.", + "item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때", + "item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.", "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "수 ì´ˆ 만ì—� 나무를 쓰러뜨리는 _ê²½ì�´ë¡œìš´_ _ë�„ë�¼_입니다.", + "item.create.deforester.tooltip.summary": "수 초 만에 나무를 쓰러뜨리는 _경이로운_ _도끼_입니다.", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases_ _reach_ _distance_ of the wielder.", @@ -898,245 +898,245 @@ "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach_ _distance_ of items used in the _Main-Hand_.", "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "장치ì�˜ _ìž…ë ¥_ê³¼ _출력_ì�„ í•„í„° _ì•„ì�´í…œ_ 목ë¡�ì—� ë”°ë�¼ 정확하게 _ì¡°ì •_합니다.", - "item.create.filter.tooltip.condition1": "í•„í„° 슬롯ì—� 있ì�„ ë•Œ", - "item.create.filter.tooltip.behaviour1": "í•„í„° _설정_ì—� ë”°ë�¼ ì•„ì�´í…œ í��름ì�„ _ì¡°ì •_합니다.", - "item.create.filter.tooltip.condition2": "ìš°í�´ë¦­", - "item.create.filter.tooltip.behaviour2": "_설정_ _ì°½_ì�„ 엽니다.", + "item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 정확하게 _조정_합니다.", + "item.create.filter.tooltip.condition1": "필터 슬롯에 있을 때", + "item.create.filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", + "item.create.filter.tooltip.condition2": "우클릭", + "item.create.filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "장치ì�˜ _ìž…ë ¥_ê³¼ _출력_ì�„ í•„í„° _ì†�성_ 목ë¡�ì—� ë”°ë�¼ 정확하게 _ì¡°ì •_합니다.", - "item.create.attribute_filter.tooltip.condition1": "í•„í„° 슬롯ì—� 있ì�„ ë•Œ", - "item.create.attribute_filter.tooltip.behaviour1": "í•„í„° _설정_ì—� ë”°ë�¼ ì•„ì�´í…œ í��름ì�„ _ì¡°ì •_합니다.", - "item.create.attribute_filter.tooltip.condition2": "ìš°í�´ë¦­", - "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _ì°½_ì�„ 엽니다.", + "item.create.attribute_filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _속성_ 목록에 따라 정확하게 _조정_합니다.", + "item.create.attribute_filter.tooltip.condition1": "필터 슬롯에 있을 때", + "item.create.attribute_filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", + "item.create.attribute_filter.tooltip.condition2": "우클릭", + "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "ì¡°í•© 재료로 ì“°ì�´ê±°ë‚˜ 청사진 í…Œì�´ë¸”ì—�ì„œ 청사진ì�„ 불러올 ë•Œ 쓰입니다.", + "item.create.empty_schematic.tooltip.summary": "조합 재료로 쓰이거나 청사진 테이블에서 청사진을 불러올 때 쓰입니다.", "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "세계ì—� 구조물ì�„ 홀로그램으로 불러와 지정하고 설치합니다. 지정ë�œ 홀로그램ì�€ 청사진 대í�¬ì�˜ ìž‘ì—… ì˜�ì—­ì�´ ë�©ë‹ˆë‹¤.", - "item.create.schematic.tooltip.condition1": "들고 있ì�„ ë–„", - "item.create.schematic.tooltip.behaviour1": "UIì�˜ ë�„구로 변경/설치 í•  수 있습니다.", - "item.create.schematic.tooltip.control1": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.schematic.tooltip.action1": "정확한 _좌표_ ìž…ë ¥ì�„ 위한 ì°½ì�„ 엽니다.", + "item.create.schematic.tooltip.summary": "세계에 구조물을 홀로그램으로 불러와 지정하고 설치합니다. 지정된 홀로그램은 청사진 대포의 작업 영역이 됩니다.", + "item.create.schematic.tooltip.condition1": "들고 있을 떄", + "item.create.schematic.tooltip.behaviour1": "UI의 도구로 변경/설치 할 수 있습니다.", + "item.create.schematic.tooltip.control1": "웅크린 상태에서 우클릭", + "item.create.schematic.tooltip.action1": "정확한 _좌표_ 입력을 위한 창을 엽니다.", "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "세계ì—� 있는 구조물ì�„ .nbt 파ì�¼ë¡œ 저장할 ë•Œ 쓰입니다.", - "item.create.schematic_and_quill.tooltip.condition1": "1단계", - "item.create.schematic_and_quill.tooltip.behaviour1": "ë‘� 모서리를 ìš°í�´ë¦­ìœ¼ë¡œ ì„ íƒ�하세요.", - "item.create.schematic_and_quill.tooltip.condition2": "2단계", - "item.create.schematic_and_quill.tooltip.behaviour2": "ë©´ì�„ ë°”ë�¼ë³´ê³  _Ctrl-스í�¬ë¡¤_하여 í�¬ê¸°ë¥¼ 조정하세요. ìš°í�´ë¦­ì�„ 다시 하면 저장ë�©ë‹ˆë‹¤.", - "item.create.schematic_and_quill.tooltip.control1": "ìš°í�´ë¦­", - "item.create.schematic_and_quill.tooltip.action1": "모서리 ì„ íƒ� / 저장 확ì�¸", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있ì�„ ë•Œ", - "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 ì�´ìš©í•˜ì—¬ 거리를 조정합니다.", - "item.create.schematic_and_quill.tooltip.control3": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.schematic_and_quill.tooltip.action3": "ì„ íƒ� ì˜�ì—­ì�„ 리셋하고 _ì‚­ì œ_합니다.", + "item.create.schematic_and_quill.tooltip.summary": "세계에 있는 구조물을 .nbt 파일로 저장할 때 쓰입니다.", + "item.create.schematic_and_quill.tooltip.condition1": "1단계", + "item.create.schematic_and_quill.tooltip.behaviour1": "두 모서리를 우클릭으로 선택하세요.", + "item.create.schematic_and_quill.tooltip.condition2": "2단계", + "item.create.schematic_and_quill.tooltip.behaviour2": "면을 바라보고 _Ctrl-스크롤_하여 크기를 조정하세요. 우클릭을 다시 하면 저장됩니다.", + "item.create.schematic_and_quill.tooltip.control1": "우클릭", + "item.create.schematic_and_quill.tooltip.action1": "모서리 선택 / 저장 확인", + "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있을 때", + "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 이용하여 거리를 조정합니다.", + "item.create.schematic_and_quill.tooltip.control3": "웅크린 상태에서 우클릭", + "item.create.schematic_and_quill.tooltip.action3": "선택 영역을 리셋하고 _삭제_합니다.", "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "장착ë�œ 청사진ì�„ 바탕으로 블럭들ì�„ ë°œí�¬í•©ë‹ˆë‹¤. 화약ì�„ 연료로 사용하고 주변 ì�¸ë²¤í† ë¦¬ 공간ì—�ì„œ ì•„ì�´í…œì�„ 사용합니다.", - "block.create.schematicannon.tooltip.control1": "ìš°í�´ë¦­", - "block.create.schematicannon.tooltip.action1": "ì°½ì�„ 엽니다.", + "block.create.schematicannon.tooltip.summary": "장착된 청사진을 바탕으로 블럭들을 발포합니다. 화약을 연료로 사용하고 주변 인벤토리 공간에서 아이템을 사용합니다.", + "block.create.schematicannon.tooltip.control1": "우클릭", + "block.create.schematicannon.tooltip.action1": "창을 엽니다.", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_ì—� 저장ë�œ 청사진ì�„ 불러옵니다.", - "block.create.schematic_table.tooltip.condition1": "빈 청사진ì�„ ë„£ì�„ ë•Œ", - "block.create.schematic_table.tooltip.behaviour1": "Schematics í�´ë�”ì—�ì„œ ì„ íƒ�í•œ 파ì�¼ì�„ 업로드합니다.", + "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_에 저장된 청사진을 불러옵니다.", + "block.create.schematic_table.tooltip.condition1": "빈 청사진을 넣을 때", + "block.create.schematic_table.tooltip.behaviour1": "Schematics 폴더에서 선택한 파일을 업로드합니다.", "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "_ì�¼ì§�ì„ _으로 _회전_ì�„ 전달합니다.", + "block.create.shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다.", "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": " _ì�¼ì§�ì„ _ì�´ë‚˜ _옆_ _톱니바퀴_ë¡œ _회전_ì�„ _전달_합니다.", + "block.create.cogwheel.tooltip.summary": " _일직선_이나 _옆_ _톱니바퀴_로 _회전_을 _전달_합니다.", "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "í�° 톱니바퀴입니다. ìž‘ì�€ 톱니바퀴와 맞물렸ì�„ë•Œ, _회전 ì†�ë�„_ê°€ _변합니다_.", + "block.create.large_cogwheel.tooltip.summary": "큰 톱니바퀴입니다. 작은 톱니바퀴와 맞물렸을때, _회전 속도_가 _변합니다_.", "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "_ì�¼ì§�ì„ _으로 _회전_ì�„ 전달합니다. _ë²½ì�„_ _넘어_ 회전ì�„ 보낼 ë•Œ 유용합니다.", + "block.create.encased_shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다. _벽을_ _넘어_ 회전을 보낼 때 유용합니다.", "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "_전후좌우_ / _ìƒ�하전후_ë¡œ 회전ì�„ 보냅니다. 한번 ë�” ì¡°í•©í•´ì„œ 설정ì�„ 바꿀 수 있습니다.", + "block.create.gearbox.tooltip.summary": "_전후좌우_ / _상하전후_로 회전을 보냅니다. 한번 더 조합해서 설정을 바꿀 수 있습니다.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "ì—°ê²°ë�œ 축ì�˜ 회전 ë°©í–¥ì�„ _변경_합니다.", - "block.create.gearshift.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", - "block.create.gearshift.tooltip.behaviour1": "_출력_ 회전 ë°©í–¥ì�„ _반전_시킵니다.", + "block.create.gearshift.tooltip.summary": "연결된 축의 회전 방향을 _변경_합니다.", + "block.create.gearshift.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.gearshift.tooltip.behaviour1": "_출력_ 회전 방향을 _반전_시킵니다.", "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "ì—°ê²°ë�œ 축ì�˜ 회전ì�„ ë�„ê³  킬 수 있습니다.", - "block.create.clutch.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", - "block.create.clutch.tooltip.behaviour1": "출력 ë°©í–¥ 회전ì�„ 멈춥니다.", + "block.create.clutch.tooltip.summary": "연결된 축의 회전을 끄고 킬 수 있습니다.", + "block.create.clutch.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.clutch.tooltip.behaviour1": "출력 방향 회전을 멈춥니다.", "block.create.encased_belt.tooltip": "ENCASED_BELT", - "block.create.encased_belt.tooltip.summary": "ì—°ê²°ë�œ 다른 _ë�®ížŒ 벨트_ì—� 회전ì�„ _ì—°ê²°_합니다.", - "block.create.encased_belt.tooltip.condition1": "축ì—� ì—°ê²° ë�˜ì—ˆì�„ ë•Œ", - "block.create.encased_belt.tooltip.behaviour1": "ì—°ê²°ë�œ 축, 기어, 장치들ì�€ _ê°™ì�€_ _회전_ _ì†�ë�„_와 _ë°©í–¥_ì�„ 가집니다. ê°™ì�€ 방향으로 _맞대지_ _ì•Šì•„ë�„_ _ë�©ë‹ˆë‹¤_.", + "block.create.encased_belt.tooltip.summary": "연결된 다른 _덮힌 벨트_에 회전을 _연결_합니다.", + "block.create.encased_belt.tooltip.condition1": "축에 연결 되었을 때", + "block.create.encased_belt.tooltip.behaviour1": "연결된 축, 기어, 장치들은 _같은_ _회전_ _속도_와 _방향_을 가집니다. 같은 방향으로 _맞대지_ _않아도_ _됩니다_.", "block.create.adjustable_pulley.tooltip": "ANALOG BELT PULLEY", - "block.create.adjustable_pulley.tooltip.summary": "ë�®ížŒ 벨트와 ê°™ì�€ ì—­í• ì�„ 가집니다. ë˜�í•œ ìž…/출력 부분ì—� 설치하고 레드스톤 신호 세기ì—� ë”°ë�¼ _회전_ _ì†�ë�„_를 _ì¡°ì •_í•  수 있습니다.", - "block.create.adjustable_pulley.tooltip.condition1": "레드스톤 신호 설정", - "block.create.adjustable_pulley.tooltip.behaviour1": "_ìž…ë ¥_ 부분ì—� 설치하면 출력 회전 ì†�ë�„를 _낮추고_ (최대 0.5ë°°), _출력_ 부분ì—� 설치하면 출력 회전 ì†�ë�„를 _ì¦�가시킵니다_ (최대 2ë°°).", + "block.create.adjustable_pulley.tooltip.summary": "덮힌 벨트와 같은 역할을 가집니다. 또한 입/출력 부분에 설치하고 레드스톤 신호 세기에 따라 _회전_ _속도_를 _조정_할 수 있습니다.", + "block.create.adjustable_pulley.tooltip.condition1": "레드스톤 신호 설정", + "block.create.adjustable_pulley.tooltip.behaviour1": "_입력_ 부분에 설치하면 출력 회전 속도를 _낮추고_ (최대 0.5배), _출력_ 부분에 설치하면 출력 회전 속도를 _증가시킵니다_ (최대 2배).", "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "ë‘� ê°œ ì�´ìƒ�ì�˜ _축_ì�„ 벨트로 ì—°ê²°í•  수 있습니다. ì—°ê²°ë�œ 축들ì�€ _모ë‘�_ _ê°™ì�€_ _ì†�ë�„_와 _ë°©í–¥_ì�„ 가집니다. 벨트는 _ì•„ì�´í…œ_ì�´ë‚˜ _엔티티_를 _옮길_ _수_ _있습니다_.", - "item.create.belt_connector.tooltip.control1": "축ì—�다 ìš°í�´ë¦­", - "item.create.belt_connector.tooltip.action1": "첫번째 벨트 ë��부분ì�„ 설정합니다. ë‘�번째 축ì�€ 반드시 _수í�‰_ì�´ë‚˜ _수ì§�_, _대ê°�ì„ _ ë°©í–¥ì—� 있는 축ì—� 연결해야합니다.", - "item.create.belt_connector.tooltip.control2": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.belt_connector.tooltip.action2": "첫번째 벨트 설정ì�„ 초기화합니다.", + "item.create.belt_connector.tooltip.summary": "두 개 이상의 _축_을 벨트로 연결할 수 있습니다. 연결된 축들은 _모두_ _같은_ _속도_와 _방향_을 가집니다. 벨트는 _아이템_이나 _엔티티_를 _옮길_ _수_ _있습니다_.", + "item.create.belt_connector.tooltip.control1": "축에다 우클릭", + "item.create.belt_connector.tooltip.action1": "첫번째 벨트 끝부분을 설정합니다. 두번째 축은 반드시 _수평_이나 _수직_, _대각선_ 방향에 있는 축에 연결해야합니다.", + "item.create.belt_connector.tooltip.control2": "웅크린 상태에서 우클릭", + "item.create.belt_connector.tooltip.action2": "첫번째 벨트 설정을 초기화합니다.", "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "장치 정보를 ì°©ìš©ìž�ì�˜ 시야ì—� ë�„어주는 안경입니다.", - "item.create.goggles.tooltip.condition1": "장착했ì�„ ë•Œ", - "item.create.goggles.tooltip.behaviour1": "해당 장치ì�˜ _ì†�ë�„_, _피로ë�„_, _용량_ì�„ 레벨ì—� ë”°ë�¼ ì—� ë”°ë�¼ 색ìƒ� UI를 ë³´ì—¬ì¤�니다.", - "item.create.goggles.tooltip.condition2": "계측기를 ë°”ë�¼ë³¼ ë•Œ", - "item.create.goggles.tooltip.behaviour2": "계측기가 ì—°ê²°ë�œ 네트워í�¬ì�˜ _ì†�ë�„_나 _스트레스_ì�˜ ìž�세한 정보를 ë³´ì—¬ì¤�니다.", + "item.create.goggles.tooltip.summary": "장치 정보를 착용자의 시야에 띄어주는 안경입니다.", + "item.create.goggles.tooltip.condition1": "장착했을 때", + "item.create.goggles.tooltip.behaviour1": "해당 장치의 _속도_, _피로도_, _용량_을 레벨에 따라 에 따라 색상 UI를 보여줍니다.", + "item.create.goggles.tooltip.condition2": "계측기를 바라볼 때", + "item.create.goggles.tooltip.behaviour2": "계측기가 연결된 네트워크의 _속도_나 _스트레스_의 자세한 정보를 보여줍니다.", "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "장치 구성ì—� 유용한 ë�„구입니다. 장치를 _회전_, _설정_, _í•´ì²´_하는 ë�° 쓰입니다.", - "item.create.wrench.tooltip.control1": "장치ì—� ìš°í�´ë¦­", - "item.create.wrench.tooltip.action1": "사용ìž�ê°€ ë°”ë�¼ë³´ëŠ” _면으로_ 혹ì�€ _반대로_ 장치를 ë�Œë¦½ë‹ˆë‹¤.", - "item.create.wrench.tooltip.control2": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "item.create.wrench.tooltip.action2": "_장치_를 _í•´ì²´_하고 _즉시_ _ì�¸ë²¤í† ë¦¬_ë¡œ 넣습니다.", + "item.create.wrench.tooltip.summary": "장치 구성에 유용한 도구입니다. 장치를 _회전_, _설정_, _해체_하는 데 쓰입니다.", + "item.create.wrench.tooltip.control1": "장치에 우클릭", + "item.create.wrench.tooltip.action1": "사용자가 바라보는 _면으로_ 혹은 _반대로_ 장치를 돌립니다.", + "item.create.wrench.tooltip.control2": "웅크린 상태에서 우클릭", + "item.create.wrench.tooltip.action2": "_장치_를 _해체_하고 _즉시_ _인벤토리_로 넣습니다.", "block.create.creative_motor.tooltip": "CREATIVE MOTOR", - "block.create.creative_motor.tooltip.summary": "회전 ì†�ë�„를 _ì¡°ì •_í•  수 있는 장치입니다.", + "block.create.creative_motor.tooltip.summary": "회전 속도를 _조정_할 수 있는 장치입니다.", "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "ì�¸ì ‘í•œ _물ì�˜_ _í��름_ì—�ì„œ ì–»ì�€ 회전ì�„ 제공합니다.", + "block.create.water_wheel.tooltip.summary": "인접한 _물의_ _흐름_에서 얻은 회전을 제공합니다.", "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "회전력ì�„ 바람으로 전환합니다. 다양한 ìš©ë�„ë¡œ 사용 가능합니다.", - "block.create.encased_fan.tooltip.condition1": "레드스톤 신호를 ë°›ì�„ ë•Œ", - "block.create.encased_fan.tooltip.behaviour1": "장치 아래ì�˜ _ì—´_ì�„ _회전력_으로 _바꾸어_ 제공합니다. 날개가 아래를 ë°”ë�¼ë³´ì•„야 합니다.", - "block.create.encased_fan.tooltip.condition2": "ë�Œë ¤ì§ˆ ë•Œ", - "block.create.encased_fan.tooltip.behaviour2": "들어오는 회ì � ì†�ë�„ì—� ë”°ë�¼ 엔티티를 밀거나 당ê¹�니다.", - "block.create.encased_fan.tooltip.condition3": "특정 블럭ì�„ 통해 바람ì�„ 보낼 ë•Œ", - "block.create.encased_fan.tooltip.behaviour3": "공기 í��름ì—� _ì•¡ì²´_ 혹ì�€ _불꽃_ 효과가 _추가_ë�©ë‹ˆë‹¤. ì�´ëŠ” ì•„ì�´í…œì�„ _공정_하는ë�° ì“°ì�¼ 수 있습니다.", + "block.create.encased_fan.tooltip.summary": "회전력을 바람으로 전환합니다. 다양한 용도로 사용 가능합니다.", + "block.create.encased_fan.tooltip.condition1": "레드스톤 신호를 받을 때", + "block.create.encased_fan.tooltip.behaviour1": "장치 아래의 _열_을 _회전력_으로 _바꾸어_ 제공합니다. 날개가 아래를 바라보아야 합니다.", + "block.create.encased_fan.tooltip.condition2": "돌려질 때", + "block.create.encased_fan.tooltip.behaviour2": "들어오는 회적 속도에 따라 엔티티를 밀거나 당깁니다.", + "block.create.encased_fan.tooltip.condition3": "특정 블럭을 통해 바람을 보낼 때", + "block.create.encased_fan.tooltip.behaviour3": "공기 흐름에 _액체_ 혹은 _불꽃_ 효과가 _추가_됩니다. 이는 아이템을 _공정_하는데 쓰일 수 있습니다.", "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "ë�®ížŒ 환í’�기 _ì•ž_ì—� 붙여 환í’�기ì�˜ 효과를 _ì „ë°©_으로 _확대_합니다.", + "block.create.nozzle.tooltip.summary": "덮힌 환풍기 _앞_에 붙여 환풍기의 효과를 _전방_으로 _확대_합니다.", "block.create.hand_crank.tooltip": "HAND CRANK", - "block.create.hand_crank.tooltip.summary": "간단한 회전력ì�˜ ì›�천입니다. 플레ì�´ì–´ì�˜ _ìƒ�호작용_ì�´ 필요합니다.", - "block.create.hand_crank.tooltip.condition1": "사용ë�  ë•Œ", - "block.create.hand_crank.tooltip.behaviour1": "ì—°ê²°ë�œ 장치ì—� _회전력_ì�„ _제공_합니다. ì›…í�¬ë¦¬ë©´ _반대로_ 회전시킵니다.", + "block.create.hand_crank.tooltip.summary": "간단한 회전력의 원천입니다. 플레이어의 _상호작용_이 필요합니다.", + "block.create.hand_crank.tooltip.condition1": "사용될 때", + "block.create.hand_crank.tooltip.behaviour1": "연결된 장치에 _회전력_을 _제공_합니다. 웅크리면 _반대로_ 회전시킵니다.", "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "_시간ì�˜_ _í��름_ì�„ 알고 공간ì�„ _꾸미는_ ë�° 좋ì�€ 공예품입니다.", - "block.create.cuckoo_clock.tooltip.condition1": "회전할 ë•Œ", - "block.create.cuckoo_clock.tooltip.behaviour1": "현재 ì‹œê°�ì�„ 보여주고 하루ì—� ë‘� 번 울립니다. ì �심과 플레ì�´ì–´ê°€ 바로 잘 수 있는 ì €ë…�ì—� 울립니다.", + "block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.", + "block.create.cuckoo_clock.tooltip.condition1": "회전할 때", + "block.create.cuckoo_clock.tooltip.behaviour1": "현재 시각을 보여주고 하루에 두 번 울립니다. 점심과 플레이어가 바로 잘 수 있는 저녁에 울립니다.", "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 ì�¼ìœ¼í‚µë‹ˆë‹¤.", + "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 일으킵니다.", "block.create.millstone.tooltip": "MILLSTONE", - "block.create.millstone.tooltip.summary": "투입ë�œ _재료_를 _가는_ ë�° 좋ì�€ 장치입니다. 측면 톱니바퀴나 바닥ì—� 축ì�„ ì�´ì–´ ìž‘ë�™í•©ë‹ˆë‹¤. 결과물ì�€ ì§�ì ‘ 빼내야 합니다.", - "block.create.millstone.tooltip.condition1": "회전 í•  ë•Œ", - "block.create.millstone.tooltip.behaviour1": "옆ì�´ë‚˜ 위ì—�ì„œ 투입ë�œ ì•„ì�´í…œì�„ _맷ë�Œì§ˆ_합니다.", - "block.create.millstone.tooltip.condition2": "ìš°í�´ë¦­í• ë•Œ", - "block.create.millstone.tooltip.behaviour2": "결과물ì�„ ì§�ì ‘ 꺼냅니다.", + "block.create.millstone.tooltip.summary": "투입된 _재료_를 _가는_ 데 좋은 장치입니다. 측면 톱니바퀴나 바닥에 축을 이어 작동합니다. 결과물은 직접 빼내야 합니다.", + "block.create.millstone.tooltip.condition1": "회전 할 때", + "block.create.millstone.tooltip.behaviour1": "옆이나 위에서 투입된 아이템을 _맷돌질_합니다.", + "block.create.millstone.tooltip.condition2": "우클릭할때", + "block.create.millstone.tooltip.behaviour2": "결과물을 직접 꺼냅니다.", "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "모든 것ì�„ _부숴버리는_ í�° 바퀴입니다.", - "block.create.crushing_wheel.tooltip.condition1": "다른 분쇄 휠과 붙어있ì�„ ë•Œ", - "block.create.crushing_wheel.tooltip.behaviour1": "다양한 것ì�„ _분쇄_하는 분쇄 기계를 형성합니다. 휠ì�˜ ì�´ë¹¨ì�´ _ê°™ì�€_ _ì†�ë ¥_으로, _반대_ _ë°©í–¥_으로 맞물려야합니다.", + "block.create.crushing_wheel.tooltip.summary": "모든 것을 _부숴버리는_ 큰 바퀴입니다.", + "block.create.crushing_wheel.tooltip.condition1": "다른 분쇄 휠과 붙어있을 때", + "block.create.crushing_wheel.tooltip.behaviour1": "다양한 것을 _분쇄_하는 분쇄 기계를 형성합니다. 휠의 이빨이 _같은_ _속력_으로, _반대_ _방향_으로 맞물려야합니다.", "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "아래있는 ì•„ì�´í…œì�„ _눌러버리는_ 힘센 피스톤입니다. _지ì†�ì �ì�¸_ _회전력_ì�´ 필요합니다.", - "block.create.mechanical_press.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", - "block.create.mechanical_press.tooltip.behaviour1": "_아래 있는_ ì•„ì�´í…œì�„ 누르기 시작합니다.", - "block.create.mechanical_press.tooltip.condition2": "컨베ì�´ì–´ 벨트 위ì—� 있ì�„ ë•Œ", - "block.create.mechanical_press.tooltip.behaviour2": "_ìž�ë�™ìœ¼ë¡œ_ 벨트 위를 지나가는 ì•„ì�´í…œì�„ 누릅니다.", + "block.create.mechanical_press.tooltip.summary": "아래있는 아이템을 _눌러버리는_ 힘센 피스톤입니다. _지속적인_ _회전력_이 필요합니다.", + "block.create.mechanical_press.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.mechanical_press.tooltip.behaviour1": "_아래 있는_ 아이템을 누르기 시작합니다.", + "block.create.mechanical_press.tooltip.condition2": "컨베이어 벨트 위에 있을 때", + "block.create.mechanical_press.tooltip.behaviour2": "_자동으로_ 벨트 위를 지나가는 아이템을 누릅니다.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", "block.create.basin.tooltip": "BASIN", - "block.create.basin.tooltip.summary": "믹서나 압착기와 ê°™ì�´ ì“°ì�´ëŠ” 간편한 _ì•„ì�´í…œ_ _저장소_입니다. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", + "block.create.basin.tooltip.summary": "믹서나 압착기와 같이 쓰이는 간편한 _아이템_ _저장소_입니다. 레드스톤 비교기와 호환됩니다.", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", - "block.create.mechanical_mixer.tooltip.summary": "아래있는 ì•„ì�´í…œì�„ ì¡°í•©í•  혼합기입니다. _지ì†�ì �ì�¸_ _회전력_ê³¼ í•œ 칸 아래ì—� _대야_ê°€ 필요합니다.", - "block.create.mechanical_mixer.tooltip.condition1": "대야 위ì—� 있ì�„ ë•Œ", - "block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 ì•„ì�´í…œì�´ 준비ë�  때마다 대야 안ì�˜ ì•„ì�´í…œì�„ 섞기 시작합니다.", - "block.create.mechanical_mixer.tooltip.condition2": "렌치를 사용할 ë•Œ", - "block.create.mechanical_mixer.tooltip.behaviour2": "필요한 조합법ì�˜ _최소_ _재료_ _종류_를 설정합니다. ì�´ëŠ” ì �ì�€ 재료로 _ì›�치_ _ì•Šì�€_ _조합법_ì�´ ìž‘ë�™ë�˜ëŠ” 것ì�„ 막습니다.", + "block.create.mechanical_mixer.tooltip.summary": "아래있는 아이템을 조합할 혼합기입니다. _지속적인_ _회전력_과 한 칸 아래에 _대야_가 필요합니다.", + "block.create.mechanical_mixer.tooltip.condition1": "대야 위에 있을 때", + "block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 아이템이 준비될 때마다 대야 안의 아이템을 섞기 시작합니다.", + "block.create.mechanical_mixer.tooltip.condition2": "렌치를 사용할 때", + "block.create.mechanical_mixer.tooltip.behaviour2": "필요한 조합법의 _최소_ _재료_ _종류_를 설정합니다. 이는 적은 재료로 _원치_ _않은_ _조합법_이 작동되는 것을 막습니다.", "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", - "block.create.mechanical_crafter.tooltip.summary": "모든 조합법ì�„ _ìž�ë�™í™”_í•  장치입니다. 조합법대로 여러개를 _격ìž�_ë¡œ 설치하고, 화살표를 ë�Œë ¤ _í•œ_ _곳으로_ _모ì�´ê²Œ_ 설정해야합니다.", - "block.create.mechanical_crafter.tooltip.condition1": "회전할 ë•Œ", - "block.create.mechanical_crafter.tooltip.behaviour1": "모든 조합칸ì—� 있는 ì•„ì�´í…œë“¤ì�„ 조합하기 시작합니다.", + "block.create.mechanical_crafter.tooltip.summary": "모든 조합법을 _자동화_할 장치입니다. 조합법대로 여러개를 _격자_로 설치하고, 화살표를 돌려 _한_ _곳으로_ _모이게_ 설정해야합니다.", + "block.create.mechanical_crafter.tooltip.condition1": "회전할 때", + "block.create.mechanical_crafter.tooltip.behaviour1": "모든 조합칸에 있는 아이템들을 조합하기 시작합니다.", "block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse", "block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting_ _process_ with all currently given _items_ in the grid.", - "block.create.mechanical_crafter.tooltip.control1": "ì „ë©´ì�„ 렌치로 ì¡°ì •í•  ë•Œ", - "block.create.mechanical_crafter.tooltip.action1": "ê°� 기계ì‹� 조합기ì�˜ ì•„ì�´í…œ ì�´ë�™ ë°©í–¥ì�„ 설정합니다. 모든 조합기ì�˜ ë°©í–¥ì�€ _하나ì�˜_ _최종_ _조합기_ë¡œ ì�´ë�™í•´ì•¼í•˜ë©°, 최종 조합기는 조합기 _바깥으로_ ì•„ì�´í…œì�„ 운송해야합니다.", - "block.create.mechanical_crafter.tooltip.control2": "측면/후면ì—�ì„œ 렌치로 ì¡°ì •í•  ë•Œ", - "block.create.mechanical_crafter.tooltip.action2": "ì�¸ì ‘í•œ 조합기와 ìž…ë ¥ 공간ì�„ _ì—°ê²°_합니다. ì�´ë¥¼ 통해 ì�¼ì�¼ížˆ ì•„ì�´í…œì�„ 넣는 노력ì�„ 줄ì�¼ 수 있습니다.", + "block.create.mechanical_crafter.tooltip.control1": "전면을 렌치로 조정할 때", + "block.create.mechanical_crafter.tooltip.action1": "각 기계식 조합기의 아이템 이동 방향을 설정합니다. 모든 조합기의 방향은 _하나의_ _최종_ _조합기_로 이동해야하며, 최종 조합기는 조합기 _바깥으로_ 아이템을 운송해야합니다.", + "block.create.mechanical_crafter.tooltip.control2": "측면/후면에서 렌치로 조정할 때", + "block.create.mechanical_crafter.tooltip.action2": "인접한 조합기와 입력 공간을 _연결_합니다. 이를 통해 일일히 아이템을 넣는 노력을 줄일 수 있습니다.", "block.create.furnace_engine.tooltip": "FURNACE ENGINE", - "block.create.furnace_engine.tooltip.summary": "_화로ì�˜_ _ìž‘ë�™_ì�„ 필요로 하는 강력한 회전 ë�™ë ¥ì›�입니다.", - "block.create.furnace_engine.tooltip.condition1": "ìž‘ë�™í•˜ëŠ” 화로ì—� 붙였ì�„ ë•Œ", - "block.create.furnace_engine.tooltip.behaviour1": "붙어있는(한칸 ë�„어져있는) _플ë�¼ì�´íœ _ì—� ë�™ë ¥ì�„ 공급합니다. _ìš©ê´‘ë¡œ_는 _ë‘�_ _ë°°_ì�˜ 화력ì�„ 냅니다.", + "block.create.furnace_engine.tooltip.summary": "_화로의_ _작동_을 필요로 하는 강력한 회전 동력원입니다.", + "block.create.furnace_engine.tooltip.condition1": "작동하는 화로에 붙였을 때", + "block.create.furnace_engine.tooltip.behaviour1": "붙어있는(한칸 띄어져있는) _플라이휠_에 동력을 공급합니다. _용광로_는 _두_ _배_의 화력을 냅니다.", "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "붙어있는 _화로_ _엔진_ì—�ì„œ ìƒ�ì‚°ë�œ 힘ì�„ 안정시키고 _ë�™ë ¥í™”_하는 거대한 금ì†� 바퀴입니다. 화로 엔진으로부터 _í•œ_ _칸_ _떨어져_ 설치해야 합니다.", - "block.create.flywheel.tooltip.condition1": "ìž‘ë�™í•˜ëŠ” 엔진ì—� 붙었ì�„ ë•Œ", - "block.create.flywheel.tooltip.behaviour1": "엔진ì�˜ 힘ì—� ë”°ë�¼ ì—°ê²°ë�œ 장치ì—� _회전력_ì�„ 제공합니다.", + "block.create.flywheel.tooltip.summary": "붙어있는 _화로_ _엔진_에서 생산된 힘을 안정시키고 _동력화_하는 거대한 금속 바퀴입니다. 화로 엔진으로부터 _한_ _칸_ _떨어져_ 설치해야 합니다.", + "block.create.flywheel.tooltip.condition1": "작동하는 엔진에 붙었을 때", + "block.create.flywheel.tooltip.behaviour1": "엔진의 힘에 따라 연결된 장치에 _회전력_을 제공합니다.", "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", - "block.create.portable_storage_interface.tooltip.summary": "움ì§�ì�´ëŠ” 피스톤, ë² ì–´ë§�, 수레, 밧줄 ë�„르래ì�˜ ì�¸ë²¤í† ë¦¬ì—�ì„œ _ì•„ì�´í…œì�„_ _êµ�환하는_ 휴대용 장치입니다.", - "block.create.portable_storage_interface.tooltip.condition1": "움ì§�ì�¼ ë•Œ", - "block.create.portable_storage_interface.tooltip.behaviour1": "ê³ ì •ë�œ 트랜스í�¬ì €ì�˜ _ë°©í–¥ì—�_ _ë”°ë�¼_ ì•„ì�´í…œì�„ _주거나_ _받습니다_. ì•„ì�´í…œì�´ ì�´ë�™í•˜ëŠ” ë�™ì•ˆ 움ì§�ì�´ëŠ” 기기는 _멈춥니다_.", + "block.create.portable_storage_interface.tooltip.summary": "움직이는 피스톤, 베어링, 수레, 밧줄 도르래의 인벤토리에서 _아이템을_ _교환하는_ 휴대용 장치입니다.", + "block.create.portable_storage_interface.tooltip.condition1": "움직일 때", + "block.create.portable_storage_interface.tooltip.behaviour1": "고정된 트랜스포저의 _방향에_ _따라_ 아이템을 _주거나_ _받습니다_. 아이템이 이동하는 동안 움직이는 기기는 _멈춥니다_.", "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", - "block.create.rotation_speed_controller.tooltip.summary": "해당 톱니바퀴ì�˜ ì†�ë�„를 _변경_í•  수 있는 컨트롤러입니다.", - "block.create.rotation_speed_controller.tooltip.condition1": "í�° 톱니바퀴와 ì—°ê²°ë�˜ì—ˆì�„ ë•Œ", - "block.create.rotation_speed_controller.tooltip.behaviour1": "들어오는 회전력ì�„ 받아, 대ìƒ�ì�˜ ì†�ë�„를 변경합니다. _í�°_ _톱니바퀴_ê°€ 컨트롤러 위ì—� 있어야합니다.", + "block.create.rotation_speed_controller.tooltip.summary": "해당 톱니바퀴의 속도를 _변경_할 수 있는 컨트롤러입니다.", + "block.create.rotation_speed_controller.tooltip.condition1": "큰 톱니바퀴와 연결되었을 때", + "block.create.rotation_speed_controller.tooltip.behaviour1": "들어오는 회전력을 받아, 대상의 속도를 변경합니다. _큰_ _톱니바퀴_가 컨트롤러 위에 있어야합니다.", "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "피스톤ì�˜ 업그레ì�´ë“œ 버전입니다. 회전력ì�„ 사용해 ì—°ê²°ë�œ 구조물ì�„ 옮ê¹�니다. _피스톤_ _연장_ _축_ì�„ 후면ì—� 붙여 ì�´ 장치ì�˜ 사거리를 늘ì�´ê±°ë‚˜ 줄ì�¼ 수 있습니다. 축ì�´ 없다면 움ì§�ì�´ì§€ 않습니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ 붙여 ì�¼ì§�ì„ ì�˜ 블럭들ì�„ 움ì§�ì�¼ 수 있습니다.", - "block.create.mechanical_piston.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.mechanical_piston.tooltip.behaviour1": "붙어있는 구조물ì�„ 움ì§�ì�´ê¸° 시작합니다. ì†�ë�„와 ë°©í–¥ì�€ 들어오는 회전 ì†�ë�„와 ë°©í–¥ì—� ë”°ë�¼ 달ë�¼ì§‘니다.", + "block.create.mechanical_piston.tooltip.summary": "피스톤의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", + "block.create.mechanical_piston.tooltip.condition1": "회전될 때", + "block.create.mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", - "block.create.sticky_mechanical_piston.tooltip.summary": "ë�ˆë�ˆì�´ 피스톤ì�˜ 업그레ì�´ë“œ 버전입니다. 회전력ì�„ 사용해 ì—°ê²°ë�œ 구조물ì�„ 옮ê¹�니다. _피스톤_ _연장_ _축_ì�„ 후면ì—� 붙여 ì�´ 장치ì�˜ 사거리를 늘ì�´ê±°ë‚˜ 줄ì�¼ 수 있습니다. 축ì�´ 없다면 움ì§�ì�´ì§€ 않습니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ 붙여 ì�¼ì§�ì„ ì�˜ 블럭들ì�„ 움ì§�ì�¼ 수 있습니다.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "붙어있는 구조물ì�„ 움ì§�ì�´ê¸° 시작합니다. ì†�ë�„와 ë°©í–¥ì�€ 들어오는 회전 ì†�ë�„와 ë°©í–¥ì—� ë”°ë�¼ 달ë�¼ì§‘니다.", + "block.create.sticky_mechanical_piston.tooltip.summary": "끈끈이 피스톤의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "회전될 때", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "기계ì‹� 피스톤ì�˜ _사거리_를 늘려ì¤�니다.", - "block.create.piston_extension_pole.tooltip.condition1": "기계ì‹� 피스톤ì—� ì—°ê²°í–ˆì�„ ë•Œ", - "block.create.piston_extension_pole.tooltip.behaviour1": "피스톤ì�˜ 사거리를 í•œ 블럭 늘립니다.", + "block.create.piston_extension_pole.tooltip.summary": "기계식 피스톤의 _사거리_를 늘려줍니다.", + "block.create.piston_extension_pole.tooltip.condition1": "기계식 피스톤에 연결했을 때", + "block.create.piston_extension_pole.tooltip.behaviour1": "피스톤의 사거리를 한 블럭 늘립니다.", "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "í�° 구조물ì�„ _회전_시키거나 _바람으로부터_ 회전력ì�„ 얻습니다.", - "block.create.mechanical_bearing.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.mechanical_bearing.tooltip.behaviour1": "ì—°ê²°ë�œ 블럭들ì�„ ë�Œë¦¬ê¸° 시작합니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ ì�´ìš©í•´ ë�” 많ì�€ 블럭ì�„ 움ì§�ì�´ì„¸ìš”.", - "block.create.mechanical_bearing.tooltip.condition2": "레드스톤 신호를 ë°›ì�„ ë•Œ", - "block.create.mechanical_bearing.tooltip.behaviour2": "붙어있는 구조물ì�˜ 회전ì�„ ì�´ìš©í•˜ì—¬ 회전력ì�„ 제공합니다. 구조물ì�€ _ë‚ ê°œ_ì—� ì �í•©í•œ 블럭ì�´ í�¬í•¨ë�˜ì–´ì•¼í•©ë‹ˆë‹¤. (현재는 _아무_ _양털_ì�´ë‚˜ 가능합니다).", + "block.create.mechanical_bearing.tooltip.summary": "큰 구조물을 _회전_시키거나 _바람으로부터_ 회전력을 얻습니다.", + "block.create.mechanical_bearing.tooltip.condition1": "회전될 때", + "block.create.mechanical_bearing.tooltip.behaviour1": "연결된 블럭들을 돌리기 시작합니다. _섀시_나 _슬라임_ _블럭_을 이용해 더 많은 블럭을 움직이세요.", + "block.create.mechanical_bearing.tooltip.condition2": "레드스톤 신호를 받을 때", + "block.create.mechanical_bearing.tooltip.behaviour2": "붙어있는 구조물의 회전을 이용하여 회전력을 제공합니다. 구조물은 _날개_에 적합한 블럭이 포함되어야합니다. (현재는 _아무_ _양털_이나 가능합니다).", "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", - "block.create.clockwork_bearing.tooltip.summary": "현재 _ì�¸ê²Œìž„_ _시간_ì�„ 알려주는 _시침_, _분침_ì�„ ë�Œë¦¬ëŠ” 업그레ì�´ë“œë�œ ë² ì–´ë§�입니다.", - "block.create.clockwork_bearing.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.clockwork_bearing.tooltip.behaviour1": "현재 시간ì—� 맞춰 ì—°ê²°ë�œ 구조물ì�„ _시침_으로ì�¨ ë�Œë¦¬ê¸° 시작합니다. _다른_ _종류ì�˜_ _섀시_ê°€ 있다면, _분침_처럼 ë�Œë¦½ë‹ˆë‹¤.", + "block.create.clockwork_bearing.tooltip.summary": "현재 _인게임_ _시간_을 알려주는 _시침_, _분침_을 돌리는 업그레이드된 베어링입니다.", + "block.create.clockwork_bearing.tooltip.condition1": "회전될 때", + "block.create.clockwork_bearing.tooltip.behaviour1": "현재 시간에 맞춰 연결된 구조물을 _시침_으로써 돌리기 시작합니다. _다른_ _종류의_ _섀시_가 있다면, _분침_처럼 돌립니다.", "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", - "block.create.sequenced_gearshift.tooltip.summary": "ì—°ì†�으로 5ê°œì�˜ 회전 명령ì�„ 내릴 수 있는 _프로그램ì�´_ _가능한_ 장치입니다. ì�´ê²ƒìœ¼ë¡œ ë² ì–´ë§�, 피스톤, ë�„르래ì�˜ 움ì§�ìž„ê³¼ 타ì�´ë°�ì�„ ì •í•  수 있습니다. 빠른 ì†�ë ¥ì—�는 부정확해질 수 있습니다.", - "block.create.sequenced_gearshift.tooltip.condition1": "레드스톤 신호를 ë°›ì�„ ë•Œ", - "block.create.sequenced_gearshift.tooltip.behaviour1": "ìž…ë ¥ ì†�ë�„ì—� 따른 프로그램ë�œ 명령들ì�„ 수행하기 시작합니다.", - "block.create.sequenced_gearshift.tooltip.condition2": "ìš°í�´ë¦­í–ˆì�„ ë•Œ", - "block.create.sequenced_gearshift.tooltip.behaviour2": "설정 ì°½ì�„ 엽니다.", + "block.create.sequenced_gearshift.tooltip.summary": "연속으로 5개의 회전 명령을 내릴 수 있는 _프로그램이_ _가능한_ 장치입니다. 이것으로 베어링, 피스톤, 도르래의 움직임과 타이밍을 정할 수 있습니다. 빠른 속력에는 부정확해질 수 있습니다.", + "block.create.sequenced_gearshift.tooltip.condition1": "레드스톤 신호를 받을 때", + "block.create.sequenced_gearshift.tooltip.behaviour1": "입력 속도에 따른 프로그램된 명령들을 수행하기 시작합니다.", + "block.create.sequenced_gearshift.tooltip.condition2": "우클릭했을 때", + "block.create.sequenced_gearshift.tooltip.behaviour2": "설정 창을 엽니다.", "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "지나가는 _ê´‘ì‚°_ _수레_ì—� ì—°ê²°ë�œ 구조물ì�„ 붙입니다.", - "block.create.cart_assembler.tooltip.condition1": "레드스톤 신호를 ë°›ì�„ ë•Œ", - "block.create.cart_assembler.tooltip.behaviour1": "지나가는 ê´‘ì‚° 수레ì—� 장착ë�œ 구조물ì�„ 분리시키고 조립기ì—� 다시 설치합니다.", + "block.create.cart_assembler.tooltip.summary": "지나가는 _광산_ _수레_에 연결된 구조물을 붙입니다.", + "block.create.cart_assembler.tooltip.condition1": "레드스톤 신호를 받을 때", + "block.create.cart_assembler.tooltip.behaviour1": "지나가는 광산 수레에 장착된 구조물을 분리시키고 조립기에 다시 설치합니다.", "block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: When placed above Powered Rail", "block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: _Assembles_ and _accelerates_ _carts_ _when_ _powered_, _disassembles_ and _holds_ them _otherwise_.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", @@ -1145,39 +1145,39 @@ "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "ROPE PULLEY", - "block.create.rope_pulley.tooltip.summary": "_수ì§�으로_ 붙ì�€ 구조물ì�„ 움ì§�입니다. _섀시_나 _슬ë�¼ìž„_ _블럭_ì�„ 붙여 ì�¼ì§�ì„ ì�˜ 블럭들ì�„ 움ì§�ì�¼ 수 있습니다.", - "block.create.rope_pulley.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.rope_pulley.tooltip.behaviour1": "ì—°ê²°ë�œ 구조물ì�„ 움ì§�ì�´ê¸° 시작합니다. ì†�ë�„와 ë°©í–¥ì�€ 들어오는 회전 ì†�ë�„, ë°©í–¥ì—� ë”°ë�¼ 다릅니다.", + "block.create.rope_pulley.tooltip.summary": "_수직으로_ 붙은 구조물을 움직입니다. _섀시_나 _슬라임_ _블럭_을 붙여 일직선의 블럭들을 움직일 수 있습니다.", + "block.create.rope_pulley.tooltip.condition1": "회전될 때", + "block.create.rope_pulley.tooltip.behaviour1": "연결된 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도, 방향에 따라 다릅니다.", "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "ì—°ê²°ë�œ 구조물ì�˜ ì�´ë�™ì�„ 위한 ë² ì�´ìŠ¤ 블럭입니다.", - "block.create.linear_chassis.tooltip.condition1": "움ì§�ì�¼ ë•Œ", - "block.create.linear_chassis.tooltip.behaviour1": "섀시ì�˜ _기둥_ _ë°©í–¥_으로 붙어있는 모든 블럭들ì�„ ê°™ì�€ 방향으로 옮ê¹�니다. 블럭들ì�€ 섀시가 ë�ˆë�ˆí•  때만 당겨집니다 ([Ctrl]를 누르세요).", - "block.create.linear_chassis.tooltip.condition2": "렌치로 ì¡°ì •í•  ë•Œ", - "block.create.linear_chassis.tooltip.behaviour2": "대ìƒ� 섀시ì�˜ 사거리를 조정합니다. ë˜�는 CTRLì�„ 눌러 ì�¸ì ‘í•œ 모든 섀시ì�˜ 사거리를 조정합니다.", - "block.create.linear_chassis.tooltip.control1": "슬ë�¼ìž„ 볼로 ìš°í�´ë¦­", - "block.create.linear_chassis.tooltip.action1": "대ìƒ� ë©´ì�„ ë�ˆë�ˆí•˜ê²Œ 만듭니다. 당겨질 ë•Œ, 섀시는 ì—°ê²°ë�œ _모든_ _블럭_ì�„ 움ì§�ì�´ëŠ” ë°©í–¥ì—� ìƒ�관없ì�´ 당ê¹�니다.", + "block.create.linear_chassis.tooltip.summary": "연결된 구조물의 이동을 위한 베이스 블럭입니다.", + "block.create.linear_chassis.tooltip.condition1": "움직일 때", + "block.create.linear_chassis.tooltip.behaviour1": "섀시의 _기둥_ _방향_으로 붙어있는 모든 블럭들을 같은 방향으로 옮깁니다. 블럭들은 섀시가 끈끈할 때만 당겨집니다 ([Ctrl]를 누르세요).", + "block.create.linear_chassis.tooltip.condition2": "렌치로 조정할 때", + "block.create.linear_chassis.tooltip.behaviour2": "대상 섀시의 사거리를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", + "block.create.linear_chassis.tooltip.control1": "슬라임 볼로 우클릭", + "block.create.linear_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 섀시는 연결된 _모든_ _블럭_을 움직이는 방향에 상관없이 당깁니다.", "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "ì—°ê²°ë�œ 구조물ì�˜ ì�´ë�™ì�„ 위한 ë² ì�´ìŠ¤ 블럭입니다.", - "block.create.radial_chassis.tooltip.condition1": "움ì§�ì�¼ ë•Œ", - "block.create.radial_chassis.tooltip.behaviour1": "섀시ì�˜ _ì›�_ _ë°©í–¥_으로 붙어있는 모든 블럭들ì�„ ê°™ì�€ 방향으로 옮ê¹�니다. 블럭들ì�´ 섀시가 ë�ˆë�ˆí•œ ë©´ì—� 붙어있ì�„ 때만 움ì§�입니다 ([Ctrl]를 누르세요).", - "block.create.radial_chassis.tooltip.condition2": "렌치로 ì¡°ì •í•  ë•Œ", - "block.create.radial_chassis.tooltip.behaviour2": "대ìƒ� 섀시ì�˜ 사거리를 조정합니다. ë˜�는 CTRLì�„ 눌러 ì�¸ì ‘í•œ 모든 섀시ì�˜ 사거리를 조정합니다.", - "block.create.radial_chassis.tooltip.control1": "슬ë�¼ìž„ 볼로 ìš°í�´ë¦­", - "block.create.radial_chassis.tooltip.action1": "대ìƒ� ë©´ì�„ ë�ˆë�ˆí•˜ê²Œ 만듭니다. 당겨질 ë•Œ, ë�ˆë�ˆí•œ ë©´ì—� 붙ì�€ _모든_ _블럭_ì�„ 움ì§�ì�´ê²Œ 합니다", + "block.create.radial_chassis.tooltip.summary": "연결된 구조물의 이동을 위한 베이스 블럭입니다.", + "block.create.radial_chassis.tooltip.condition1": "움직일 때", + "block.create.radial_chassis.tooltip.behaviour1": "섀시의 _원_ _방향_으로 붙어있는 모든 블럭들을 같은 방향으로 옮깁니다. 블럭들이 섀시가 끈끈한 면에 붙어있을 때만 움직입니다 ([Ctrl]를 누르세요).", + "block.create.radial_chassis.tooltip.condition2": "렌치로 조정할 때", + "block.create.radial_chassis.tooltip.behaviour2": "대상 섀시의 사거리를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", + "block.create.radial_chassis.tooltip.control1": "슬라임 볼로 우클릭", + "block.create.radial_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 끈끈한 면에 붙은 _모든_ _블럭_을 움직이게 합니다", "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "블럭ì�„ _파괴하는_ ë�° ì �í•©í•œ 장치입니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", - "block.create.mechanical_drill.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.mechanical_drill.tooltip.behaviour1": "ê³ ì •ë�˜ì–´ 블럭ì�„ 부숩니다. ë˜�í•œ 해당ì˜�ì—­ì�˜ 엔티티ì—�게 피해를 ì¤�니다.", - "block.create.mechanical_drill.tooltip.condition2": "움ì§�ì�¼ ë•Œ", - "block.create.mechanical_drill.tooltip.behaviour2": "드릴ì�´ 부딫히는 모든 블럭ì�„ 부숩니다.", + "block.create.mechanical_drill.tooltip.summary": "블럭을 _파괴하는_ 데 적합한 장치입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.mechanical_drill.tooltip.condition1": "회전될 때", + "block.create.mechanical_drill.tooltip.behaviour1": "고정되어 블럭을 부숩니다. 또한 해당영역의 엔티티에게 피해를 줍니다.", + "block.create.mechanical_drill.tooltip.condition2": "움직일 때", + "block.create.mechanical_drill.tooltip.behaviour2": "드릴이 부딫히는 모든 블럭을 부숩니다.", "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "중간 í�¬ê¸°ì�˜ 작물 ìž�ë�™í™”ì—� ì �í•©í•œ _작물_ _수확기_입니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", - "block.create.mechanical_harvester.tooltip.condition1": "움ì§�ì�¼ ë•Œ", - "block.create.mechanical_harvester.tooltip.behaviour1": "칼날ì—� 닿는 모ë‘� ìž�란 작물ì�„ 수확하고 최초 성장 ìƒ�태로 변경합니다.", + "block.create.mechanical_harvester.tooltip.summary": "중간 크기의 작물 자동화에 적합한 _작물_ _수확기_입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.mechanical_harvester.tooltip.condition1": "움직일 때", + "block.create.mechanical_harvester.tooltip.behaviour1": "칼날에 닿는 모두 자란 작물을 수확하고 최초 성장 상태로 변경합니다.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1185,31 +1185,31 @@ "block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks_ _blocks_ which _cannot_ _be_ _collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills_ _soil_ _blocks_ as though a Hoe would be used on them.", "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", - "block.create.mechanical_saw.tooltip.summary": "효율ì �ì�¸ _벌목_ê³¼ 블럭ì�„ _제재_하는ë�° ì �합합니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", - "block.create.mechanical_saw.tooltip.condition1": "위를 ë°”ë�¼ë³¼ ë•Œ", - "block.create.mechanical_saw.tooltip.behaviour1": "_제재_와 _ì„�재_ _절단_ 조합법ì�„ 떨어진/투입ë�œ ì•„ì�´í…œì—� ì �용합니다. 결과물ì�´ 여러 종류고 í•„í„°ê°€ ì �ìš©ì�´ ë�˜ì§€ 않았다면, 결과물ì�€ _목ë¡�_ _순서_대로 배출ë�©ë‹ˆë‹¤.", - "block.create.mechanical_saw.tooltip.condition2": "옆ì�„ ë°”ë�¼ë³¼ ë•Œ", - "block.create.mechanical_saw.tooltip.behaviour2": "ì•žì—� 있는 ì›�목ì�„ ìž�릅니다. 나무ì�˜ ì›�목ì�´ë�¼ë©´, 나무가 쓰러지면서 ì•„ì�´í…œì�„ 떨굽니다.", - "block.create.mechanical_saw.tooltip.condition3": "움ì§�ì�¼ ë•Œ", - "block.create.mechanical_saw.tooltip.behaviour3": "톱ì�´ 만나는 모든 나무를 벱니다.", + "block.create.mechanical_saw.tooltip.summary": "효율적인 _벌목_과 블럭을 _제재_하는데 적합합니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.mechanical_saw.tooltip.condition1": "위를 바라볼 때", + "block.create.mechanical_saw.tooltip.behaviour1": "_제재_와 _석재_ _절단_ 조합법을 떨어진/투입된 아이템에 적용합니다. 결과물이 여러 종류고 필터가 적용이 되지 않았다면, 결과물은 _목록_ _순서_대로 배출됩니다.", + "block.create.mechanical_saw.tooltip.condition2": "옆을 바라볼 때", + "block.create.mechanical_saw.tooltip.behaviour2": "앞에 있는 원목을 자릅니다. 나무의 원목이라면, 나무가 쓰러지면서 아이템을 떨굽니다.", + "block.create.mechanical_saw.tooltip.condition3": "움직일 때", + "block.create.mechanical_saw.tooltip.behaviour3": "톱이 만나는 모든 나무를 벱니다.", "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_ì—� _여유_ _공간_ì�„ 기반으로 레드스톤 신호를 보냅니다.", - "block.create.stockpile_switch.tooltip.condition1": "_최소_ _경계_보다 ë‚®ì�„ 경우", - "block.create.stockpile_switch.tooltip.behaviour1": "레드스톤 신호를 보내지 않습니다.", - "block.create.stockpile_switch.tooltip.condition2": "_최초_ _경계_보다 높ì�„ 경우", - "block.create.stockpile_switch.tooltip.behaviour2": "최소 경계ì—� 다시 ë�„달할 때까지 레드스톤 신호를 보냅니다.", - "block.create.stockpile_switch.tooltip.control1": "ìš°í�´ë¦­í–ˆì�„ ë•Œ", - "block.create.stockpile_switch.tooltip.action1": "설정 ì°½ì�„ 엽니다.", + "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_에 _여유_ _공간_을 기반으로 레드스톤 신호를 보냅니다.", + "block.create.stockpile_switch.tooltip.condition1": "_최소_ _경계_보다 낮을 경우", + "block.create.stockpile_switch.tooltip.behaviour1": "레드스톤 신호를 보내지 않습니다.", + "block.create.stockpile_switch.tooltip.condition2": "_최초_ _경계_보다 높을 경우", + "block.create.stockpile_switch.tooltip.behaviour2": "최소 경계에 다시 도달할 때까지 레드스톤 신호를 보냅니다.", + "block.create.stockpile_switch.tooltip.control1": "우클릭했을 때", + "block.create.stockpile_switch.tooltip.action1": "설정 창을 엽니다.", "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "_무선_ 레드스톤 단ë§�기입니다. 아무 ì•„ì�´í…œìœ¼ë¡œ ë‘� ê°œì�˜ _주파수_를 설정할 수 있습니다. 통신거리는 제한ë�˜ì–´ 있지만, 그래ë�„ 충분히 넓습니다.", - "block.create.redstone_link.tooltip.condition1": "신호를 줄 ë•Œ", - "block.create.redstone_link.tooltip.behaviour1": "ê°™ì�€ 주파주ì�˜ 다른 단ë§�기ì—�ì„œ 레드스톤 신호를 받습니다.", - "block.create.redstone_link.tooltip.control1": "ì•„ì�´í…œì�„ 들고 ìš°í�´ë¦­", - "block.create.redstone_link.tooltip.action1": "ê·¸ ì•„ì�´í…œìœ¼ë¡œ 주파수를 설정합니다. 주파수는 최대 ë‘�가지 ì•„ì�´í…œ 조합으로 ì�´ë£° 수 있습니다.", - "block.create.redstone_link.tooltip.control2": "ì›…í�¬ë¦° ìƒ�태ì—�ì„œ ìš°í�´ë¦­", - "block.create.redstone_link.tooltip.action2": "수신/발신 모드로 바꿉니다.", + "block.create.redstone_link.tooltip.summary": "_무선_ 레드스톤 단말기입니다. 아무 아이템으로 두 개의 _주파수_를 설정할 수 있습니다. 통신거리는 제한되어 있지만, 그래도 충분히 넓습니다.", + "block.create.redstone_link.tooltip.condition1": "신호를 줄 때", + "block.create.redstone_link.tooltip.behaviour1": "같은 주파주의 다른 단말기에서 레드스톤 신호를 받습니다.", + "block.create.redstone_link.tooltip.control1": "아이템을 들고 우클릭", + "block.create.redstone_link.tooltip.action1": "그 아이템으로 주파수를 설정합니다. 주파수는 최대 두가지 아이템 조합으로 이룰 수 있습니다.", + "block.create.redstone_link.tooltip.control2": "웅크린 상태에서 우클릭", + "block.create.redstone_link.tooltip.action2": "수신/발신 모드로 바꿉니다.", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,125 +1217,125 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", - "block.create.redstone_contact.tooltip.summary": "_í•œ_ _ìŒ�_ì�´ _서로_ _ë°”ë�¼ë³´ê³ _ 있ì�„ ë•Œ 레드스톤 신호를 보냅니다. ë² ì–´ë§�ì�´ë‚˜ 기계ì‹� 피스톤으로 움ì§�여집니다.", - "block.create.redstone_contact.tooltip.condition1": "다른 ë�™í˜• ê°�지기를 맞댈 ë•Œ", - "block.create.redstone_contact.tooltip.behaviour1": "레드스톤 신호를 보냅니다.", - "block.create.redstone_contact.tooltip.condition2": "움ì§�ì�¼ ë•Œ", - "block.create.redstone_contact.tooltip.behaviour2": "지나가는 모든 ê³ ì •ë�œ ë�™í˜• ê°�지기를 ìž‘ë�™ì‹œí‚µë‹ˆë‹¤.", + "block.create.redstone_contact.tooltip.summary": "_한_ _쌍_이 _서로_ _바라보고_ 있을 때 레드스톤 신호를 보냅니다. 베어링이나 기계식 피스톤으로 움직여집니다.", + "block.create.redstone_contact.tooltip.condition1": "다른 동형 감지기를 맞댈 때", + "block.create.redstone_contact.tooltip.behaviour1": "레드스톤 신호를 보냅니다.", + "block.create.redstone_contact.tooltip.condition2": "움직일 때", + "block.create.redstone_contact.tooltip.behaviour2": "지나가는 모든 고정된 동형 감지기를 작동시킵니다.", "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "ì�´ 저장소는 용량ì�„ _ì§�ì ‘_ _ì •í• _ 수 있습니다. 아무아ì�´í…œì�´ë‚˜ 최대 16스íƒ�씩 ë‹´ì�„ 수 있습니다. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", - "block.create.adjustable_crate.tooltip.control1": "ìš°í�´ë¦­ í–ˆì�„ ë•Œ", - "block.create.adjustable_crate.tooltip.action1": "ì°½ì�„ 엽니다.", + "block.create.adjustable_crate.tooltip.summary": "이 저장소는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", + "block.create.adjustable_crate.tooltip.control1": "우클릭 했을 때", + "block.create.adjustable_crate.tooltip.action1": "창을 엽니다.", "block.create.creative_crate.tooltip": "CREATIVE CRATE", - "block.create.creative_crate.tooltip.summary": "옆 _청사진 대í�¬_ì—� _무한한_ 재료를 공급합니다.", + "block.create.creative_crate.tooltip.summary": "옆 _청사진 대포_에 _무한한_ 재료를 공급합니다.", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "_ì—°ê²°ë�œ_ _ì�¸ë²¤í† ë¦¬_로부터 ì•„ì�´í…œì�„ 꺼내 ë•…ì—� 떨어뜨립니다. 공간ì�´ 비지 않았다면 ì•„ì�´í…œì�„ 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다.", - "block.create.extractor.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", - "block.create.extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", - "block.create.extractor.tooltip.condition2": "움ì§�ì�´ëŠ” 벨트ì—� ì—°ê²°ë�˜ì—ˆì�„ ë•Œ", - "block.create.extractor.tooltip.behaviour2": "추출기는 _황ë�™_ _ì¼€ì�´ìŠ¤_ê°€ 장착ë�œ _벨트_ì—�ì„œ ì•„ì�´í…œì�„ 빼낼 수 있습니다. 추출기가 막혔ì�„ 때는, 벨트가 _멈춥니다_.", - "block.create.extractor.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", - "block.create.extractor.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 추출기는 í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", + "block.create.extractor.tooltip.summary": "_연결된_ _인벤토리_로부터 아이템을 꺼내 땅에 떨어뜨립니다. 공간이 비지 않았다면 아이템을 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다.", + "block.create.extractor.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", + "block.create.extractor.tooltip.condition2": "움직이는 벨트에 연결되었을 때", + "block.create.extractor.tooltip.behaviour2": "추출기는 _황동_ _케이스_가 장착된 _벨트_에서 아이템을 빼낼 수 있습니다. 추출기가 막혔을 때는, 벨트가 _멈춥니다_.", + "block.create.extractor.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.extractor.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 추출기는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", "block.create.transposer.tooltip": "TRANSPOSER", - "block.create.transposer.tooltip.summary": "ì—°ê²°ë�œ ì�¸ë²¤í† ë¦¬ë¡œë¶€í„° 대ìƒ� ì�¸ë²¤í† ë¦¬ë¡œ ì•„ì�´í…œì�„ _바로_ _ì�´ë�™_시킵니다. 개수/필터를 설정 가능합니다.", - "block.create.transposer.tooltip.condition1": "레드스톤 신호를 받았ì�„ ë•Œ", - "block.create.transposer.tooltip.behaviour1": "트랜스í�¬ì €ë¥¼ _멈춥니다_.", - "block.create.transposer.tooltip.condition2": "움ì§�ì�´ëŠ” 벨트ì—� ì—°ê²°ë�˜ì—ˆì�„ ë•Œ", - "block.create.transposer.tooltip.behaviour2": "트랜스í�¬ì €ëŠ” _황ë�™_ _ì¼€ì�´ìŠ¤_ê°€ 장착ë�œ _벨트_ì—�ì„œ ì•„ì�´í…œì�„ 빼낼 수 있습니다. 추출기가 막혔ì�„ 때는, 벨트가 _멈춥니다_.", - "block.create.transposer.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", - "block.create.transposer.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 트랜스í�¬ì €ëŠ” í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", + "block.create.transposer.tooltip.summary": "연결된 인벤토리로부터 대상 인벤토리로 아이템을 _바로_ _이동_시킵니다. 개수/필터를 설정 가능합니다.", + "block.create.transposer.tooltip.condition1": "레드스톤 신호를 받았을 때", + "block.create.transposer.tooltip.behaviour1": "트랜스포저를 _멈춥니다_.", + "block.create.transposer.tooltip.condition2": "움직이는 벨트에 연결되었을 때", + "block.create.transposer.tooltip.behaviour2": "트랜스포저는 _황동_ _케이스_가 장착된 _벨트_에서 아이템을 빼낼 수 있습니다. 추출기가 막혔을 때는, 벨트가 _멈춥니다_.", + "block.create.transposer.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.transposer.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 트랜스포저는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", "block.create.deployer.tooltip": "DEPLOYER", - "block.create.deployer.tooltip.summary": " _때리고_, _사용하고_ _ìž‘ë�™ì‹œí‚µë‹ˆë‹¤_. ì�´ 장치는 _플레ì�´ì–´_를 가능한 í•œ _í�‰ë‚´ë‚´ë ¤í• _ _것입니다_. 주변 ì�¸ë²¤í† ë¦¬ì—�ì„œ ì•„ì�´í…œì�„ 쓰거나 ë„£ì�„ 수 있습니다. í•„í„°ë¡œ 사용하는 ì•„ì�´í…œì�„ 설정할 수 있습니다.", - "block.create.deployer.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.deployer.tooltip.behaviour1": "팔ì�„ 늘려 í•œ 칸앞ì—� 있는 공간ì—�ì„œ í–‰ë�™í•©ë‹ˆë‹¤.", - "block.create.deployer.tooltip.condition2": "렌치로 ìš°í�´ë¦­", - "block.create.deployer.tooltip.behaviour2": "_펀치_ _모드_ë¡œ 바꿉니다. ì�´ ìƒ�태ì—�서는 ë°°í�¬ê¸°ê°€ ì•„ì�´í…œì�„ 가지고 _부수거나_ _때리려고_ í•  것입니다.", + "block.create.deployer.tooltip.summary": " _때리고_, _사용하고_ _작동시킵니다_. 이 장치는 _플레이어_를 가능한 한 _흉내내려할_ _것입니다_. 주변 인벤토리에서 아이템을 쓰거나 넣을 수 있습니다. 필터로 사용하는 아이템을 설정할 수 있습니다.", + "block.create.deployer.tooltip.condition1": "회전될 때", + "block.create.deployer.tooltip.behaviour1": "팔을 늘려 한 칸앞에 있는 공간에서 행동합니다.", + "block.create.deployer.tooltip.condition2": "렌치로 우클릭", + "block.create.deployer.tooltip.behaviour2": "_펀치_ _모드_로 바꿉니다. 이 상태에서는 배포기가 아이템을 가지고 _부수거나_ _때리려고_ 할 것입니다.", "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "_ì—°ê²°ë�œ_ _ì�¸ë²¤í† ë¦¬_로부터 ì•„ì�´í…œì�„ 꺼내 ë•…ì—� 떨어뜨립니다. 공간ì�´ 비지 않았다면 ì•„ì�´í…œì�„ 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다. 레드스톤 ë§�í�¬ë¥¼ 통해 _무선으로_ 컨트롤 ë�  수 있습니다.", - "block.create.linked_extractor.tooltip.condition1": "레드스톤 ë§�í�¬ 신호를 받았ì�„ ë•Œ", - "block.create.linked_extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", - "block.create.linked_extractor.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", - "block.create.linked_extractor.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 추출기는 í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", - "block.create.linked_extractor.tooltip.control2": "ì•„ì�´í…œì�„ 들고 주파수 슬롯ì�„ ìš°í�´ë¦­", - "block.create.linked_extractor.tooltip.action2": "ê·¸ ì•„ì�´í…œìœ¼ë¡œ 주파수를 설정합니다. _ê°™ì�€_ _주파수_ì�˜ 레드스톤 ë§�í�¬ê°€ 신호를 보낸다면, 추출기는 멈출 것입니다.", + "block.create.linked_extractor.tooltip.summary": "_연결된_ _인벤토리_로부터 아이템을 꺼내 땅에 떨어뜨립니다. 공간이 비지 않았다면 아이템을 떨어뜨리지 않습니다. 개수/필터를 설정 가능합니다. 레드스톤 링크를 통해 _무선으로_ 컨트롤 될 수 있습니다.", + "block.create.linked_extractor.tooltip.condition1": "레드스톤 링크 신호를 받았을 때", + "block.create.linked_extractor.tooltip.behaviour1": "추출기를 _멈춥니다_.", + "block.create.linked_extractor.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.linked_extractor.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 추출기는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + "block.create.linked_extractor.tooltip.control2": "아이템을 들고 주파수 슬롯을 우클릭", + "block.create.linked_extractor.tooltip.action2": "그 아이템으로 주파수를 설정합니다. _같은_ _주파수_의 레드스톤 링크가 신호를 보낸다면, 추출기는 멈출 것입니다.", "block.create.linked_transposer.tooltip": "LINKED TRANSPOSER", - "block.create.linked_transposer.tooltip.summary": "ì—°ê²°ë�œ ì�¸ë²¤í† ë¦¬ë¡œë¶€í„° 대ìƒ� ì�¸ë²¤í† ë¦¬ë¡œ ì•„ì�´í…œì�„ _바로_ _ì�´ë�™_시킵니다. 개수/필터를 설정 가능합니다. 레드스톤 ë§�í�¬ë¥¼ 통해 _무선으로_ 컨트롤 ë�  수 있습니다.", - "block.create.linked_transposer.tooltip.condition1": "레드스톤 ë§�í�¬ 신호를 받았ì�„ ë•Œ", - "block.create.linked_transposer.tooltip.behaviour1": "트랜스í�¬ì €ë¥¼ _멈춥니다_.", - "block.create.linked_transposer.tooltip.control1": "í•„í„° 슬롯ì�„ ìš°í�´ë¦­í•  ë•Œ", - "block.create.linked_transposer.tooltip.action1": "현재 들고있는 ì•„ì�´í…œì�˜ 개수 혹ì�€ í•„í„° 틀로 필터를 정합니다. 트랜스í�¬ì €ëŠ” í•„í„° 설정ì—� 맞춰 ì•„ì�´í…œì�„ 빼낼 것입니다.", - "block.create.linked_transposer.tooltip.control2": "ì•„ì�´í…œì�„ 들고 주파수 슬롯ì�„ ìš°í�´ë¦­", - "block.create.linked_transposer.tooltip.action2": "ê·¸ ì•„ì�´í…œìœ¼ë¡œ 주파수를 설정합니다. _ê°™ì�€_ _주파수_ì�˜ 레드스톤 ë§�í�¬ê°€ 신호를 보낸다면, 트랜스í�¬ì €ëŠ” 멈출 것입니다.", + "block.create.linked_transposer.tooltip.summary": "연결된 인벤토리로부터 대상 인벤토리로 아이템을 _바로_ _이동_시킵니다. 개수/필터를 설정 가능합니다. 레드스톤 링크를 통해 _무선으로_ 컨트롤 될 수 있습니다.", + "block.create.linked_transposer.tooltip.condition1": "레드스톤 링크 신호를 받았을 때", + "block.create.linked_transposer.tooltip.behaviour1": "트랜스포저를 _멈춥니다_.", + "block.create.linked_transposer.tooltip.control1": "필터 슬롯을 우클릭할 때", + "block.create.linked_transposer.tooltip.action1": "현재 들고있는 아이템의 개수 혹은 필터 틀로 필터를 정합니다. 트랜스포저는 필터 설정에 맞춰 아이템을 빼낼 것입니다.", + "block.create.linked_transposer.tooltip.control2": "아이템을 들고 주파수 슬롯을 우클릭", + "block.create.linked_transposer.tooltip.action2": "그 아이템으로 주파수를 설정합니다. _같은_ _주파수_의 레드스톤 링크가 신호를 보낸다면, 트랜스포저는 멈출 것입니다.", "block.create.funnel.tooltip": "FUNNEL", - "block.create.funnel.tooltip.summary": "들어오는 ì•„ì�´í…œì�„ 가능하면 _ì—°ê²°ë�œ_ _ì�¸ë²¤í† ë¦¬_ì—� 넣습니다. _벨트_ _위_ì�˜ ì•„ì�´í…œë�„ ë�Œì–´ì˜¬ 수 있습니다.", - "block.create.funnel.tooltip.condition1": "움ì§�ì�´ëŠ” 벨트위ì—� 있ì�„ ë•Œ", - "block.create.funnel.tooltip.behaviour1": "_벨트_ì�˜ _중간_, _ë��부분_ì—�ì„œ ì•„ì�´í…œì�„ ë�Œì–´ì˜¬ 수 있습니다. 중간ì—� 설치ë�œ 깔때기가 _ì •ì²´_ë�˜ì—ˆì�„ ë•�, 벨트가 _멈춥니다_.", + "block.create.funnel.tooltip.summary": "들어오는 아이템을 가능하면 _연결된_ _인벤토리_에 넣습니다. _벨트_ _위_의 아이템도 끌어올 수 있습니다.", + "block.create.funnel.tooltip.condition1": "움직이는 벨트위에 있을 때", + "block.create.funnel.tooltip.behaviour1": "_벨트_의 _중간_, _끝부분_에서 아이템을 끌어올 수 있습니다. 중간에 설치된 깔때기가 _정체_되었을 땐, 벨트가 _멈춥니다_.", "block.create.belt_tunnel.tooltip": "BELT TUNNEL", - "block.create.belt_tunnel.tooltip.summary": "ë²½ì�„ 통과하는 컨베ì�´ì–´ 벨트를 _꾸미는_ 옵션 중 하나입니다. 벨트는 _황ë�™_ _ì¼€ì�´ìŠ¤_ê°€ 장착ë�˜ì–´ 있어야합니다. í„°ë„�ì�€ 다른 벨트 ë�¼ì�¸ì�˜ í„°ë„�ê³¼ _ë�™ê¸°í™”_ë�˜ì–´ 모든 í„°ë„�ì�´ _ê°™ì�€_ _타ì�´ë°�_ì—� ì•„ì�´í…œì�„ 들어오게 만들 수 있습니다. [Ctrl를 누르세요]", - "block.create.belt_tunnel.tooltip.control1": "ì „ë©´ì—� 렌치로 ìš°í�´ë¦­", - "block.create.belt_tunnel.tooltip.action1": "ë�™ê¸°í™” 모드를 킵니다. ë�™ê¸°í™”ë�œ í„°ë„�ì�€ 다른 ë�™ê¸°í™”ë�œ í„°ë„�들ì�´ ì•„ì�´í…œì�„ ì�¸ì‹�í•  때까지 ì•„ì�´í…œì�„ 통과시키지 않습니다.", - "block.create.belt_tunnel.tooltip.control2": "륵면ì�„ ìš°í�´ë¦­", - "block.create.belt_tunnel.tooltip.action2": "í„°ë„� 측면ì—� 창문ì�´ 있다면 창문 셔터를 조절합니다.", + "block.create.belt_tunnel.tooltip.summary": "벽을 통과하는 컨베이어 벨트를 _꾸미는_ 옵션 중 하나입니다. 벨트는 _황동_ _케이스_가 장착되어 있어야합니다. 터널은 다른 벨트 라인의 터널과 _동기화_되어 모든 터널이 _같은_ _타이밍_에 아이템을 들어오게 만들 수 있습니다. [Ctrl를 누르세요]", + "block.create.belt_tunnel.tooltip.control1": "전면에 렌치로 우클릭", + "block.create.belt_tunnel.tooltip.action1": "동기화 모드를 킵니다. 동기화된 터널은 다른 동기화된 터널들이 아이템을 인식할 때까지 아이템을 통과시키지 않습니다.", + "block.create.belt_tunnel.tooltip.control2": "륵면을 우클릭", + "block.create.belt_tunnel.tooltip.action2": "터널 측면에 창문이 있다면 창문 셔터를 조절합니다.", "block.create.brass_casing.tooltip": "BRASS CASING", - "block.create.brass_casing.tooltip.summary": "다양한 ìš©ë�„ê°€ 있는 단단한 기계 ì¼€ì�´ìŠ¤ìž…니다. 꾸미는 ìš©ë�„ë¡œë�„ 사용 가능합니다.", - "block.create.brass_casing.tooltip.condition1": "컨베ì�´ì–´ 벨트ì—� 사용할 ë•Œ", - "block.create.brass_casing.tooltip.behaviour1": "벨트 ë°‘ 부분ì—� 황ë�™ ì¼€ì�´ìŠ¤ë¥¼ 씌ì›�니다. ì�´ ìƒ�태ì—�ì„  _벨트_ _í„°ë„�_, _추출기_, _깔대기_, _트랜스í�¬ì €_를 벨트 _측면_, _바닥면_ì—� ì—°ê²°í•  수 있습니다.", + "block.create.brass_casing.tooltip.summary": "다양한 용도가 있는 단단한 기계 케이스입니다. 꾸미는 용도로도 사용 가능합니다.", + "block.create.brass_casing.tooltip.condition1": "컨베이어 벨트에 사용할 때", + "block.create.brass_casing.tooltip.behaviour1": "벨트 밑 부분에 황동 케이스를 씌웁니다. 이 상태에선 _벨트_ _터널_, _추출기_, _깔대기_, _트랜스포저_를 벨트 _측면_, _바닥면_에 연결할 수 있습니다.", "block.create.belt_observer.tooltip": "BELT OBSERVER", - "block.create.belt_observer.tooltip.summary": "컨베ì�´ì–´ 벨트위를 _지나가는_ _엔티티_나 _ì•„ì�´í…œ_ì�„ ê°�지합니다. 렌치를 ì�´ìš©í•´ _ê°�지시_ _í–‰ë�™_ì�„ 바꿉니다. 필터를 설정할 수 있습니다.", - "block.create.belt_observer.tooltip.condition1": "ê°�지 모드", - "block.create.belt_observer.tooltip.behaviour1": "ê°�지기 ì•žì—� ì•„ì�´í…œì�´ _지나가는_ _ë�™ì•ˆ_ 레드스톤 신호를 ì¤�니다.", - "block.create.belt_observer.tooltip.condition2": "펄스 모드", - "block.create.belt_observer.tooltip.behaviour2": "ê°�지기 ì•žì—� ì•„ì�´í…œì�´ _지나갈_ _ë•Œ_ 레드스톤 신호를 _1틱_ ì¤�니다.", - "block.create.belt_observer.tooltip.condition3": "사출 모드", - "block.create.belt_observer.tooltip.behaviour3": "옆으로 ì•„ì�´í…œì�„ _밀어냅니다_. 벨트나 밀어내는 공간ì�´ _ì •ì²´_ë�˜ì–´ 있다면, ì•„ì�´í…œì�€ ê°�지기 ì•žì—�ì„œ _멈춥니다_.", - "block.create.belt_observer.tooltip.condition4": "분리 모드", - "block.create.belt_observer.tooltip.behaviour4": "ì•„ì�´í…œì�˜ _수_를 _반으로_ _나누어_ ë°˜ì�€ 벨트 옆으로 내보냅니다.", + "block.create.belt_observer.tooltip.summary": "컨베이어 벨트위를 _지나가는_ _엔티티_나 _아이템_을 감지합니다. 렌치를 이용해 _감지시_ _행동_을 바꿉니다. 필터를 설정할 수 있습니다.", + "block.create.belt_observer.tooltip.condition1": "감지 모드", + "block.create.belt_observer.tooltip.behaviour1": "감지기 앞에 아이템이 _지나가는_ _동안_ 레드스톤 신호를 줍니다.", + "block.create.belt_observer.tooltip.condition2": "펄스 모드", + "block.create.belt_observer.tooltip.behaviour2": "감지기 앞에 아이템이 _지나갈_ _때_ 레드스톤 신호를 _1틱_ 줍니다.", + "block.create.belt_observer.tooltip.condition3": "사출 모드", + "block.create.belt_observer.tooltip.behaviour3": "옆으로 아이템을 _밀어냅니다_. 벨트나 밀어내는 공간이 _정체_되어 있다면, 아이템은 감지기 앞에서 _멈춥니다_.", + "block.create.belt_observer.tooltip.condition4": "분리 모드", + "block.create.belt_observer.tooltip.behaviour4": "아이템의 _수_를 _반으로_ _나누어_ 반은 벨트 옆으로 내보냅니다.", "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "_1틱_ì�˜ 레드스톤 신호를 보내는 간단한 리피터입니다.", + "block.create.pulse_repeater.tooltip.summary": "_1틱_의 레드스톤 신호를 보내는 간단한 리피터입니다.", "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "최대 30분까지 _딜레ì�´_를 설정할 수 있는 업그레ì�´ë“œë�œ _레드스톤_ _리피터_입니다.", + "block.create.adjustable_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 업그레이드된 _레드스톤_ _리피터_입니다.", "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", - "block.create.adjustable_pulse_repeater.tooltip.summary": "최대 30분까지 _딜레ì�´_를 설정할 수 있는 _펄스_ _리피터_입니다.", + "block.create.adjustable_pulse_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 _펄스_ _리피터_입니다.", "block.create.analog_lever.tooltip": "ANALOG LEVER", - "block.create.analog_lever.tooltip.summary": "레드스톤 _신호_ _세기_를 ìž�세히 _ì¡°ì •_í•  수 있는 레버입니다.", + "block.create.analog_lever.tooltip.summary": "레드스톤 _신호_ _세기_를 자세히 _조정_할 수 있는 레버입니다.", "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", - "block.create.powered_toggle_latch.tooltip.summary": "레드스톤 신호로 ë�„ê³  켤 수 있는 _레버_입니다.", + "block.create.powered_toggle_latch.tooltip.summary": "레드스톤 신호로 끄고 켤 수 있는 _레버_입니다.", "block.create.powered_latch.tooltip": "POWERED LATCH", - "block.create.powered_latch.tooltip.summary": "레드스톤 신호로 컨트롤 í•  수 있는 _레버_입니다. 후면ì—�ì„œ 들어오는 신호는 레버를 키고, 측면ì—�ì„œ 들어오는 신호는 레버를 초기화합니다.", + "block.create.powered_latch.tooltip.summary": "레드스톤 신호로 컨트롤 할 수 있는 _레버_입니다. 후면에서 들어오는 신호는 레버를 키고, 측면에서 들어오는 신호는 레버를 초기화합니다.", "block.create.speedometer.tooltip": "SPEEDOMETER", - "block.create.speedometer.tooltip.summary": "ì—°ê²°ë�œ 장치ì�˜ _회전_ _ì†�ë�„_를 _계측_하고 _나타냅니다_. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", - "block.create.speedometer.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.speedometer.tooltip.behaviour1": "ì†�ë�„ì—� ë”°ë�¼ 색깔ì�„ 나타냅니다. _ì´ˆë¡�색_ì�€ _ëŠ�림_ì�„, _파랑색_ì�€ _보통_, _ë³´ë�¼ìƒ‰_ì�€ _빠른_ _ì†�ë�„_를 나타냅니다. 몇몇 장치들ì�€ ìž‘ë�™í•˜ê¸° 위해 ì�¼ì •ìˆ˜ì¤€ ì�´ìƒ�ì�˜ ì†�ë�„ê°€ 필요합니다.", + "block.create.speedometer.tooltip.summary": "연결된 장치의 _회전_ _속도_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", + "block.create.speedometer.tooltip.condition1": "회전될 때", + "block.create.speedometer.tooltip.behaviour1": "속도에 따라 색깔을 나타냅니다. _초록색_은 _느림_을, _파랑색_은 _보통_, _보라색_은 _빠른_ _속도_를 나타냅니다. 몇몇 장치들은 작동하기 위해 일정수준 이상의 속도가 필요합니다.", "block.create.stressometer.tooltip": "STRESSOMETER", - "block.create.stressometer.tooltip.summary": "ì—°ê²°ë�œ 네트워í�¬ì�˜ _ì „ì²´_ _피로ë�„_ _수치_를 _계측_하고 _나타냅니다_. 레드스톤 비êµ�기와 호환ë�©ë‹ˆë‹¤.", - "block.create.stressometer.tooltip.condition1": "회전ë�  ë•Œ", - "block.create.stressometer.tooltip.behaviour1": "피로ë�„ì—� ë”°ë�¼ 색깔ì�„ 나타냅니다. _과부화ë�œ_ _네트워í�¬_는 움ì§�ì�´ëŠ” 것ì�„ 멈춥니다. 과부하는 네트워í�¬ì—� _추가_ _피로ë�„_ _용량_ì�„ 가진 장치를 설치하면 í•´ê²°ë�©ë‹ˆë‹¤. ", + "block.create.stressometer.tooltip.summary": "연결된 네트워크의 _전체_ _피로도_ _수치_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", + "block.create.stressometer.tooltip.condition1": "회전될 때", + "block.create.stressometer.tooltip.behaviour1": "피로도에 따라 색깔을 나타냅니다. _과부화된_ _네트워크_는 움직이는 것을 멈춥니다. 과부하는 네트워크에 _추가_ _피로도_ _용량_을 가진 장치를 설치하면 해결됩니다. ", "tool.create.sand_paper.tooltip": "SAND PAPER", - "tool.create.sand_paper.tooltip.summary": "재료를 _사í�¬ì§ˆ_ 하기위한 거친 종ì�´ìž…니다. ë°°í�¬ê¸°ë¥¼ 통해 ìž�ë�™ìœ¼ë¡œ ì“°ì�¼ 수 있습니다.", - "tool.create.sand_paper.tooltip.condition1": "사용할 ë•Œ", - "tool.create.sand_paper.tooltip.behaviour1": "_반대_ _ì†�_ì—� 있는, 혹ì�€ _바닥ì—�_ _있는_ ì•„ì�´í…œì�„ 사í�¬ì§ˆ 합니다.", + "tool.create.sand_paper.tooltip.summary": "재료를 _사포질_ 하기위한 거친 종이입니다. 배포기를 통해 자동으로 쓰일 수 있습니다.", + "tool.create.sand_paper.tooltip.condition1": "사용할 때", + "tool.create.sand_paper.tooltip.behaviour1": "_반대_ _손_에 있는, 혹은 _바닥에_ _있는_ 아이템을 사포질 합니다.", "item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE", "item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.", @@ -1345,13 +1345,13 @@ "item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically_ _attaches_ blocks placed from the main hand to the _side_ they were _placed_ _against._", "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "_í�¡ìˆ˜ë�œ_ _ë¹›_으로 제련ë�œ 색채 혼합물입니다.", + "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "_공허_ì—�ì„œ 제련ë�œ 색채 혼합물입니다.", + "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", "item.create.crafter_slot_cover.tooltip": "SLOT COVER", - "item.create.crafter_slot_cover.tooltip.summary": "기계 조합기ì—�ì„œ _빈_ _슬롯_ì�„ 표시하기 위해 쓰입니다. 조합기들ì�€ 정사ê°�형 모양ì�„ 형성할 필요는 없습니다. 재료가 서로 대ê°�ì„ ì�¸ 조합법ì�´ìžˆì�„ ë•Œ 유용합니다.", + "item.create.crafter_slot_cover.tooltip.summary": "기계 조합기에서 _빈_ _슬롯_을 표시하기 위해 쓰입니다. 조합기들은 정사각형 모양을 형성할 필요는 없습니다. 재료가 서로 대각선인 조합법이있을 때 유용합니다.", "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "Work in progress!", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index b78f446af..72168412c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -548,11 +548,11 @@ "create.gui.scrollInput.scrollToSelect": "Scroll om te selecteren", "create.gui.scrollInput.shiftScrollsFaster": "Shift om sneller te Scrollen", "create.gui.toolmenu.focusKey": "Hou [%1$s] ingedrukt om te Focusen", - "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", + "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", "create.gui.symmetryWand.mirrorType": "Spiegelen", "create.gui.symmetryWand.orientation": "Orientatie", - "create.symmetry.mirror.plane": "Spiegel één keer", + "create.symmetry.mirror.plane": "Spiegel één keer", "create.symmetry.mirror.doublePlane": "Rechthoekig", "create.symmetry.mirror.triplePlane": "Achthoekig", @@ -814,7 +814,7 @@ "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", + "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -860,7 +860,7 @@ "item.create.wand_of_symmetry.tooltip.condition1": "Waneer in de Actiebalk", "item.create.wand_of_symmetry.tooltip.behaviour1": "Blijft actief", "item.create.wand_of_symmetry.tooltip.control1": "R-Klik op de Grond", - "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", + "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", "item.create.wand_of_symmetry.tooltip.control2": "R-Klik in de Lucht", "item.create.wand_of_symmetry.tooltip.action2": "_Verwijderd_ de actieve Spiegel", "item.create.wand_of_symmetry.tooltip.control3": "R-Klik terwijl je Sluipt", @@ -935,7 +935,7 @@ "item.create.schematic_and_quill.tooltip.action3": "_Resets_ en verwijderd de selectie.", "block.create.schematicannon.tooltip": "BOUWTEKENINGKANNON", - "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", + "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", "block.create.schematicannon.tooltip.control1": "Wanneer R-Geklikt", "block.create.schematicannon.tooltip.action1": "Opent de _Interface_", @@ -985,7 +985,7 @@ "item.create.belt_connector.tooltip": "TRANSPORTBAND CONNECTOR", "item.create.belt_connector.tooltip.summary": "Verbind twee _Drijfassen_ met een _Mechanische_ _Transportband._ Verbonden drijfassen zullen dezelfde rotatiesneheid en richting hebben. De Transportband kan ook Entiteiten transporteren", "item.create.belt_connector.tooltip.control1": "R-Klikken op drijfas", - "item.create.belt_connector.tooltip.action1": "Selecteer de Drijfas als een katrol van de transportband. Beide geselecteerde drijfassen moeten _verticaal_, _horizontaal_ of _diagonaal_ in _één_ _lijn_ staan in de richting van de Transportbanden.", + "item.create.belt_connector.tooltip.action1": "Selecteer de Drijfas als een katrol van de transportband. Beide geselecteerde drijfassen moeten _verticaal_, _horizontaal_ of _diagonaal_ in _één_ _lijn_ staan in de richting van de Transportbanden.", "item.create.belt_connector.tooltip.control2": "R-Klikken terwijl je sluipt", "item.create.belt_connector.tooltip.action2": "_Reset_ de eerste geselecteerde positie van de Transportband", @@ -1044,7 +1044,7 @@ "block.create.crushing_wheel.tooltip": "VERPULVERAAR", "block.create.crushing_wheel.tooltip.summary": "Grote draaibare wielen die alles _verpulveren_ wat hun tegen houdt.", "block.create.crushing_wheel.tooltip.condition1": "Wanneer aangesloten op een andere Verpulveraar", - "block.create.crushing_wheel.tooltip.behaviour1": "Creëert een verpulverende installatie voor het verwerken van verschillende dingen. De tanden van de wielen moeten met elkaar in redstone_contact staan en beweken met _dezelfde_ _snelheid_ in _tegenovergestelde_ _richting._", + "block.create.crushing_wheel.tooltip.behaviour1": "Creëert een verpulverende installatie voor het verwerken van verschillende dingen. De tanden van de wielen moeten met elkaar in redstone_contact staan en beweken met _dezelfde_ _snelheid_ in _tegenovergestelde_ _richting._", "block.create.mechanical_press.tooltip": "MECHANISCHE PERS", "block.create.mechanical_press.tooltip.summary": "Een krachtige zuiger voor het samenpersen van objecten onder zich. Heeft een constante _Rotatiekracht_ nodig.", @@ -1064,9 +1064,9 @@ "block.create.mechanical_mixer.tooltip": "MECHANISCHE MIXER", "block.create.mechanical_mixer.tooltip.summary": "Een kinetische garde voor het toepassen van vormloze recepten op objecten eronder. Vereist constante _Rotatiekracht_ en een _Bekken_ hieronder geplaatst (met een tussenruimte).", "block.create.mechanical_mixer.tooltip.condition1": "Wanneer boven een Bekken", - "block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.", + "block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.", "block.create.mechanical_mixer.tooltip.condition2": "Wanneer gebruikt met een Sleutel", - "block.create.mechanical_mixer.tooltip.behaviour2": "_Configureert_ de minimale hoeveelheid _totale_ _ingredienten_ voor toegepaste recepten. Gebruik deze optie om _ongewenste_ _recepten_ met vergelijkbare maar minder ingrediënten _te_ _vermijden._", + "block.create.mechanical_mixer.tooltip.behaviour2": "_Configureert_ de minimale hoeveelheid _totale_ _ingredienten_ voor toegepaste recepten. Gebruik deze optie om _ongewenste_ _recepten_ met vergelijkbare maar minder ingrediënten _te_ _vermijden._", "block.create.mechanical_crafter.tooltip": "UNLOCALIZED: MECHANICAL CRAFTER", "block.create.mechanical_crafter.tooltip.summary": "UNLOCALIZED: A kinetic assembler for _automating_ any _shaped_ _crafting_ recipe. Place _multiple_ _in_ _a_ _grid_ corresponding to your recipe, and _arrange_ _their_ _belts_ to create a _flow_ that exits the grid on one of the crafters.", @@ -1100,12 +1100,12 @@ "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", "block.create.mechanical_piston.tooltip": "MECHANISCHE ZUIGER", - "block.create.mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Zuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", + "block.create.mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Zuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", "block.create.mechanical_piston.tooltip.condition1": "Wanneer gedraaid", "block.create.mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", "block.create.sticky_mechanical_piston.tooltip": "MECHANISCHE KLEEFZUIGER", - "block.create.sticky_mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Kleefzuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Kleefzuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Wanneer gedraaid", "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", @@ -1152,7 +1152,7 @@ "block.create.linear_chassis.tooltip": "LINEAAR FRAME", "block.create.linear_chassis.tooltip.summary": "A configurable base for Structures moved by a _Mechanische_ _Zuiger._ These Blocks have to form the first Layer of blocks in front of the Zuiger.", "block.create.linear_chassis.tooltip.condition1": "Wanneer bewogen door een Mechanische Zuiger", - "block.create.linear_chassis.tooltip.behaviour1": "_Beweegt_ alle _aangesloten_ _Frames_ met dezelfde oriëntatie, en daaraan bevestigde blokken. Wanneer de Zuiger wordt ingetrokken, worden blokken alleen getrokken als het framevlak _Kleverig_ (zie [Ctrl]).", + "block.create.linear_chassis.tooltip.behaviour1": "_Beweegt_ alle _aangesloten_ _Frames_ met dezelfde oriëntatie, en daaraan bevestigde blokken. Wanneer de Zuiger wordt ingetrokken, worden blokken alleen getrokken als het framevlak _Kleverig_ (zie [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.linear_chassis.tooltip.control1": "Wanneer R-Geklikt met een slijmbal", @@ -1207,7 +1207,7 @@ "block.create.redstone_link.tooltip.condition1": "Wanneer aangestuurd", "block.create.redstone_link.tooltip.behaviour1": "Het ontvangen van verbindingen met dezelfde frequentie levert een Redstone-signaal.", "block.create.redstone_link.tooltip.control1": "Wanneer R-Geklikt met een object", - "block.create.redstone_link.tooltip.action1": "Stelt de _Frequentie_ in op dat object. Een totaal van _twee_ _verschillende_ _objecten_ kan in combinatie worden gebruikt voor het definiëren van een frequentie", + "block.create.redstone_link.tooltip.action1": "Stelt de _Frequentie_ in op dat object. Een totaal van _twee_ _verschillende_ _objecten_ kan in combinatie worden gebruikt voor het definiëren van een frequentie", "block.create.redstone_link.tooltip.control2": "Wanneer R-Geklikt terwijl je sluipt", "block.create.redstone_link.tooltip.action2": "Schakelt tussen _ontvanger_ en _zender_modus.", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 46813d936..345a72f3e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -21,7 +21,7 @@ "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.basin": "UNLOCALIZED: Basin", - "block.create.belt": "Esteira Mecânica", + "block.create.belt": "Esteira Mecânica", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Observador de Esteira", "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", @@ -140,8 +140,8 @@ "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "Caixa de Transmissão", - "block.create.gearshift": "Câmbio", + "block.create.gearbox": "Caixa de Transmissão", + "block.create.gearshift": "Câmbio", "block.create.granite_bricks": "Tijolos de Granito", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", @@ -166,30 +166,30 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "Areia Calcária", - "block.create.limestone": "Calcário", - "block.create.limestone_bricks": "Tijolos de Calcário", - "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", - "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", - "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", + "block.create.limesand": "Areia Calcária", + "block.create.limestone": "Calcário", + "block.create.limestone_bricks": "Tijolos de Calcário", + "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", + "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", + "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Pilar de Calcário", + "block.create.limestone_pillar": "Pilar de Calcário", "block.create.linear_chassis": "Chassis de Translado", "block.create.linked_extractor": "Extrator Conectado", "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Rolamento Mecânico", + "block.create.mechanical_bearing": "Rolamento Mecânico", "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", - "block.create.mechanical_drill": "Furadeira Mecânica", - "block.create.mechanical_harvester": "Coletor Mecânico", + "block.create.mechanical_drill": "Furadeira Mecânica", + "block.create.mechanical_harvester": "Coletor Mecânico", "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", - "block.create.mechanical_piston": "Pistão Mecânico", - "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", + "block.create.mechanical_piston": "Pistão Mecânico", + "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Prensa Mecânico", + "block.create.mechanical_press": "Prensa Mecânico", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", "block.create.millstone": "UNLOCALIZED: Millstone", @@ -257,7 +257,7 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Vara de Extensão do Pistão", + "block.create.piston_extension_pole": "Vara de Extensão do Pistão", "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", @@ -270,16 +270,16 @@ "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Calcário Polido", - "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", + "block.create.polished_limestone": "Calcário Polido", + "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Calcário Polido Resistido", - "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", + "block.create.polished_weathered_limestone": "Calcário Polido Resistido", + "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", @@ -287,10 +287,10 @@ "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.radial_chassis": "Chassis de Rotação", + "block.create.radial_chassis": "Chassis de Rotação", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Contato de Redstone", - "block.create.redstone_link": "Conexão de Redstone", + "block.create.redstone_link": "Conexão de Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "UNLOCALIZED: Rope", "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", @@ -313,13 +313,13 @@ "block.create.speedometer": "UNLOCALIZED: Speedometer", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", + "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", "block.create.stockpile_switch": "Disjuntor de Armazenamento", "block.create.stressometer": "UNLOCALIZED: Stressometer", "block.create.tiled_glass": "Vidro Entalhado", - "block.create.tiled_glass_pane": "Vidraça Entalhada", + "block.create.tiled_glass_pane": "Vidraça Entalhada", "block.create.transposer": "UNLOCALIZED: Transposer", - "block.create.turntable": "Mesa giratória", + "block.create.turntable": "Mesa giratória", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", @@ -327,17 +327,17 @@ "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "Roda de Ã�gua", - "block.create.weathered_limestone": "Calcário Resistido", - "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", + "block.create.water_wheel": "Roda de Água", + "block.create.weathered_limestone": "Calcário Resistido", + "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", + "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", + "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", @@ -347,7 +347,7 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", - "item.create.belt_connector": "Esteira Mecânica", + "item.create.belt_connector": "Esteira Mecânica", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", @@ -371,7 +371,7 @@ "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "Blockzapper Portátil", + "item.create.handheld_blockzapper": "Blockzapper Portátil", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", "item.create.iron_sheet": "Placas de Ferro", @@ -379,7 +379,7 @@ "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Hélice", + "item.create.propeller": "Hélice", "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", "item.create.rose_quartz": "Quartzo Rosa", @@ -388,7 +388,7 @@ "item.create.schematic_and_quill": "Esquema e pena", "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "Fertilizante de Ã�rvore", + "item.create.tree_fertilizer": "Fertilizante de Árvore", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", "item.create.wand_of_symmetry": "Varinha de Simetria", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", @@ -490,7 +490,7 @@ "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", "death.attack.create.fan_fire": "%1$s foi queimado por ar quente", "death.attack.create.fan_lava": "%1$s foi queimado pelo ventilador de lava", - "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", + "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", @@ -500,25 +500,25 @@ "create.recipe.crushing": "Moendo", "create.recipe.milling": "UNLOCALIZED: Milling", "create.recipe.splashing": "Lavando em Massa", - "create.recipe.splashing.fan": "Ventilador atras de Ã�gua corrente", + "create.recipe.splashing.fan": "Ventilador atras de Água corrente", "create.recipe.smoking_via_fan": "Fumaceando em Massa", "create.recipe.smoking_via_fan.fan": "Ventilador atras de Fogo", "create.recipe.blasting_via_fan": "Fundindo em Massa", "create.recipe.blasting_via_fan.fan": "Ventilador atras de Lava", - "create.recipe.pressing": "Prensa Mecânica", + "create.recipe.pressing": "Prensa Mecânica", "create.recipe.mixing": "UNLOCALIZED: Mixing", "create.recipe.packing": "UNLOCALIZED: Compacting", "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", + "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", "create.recipe.processing.chance": "%1$s%% de chance", "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", - "create.generic.range": "Ã�rea", + "create.generic.range": "Área", "create.generic.radius": "Raio", "create.generic.width": "UNLOCALIZED: Width", "create.generic.height": "UNLOCALIZED: Height", @@ -542,7 +542,7 @@ "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", + "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", @@ -550,7 +550,7 @@ "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", "create.gui.toolmenu.cycle": "[SCROLL] para Circular", "create.gui.symmetryWand.mirrorType": "Espelhar", - "create.gui.symmetryWand.orientation": "Orientação", + "create.gui.symmetryWand.orientation": "Orientação", "create.symmetry.mirror.plane": "Espelhar uma vez", "create.symmetry.mirror.doublePlane": "Retangular", @@ -559,17 +559,17 @@ "create.orientation.orthogonal": "Ortogonal", "create.orientation.diagonal": "Diagonal", "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Através de Z", - "create.orientation.alongX": "Através de X", + "create.orientation.alongZ": "Através de Z", + "create.orientation.alongX": "Através de X", - "create.gui.blockzapper.title": "Blockzapper Portátil", - "create.gui.blockzapper.replaceMode": "Modo de Substituição", + "create.gui.blockzapper.title": "Blockzapper Portátil", + "create.gui.blockzapper.replaceMode": "Modo de Substituição", "create.gui.blockzapper.searchDiagonal": "Seguir as Diagonais", "create.gui.blockzapper.searchFuzzy": "Ignorar Material nas Bordas", - "create.gui.blockzapper.range": "Raio de Expansão", + "create.gui.blockzapper.range": "Raio de Expansão", "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "Padrões", - "create.gui.blockzapper.pattern.solid": "Sólido", + "create.gui.blockzapper.patternSection": "Padrões", + "create.gui.blockzapper.pattern.solid": "Sólido", "create.gui.blockzapper.pattern.checkered": "Xadrez", "create.gui.blockzapper.pattern.inversecheckered": "Xadrez invertido", "create.gui.blockzapper.pattern.chance25": "25% de chance", @@ -604,7 +604,7 @@ "create.blockzapper.componentTier.none": "Nada", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", + "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", "create.blockzapper.empty": "Sem Blocos!", "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", @@ -636,10 +636,10 @@ "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", "create.gui.adjustable_crate.title": "adjustable_crate", - "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", + "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", - "create.gui.stockpile_switch.lowerLimit": "Limite Mínimo", - "create.gui.stockpile_switch.upperLimit": "Limite Máximo", + "create.gui.stockpile_switch.lowerLimit": "Limite Mínimo", + "create.gui.stockpile_switch.upperLimit": "Limite Máximo", "create.gui.stockpile_switch.startAt": "Iniciar Sinal em", "create.gui.stockpile_switch.startAbove": "Iniciar Sinal acima de", "create.gui.stockpile_switch.stopAt": "Parar Sinal em", @@ -660,24 +660,24 @@ "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Primeira posição feita.", - "create.schematicAndQuill.secondPos": "Segunda posição feita.", + "create.schematicAndQuill.firstPos": "Primeira posição feita.", + "create.schematicAndQuill.secondPos": "Segunda posição feita.", "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", - "create.schematicAndQuill.abort": "Seleção removida.", + "create.schematicAndQuill.abort": "Seleção removida.", "create.schematicAndQuill.prompt": "Informe um nome para o Esquema:", "create.schematicAndQuill.fallbackName": "Meu Esquema", "create.schematicAndQuill.saved": "Salvo como %1$s", - "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", - "create.schematic.position": "Posição", - "create.schematic.rotation": "Rotação", + "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", + "create.schematic.position": "Posição", + "create.schematic.rotation": "Rotação", "create.schematic.rotation.none": "Nada", - "create.schematic.rotation.cw90": "Sentido horário 90", - "create.schematic.rotation.cw180": "Sentido horário 180", - "create.schematic.rotation.cw270": "Sentido horário 270", + "create.schematic.rotation.cw90": "Sentido horário 90", + "create.schematic.rotation.cw180": "Sentido horário 180", + "create.schematic.rotation.cw270": "Sentido horário 270", "create.schematic.mirror": "Espelhar", "create.schematic.mirror.none": "Nada", - "create.schematic.mirror.frontBack": "Frente para Trás", + "create.schematic.mirror.frontBack": "Frente para Trás", "create.schematic.mirror.leftRight": "Esquerda para Direita", "create.schematic.tool.deploy": "Concluir", "create.schematic.tool.move": "Mover XZ", @@ -686,9 +686,9 @@ "create.schematic.tool.print": "Imprimir", "create.schematic.tool.flip": "Virar", "create.schematic.tool.deploy.description.0": "Move o lugar da estrutura.", - "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", - "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", + "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", + "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", "create.schematic.tool.move.description.0": "Vira o Esquema Horizontalmente", "create.schematic.tool.move.description.1": "Aponte ao Esquema e [CTRL]-Rolar para empurrar.", "create.schematic.tool.move.description.2": "", @@ -702,60 +702,60 @@ "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "Coloca estrutura no mundo instantaneamente", - "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", - "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", + "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", + "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", - "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", + "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", + "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematics.synchronizing": "Sincronizando...", - "create.schematics.uploadTooLarge": "Seu esquema é muito grande", - "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", + "create.schematics.uploadTooLarge": "Seu esquema é muito grande", + "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", "create.gui.schematicTable.title": "Mesa de Desenho", "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", "create.gui.schematicTable.uploading": "Importando...", - "create.gui.schematicTable.finished": "Envio Concluído!", + "create.gui.schematicTable.finished": "Envio Concluído!", "create.gui.schematicannon.title": "Esquemaannon", - "create.gui.schematicannon.settingsTitle": "Parâmetros de Posicionamento", + "create.gui.schematicannon.settingsTitle": "Parâmetros de Posicionamento", "create.gui.schematicannon.listPrinter": "Impressora de Lista de Materiais", - "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", + "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", "create.gui.schematicannon.shotsRemaining": "Disparos faltantes: %1$s", "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", - "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", + "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", + "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", + "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", + "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", - "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", - "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", - "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", - "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", + "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", + "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", + "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", + "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", "create.schematicannon.status.idle": "Ocioso", "create.schematicannon.status.ready": "Pronto", "create.schematicannon.status.running": "Trabalhando", - "create.schematicannon.status.finished": "Concluído", + "create.schematicannon.status.finished": "Concluído", "create.schematicannon.status.paused": "Pausado", "create.schematicannon.status.stopped": "Parada", "create.schematicannon.status.noGunpowder": "UNLOCALIZED: Out of Gunpowder", - "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", - "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", + "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", + "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", "create.schematicannon.status.searching": "Procurando", "create.schematicannon.status.skipping": "Pulando", "create.schematicannon.status.missingBlock": "Bloco Faltante:", "create.schematicannon.status.placing": "Colocando", "create.schematicannon.status.clearing": "Limpando Blocos", - "create.schematicannon.status.schematicInvalid": "Esquema Inválido", - "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", + "create.schematicannon.status.schematicInvalid": "Esquema Inválido", + "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", @@ -856,24 +856,24 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", - "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", + "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", "item.create.wand_of_symmetry.tooltip.behaviour1": "Mantem-se Ativo", - "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", + "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", "item.create.wand_of_symmetry.tooltip.action1": "_Cria_ ou _Move_ o Espelho", "item.create.wand_of_symmetry.tooltip.control2": "B-Direito no Ar", "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", + "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", + "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", "item.create.handheld_blockzapper.tooltip.control1": "B-Esquerdo no Bloco", "item.create.handheld_blockzapper.tooltip.action1": "Define os blocos colocados pela ferramenta no bloco de destino.", "item.create.handheld_blockzapper.tooltip.control2": "B-Direito em Bloco", "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ ou _Substitui_ o bloco alvo.", "item.create.handheld_blockzapper.tooltip.control3": "B-Direito equando Abaixado", - "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", + "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", @@ -885,9 +885,9 @@ "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", - "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", + "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", "item.create.tree_fertilizer.tooltip.condition1": "Quando usada em Mudas", - "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", + "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", @@ -915,8 +915,8 @@ "item.create.empty_schematic.tooltip.summary": "Usado como ingrediente em receitas e para escrever na _Mesa_ _de_ _Esquematizar_", "item.create.schematic.tooltip": "ESQUEMA", - "item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", - "item.create.schematic.tooltip.condition1": "Quando Em mãos", + "item.create.schematic.tooltip.summary": "Contem uma estrutura para ser posicionada e colocada no mundo. Posicione o Holograma como desejar e use um _Esquemaannon_ para construí-lo.", + "item.create.schematic.tooltip.condition1": "Quando Em mãos", "item.create.schematic.tooltip.behaviour1": "Pode ser posicionado usando as Ferramentas em Tela", "item.create.schematic.tooltip.control1": "B-Direito enquanto Abaixado", "item.create.schematic.tooltip.action1": "Abre uma _Interface_ para informar as _Coordenadas_ exatas.", @@ -930,12 +930,12 @@ "item.create.schematic_and_quill.tooltip.control1": "B-Direito", "item.create.schematic_and_quill.tooltip.action1": "Selecione um canto / confirmar salvamento", "item.create.schematic_and_quill.tooltip.control2": "Ctrl Pressionado", - "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", + "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", "item.create.schematic_and_quill.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", + "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", "block.create.schematicannon.tooltip": "ESQUEMAANNON", - "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", + "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", "block.create.schematicannon.tooltip.control1": "Quando Apertado com B-Direito", "block.create.schematicannon.tooltip.action1": "Abre a _Interface_", @@ -945,49 +945,49 @@ "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", "block.create.shaft.tooltip": "EIXO", - "block.create.shaft.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta.", + "block.create.shaft.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta.", "block.create.cogwheel.tooltip": "RODA DENTADA", - "block.create.cogwheel.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta, e para _Rodas_ _Dentadas_ adjacentes.", + "block.create.cogwheel.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta, e para _Rodas_ _Dentadas_ adjacentes.", "block.create.large_cogwheel.tooltip": "RODA DENTADA GRADE", - "block.create.large_cogwheel.tooltip.summary": "Uma versão maior da _Roda_ _Dentada,_ permitindo mudança na _Velocidade_ de _Rotação_ quando conectada a sua Contraparte.", + "block.create.large_cogwheel.tooltip.summary": "Uma versão maior da _Roda_ _Dentada,_ permitindo mudança na _Velocidade_ de _Rotação_ quando conectada a sua Contraparte.", "block.create.encased_shaft.tooltip": "EIXO REVESTIDO", - "block.create.encased_shaft.tooltip.summary": " _Transmite_ _Rotação_ em uma linha reta. Apropriada para propagar Rotação através de Muros.", + "block.create.encased_shaft.tooltip.summary": " _Transmite_ _Rotação_ em uma linha reta. Apropriada para propagar Rotação através de Muros.", - "block.create.gearbox.tooltip": "CAIXA DE TRANSMISSÃO", - "block.create.gearbox.tooltip.summary": "_Transmite_ _Rotação_ em _Quatro_ _direções._ Reverte conexões diretas.", + "block.create.gearbox.tooltip": "CAIXA DE TRANSMISSÃO", + "block.create.gearbox.tooltip.summary": "_Transmite_ _Rotação_ em _Quatro_ _direções._ Reverte conexões diretas.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", - "block.create.gearshift.tooltip": "CÂMBIO", - "block.create.gearshift.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para eixos conectados.", + "block.create.gearshift.tooltip": "CÂMBIO", + "block.create.gearshift.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para eixos conectados.", "block.create.gearshift.tooltip.condition1": "Quando Ligado", - "block.create.gearshift.tooltip.behaviour1": "_Inverte_ a rotação de saída.", + "block.create.gearshift.tooltip.behaviour1": "_Inverte_ a rotação de saída.", "block.create.clutch.tooltip": "EMBREAGEM", - "block.create.clutch.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para os eixos conectados.", + "block.create.clutch.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para os eixos conectados.", "block.create.clutch.tooltip.condition1": "Quando Ligado", - "block.create.clutch.tooltip.behaviour1": "_Para_ de prover rotação para o outro lado.", + "block.create.clutch.tooltip.behaviour1": "_Para_ de prover rotação para o outro lado.", "block.create.encased_belt.tooltip": "ESTEIRA REVESTIDA", - "block.create.encased_belt.tooltip.summary": "_Transmite_ _Rotação_ através de si e para _Esteiras_ _Revestidas_ conectadas.", + "block.create.encased_belt.tooltip.summary": "_Transmite_ _Rotação_ através de si e para _Esteiras_ _Revestidas_ conectadas.", "block.create.encased_belt.tooltip.condition1": "Quando Conectadas com outra Esteira Revestida", - "block.create.encased_belt.tooltip.behaviour1": "Bloco Conectado irá ter a mesma velocidade de rotação, na mesma direção. Esteiras Conectadas não precisam estar viradas para mesma direção.", + "block.create.encased_belt.tooltip.behaviour1": "Bloco Conectado irá ter a mesma velocidade de rotação, na mesma direção. Esteiras Conectadas não precisam estar viradas para mesma direção.", "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", "block.create.adjustable_pulley.tooltip.condition1": "UNLOCALIZED: Redstone Control", "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", - "item.create.belt_connector.tooltip": "ESTEIRA MECÂNICA", - "item.create.belt_connector.tooltip.summary": "Conecta dois _Eixos_ com uma _Esteira_ _Mecânica._ Eixos conectados irá ter exatamente a mesma velocidade e direção de rotação. A Esteira pode atuar como um _Transporte_ para _Entidades._", + "item.create.belt_connector.tooltip": "ESTEIRA MECÂNICA", + "item.create.belt_connector.tooltip.summary": "Conecta dois _Eixos_ com uma _Esteira_ _Mecânica._ Eixos conectados irá ter exatamente a mesma velocidade e direção de rotação. A Esteira pode atuar como um _Transporte_ para _Entidades._", "item.create.belt_connector.tooltip.control1": "B-Direito em um Eixo", - "item.create.belt_connector.tooltip.action1": "Seleciona o eixo como uma polia da Esteira. Os dois Eixos selecionadas precisam estar _alinhados_ seja na _Vertical,_ _Horizontal_ ou _Diagonal_ na direção da Esteira.", + "item.create.belt_connector.tooltip.action1": "Seleciona o eixo como uma polia da Esteira. Os dois Eixos selecionadas precisam estar _alinhados_ seja na _Vertical,_ _Horizontal_ ou _Diagonal_ na direção da Esteira.", "item.create.belt_connector.tooltip.control2": "B-Direito enquanto Abaixado", - "item.create.belt_connector.tooltip.action2": "_Cancela_ a seleção da Posição para a Esteira", + "item.create.belt_connector.tooltip.action2": "_Cancela_ a seleção da Posição para a Esteira", "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", @@ -1006,17 +1006,17 @@ "block.create.creative_motor.tooltip": "UNLOCALIZED: CREATIVE MOTOR", "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", - "block.create.water_wheel.tooltip": "RODA DE Ã�GUA", - "block.create.water_wheel.tooltip.summary": "Prove _Força_ _Rotacional_ tirada de _Correntes_ de _Ã�gua_ próximas.", + "block.create.water_wheel.tooltip": "RODA DE ÁGUA", + "block.create.water_wheel.tooltip.summary": "Prove _Força_ _Rotacional_ tirada de _Correntes_ de _Água_ próximas.", "block.create.encased_fan.tooltip": "VENTILADO REVESTIDO", - "block.create.encased_fan.tooltip.summary": "Converte _Força_ _Rotacional_ em _Correntes_ de _Ar_ e vice-versa. Muitos usos.", + "block.create.encased_fan.tooltip.summary": "Converte _Força_ _Rotacional_ em _Correntes_ de _Ar_ e vice-versa. Muitos usos.", "block.create.encased_fan.tooltip.condition1": "Quando sobre Fogo", - "block.create.encased_fan.tooltip.behaviour1": "Prove _Força_ _Rotacional_ (precisa ser na vertical)", + "block.create.encased_fan.tooltip.behaviour1": "Prove _Força_ _Rotacional_ (precisa ser na vertical)", "block.create.encased_fan.tooltip.condition2": "Quando Invertido", - "block.create.encased_fan.tooltip.behaviour2": "_Empurra_ Entidades em um lado, _Puxa_ entidades no outro. Força e Velocidade dependem da Rotação de entrada.", - "block.create.encased_fan.tooltip.condition3": "Quando ar flui através de blocos especiais", - "block.create.encased_fan.tooltip.behaviour3": "Processa itens na frente do Bloco: _Ã�gua_ alva, _Fogo_ defuma, e _Lava_ derrete o ingrediente.", + "block.create.encased_fan.tooltip.behaviour2": "_Empurra_ Entidades em um lado, _Puxa_ entidades no outro. Força e Velocidade dependem da Rotação de entrada.", + "block.create.encased_fan.tooltip.condition3": "Quando ar flui através de blocos especiais", + "block.create.encased_fan.tooltip.behaviour3": "Processa itens na frente do Bloco: _Água_ alva, _Fogo_ defuma, e _Lava_ derrete o ingrediente.", "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", @@ -1031,8 +1031,8 @@ "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Rotated", "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", - "block.create.turntable.tooltip": "MESA GIRATÓRIA", - "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", + "block.create.turntable.tooltip": "MESA GIRATÓRIA", + "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1042,15 +1042,15 @@ "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", "block.create.crushing_wheel.tooltip": "RODA DE MOER", - "block.create.crushing_wheel.tooltip.summary": "Grandes rodas giratórias que _esmagam_ qualquer coisa que impeça seu movimento.", + "block.create.crushing_wheel.tooltip.summary": "Grandes rodas giratórias que _esmagam_ qualquer coisa que impeça seu movimento.", "block.create.crushing_wheel.tooltip.condition1": "Quando conectado a outras Rodas de Moer", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma uma estrutura de esmagamento para processar uma variedade de coisas. Os Dentes da rota precisam estar conectados e se movimentando com a _mesma_ _velocidade_ em _direções_ _opostas._", + "block.create.crushing_wheel.tooltip.behaviour1": "Forma uma estrutura de esmagamento para processar uma variedade de coisas. Os Dentes da rota precisam estar conectados e se movimentando com a _mesma_ _velocidade_ em _direções_ _opostas._", - "block.create.mechanical_press.tooltip": "PRENSA MECÂNICA", - "block.create.mechanical_press.tooltip.summary": "Um forte pistão usado para comprimir itens abaixo dele. Precisa de _Força_ _Rotacional_ constante", + "block.create.mechanical_press.tooltip": "PRENSA MECÂNICA", + "block.create.mechanical_press.tooltip.summary": "Um forte pistão usado para comprimir itens abaixo dele. Precisa de _Força_ _Rotacional_ constante", "block.create.mechanical_press.tooltip.condition1": "Quando Ligado com Redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Inicia_ compressão de itens jogados abaixo dele.", - "block.create.mechanical_press.tooltip.condition2": "Quando Sobre uma Esteira Mecânica", + "block.create.mechanical_press.tooltip.behaviour1": "_Inicia_ compressão de itens jogados abaixo dele.", + "block.create.mechanical_press.tooltip.condition2": "Quando Sobre uma Esteira Mecânica", "block.create.mechanical_press.tooltip.behaviour2": "_Automaticamente_ comprime itens que passando na Esteira.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", @@ -1099,27 +1099,27 @@ "block.create.rotation_speed_controller.tooltip.condition1": "UNLOCALIZED: When Attached to Large Cogwheel", "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", - "block.create.mechanical_piston.tooltip": "PISTÃO MECÂNICO", - "block.create.mechanical_piston.tooltip.summary": "Uma verão melhorada do _Pistão,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. _Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", + "block.create.mechanical_piston.tooltip": "PISTÃO MECÂNICO", + "block.create.mechanical_piston.tooltip.summary": "Uma verão melhorada do _Pistão,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. _Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", "block.create.mechanical_piston.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", + "block.create.mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", - "block.create.sticky_mechanical_piston.tooltip": "PISTÃO MECÂNICO GRUDENTO", - "block.create.sticky_mechanical_piston.tooltip.summary": "Uma versão melhorada do _Pistão_ _Grudento,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", + "block.create.sticky_mechanical_piston.tooltip": "PISTÃO MECÂNICO GRUDENTO", + "block.create.sticky_mechanical_piston.tooltip.summary": "Uma versão melhorada do _Pistão_ _Grudento,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Rodado", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", - "block.create.piston_extension_pole.tooltip": "VARA DE EXTENSÃO DO PISTÃO", - "block.create.piston_extension_pole.tooltip.summary": "Aumenta o alcance de _Pistões_ _Mecânicos_", - "block.create.piston_extension_pole.tooltip.condition1": "Quando preso a um Pistão Mecânico", - "block.create.piston_extension_pole.tooltip.behaviour1": "Aumenta a extensão dos pistões em 1 bloco", + "block.create.piston_extension_pole.tooltip": "VARA DE EXTENSÃO DO PISTÃO", + "block.create.piston_extension_pole.tooltip.summary": "Aumenta o alcance de _Pistões_ _Mecânicos_", + "block.create.piston_extension_pole.tooltip.condition1": "Quando preso a um Pistão Mecânico", + "block.create.piston_extension_pole.tooltip.behaviour1": "Aumenta a extensão dos pistões em 1 bloco", - "block.create.mechanical_bearing.tooltip": "ROLAMENTO MECÂNICO", - "block.create.mechanical_bearing.tooltip.summary": "Usado para rotacionar _estruturas_ _grandes_ ou geração de _Força_ _Rotacional_ do vento.", + "block.create.mechanical_bearing.tooltip": "ROLAMENTO MECÂNICO", + "block.create.mechanical_bearing.tooltip.summary": "Usado para rotacionar _estruturas_ _grandes_ ou geração de _Força_ _Rotacional_ do vento.", "block.create.mechanical_bearing.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_bearing.tooltip.behaviour1": "Começa a rotacionar _Chassis_ de _Rotação_ conectados e blocos conectados a eles.", + "block.create.mechanical_bearing.tooltip.behaviour1": "Começa a rotacionar _Chassis_ de _Rotação_ conectados e blocos conectados a eles.", "block.create.mechanical_bearing.tooltip.condition2": "Quando Ligado por Redstone", - "block.create.mechanical_bearing.tooltip.behaviour2": "Começa a passar _Força_ _Rotacional_ das estruturas conectadas. A estrutura dele incluir _Blocos_ de _Vela_ válidos (atualmente qualquer Bloco de Lã).", + "block.create.mechanical_bearing.tooltip.behaviour2": "Começa a passar _Força_ _Rotacional_ das estruturas conectadas. A estrutura dele incluir _Blocos_ de _Vela_ válidos (atualmente qualquer Bloco de Lã).", "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", @@ -1150,34 +1150,34 @@ "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", "block.create.linear_chassis.tooltip": "CHASSIS DE TRANSLADO", - "block.create.linear_chassis.tooltip.summary": "Uma base configurável para Estruturas serem movidas por um _Pistão_ _Mecânico._ Esses Blocos precisam formas uma camada de blocos na frente do Pistão.", - "block.create.linear_chassis.tooltip.condition1": "Quando movido por Pistão Mecânico", - "block.create.linear_chassis.tooltip.behaviour1": "_Move_ todos os _Chassis_ _conectados_ na mesma orientação, e Blocos conectados a frente dele. Quando o Pistão volta, blocos apenas serão puxados se a face do chassis for _Grudenta_ (Ver [Ctrl]).", + "block.create.linear_chassis.tooltip.summary": "Uma base configurável para Estruturas serem movidas por um _Pistão_ _Mecânico._ Esses Blocos precisam formas uma camada de blocos na frente do Pistão.", + "block.create.linear_chassis.tooltip.condition1": "Quando movido por Pistão Mecânico", + "block.create.linear_chassis.tooltip.behaviour1": "_Move_ todos os _Chassis_ _conectados_ na mesma orientação, e Blocos conectados a frente dele. Quando o Pistão volta, blocos apenas serão puxados se a face do chassis for _Grudenta_ (Ver [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.linear_chassis.tooltip.control1": "Quando clicado com B-Direito com Gosma de Slime", - "block.create.linear_chassis.tooltip.action1": "Torna a face clicada _Grudenta._ Quando o pistão volta, o chassis irá _puxar_ _junto_ todos os Blocos conectados na sua coluna e no Alcance configurado.", + "block.create.linear_chassis.tooltip.action1": "Torna a face clicada _Grudenta._ Quando o pistão volta, o chassis irá _puxar_ _junto_ todos os Blocos conectados na sua coluna e no Alcance configurado.", - "block.create.radial_chassis.tooltip": "CHASSIS DE ROTAÇÃO", - "block.create.radial_chassis.tooltip.summary": "Nessário para rotacionar estruturas om um _Rolamento_ _Mecânico._ ", + "block.create.radial_chassis.tooltip": "CHASSIS DE ROTAÇÃO", + "block.create.radial_chassis.tooltip.summary": "Nessário para rotacionar estruturas om um _Rolamento_ _Mecânico._ ", "block.create.radial_chassis.tooltip.condition1": "Quando Rotacionado por Rolamento", - "block.create.radial_chassis.tooltip.behaviour1": "_Rotaciona_ todos os blocos conectados a lados _Grudentos_ (Veja [Ctrl]) dentro do alcance configurado no seu entorno. _Propaga_ a rotação para outros Chassis de Rotação conectados.", + "block.create.radial_chassis.tooltip.behaviour1": "_Rotaciona_ todos os blocos conectados a lados _Grudentos_ (Veja [Ctrl]) dentro do alcance configurado no seu entorno. _Propaga_ a rotação para outros Chassis de Rotação conectados.", "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", "block.create.radial_chassis.tooltip.control1": "Quando clicado com B-Direito com Goma de Slime", - "block.create.radial_chassis.tooltip.action1": "Torna face clicada em _Grudenta._ Quando o Chassis girar, todos os blocos conectados nesse lado irão girar junto.", + "block.create.radial_chassis.tooltip.action1": "Torna face clicada em _Grudenta._ Quando o Chassis girar, todos os blocos conectados nesse lado irão girar junto.", - "block.create.mechanical_drill.tooltip": "FURADEIRA MECÂNICA", - "block.create.mechanical_drill.tooltip.summary": "Um dispositivo mecânido feito para _quebrar_ _blocos._", + "block.create.mechanical_drill.tooltip": "FURADEIRA MECÂNICA", + "block.create.mechanical_drill.tooltip.summary": "Um dispositivo mecânido feito para _quebrar_ _blocos._", "block.create.mechanical_drill.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_drill.tooltip.behaviour1": "Atua como um Bloco Quebrador _estacionário._ Também _machuca_ _entidades_ na sua área de efeito.", - "block.create.mechanical_drill.tooltip.condition2": "Quando Empurrado por Pistão Mecânico", - "block.create.mechanical_drill.tooltip.behaviour2": "Quebra os Blocos na direção do avanço da broca.", + "block.create.mechanical_drill.tooltip.behaviour1": "Atua como um Bloco Quebrador _estacionário._ Também _machuca_ _entidades_ na sua área de efeito.", + "block.create.mechanical_drill.tooltip.condition2": "Quando Empurrado por Pistão Mecânico", + "block.create.mechanical_drill.tooltip.behaviour2": "Quebra os Blocos na direção do avanço da broca.", - "block.create.mechanical_harvester.tooltip": "COLETOR MECÂNICO", - "block.create.mechanical_harvester.tooltip.summary": "Um cortador de plantas mecânico indicado para automação de culturas de médio porte", - "block.create.mechanical_harvester.tooltip.condition1": "Quando Empurrado por Pistão Mecânico", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Colhe_ todas as _safra_ _madura_ que a lâmina passar sobre, e os retorna a estado de crescimento inicial.", + "block.create.mechanical_harvester.tooltip": "COLETOR MECÂNICO", + "block.create.mechanical_harvester.tooltip.summary": "Um cortador de plantas mecânico indicado para automação de culturas de médio porte", + "block.create.mechanical_harvester.tooltip.condition1": "Quando Empurrado por Pistão Mecânico", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Colhe_ todas as _safra_ _madura_ que a lâmina passar sobre, e os retorna a estado de crescimento inicial.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1194,20 +1194,20 @@ "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", - "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", - "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", + "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", + "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - "block.create.stockpile_switch.tooltip.condition2": "Quando acima do Limite Máximo", - "block.create.stockpile_switch.tooltip.behaviour2": "Começa a enviar _Sinal_ de _Redstone_ até chegar no Limite Mínio novamente.", + "block.create.stockpile_switch.tooltip.condition2": "Quando acima do Limite Máximo", + "block.create.stockpile_switch.tooltip.behaviour2": "Começa a enviar _Sinal_ de _Redstone_ até chegar no Limite Mínio novamente.", "block.create.stockpile_switch.tooltip.control1": "Quando clicado com B-Direito", - "block.create.stockpile_switch.tooltip.action1": "Abre a _Interface_ de _Configuração_", + "block.create.stockpile_switch.tooltip.action1": "Abre a _Interface_ de _Configuração_", - "block.create.redstone_link.tooltip": "CONEXÃO DE REDSTONE", - "block.create.redstone_link.tooltip.summary": "Saida para conexões _Redstone_ _Sem-Fio._ Pode ter _Frequências_ usando qualquer item. Distancia do Sinal é limitada, mas resoavelmente justa.", + "block.create.redstone_link.tooltip": "CONEXÃO DE REDSTONE", + "block.create.redstone_link.tooltip.summary": "Saida para conexões _Redstone_ _Sem-Fio._ Pode ter _Frequências_ usando qualquer item. Distancia do Sinal é limitada, mas resoavelmente justa.", "block.create.redstone_link.tooltip.condition1": "Quando Ligado", - "block.create.redstone_link.tooltip.behaviour1": "Recebendo Conexões da mesma _Frequência_ irá gerar um sinal de Redstone.", + "block.create.redstone_link.tooltip.behaviour1": "Recebendo Conexões da mesma _Frequência_ irá gerar um sinal de Redstone.", "block.create.redstone_link.tooltip.control1": "Quando clicado com B-Direito com um Item", - "block.create.redstone_link.tooltip.action1": "Altera a _Frequência_ para aquele item. Até _dois_ _itens_ _diferentes_ podem ser combinados para definir uma Frequência.", + "block.create.redstone_link.tooltip.action1": "Altera a _Frequência_ para aquele item. Até _dois_ _itens_ _diferentes_ podem ser combinados para definir uma Frequência.", "block.create.redstone_link.tooltip.control2": "Quando clicado com B-Direito enquanto Abaixado", "block.create.redstone_link.tooltip.action2": "Muda entre Modo _Receptor_ e _Transmissor_ .", @@ -1217,30 +1217,30 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "CONTATO DE REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Um dispositivo simples para Mecanimos de Redstone avançados.", + "block.create.redstone_contact.tooltip.summary": "Um dispositivo simples para Mecanimos de Redstone avançados.", "block.create.redstone_contact.tooltip.condition1": "Quando apontando para outro Contato", - "block.create.redstone_contact.tooltip.behaviour1": "Provê um _Sinal_ de _Redstone_", - "block.create.redstone_contact.tooltip.condition2": "Quando movido por Pistão Mecânico", - "block.create.redstone_contact.tooltip.behaviour2": "Ativa todos os Contatos imóveis na passagem", + "block.create.redstone_contact.tooltip.behaviour1": "Provê um _Sinal_ de _Redstone_", + "block.create.redstone_contact.tooltip.condition2": "Quando movido por Pistão Mecânico", + "block.create.redstone_contact.tooltip.behaviour2": "Ativa todos os Contatos imóveis na passagem", "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", + "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", "block.create.adjustable_crate.tooltip.control1": "Quando clicado com B-Direito", "block.create.adjustable_crate.tooltip.action1": "Abre a _Interface_", "block.create.creative_crate.tooltip": "CRIATIVADOR ESQUEMAANNON", - "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", + "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRATOR", - "block.create.extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ conectado e os joga no chão. Não irá jogar Itens até o espaço ser limpo. Pode ser configurado como para ser um _filtro._", + "block.create.extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ conectado e os joga no chão. Não irá jogar Itens até o espaço ser limpo. Pode ser configurado como para ser um _filtro._", "block.create.extractor.tooltip.condition1": "Quando Ligado por Redstone", "block.create.extractor.tooltip.behaviour1": "_Para_ o Extractor", "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", - "block.create.extractor.tooltip.control1": "B-Direito no Espaço de Filtro", - "block.create.extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", + "block.create.extractor.tooltip.control1": "B-Direito no Espaço de Filtro", + "block.create.extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", @@ -1259,13 +1259,13 @@ "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", "block.create.linked_extractor.tooltip": "EXTRATOR CONECTADO", - "block.create.linked_extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ e os joga no chão. Não vai jogar Itens até que o espaço ser limpo. Pode ser configurado como para ser um _filtro._ Pode ser controlado remotamente via _Conexão_ de _Redstone._", - "block.create.linked_extractor.tooltip.condition1": "Quando Conexão de Redstone Ativa", + "block.create.linked_extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ e os joga no chão. Não vai jogar Itens até que o espaço ser limpo. Pode ser configurado como para ser um _filtro._ Pode ser controlado remotamente via _Conexão_ de _Redstone._", + "block.create.linked_extractor.tooltip.condition1": "Quando Conexão de Redstone Ativa", "block.create.linked_extractor.tooltip.behaviour1": "_Para_ o Extrator", - "block.create.linked_extractor.tooltip.control1": "B-Direito no Espaço de Filtro", - "block.create.linked_extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", - "block.create.linked_extractor.tooltip.control2": "B-Direito no Espaço de Frequência", - "block.create.linked_extractor.tooltip.action2": "Configura a _pilha_ atualmente _presente_ como parte da Frequência a ouvir. Quando um _Conexão_ de _Redstone_ transmissor da mesma frequência é ligado, esse Extrator irá parar.", + "block.create.linked_extractor.tooltip.control1": "B-Direito no Espaço de Filtro", + "block.create.linked_extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", + "block.create.linked_extractor.tooltip.control2": "B-Direito no Espaço de Frequência", + "block.create.linked_extractor.tooltip.action2": "Configura a _pilha_ atualmente _presente_ como parte da Frequência a ouvir. Quando um _Conexão_ de _Redstone_ transmissor da mesma frequência é ligado, esse Extrator irá parar.", "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", @@ -1277,7 +1277,7 @@ "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", "block.create.funnel.tooltip": "FUNIL DE ESTEIRA", - "block.create.funnel.tooltip.summary": "Coleta itens passando numa _Esteira_ _Mecânica_ e os insere no _Inventário_ conetado, se possível. Precisa estar diretamente _sobre_ uma Esteira, com a abertura virada contra o movimento da Esteira. O inventário precisa estar na mesma altura que o funil.", + "block.create.funnel.tooltip.summary": "Coleta itens passando numa _Esteira_ _Mecânica_ e os insere no _Inventário_ conetado, se possível. Precisa estar diretamente _sobre_ uma Esteira, com a abertura virada contra o movimento da Esteira. O inventário precisa estar na mesma altura que o funil.", "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", @@ -1294,9 +1294,9 @@ "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", "block.create.belt_observer.tooltip": "OBSERVADOR DE ESTEIRA", - "block.create.belt_observer.tooltip.summary": "Detecta os itens passando numa _Esteira_ _Mecânica_ a sua frente. Funciona bem com um _Pistão_ em cima, empurrando certos itens.", + "block.create.belt_observer.tooltip.summary": "Detecta os itens passando numa _Esteira_ _Mecânica_ a sua frente. Funciona bem com um _Pistão_ em cima, empurrando certos itens.", "block.create.belt_observer.tooltip.condition1": "Quando item bate com Filtro", - "block.create.belt_observer.tooltip.behaviour1": "Provê um _Pulso_ curto de _Redstone_ para todos os lados. Um Filtro vazio considera todos os itens passando.", + "block.create.belt_observer.tooltip.behaviour1": "Provê um _Pulso_ curto de _Redstone_ para todos os lados. Um Filtro vazio considera todos os itens passando.", "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", @@ -1305,10 +1305,10 @@ "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", "block.create.pulse_repeater.tooltip": "REPETIDOR DE PULSO", - "block.create.pulse_repeater.tooltip.summary": "Um circuito simples para cortar pulsos de Redstone até um comprimento de _1_ _tick._", + "block.create.pulse_repeater.tooltip.summary": "Um circuito simples para cortar pulsos de Redstone até um comprimento de _1_ _tick._", "block.create.adjustable_repeater.tooltip": "REPETIDOR FLEX", - "block.create.adjustable_repeater.tooltip.summary": "Um um _Repetidor_ de _Redstone_ avançado com um _Delay_ _configurável_ de até 30 Minutos.", + "block.create.adjustable_repeater.tooltip.summary": "Um um _Repetidor_ de _Redstone_ avançado com um _Delay_ _configurável_ de até 30 Minutos.", "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 551f1088a..d4a63d2ae 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -5,12 +5,12 @@ "block.create.acacia_window": "UNLOCALIZED: Acacia Window", "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_crate": "Гибкий Ñ�щик", + "block.create.adjustable_crate": "Гибкий ящик", "block.create.adjustable_pulley": "UNLOCALIZED: Adjustable Pulley", "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "Ð�аÑ�траиваемый повторитель", + "block.create.adjustable_repeater": "Настраиваемый повторитель", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", - "block.create.andesite_bricks": "Ð�ндезитовые кирпичи", + "block.create.andesite_bricks": "Андезитовые кирпичи", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", @@ -21,9 +21,9 @@ "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.basin": "UNLOCALIZED: Basin", - "block.create.belt": "МеханичеÑ�каÑ� лента", + "block.create.belt": "Механическая лента", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "Ленточный Ñ�канер", + "block.create.belt_observer": "Ленточный сканер", "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", @@ -39,15 +39,15 @@ "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", - "block.create.clutch": "ПереключаемаÑ� муфта", - "block.create.cogwheel": "ШеÑ�тернÑ�", + "block.create.clutch": "Переключаемая муфта", + "block.create.cogwheel": "Шестерня", "block.create.copper_block": "UNLOCALIZED: Copper Block", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", - "block.create.creative_crate": "Креативный Ñ�щик", + "block.create.creative_crate": "Креативный ящик", "block.create.creative_motor": "UNLOCALIZED: Creative Motor", - "block.create.crushing_wheel": "Дробильное колеÑ�о", + "block.create.crushing_wheel": "Дробильное колесо", "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", @@ -64,7 +64,7 @@ "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", "block.create.deployer": "UNLOCALIZED: Deployer", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "Диоритовые кирпичи", + "block.create.diorite_bricks": "Диоритовые кирпичи", "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", @@ -73,20 +73,20 @@ "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "Доломит", - "block.create.dolomite_bricks": "Доломитовые кирпичи", - "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", - "block.create.dolomite_bricks_stairs": "Ступеньки из доломитового кирпича", - "block.create.dolomite_bricks_wall": "Ограда из доломитового кирпича", + "block.create.dolomite": "Доломит", + "block.create.dolomite_bricks": "Доломитовые кирпичи", + "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", + "block.create.dolomite_bricks_stairs": "Ступеньки из доломитового кирпича", + "block.create.dolomite_bricks_wall": "Ограда из доломитового кирпича", "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "ДоломитоваÑ� колонна", - "block.create.encased_belt": "Ленточный привод", - "block.create.encased_fan": "ВентилÑ�тор", - "block.create.encased_shaft": "Вальный привод", - "block.create.extractor": "ЭкÑ�трактор", + "block.create.dolomite_pillar": "Доломитовая колонна", + "block.create.encased_belt": "Ленточный привод", + "block.create.encased_fan": "Вентилятор", + "block.create.encased_shaft": "Вальный привод", + "block.create.extractor": "Экстрактор", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", @@ -128,21 +128,21 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "ЛенточнаÑ� воронка", + "block.create.funnel": "Ленточная воронка", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", - "block.create.gabbro": "Габбро", - "block.create.gabbro_bricks": "Габбровые кирпичи", + "block.create.gabbro": "Габбро", + "block.create.gabbro_bricks": "Габбровые кирпичи", "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "Ступеньки из габбрового кирпича", - "block.create.gabbro_bricks_wall": "Ограда из габбрового кирпича", + "block.create.gabbro_bricks_stairs": "Ступеньки из габбрового кирпича", + "block.create.gabbro_bricks_wall": "Ограда из габбрового кирпича", "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gearbox": "Муфта", - "block.create.gearshift": "РеверÑ�ивнаÑ� муфта", - "block.create.granite_bricks": "Гранитные кирпичи", + "block.create.gearbox": "Муфта", + "block.create.gearshift": "Реверсивная муфта", + "block.create.granite_bricks": "Гранитные кирпичи", "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", @@ -156,7 +156,7 @@ "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "БольшаÑ� шеÑ�тернÑ�", + "block.create.large_cogwheel": "Большая шестерня", "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", @@ -166,30 +166,30 @@ "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.limesand": "ИзвеÑ�Ñ‚ÑŒ", - "block.create.limestone": "ИзвеÑ�тнÑ�к", - "block.create.limestone_bricks": "ИзвеÑ�тковые кирпичи", - "block.create.limestone_bricks_slab": "Плита из извеÑ�ткового кирпича", - "block.create.limestone_bricks_stairs": "Ступеньки из извеÑ�ткового кирпича", - "block.create.limestone_bricks_wall": "Ограда из извеÑ�ткового кирпича", + "block.create.limesand": "Известь", + "block.create.limestone": "Известняк", + "block.create.limestone_bricks": "Известковые кирпичи", + "block.create.limestone_bricks_slab": "Плита из известкового кирпича", + "block.create.limestone_bricks_stairs": "Ступеньки из известкового кирпича", + "block.create.limestone_bricks_wall": "Ограда из известкового кирпича", "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "ИзвеÑ�тнÑ�коваÑ� колонна", - "block.create.linear_chassis": "ПоÑ�тупательнаÑ� рама", - "block.create.linked_extractor": "Сигнальный Ñ�кÑ�трактор", + "block.create.limestone_pillar": "Известняковая колонна", + "block.create.linear_chassis": "Поступательная рама", + "block.create.linked_extractor": "Сигнальный экстрактор", "block.create.linked_transposer": "UNLOCALIZED: Linked Transposer", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "МеханичеÑ�кий подшипник", + "block.create.mechanical_bearing": "Механический подшипник", "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", - "block.create.mechanical_drill": "МеханичеÑ�кий бур", - "block.create.mechanical_harvester": "МеханичеÑ�кий комбайнер", + "block.create.mechanical_drill": "Механический бур", + "block.create.mechanical_harvester": "Механический комбайнер", "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", - "block.create.mechanical_piston": "МеханичеÑ�кий поршень", - "block.create.mechanical_piston_head": "Ствол механичеÑ�кого поршнÑ�", + "block.create.mechanical_piston": "Механический поршень", + "block.create.mechanical_piston_head": "Ствол механического поршня", "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "МеханичеÑ�кий преÑ�Ñ�", + "block.create.mechanical_press": "Механический пресс", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", "block.create.millstone": "UNLOCALIZED: Millstone", @@ -257,46 +257,46 @@ "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.piston_extension_pole": "Удлинитель поршнÑ�", + "block.create.piston_extension_pole": "Удлинитель поршня", "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "Полированный доломит", + "block.create.polished_dolomite": "Полированный доломит", "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "Полированный габбро", + "block.create.polished_gabbro": "Полированный габбро", "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Полированный извеÑ�тнÑ�к", - "block.create.polished_limestone_slab": "Плита из полированного извеÑ�тнÑ�ка", + "block.create.polished_limestone": "Полированный известняк", + "block.create.polished_limestone_slab": "Плита из полированного известняка", "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Полированный обветренный извеÑ�тнÑ�к", - "block.create.polished_weathered_limestone_slab": "Плита из полированного обветренного извеÑ�тнÑ�ка", + "block.create.polished_weathered_limestone": "Полированный обветренный известняк", + "block.create.polished_weathered_limestone_slab": "Плита из полированного обветренного известняка", "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", "block.create.powered_latch": "UNLOCALIZED: Powered Latch", "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", - "block.create.pulse_repeater": "Повторитель импульÑ�а", - "block.create.radial_chassis": "ПоворотнаÑ� рама", + "block.create.pulse_repeater": "Повторитель импульса", + "block.create.radial_chassis": "Поворотная рама", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "Контактное Ñ�оединение", - "block.create.redstone_link": "Сигнальное Ñ�оединение", + "block.create.redstone_contact": "Контактное соединение", + "block.create.redstone_link": "Сигнальное соединение", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", "block.create.rope": "UNLOCALIZED: Rope", "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", - "block.create.schematic_table": "Стол длÑ� Ñ�хем", - "block.create.schematicannon": "Схемопушка", + "block.create.schematic_table": "Стол для схем", + "block.create.schematicannon": "Схемопушка", "block.create.scoria": "UNLOCALIZED: Scoria", "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", @@ -309,17 +309,17 @@ "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", - "block.create.shaft": "Вал", + "block.create.shaft": "Вал", "block.create.speedometer": "UNLOCALIZED: Speedometer", "block.create.spruce_window": "UNLOCALIZED: Spruce Window", "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticky_mechanical_piston": "Липкий механичеÑ�кий поршень", - "block.create.stockpile_switch": "Коммутатор хранилища", + "block.create.sticky_mechanical_piston": "Липкий механический поршень", + "block.create.stockpile_switch": "Коммутатор хранилища", "block.create.stressometer": "UNLOCALIZED: Stressometer", - "block.create.tiled_glass": "Плиточное Ñ�текло", - "block.create.tiled_glass_pane": "ПлиточнаÑ� Ñ�теклÑ�ннаÑ� панель", + "block.create.tiled_glass": "Плиточное стекло", + "block.create.tiled_glass_pane": "Плиточная стеклянная панель", "block.create.transposer": "UNLOCALIZED: Transposer", - "block.create.turntable": "Поворотный Ñ�тол", + "block.create.turntable": "Поворотный стол", "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", @@ -327,17 +327,17 @@ "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", - "block.create.water_wheel": "ВодÑ�ное колеÑ�о", - "block.create.weathered_limestone": "Обветренный извеÑ�тнÑ�к", - "block.create.weathered_limestone_bricks": "Кирпичи из обветренного извеÑ�тнÑ�ка", - "block.create.weathered_limestone_bricks_slab": "Плита из кирпича из обветренного извеÑ�тнÑ�ка", - "block.create.weathered_limestone_bricks_stairs": "Ступеньки из кирпича из обветренного извеÑ�тнÑ�ка", - "block.create.weathered_limestone_bricks_wall": "Ограда из кирпича из обветренного извеÑ�тнÑ�ка", + "block.create.water_wheel": "Водяное колесо", + "block.create.weathered_limestone": "Обветренный известняк", + "block.create.weathered_limestone_bricks": "Кирпичи из обветренного известняка", + "block.create.weathered_limestone_bricks_slab": "Плита из кирпича из обветренного известняка", + "block.create.weathered_limestone_bricks_stairs": "Ступеньки из кирпича из обветренного известняка", + "block.create.weathered_limestone_bricks_wall": "Ограда из кирпича из обветренного известняка", "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Колонна из обветренного извеÑ�тнÑ�ка", + "block.create.weathered_limestone_pillar": "Колонна из обветренного известняка", "block.create.zinc_block": "UNLOCALIZED: Zinc Block", "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", @@ -347,7 +347,7 @@ "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", - "item.create.belt_connector": "МеханичеÑ�каÑ� лента", + "item.create.belt_connector": "Механическая лента", "item.create.brass_hand": "UNLOCALIZED: Brass Hand", "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", @@ -363,34 +363,34 @@ "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "UNLOCALIZED: Deforester", - "item.create.dough": "ТеÑ�то", + "item.create.dough": "Тесто", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", - "item.create.empty_schematic": "ПуÑ�таÑ� Ñ�хема", + "item.create.empty_schematic": "Пустая схема", "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "Фильтр", + "item.create.filter": "Фильтр", "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_blockzapper": "Портативный размещатель блоков", + "item.create.handheld_blockzapper": "Портативный размещатель блоков", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", - "item.create.iron_sheet": "ЖелезнаÑ� плаÑ�тина", + "item.create.iron_sheet": "Железная пластина", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Пропеллер", + "item.create.propeller": "Пропеллер", "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", - "item.create.rose_quartz": "Розовый Кварц", + "item.create.rose_quartz": "Розовый Кварц", "item.create.sand_paper": "UNLOCALIZED: Sand Paper", - "item.create.schematic": "Схема", - "item.create.schematic_and_quill": "Схема и перо", + "item.create.schematic": "Схема", + "item.create.schematic_and_quill": "Схема и перо", "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.tree_fertilizer": "Удобрение длÑ� деревьев", + "item.create.tree_fertilizer": "Удобрение для деревьев", "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "ПоÑ�ох Ñ�имметрии", + "item.create.wand_of_symmetry": "Посох симметрии", "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", "item.create.whisk": "UNLOCALIZED: Whisk", "item.create.wrench": "UNLOCALIZED: Wrench", @@ -487,94 +487,94 @@ "itemGroup.create.base": "UNLOCALIZED: Create", "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s был переработан дробильными колёÑ�ами", - "death.attack.create.fan_fire": "%1$s Ñ�горел заживо от горÑ�чего воздуха.", - "death.attack.create.fan_lava": "%1$s Ñ�горел заживо от лавового вентилÑ�тора", - "death.attack.create.mechanical_drill": "%1$s был проколот механичеÑ�ким буром", + "death.attack.create.crush": "%1$s был переработан дробильными колёсами", + "death.attack.create.fan_fire": "%1$s сгорел заживо от горячего воздуха.", + "death.attack.create.fan_lava": "%1$s сгорел заживо от лавового вентилятора", + "death.attack.create.mechanical_drill": "%1$s был проколот механическим буром", "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by Mechanical mechanical_saw", "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "Дробление", + "create.recipe.crushing": "Дробление", "create.recipe.milling": "UNLOCALIZED: Milling", - "create.recipe.splashing": "Промывка вентилÑ�тором", - "create.recipe.splashing.fan": "ВентилÑ�тор за проточной водой", - "create.recipe.smoking_via_fan": "Копчение вентилÑ�тором", - "create.recipe.smoking_via_fan.fan": "ВентилÑ�тор за огнём", - "create.recipe.blasting_via_fan": "Плавление вентилÑ�тором", - "create.recipe.blasting_via_fan.fan": "ВентелÑ�тор за лавой", - "create.recipe.pressing": "МеханичеÑ�кий преÑ�Ñ�", + "create.recipe.splashing": "Промывка вентилятором", + "create.recipe.splashing.fan": "Вентилятор за проточной водой", + "create.recipe.smoking_via_fan": "Копчение вентилятором", + "create.recipe.smoking_via_fan.fan": "Вентилятор за огнём", + "create.recipe.blasting_via_fan": "Плавление вентилятором", + "create.recipe.blasting_via_fan.fan": "Вентелятор за лавой", + "create.recipe.pressing": "Механический пресс", "create.recipe.mixing": "UNLOCALIZED: Mixing", "create.recipe.packing": "UNLOCALIZED: Compacting", "create.recipe.mechanical_sawing": "UNLOCALIZED: mechanical_sawing", "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.blockzapper_upgrade": "Портативный размещатель блоков", + "create.recipe.blockzapper_upgrade": "Портативный размещатель блоков", "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", "create.recipe.mystery_conversion": "UNLOCALIZED: Chromatic Metamorphosis", "create.recipe.processing.catalyst": "UNLOCALIZED: Catalyst", - "create.recipe.processing.chance": "%1$s%% шанÑ� выпадениÑ�", + "create.recipe.processing.chance": "%1$s%% шанс выпадения", "create.recipe.processing.chanceToReturn": "UNLOCALIZED: %1$s%% Chance to Return", - "create.generic.range": "Зона", - "create.generic.radius": "РадиуÑ�", + "create.generic.range": "Зона", + "create.generic.radius": "Радиус", "create.generic.width": "UNLOCALIZED: Width", "create.generic.height": "UNLOCALIZED: Height", "create.generic.length": "UNLOCALIZED: Length", - "create.generic.speed": "СкороÑ�Ñ‚ÑŒ", - "create.generic.delay": "Задержка", - "create.generic.unit.ticks": "тик", - "create.generic.unit.seconds": "Ñ�ек", - "create.generic.unit.minutes": "мин", + "create.generic.speed": "Скорость", + "create.generic.delay": "Задержка", + "create.generic.unit.ticks": "тик", + "create.generic.unit.seconds": "сек", + "create.generic.unit.minutes": "мин", "create.generic.unit.rpm": "UNLOCALIZED: RPM", "create.generic.unit.stress": "UNLOCALIZED: su", "create.generic.unit.degrees": "UNLOCALIZED: °", - "create.action.scroll": "КолМыши", - "create.action.confirm": "Подтвердить", - "create.action.abort": "Отменить", - "create.action.saveToFile": "Сохранить", - "create.action.discard": "СброÑ�ить", + "create.action.scroll": "КолМыши", + "create.action.confirm": "Подтвердить", + "create.action.abort": "Отменить", + "create.action.saveToFile": "Сохранить", + "create.action.discard": "Сбросить", - "create.keyinfo.toolmenu": "ФокуÑ�ировка меню иÑ�трументов", + "create.keyinfo.toolmenu": "Фокусировка меню иструментов", "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - "create.gui.scrollInput.defaultTitle": "Выберите:", - "create.gui.scrollInput.scrollToModify": "КолМыши, чтобы изменить", + "create.gui.scrollInput.defaultTitle": "Выберите:", + "create.gui.scrollInput.scrollToModify": "КолМыши, чтобы изменить", "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "КолМыши, чтобы выделить", - "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift, чтобы прокручивать быÑ�трее", - "create.gui.toolmenu.focusKey": "Зажмите [%1$s], чтобы Ñ�фокуÑ�ироватьÑ�Ñ�", - "create.gui.toolmenu.cycle": "[КолМыши] , чтобы выбрать", - "create.gui.symmetryWand.mirrorType": "Зеркало", - "create.gui.symmetryWand.orientation": "ОриентациÑ�", + "create.gui.scrollInput.scrollToSelect": "КолМыши, чтобы выделить", + "create.gui.scrollInput.shiftScrollsFaster": "Зажмите Shift, чтобы прокручивать быстрее", + "create.gui.toolmenu.focusKey": "Зажмите [%1$s], чтобы сфокусироваться", + "create.gui.toolmenu.cycle": "[КолМыши] , чтобы выбрать", + "create.gui.symmetryWand.mirrorType": "Зеркало", + "create.gui.symmetryWand.orientation": "Ориентация", - "create.symmetry.mirror.plane": "Линейно", - "create.symmetry.mirror.doublePlane": "ПрÑ�моугольно", - "create.symmetry.mirror.triplePlane": "ВоÑ�ьмиугольно", + "create.symmetry.mirror.plane": "Линейно", + "create.symmetry.mirror.doublePlane": "Прямоугольно", + "create.symmetry.mirror.triplePlane": "Восьмиугольно", - "create.orientation.orthogonal": "ПерпендикулÑ�рно", - "create.orientation.diagonal": "Диагонально", - "create.orientation.horizontal": "Горизонтально", - "create.orientation.alongZ": "По оÑ�и Z", - "create.orientation.alongX": "По оÑ�и X", + "create.orientation.orthogonal": "Перпендикулярно", + "create.orientation.diagonal": "Диагонально", + "create.orientation.horizontal": "Горизонтально", + "create.orientation.alongZ": "По оси Z", + "create.orientation.alongX": "По оси X", - "create.gui.blockzapper.title": "Порт. размещ. блоков", - "create.gui.blockzapper.replaceMode": "Режим замены", - "create.gui.blockzapper.searchDiagonal": "Следовать диагоналÑ�м", - "create.gui.blockzapper.searchFuzzy": "Игнорировать материальные границы", - "create.gui.blockzapper.range": "РадиуÑ�", + "create.gui.blockzapper.title": "Порт. размещ. блоков", + "create.gui.blockzapper.replaceMode": "Режим замены", + "create.gui.blockzapper.searchDiagonal": "Следовать диагоналям", + "create.gui.blockzapper.searchFuzzy": "Игнорировать материальные границы", + "create.gui.blockzapper.range": "Радиус", "create.gui.blockzapper.needsUpgradedAmplifier": "UNLOCALIZED: Requires Upgraded Amplifier", - "create.gui.blockzapper.patternSection": "Шаблоны", - "create.gui.blockzapper.pattern.solid": "Сплошной", - "create.gui.blockzapper.pattern.checkered": "ШахматнаÑ� доÑ�ка", - "create.gui.blockzapper.pattern.inversecheckered": "ОбратнаÑ� шахматнаÑ� доÑ�ка", - "create.gui.blockzapper.pattern.chance25": "25% покрытиÑ�", - "create.gui.blockzapper.pattern.chance50": "50% покрытиÑ�", - "create.gui.blockzapper.pattern.chance75": "75% покрытиÑ�", + "create.gui.blockzapper.patternSection": "Шаблоны", + "create.gui.blockzapper.pattern.solid": "Сплошной", + "create.gui.blockzapper.pattern.checkered": "Шахматная доска", + "create.gui.blockzapper.pattern.inversecheckered": "Обратная шахматная доска", + "create.gui.blockzapper.pattern.chance25": "25% покрытия", + "create.gui.blockzapper.pattern.chance50": "50% покрытия", + "create.gui.blockzapper.pattern.chance75": "75% покрытия", "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Worldshaper", "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", @@ -594,18 +594,18 @@ "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.blockzapper.usingBlock": "Материал: %1$s", - "create.blockzapper.componentUpgrades": "УлучшениÑ� компонентов:", - "create.blockzapper.component.body": "КорпуÑ�", - "create.blockzapper.component.amplifier": "УÑ�илитель", - "create.blockzapper.component.accelerator": "УÑ�коритель", - "create.blockzapper.component.retriever": "Коллектор", - "create.blockzapper.component.scope": "Прицел", - "create.blockzapper.componentTier.none": "Ð�ичего", + "create.blockzapper.usingBlock": "Материал: %1$s", + "create.blockzapper.componentUpgrades": "Улучшения компонентов:", + "create.blockzapper.component.body": "Корпус", + "create.blockzapper.component.amplifier": "Усилитель", + "create.blockzapper.component.accelerator": "Ускоритель", + "create.blockzapper.component.retriever": "Коллектор", + "create.blockzapper.component.scope": "Прицел", + "create.blockzapper.componentTier.none": "Ничего", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "ЛКМ на блок, чтобы выбрать материал", - "create.blockzapper.empty": "ЗакончилиÑ�ÑŒ блоки!", + "create.blockzapper.leftClickToSet": "ЛКМ на блок, чтобы выбрать материал", + "create.blockzapper.empty": "Закончились блоки!", "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", @@ -619,9 +619,9 @@ "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.logistics.filter": "Фильтр", - "create.logistics.firstFrequency": "ЧаÑ�Ñ‚. #1", - "create.logistics.secondFrequency": "ЧаÑ�Ñ‚. #2", + "create.logistics.filter": "Фильтр", + "create.logistics.firstFrequency": "Част. #1", + "create.logistics.secondFrequency": "Част. #2", "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", @@ -635,15 +635,15 @@ "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "Гибкий Ñ�щик", - "create.gui.adjustable_crate.storageSpace": "Обьём хранилища", - "create.gui.stockpile_switch.title": "СенÑ�ор хранилища", - "create.gui.stockpile_switch.lowerLimit": "Ð�ижний порог", - "create.gui.stockpile_switch.upperLimit": "Верхний порог", - "create.gui.stockpile_switch.startAt": "Включить на", - "create.gui.stockpile_switch.startAbove": "Включить выше", - "create.gui.stockpile_switch.stopAt": "Отключить на", - "create.gui.stockpile_switch.stopBelow": "Отключить ниже", + "create.gui.adjustable_crate.title": "Гибкий ящик", + "create.gui.adjustable_crate.storageSpace": "Обьём хранилища", + "create.gui.stockpile_switch.title": "Сенсор хранилища", + "create.gui.stockpile_switch.lowerLimit": "Нижний порог", + "create.gui.stockpile_switch.upperLimit": "Верхний порог", + "create.gui.stockpile_switch.startAt": "Включить на", + "create.gui.stockpile_switch.startAbove": "Включить выше", + "create.gui.stockpile_switch.stopAt": "Отключить на", + "create.gui.stockpile_switch.stopBelow": "Отключить ниже", "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", @@ -659,104 +659,104 @@ "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - "create.schematicAndQuill.dimensions": "Размер Ñ�хемы: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "ПерваÑ� позициÑ� уÑ�тановлена.", - "create.schematicAndQuill.secondPos": "ВтораÑ� позициÑ� уÑ�тановлена.", - "create.schematicAndQuill.noTarget": "Зажмите [Ctrl], чтобы выделÑ�Ñ‚ÑŒ блоки воздуха.", - "create.schematicAndQuill.abort": "Выделение удалено.", - "create.schematicAndQuill.prompt": "Введите название длÑ� новой Ñ�хемы:", - "create.schematicAndQuill.fallbackName": "МоÑ� Ñ�хема", - "create.schematicAndQuill.saved": "Сохранено как %1$s", + "create.schematicAndQuill.dimensions": "Размер схемы: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Первая позиция установлена.", + "create.schematicAndQuill.secondPos": "Вторая позиция установлена.", + "create.schematicAndQuill.noTarget": "Зажмите [Ctrl], чтобы выделять блоки воздуха.", + "create.schematicAndQuill.abort": "Выделение удалено.", + "create.schematicAndQuill.prompt": "Введите название для новой схемы:", + "create.schematicAndQuill.fallbackName": "Моя схема", + "create.schematicAndQuill.saved": "Сохранено как %1$s", - "create.schematic.invalid": "[!] Ð�едейÑ�твительный предмет - иÑ�пользуйте Ñ�тол длÑ� Ñ�хем", - "create.schematic.position": "ПозициÑ�", - "create.schematic.rotation": "Вращение", - "create.schematic.rotation.none": "Ð�ичего", - "create.schematic.rotation.cw90": "90° по чаÑ�овой", - "create.schematic.rotation.cw180": "180° по чаÑ�овой", - "create.schematic.rotation.cw270": "270° по чаÑ�овой", - "create.schematic.mirror": "Отразить", - "create.schematic.mirror.none": "Ð�ичего", - "create.schematic.mirror.frontBack": "Перед-зад", - "create.schematic.mirror.leftRight": "Лево-право", - "create.schematic.tool.deploy": "РазмеÑ�тить", - "create.schematic.tool.move": "Сдвиг по XZ", - "create.schematic.tool.movey": "Сдвиг по Y", - "create.schematic.tool.rotate": "Повернуть", - "create.schematic.tool.print": "Ð�апечатать", - "create.schematic.tool.flip": "Отразить", - "create.schematic.tool.deploy.description.0": "Размещает конÑ�трукцию.", - "create.schematic.tool.deploy.description.1": "ПКМ на земле длÑ� размещениÑ�.", - "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl] длÑ� перемещениÑ� на фикÑ�. диÑ�танции.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-КолМыши длÑ� изменениÑ� диÑ�танции.", - "create.schematic.tool.move.description.0": "Сдвигает Ñ�хему по горизонтали", - "create.schematic.tool.move.description.1": "Смотрите на Ñ�хему и [CTRL]-КолМыши длÑ� Ñ�двига.", + "create.schematic.invalid": "[!] Недействительный предмет - используйте стол для схем", + "create.schematic.position": "Позиция", + "create.schematic.rotation": "Вращение", + "create.schematic.rotation.none": "Ничего", + "create.schematic.rotation.cw90": "90° по часовой", + "create.schematic.rotation.cw180": "180° по часовой", + "create.schematic.rotation.cw270": "270° по часовой", + "create.schematic.mirror": "Отразить", + "create.schematic.mirror.none": "Ничего", + "create.schematic.mirror.frontBack": "Перед-зад", + "create.schematic.mirror.leftRight": "Лево-право", + "create.schematic.tool.deploy": "Разместить", + "create.schematic.tool.move": "Сдвиг по XZ", + "create.schematic.tool.movey": "Сдвиг по Y", + "create.schematic.tool.rotate": "Повернуть", + "create.schematic.tool.print": "Напечатать", + "create.schematic.tool.flip": "Отразить", + "create.schematic.tool.deploy.description.0": "Размещает конструкцию.", + "create.schematic.tool.deploy.description.1": "ПКМ на земле для размещения.", + "create.schematic.tool.deploy.description.2": "Зажмите [Ctrl] для перемещения на фикс. дистанции.", + "create.schematic.tool.deploy.description.3": "[Ctrl]-КолМыши для изменения дистанции.", + "create.schematic.tool.move.description.0": "Сдвигает схему по горизонтали", + "create.schematic.tool.move.description.1": "Смотрите на схему и [CTRL]-КолМыши для сдвига.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Сдвигает Ñ�хему по вертикали", - "create.schematic.tool.movey.description.1": "[CTRL]-КолМыши длÑ� Ñ�двига вверх/вниз", + "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали", + "create.schematic.tool.movey.description.1": "[CTRL]-КолМыши для сдвига вверх/вниз", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Вращает Ñ�хему вокруг центра.", - "create.schematic.tool.rotate.description.1": "[CTRL]-КолМыши длÑ� поворота на 90°", + "create.schematic.tool.rotate.description.0": "Вращает схему вокруг центра.", + "create.schematic.tool.rotate.description.1": "[CTRL]-КолМыши для поворота на 90°", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Моментально размещает Ñ�труктуру в мире", - "create.schematic.tool.print.description.1": "[ПКМ] длÑ� размещениÑ� в текущем меÑ�те.", - "create.schematic.tool.print.description.2": "Только длÑ� креативного режима.", + "create.schematic.tool.print.description.0": "Моментально размещает структуру в мире", + "create.schematic.tool.print.description.1": "[ПКМ] для размещения в текущем месте.", + "create.schematic.tool.print.description.2": "Только для креативного режима.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Отражает Ñ�хему вдоль выбранной Ñ�тороны.", - "create.schematic.tool.flip.description.1": "Смотрите на Ñ�хему и [CTRL]-КолМыши длÑ� отражениÑ�.", + "create.schematic.tool.flip.description.0": "Отражает схему вдоль выбранной стороны.", + "create.schematic.tool.flip.description.1": "Смотрите на схему и [CTRL]-КолМыши для отражения.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "СинхронизациÑ�...", - "create.schematics.uploadTooLarge": "Схема Ñ�лишком большаÑ�", - "create.schematics.maxAllowedSize": "МакÑ�имальный размер файла Ñ�хемы:", + "create.schematics.synchronizing": "Синхронизация...", + "create.schematics.uploadTooLarge": "Схема слишком большая", + "create.schematics.maxAllowedSize": "Максимальный размер файла схемы:", - "create.gui.schematicTable.title": "Стол длÑ� Ñ�хем", - "create.gui.schematicTable.availableSchematics": "ДоÑ�тупные Ñ�хемы", - "create.gui.schematicTable.noSchematics": "Ð�ет Ñ�охранённых Ñ�хем", - "create.gui.schematicTable.uploading": "Загрузка...", - "create.gui.schematicTable.finished": "Загрузка завершена!", - "create.gui.schematicannon.title": "Схемопушка", - "create.gui.schematicannon.settingsTitle": "Параметры размещениÑ�", - "create.gui.schematicannon.listPrinter": "РаÑ�печатать Ñ�пиÑ�ок материалов", - "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Ð’Ñ‹Ñ�трелов оÑ�талоÑ�ÑŒ: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "C запаÑ�ом: %1$s", - "create.gui.schematicannon.optionEnabled": "Включена", - "create.gui.schematicannon.optionDisabled": "Отключена", - "create.gui.schematicannon.option.dontReplaceSolid": "Ð�е заменÑ�Ñ‚ÑŒ целые блоки", - "create.gui.schematicannon.option.replaceWithSolid": "ЗаменÑ�Ñ‚ÑŒ целые блоки целыми блоками", - "create.gui.schematicannon.option.replaceWithAny": "ЗаменÑ�Ñ‚ÑŒ целые блоки чем угодно", - "create.gui.schematicannon.option.replaceWithEmpty": "ЗаменÑ�Ñ‚ÑŒ целые блоки пуÑ�тотой", - "create.gui.schematicannon.option.skipMissing": "ПропуÑ�кать отÑ�утÑ�твующие блоки", - "create.gui.schematicannon.option.skipTileEntities": "Защита от Ñ�ущноÑ�тей", - "create.gui.schematicannon.option.skipMissing.description": "ЕÑ�ли Ñ�хемопушка не найдёт нужный блок, то она продолжит в Ñ�ледующем меÑ�те.", - "create.gui.schematicannon.option.skipTileEntities.description": "Схемопушка будет избегать замены блоков Ñ� данными, например Ñ�ундуки.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Схемопушка никогда не заменит целые блоки, только не целые и воздух.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Схемопушка будет заменÑ�Ñ‚ÑŒ целый блок только в Ñ�лучае, еÑ�ли в Ñ�хеме в Ñ�том меÑ�те раÑ�положен целый блок.", - "create.gui.schematicannon.option.replaceWithAny.description": "Схемопушка будет заменÑ�Ñ‚ÑŒ целые блоки, еÑ�ли в Ñ�хеме в Ñ�том меÑ�те еÑ�Ñ‚ÑŒ что-либо.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Схемопушка отчиÑ�тит вÑ�е блоки, включаÑ� замену на воздух.", + "create.gui.schematicTable.title": "Стол для схем", + "create.gui.schematicTable.availableSchematics": "Доступные схемы", + "create.gui.schematicTable.noSchematics": "Нет сохранённых схем", + "create.gui.schematicTable.uploading": "Загрузка...", + "create.gui.schematicTable.finished": "Загрузка завершена!", + "create.gui.schematicannon.title": "Схемопушка", + "create.gui.schematicannon.settingsTitle": "Параметры размещения", + "create.gui.schematicannon.listPrinter": "Распечатать список материалов", + "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "C запасом: %1$s", + "create.gui.schematicannon.optionEnabled": "Включена", + "create.gui.schematicannon.optionDisabled": "Отключена", + "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", + "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", + "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", + "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", + "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", + "create.gui.schematicannon.option.skipTileEntities": "Защита от сущностей", + "create.gui.schematicannon.option.skipMissing.description": "Если схемопушка не найдёт нужный блок, то она продолжит в следующем месте.", + "create.gui.schematicannon.option.skipTileEntities.description": "Схемопушка будет избегать замены блоков с данными, например сундуки.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Схемопушка никогда не заменит целые блоки, только не целые и воздух.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Схемопушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", + "create.gui.schematicannon.option.replaceWithAny.description": "Схемопушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Схемопушка отчистит все блоки, включая замену на воздух.", - "create.schematicannon.status.idle": "БездейÑ�твует", - "create.schematicannon.status.ready": "Готова", - "create.schematicannon.status.running": "Работает", - "create.schematicannon.status.finished": "Закончила", - "create.schematicannon.status.paused": "ПриоÑ�тановлена", - "create.schematicannon.status.stopped": "ОÑ�тановлена", - "create.schematicannon.status.noGunpowder": "КончилÑ�Ñ� порох", - "create.schematicannon.status.targetNotLoaded": "Блок не загружен", - "create.schematicannon.status.targetOutsideRange": "Цель Ñ�лишком далеко", - "create.schematicannon.status.searching": "ПоиÑ�к", - "create.schematicannon.status.skipping": "ПропуÑ�к", - "create.schematicannon.status.missingBlock": "Ð�ет блока:", - "create.schematicannon.status.placing": "Размещение", - "create.schematicannon.status.clearing": "ОтчиÑ�тка", - "create.schematicannon.status.schematicInvalid": "Схема недейÑ�твительна", - "create.schematicannon.status.schematicNotPlaced": "Схема не размещена", - "create.schematicannon.status.schematicExpired": "Срок дейÑ�твиÑ� файла Ñ�хемы иÑ�тек", + "create.schematicannon.status.idle": "Бездействует", + "create.schematicannon.status.ready": "Готова", + "create.schematicannon.status.running": "Работает", + "create.schematicannon.status.finished": "Закончила", + "create.schematicannon.status.paused": "Приостановлена", + "create.schematicannon.status.stopped": "Остановлена", + "create.schematicannon.status.noGunpowder": "Кончился порох", + "create.schematicannon.status.targetNotLoaded": "Блок не загружен", + "create.schematicannon.status.targetOutsideRange": "Цель слишком далеко", + "create.schematicannon.status.searching": "Поиск", + "create.schematicannon.status.skipping": "Пропуск", + "create.schematicannon.status.missingBlock": "Нет блока:", + "create.schematicannon.status.placing": "Размещение", + "create.schematicannon.status.clearing": "Отчистка", + "create.schematicannon.status.schematicInvalid": "Схема недействительна", + "create.schematicannon.status.schematicNotPlaced": "Схема не размещена", + "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истек", "create.gui.filter.blacklist": "UNLOCALIZED: Blacklist", "create.gui.filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Blacklist accepts everything.", @@ -793,8 +793,8 @@ "create.gui.attribute_filter.blacklist.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - "create.tooltip.holdKey": "Зажмите [%1$s]", - "create.tooltip.holdKeyOrKey": "Зажмите [%1$s] или [%2$s]", + "create.tooltip.holdKey": "Зажмите [%1$s]", + "create.tooltip.holdKeyOrKey": "Зажмите [%1$s] или [%2$s]", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", @@ -856,24 +856,24 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по наÑ�троенным плоÑ�коÑ�Ñ‚Ñ�м.", - "item.create.wand_of_symmetry.tooltip.condition1": "Ð�а панели быÑ�трого доÑ�тупа", - "item.create.wand_of_symmetry.tooltip.behaviour1": "ОÑ�таётÑ�Ñ� активным", - "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", - "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", - "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадÑ�Ñ�ÑŒ", - "item.create.wand_of_symmetry.tooltip.action3": "Открывает _Меню_ _наÑ�тройки_", + "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", + "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", + "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", + "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", + "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", + "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадясь", + "item.create.wand_of_symmetry.tooltip.action3": "Открывает _Меню_ _настройки_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Ð�овейшее уÑ�тройÑ�тво длÑ� размещениÑ� или замены блоков на раÑ�Ñ�тоÑ�нии.", - "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_blockzapper.tooltip.action1": "УÑ�танавливает выбранный блок как материал.", - "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", - "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", - "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадÑ�Ñ�ÑŒ", - "item.create.handheld_blockzapper.tooltip.action3": "Открывает _Меню_ _наÑ�тройки_", + "item.create.handheld_blockzapper.tooltip.summary": "Новейшее устройство для размещения или замены блоков на расстоянии.", + "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", + "item.create.handheld_blockzapper.tooltip.action1": "Устанавливает выбранный блок как материал.", + "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", + "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", + "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадясь", + "item.create.handheld_blockzapper.tooltip.action3": "Открывает _Меню_ _настройки_", "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain_ _features_.", @@ -885,9 +885,9 @@ "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration_ _Interface_", "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "СильнаÑ� Ñ�меÑ�ÑŒ минералов, подходÑ�щаÑ� обычным видам деревьев.", - "item.create.tree_fertilizer.tooltip.condition1": "При иÑ�пользовании на Ñ�аженце", - "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревьÑ� незавиÑ�имо от Ñ�вободного проÑ�транÑ�тва", + "item.create.tree_fertilizer.tooltip.summary": "Сильная смесь минералов, подходящая обычным видам деревьев.", + "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", + "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья независимо от свободного пространства", "item.create.deforester.tooltip": "UNLOCALIZED: DEFORESTER", "item.create.deforester.tooltip.summary": "UNLOCALIZED: A _radiant_ _axe_ able to chop down trees in a split second.", @@ -912,70 +912,70 @@ "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration_ _interface_.", "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� крафта и запиÑ�и в _Столе_ _длÑ�_ _Ñ�хем._", + "item.create.empty_schematic.tooltip.summary": "Используется для крафта и записи в _Столе_ _для_ _схем._", "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Хранит Ñ�труктуру длÑ� размещениÑ�. РаÑ�положите голограмму и иÑ�пользуйте _Схемопушку_ длÑ� поÑ�троениÑ� голограммы.", - "item.create.schematic.tooltip.condition1": "Когда в руке", - "item.create.schematic.tooltip.behaviour1": "Может быть размещена Ñ� помошью инÑ�трументов на Ñ�кране", - "item.create.schematic.tooltip.control1": "ПКМ крадÑ�Ñ�ÑŒ", - "item.create.schematic.tooltip.action1": "Открывает _Меню_ длÑ� ввода точных _Координат._", + "item.create.schematic.tooltip.summary": "Хранит структуру для размещения. Расположите голограмму и используйте _Схемопушку_ для построения голограммы.", + "item.create.schematic.tooltip.condition1": "Когда в руке", + "item.create.schematic.tooltip.behaviour1": "Может быть размещена с помошью инструментов на экране", + "item.create.schematic.tooltip.control1": "ПКМ крадясь", + "item.create.schematic.tooltip.action1": "Открывает _Меню_ для ввода точных _Координат._", "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� Ñ�охранениÑ� Ñ�труктуры в .nbt файл.", - "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две точки Ñ� помощью ПКМ", - "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-КолМыши_ на Ñ�торону длÑ� изменениÑ� размера. ПКМ еще раз длÑ� Ñ�охранениÑ�.", - "item.create.schematic_and_quill.tooltip.control1": "ПКМ", - "item.create.schematic_and_quill.tooltip.action1": "Выбрать точку / Сохранить", - "item.create.schematic_and_quill.tooltip.control2": "С зажатым Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Выбрать точки в _воздухе._ _КолМыши_ длÑ� изменениÑ� раÑ�Ñ�тоÑ�ниÑ�.", - "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадÑ�Ñ�ÑŒ", - "item.create.schematic_and_quill.tooltip.action3": "_СбраÑ�ывает_ и _УдалÑ�ет_ выделение.", + "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в .nbt файл.", + "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две точки с помощью ПКМ", + "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-КолМыши_ на сторону для изменения размера. ПКМ еще раз для сохранения.", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.action1": "Выбрать точку / Сохранить", + "item.create.schematic_and_quill.tooltip.control2": "С зажатым Ctrl", + "item.create.schematic_and_quill.tooltip.action2": "Выбрать точки в _воздухе._ _КолМыши_ для изменения расстояния.", + "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадясь", + "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _Удаляет_ выделение.", "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "СтрелÑ�ет блоками длÑ� воÑ�Ñ�озданиÑ� размещенной _Схемы._ ИÑ�пользует блоки из Ñ�оÑ�едних инвентарей и _Порох_ в качеÑ�тве топлива.", - "block.create.schematicannon.tooltip.control1": "ПКМ по пушке", - "block.create.schematicannon.tooltip.action1": "Открывает _Меню_", + "block.create.schematicannon.tooltip.summary": "Стреляет блоками для воссоздания размещенной _Схемы._ Использует блоки из соседних инвентарей и _Порох_ в качестве топлива.", + "block.create.schematicannon.tooltip.control1": "ПКМ по пушке", + "block.create.schematicannon.tooltip.action1": "Открывает _Меню_", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "ЗапиÑ�ывает Ñ�охраненные Ñ�хемы на _ПуÑ�тые_ _Ñ�хемы._", - "block.create.schematic_table.tooltip.condition1": "ЕÑ�ли положить пуÑ�тую Ñ�хему.", - "block.create.schematic_table.tooltip.behaviour1": "ЗапиÑ�ывает выбранный файл из папки Ñ�о Ñ�хемами", + "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схемы на _Пустые_ _схемы._", + "block.create.schematic_table.tooltip.condition1": "Если положить пустую схему.", + "block.create.schematic_table.tooltip.behaviour1": "Записывает выбранный файл из папки со схемами", "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "_Передаёт_ _вращение_ по прÑ�мой.", + "block.create.shaft.tooltip.summary": "_Передаёт_ _вращение_ по прямой.", "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": "_Передаёт_ _вращение_ по прÑ�мой и к приÑ�оеденённым _ШеÑ�тернÑ�м._", + "block.create.cogwheel.tooltip.summary": "_Передаёт_ _вращение_ по прямой и к присоеденённым _Шестерням._", "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "УвеличеннаÑ� верÑ�иÑ� _ШеÑ�терни,_ позволÑ�ющаÑ� _изменÑ�Ñ‚ÑŒ_ _Ñ�короÑ�Ñ‚ÑŒ_ _вращениÑ�_ при Ñ�оединении Ñ� меньшим аналогом.", + "block.create.large_cogwheel.tooltip.summary": "Увеличенная версия _Шестерни,_ позволяющая _изменять_ _скорость_ _вращения_ при соединении с меньшим аналогом.", "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "_Передаёт_ _вращение_ по прÑ�мой. Подходит длÑ� передачи вращениÑ� через Ñ�тены.", + "block.create.encased_shaft.tooltip.summary": "_Передаёт_ _вращение_ по прямой. Подходит для передачи вращения через стены.", "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "_Передаёт_ _вращение_ в _4_ _направлениÑ�Ñ…._ РеверÑ�ирует прÑ�мые Ñ�оединениÑ�.", + "block.create.gearbox.tooltip.summary": "_Передаёт_ _вращение_ в _4_ _направлениях._ Реверсирует прямые соединения.", "item.create.vertical_gearbox.tooltip": "UNLOCALIZED: VERTICAL GEARBOX", "item.create.vertical_gearbox.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ in _four_ _directions_ Reverses straight connections.", "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "_Переключатель_ _вращениÑ�_ длÑ� подÑ�оединенных валов.", - "block.create.gearshift.tooltip.condition1": "Когда запитан", - "block.create.gearshift.tooltip.behaviour1": "_РеверÑ�ирует_ выходÑ�щее _вращение._", + "block.create.gearshift.tooltip.summary": "_Переключатель_ _вращения_ для подсоединенных валов.", + "block.create.gearshift.tooltip.condition1": "Когда запитан", + "block.create.gearshift.tooltip.behaviour1": "_Реверсирует_ выходящее _вращение._", "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "_Переключатель_ _вращениÑ�_ длÑ� подÑ�оединенных валов.", - "block.create.clutch.tooltip.condition1": "Когда запитан", - "block.create.clutch.tooltip.behaviour1": "_ОÑ�танавливает_ подачу вращениÑ� на другую Ñ�торону.", + "block.create.clutch.tooltip.summary": "_Переключатель_ _вращения_ для подсоединенных валов.", + "block.create.clutch.tooltip.condition1": "Когда запитан", + "block.create.clutch.tooltip.behaviour1": "_Останавливает_ подачу вращения на другую сторону.", "block.create.encased_belt.tooltip": "ENCASED_BELT", - "block.create.encased_belt.tooltip.summary": "_Передаёт_ _вращение_ через Ñ�ебÑ� и к приÑ�оеденённому _Ленточному_ _приводу._", - "block.create.encased_belt.tooltip.condition1": "При приÑ�оеденёнии к другому Ленточному приводу", - "block.create.encased_belt.tooltip.behaviour1": "ПриÑ�оеденённый блок будет иметь те же _Ñ�короÑ�Ñ‚ÑŒ_ и _направление_ _вращениÑ�._ ПриÑ�оеденённые ленты не обÑ�заны Ñ�мотреть в ту же Ñ�торону.", + "block.create.encased_belt.tooltip.summary": "_Передаёт_ _вращение_ через себя и к присоеденённому _Ленточному_ _приводу._", + "block.create.encased_belt.tooltip.condition1": "При присоеденёнии к другому Ленточному приводу", + "block.create.encased_belt.tooltip.behaviour1": "Присоеденённый блок будет иметь те же _скорость_ и _направление_ _вращения._ Присоеденённые ленты не обязаны смотреть в ту же сторону.", "block.create.adjustable_pulley.tooltip": "UNLOCALIZED: ANALOG BELT PULLEY", "block.create.adjustable_pulley.tooltip.summary": "UNLOCALIZED: _Relays_ _Rotation_ through its block and to attached _Encased_ _Belts_. Attached encased belts will _rotate_ _faster_ based on the _analog_ _redstone_ _signal_ this block receives.", @@ -983,11 +983,11 @@ "block.create.adjustable_pulley.tooltip.behaviour1": "UNLOCALIZED: Without a signal, it will _not_ _speed_ _up_ connected belts. With a full strength signal connected belt, speed _doubles_.", "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "СоединÑ�ет _2_ _Вала_ Ñ� помощью _МеханичеÑ�кой_ _ленты._ Соединённые валы будут иметь одинаковые _Ñ�короÑ�Ñ‚ÑŒ_ и _направление_ _вращениÑ�._ Лента может Ñ�лужить как _Конвейер_ длÑ� _СущеÑ�тв._", - "item.create.belt_connector.tooltip.control1": "ПКМ по валу", - "item.create.belt_connector.tooltip.action1": "Выбирает вал в качеÑ�тве одного шкива ленты. Оба выбранных вала должны быть _на_ _одной_ _линии_ _вертикально,_ _горизонтально_ либо _диагонально_ по направлению ленты.", - "item.create.belt_connector.tooltip.control2": "ПКМ крадÑ�Ñ�ÑŒ", - "item.create.belt_connector.tooltip.action2": "_СбраÑ�ывает_ первый выбранный шкив длÑ� ленты.", + "item.create.belt_connector.tooltip.summary": "Соединяет _2_ _Вала_ с помощью _Механической_ _ленты._ Соединённые валы будут иметь одинаковые _скорость_ и _направление_ _вращения._ Лента может служить как _Конвейер_ для _Существ._", + "item.create.belt_connector.tooltip.control1": "ПКМ по валу", + "item.create.belt_connector.tooltip.action1": "Выбирает вал в качестве одного шкива ленты. Оба выбранных вала должны быть _на_ _одной_ _линии_ _вертикально,_ _горизонтально_ либо _диагонально_ по направлению ленты.", + "item.create.belt_connector.tooltip.control2": "ПКМ крадясь", + "item.create.belt_connector.tooltip.action2": "_Сбрасывает_ первый выбранный шкив для ленты.", "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic_ _information_.", @@ -1007,16 +1007,16 @@ "block.create.creative_motor.tooltip.summary": "UNLOCALIZED: A configurable source of _Rotational_ _Force_.", "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "ПредоÑ�тавлÑ�ет _Ñ�илу_ _вращениÑ�_ из Ñ�межных _иÑ�точников_ _воды._", + "block.create.water_wheel.tooltip.summary": "Предоставляет _силу_ _вращения_ из смежных _источников_ _воды._", "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "Преобразовывает _Ñ�илу_ _вращениÑ�_ в _воздушный_ _поток_ и обратно. Имеет множеÑ�тво применений.", - "block.create.encased_fan.tooltip.condition1": "При нахождении над огнём", - "block.create.encased_fan.tooltip.behaviour1": "ПредоÑ�тавлÑ�ет _Ñ�илу_ _вращениÑ�_ (должен Ñ�тоÑ�Ñ‚ÑŒ вертикально)", - "block.create.encased_fan.tooltip.condition2": "При вращении", - "block.create.encased_fan.tooltip.behaviour2": "_Толкает_ Ñ�ущеÑ�тв Ñ� одной Ñ�тороны, _притÑ�гивает_ Ñ� другой. Сила и Ñ�короÑ�Ñ‚ÑŒ завиÑ�Ñ�Ñ‚ от входÑ�щего вращениÑ�.", - "block.create.encased_fan.tooltip.condition3": "Когда воздух проходит через Ñ�пециальные блоки", - "block.create.encased_fan.tooltip.behaviour3": "Обрабатывает предметы перед блоком: _вода_ моет, _огонь_ коптит, _лава_ плавит.", + "block.create.encased_fan.tooltip.summary": "Преобразовывает _силу_ _вращения_ в _воздушный_ _поток_ и обратно. Имеет множество применений.", + "block.create.encased_fan.tooltip.condition1": "При нахождении над огнём", + "block.create.encased_fan.tooltip.behaviour1": "Предоставляет _силу_ _вращения_ (должен стоять вертикально)", + "block.create.encased_fan.tooltip.condition2": "При вращении", + "block.create.encased_fan.tooltip.behaviour2": "_Толкает_ существ с одной стороны, _притягивает_ с другой. Сила и скорость зависят от входящего вращения.", + "block.create.encased_fan.tooltip.condition3": "Когда воздух проходит через специальные блоки", + "block.create.encased_fan.tooltip.behaviour3": "Обрабатывает предметы перед блоком: _вода_ моет, _огонь_ коптит, _лава_ плавит.", "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased_ _Fan_ to distribute its effect on Entities in _all_ _directions_.", @@ -1032,7 +1032,7 @@ "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current_ _time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players_ _can_ _sleep_.", "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "Преобразует _Ñ�илу_ _вращениÑ�_ прÑ�миком в морÑ�кую болезнь.", + "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", "block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE", "block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.", @@ -1042,16 +1042,16 @@ "block.create.millstone.tooltip.behaviour2": "UNLOCALIZED: Collects the outputs manually.", "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "Большие вращающиеÑ�Ñ� колеÑ�а, которые _дробÑ�Ñ‚_ вÑ�Ñ‘, что мешает их движению.", - "block.create.crushing_wheel.tooltip.condition1": "При приÑ�оеденении к другому дробильному колеÑ�у", - "block.create.crushing_wheel.tooltip.behaviour1": "Формирует дробильную уÑ�тановку длÑ� обработки различных вещей. Зубцы колёÑ� должны Ñ�оединÑ�Ñ‚ÑŒÑ�Ñ� и двигатьÑ�Ñ� Ñ� _одинаковой_ _Ñ�короÑ�тью_ в _противоположных_ _направлениÑ�Ñ…._", + "block.create.crushing_wheel.tooltip.summary": "Большие вращающиеся колеса, которые _дробят_ всё, что мешает их движению.", + "block.create.crushing_wheel.tooltip.condition1": "При присоеденении к другому дробильному колесу", + "block.create.crushing_wheel.tooltip.behaviour1": "Формирует дробильную установку для обработки различных вещей. Зубцы колёс должны соединяться и двигаться с _одинаковой_ _скоростью_ в _противоположных_ _направлениях._", "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "Мощный поршень длÑ� Ñ�преÑ�Ñ�овываниÑ� предметов под ним. ТребуетÑ�Ñ� поÑ�тоÑ�ннаÑ� _Ñ�ила_ _вращениÑ�._", - "block.create.mechanical_press.tooltip.condition1": "Когда запитан", - "block.create.mechanical_press.tooltip.behaviour1": "_Ð�ачинает_ Ñ�преÑ�Ñ�овывать предметы под ним.", - "block.create.mechanical_press.tooltip.condition2": "При нахождении над механичеÑ�кой лентой", - "block.create.mechanical_press.tooltip.behaviour2": "_Ð�втоматичеÑ�ки_ Ñ�преÑ�Ñ�овывает проходÑ�щие по ленте предметы.", + "block.create.mechanical_press.tooltip.summary": "Мощный поршень для спрессовывания предметов под ним. Требуется постоянная _сила_ _вращения._", + "block.create.mechanical_press.tooltip.condition1": "Когда запитан", + "block.create.mechanical_press.tooltip.behaviour1": "_Начинает_ спрессовывать предметы под ним.", + "block.create.mechanical_press.tooltip.condition2": "При нахождении над механической лентой", + "block.create.mechanical_press.tooltip.behaviour2": "_Автоматически_ спрессовывает проходящие по ленте предметы.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", @@ -1100,26 +1100,26 @@ "block.create.rotation_speed_controller.tooltip.behaviour1": "UNLOCALIZED: Relays incoming rotational force to the wheel, trying to _match_ the _speed_ it is configured to target. The _cogwheel_ has to be _attached_ _on_ _top_ of the controller.", "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "Более продвинутаÑ� верÑ�иÑ� _ПоршнÑ�,_ иÑ�пользующаÑ� _Ñ�илу_ _вращениÑ�_ длÑ� более точного перемещениÑ� приÑ�оединенных конÑ�трукций. _Удлинители_ _поршнÑ�_ Ñ�зади определÑ�ÑŽÑ‚ _длину_ уÑ�тройÑ�тва. Без удлинителей поршень не будет двигатьÑ�Ñ�. ИÑ�пользуйте _ПоÑ�тупательную_ _раму_ длÑ� перемещениÑ� более чем одной линии блоков.", - "block.create.mechanical_piston.tooltip.condition1": "При вращении", - "block.create.mechanical_piston.tooltip.behaviour1": "Ð�ачинает перемещать прикрепленную конÑ�трукцию. СкороÑ�Ñ‚ÑŒ и направление завиÑ�Ñ�Ñ‚ от входÑ�щего вращениÑ�.", + "block.create.mechanical_piston.tooltip.summary": "Более продвинутая версия _Поршня,_ использующая _силу_ _вращения_ для более точного перемещения присоединенных конструкций. _Удлинители_ _поршня_ сзади определяют _длину_ устройства. Без удлинителей поршень не будет двигаться. Используйте _Поступательную_ _раму_ для перемещения более чем одной линии блоков.", + "block.create.mechanical_piston.tooltip.condition1": "При вращении", + "block.create.mechanical_piston.tooltip.behaviour1": "Начинает перемещать прикрепленную конструкцию. Скорость и направление зависят от входящего вращения.", "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", - "block.create.sticky_mechanical_piston.tooltip.summary": "Более продвинутаÑ� верÑ�иÑ� _Липкого_ _поршнÑ�,_ иÑ�пользующаÑ� _Ñ�илу_ _вращениÑ�_ длÑ� более точного перемещениÑ� приÑ�оединенных конÑ�трукций. _Удлинители_ _поршнÑ�_ Ñ�зади определÑ�ÑŽÑ‚ _длину_ уÑ�тройÑ�тва. Без удлинителей поршень не будет двигатьÑ�Ñ�. ИÑ�пользуйте _ПоÑ�тупательную_ _раму_ длÑ� перемещениÑ� более чем одной линии блоков.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "При вращении", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Ð�ачинает перемещать прикрепленную конÑ�трукцию. СкороÑ�Ñ‚ÑŒ и направление завиÑ�Ñ�Ñ‚ от входÑ�щего вращениÑ�.", + "block.create.sticky_mechanical_piston.tooltip.summary": "Более продвинутая версия _Липкого_ _поршня,_ использующая _силу_ _вращения_ для более точного перемещения присоединенных конструкций. _Удлинители_ _поршня_ сзади определяют _длину_ устройства. Без удлинителей поршень не будет двигаться. Используйте _Поступательную_ _раму_ для перемещения более чем одной линии блоков.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "При вращении", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Начинает перемещать прикрепленную конструкцию. Скорость и направление зависят от входящего вращения.", "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� увеличениÑ� длины _МеханичеÑ�кого_ _поршнÑ�._", - "block.create.piston_extension_pole.tooltip.condition1": "При приÑ�оеденении к механичеÑ�кому поршню", - "block.create.piston_extension_pole.tooltip.behaviour1": "Увеличивает длину поршнÑ� на 1 блок", + "block.create.piston_extension_pole.tooltip.summary": "Используется для увеличения длины _Механического_ _поршня._", + "block.create.piston_extension_pole.tooltip.condition1": "При присоеденении к механическому поршню", + "block.create.piston_extension_pole.tooltip.behaviour1": "Увеличивает длину поршня на 1 блок", "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "ИÑ�пользуетÑ�Ñ� длÑ� вращениÑ� _больших_ конÑ�трукций_ или генерации _Ñ�илы_ _вращениÑ�_ Ñ� помощью ветра.", - "block.create.mechanical_bearing.tooltip.condition1": "При вращении", - "block.create.mechanical_bearing.tooltip.behaviour1": "Ð�ачинает вращать приÑ�оединенную _Поворотную_ _раму_ и Ñ�вÑ�занные Ñ� ним блоки.", - "block.create.mechanical_bearing.tooltip.condition2": "Когда запитан", - "block.create.mechanical_bearing.tooltip.behaviour2": "Ð�ачинает предоÑ�тавлÑ�Ñ‚ÑŒ _Ñ�илу_ _вращениÑ�_ из вращениÑ� приÑ�оединенной конÑ�трукции. Структура должна включать подходÑ�щий _паруÑ�_ (в наÑ�тоÑ�щее времÑ� любой блок шерÑ�ти).", + "block.create.mechanical_bearing.tooltip.summary": "Используется для вращения _больших_ конструкций_ или генерации _силы_ _вращения_ с помощью ветра.", + "block.create.mechanical_bearing.tooltip.condition1": "При вращении", + "block.create.mechanical_bearing.tooltip.behaviour1": "Начинает вращать присоединенную _Поворотную_ _раму_ и связанные с ним блоки.", + "block.create.mechanical_bearing.tooltip.condition2": "Когда запитан", + "block.create.mechanical_bearing.tooltip.behaviour2": "Начинает предоставлять _силу_ _вращения_ из вращения присоединенной конструкции. Структура должна включать подходящий _парус_ (в настоящее время любой блок шерсти).", "block.create.clockwork_bearing.tooltip": "UNLOCALIZED: CLOCKWORK BEARING", "block.create.clockwork_bearing.tooltip.summary": "UNLOCALIZED: An advanced version of the _Mechanical_ _Bearing_ for rotating up to two _clock_ _hands_ according to current _in-game_ _time_.", @@ -1150,34 +1150,34 @@ "block.create.rope_pulley.tooltip.behaviour1": "UNLOCALIZED: Starts moving the attached structure. Speed and direction correlate to the incoming Rotation Speed.", "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "Ð�аÑ�траиваемаÑ� оÑ�нова длÑ� конÑ�трукций, перемещаемых _МеханичеÑ�ким_ _поршнем._ Эти блоки должны формировать первый Ñ�лой блоков перед поршнем.", - "block.create.linear_chassis.tooltip.condition1": "При движении механичеÑ�ким поршнем", - "block.create.linear_chassis.tooltip.behaviour1": "_Перемещает_ вÑ�е _прикрепленные_ _рамы_ Ñ� одинаковой ориентацией, и блоки перед ним. При возврате поршнÑ� в иÑ�ходное положение блоки будут втÑ�гиватьÑ�Ñ�, только еÑ�ли лицеваÑ� Ñ�торона рамы _липкаÑ�_ (Ñ�м. [Ctrl]).", + "block.create.linear_chassis.tooltip.summary": "Настраиваемая основа для конструкций, перемещаемых _Механическим_ _поршнем._ Эти блоки должны формировать первый слой блоков перед поршнем.", + "block.create.linear_chassis.tooltip.condition1": "При движении механическим поршнем", + "block.create.linear_chassis.tooltip.behaviour1": "_Перемещает_ все _прикрепленные_ _рамы_ с одинаковой ориентацией, и блоки перед ним. При возврате поршня в исходное положение блоки будут втягиваться, только если лицевая сторона рамы _липкая_ (см. [Ctrl]).", "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.linear_chassis.tooltip.control1": "ПКМ Ñ�о Ñ�гуÑ�тком Ñ�лизи", - "block.create.linear_chassis.tooltip.action1": "Делает выбранную Ñ�торону _липкой._ При возвращении поршнÑ�, рама будет _втÑ�гивать_ вÑ�е подÑ�оединенные блоки в Ñ�воей колонне и в пределах заданного диапазона.", + "block.create.linear_chassis.tooltip.control1": "ПКМ со сгустком слизи", + "block.create.linear_chassis.tooltip.action1": "Делает выбранную сторону _липкой._ При возвращении поршня, рама будет _втягивать_ все подсоединенные блоки в своей колонне и в пределах заданного диапазона.", "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "ТребуетÑ�Ñ� длÑ� вращающихÑ�Ñ� конÑ�трукций Ñ� _МеханичеÑ�ким_ _подшипником._", - "block.create.radial_chassis.tooltip.condition1": "При вращении Ñ� помощью подшипника", - "block.create.radial_chassis.tooltip.behaviour1": "_Поворачивает_ вÑ�е блоки, прикрепленные к _липким_ Ñ�торонам (Ñ�м. [Ctrl]) в пределах заданного диапазона вокруг Ñ�ебÑ�. _Передает_ вращение на приÑ�оединенные поворотные рамы.", + "block.create.radial_chassis.tooltip.summary": "Требуется для вращающихся конструкций с _Механическим_ _подшипником._", + "block.create.radial_chassis.tooltip.condition1": "При вращении с помощью подшипника", + "block.create.radial_chassis.tooltip.behaviour1": "_Поворачивает_ все блоки, прикрепленные к _липким_ сторонам (см. [Ctrl]) в пределах заданного диапазона вокруг себя. _Передает_ вращение на присоединенные поворотные рамы.", "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.radial_chassis.tooltip.control1": "ПКМ Ñ�о Ñ�гуÑ�тком Ñ�лизи", - "block.create.radial_chassis.tooltip.action1": "Делает выбранную Ñ�торону _липкой._ При вращении, вÑ�е приÑ�оединенные блоки в пределах заданного диапазона будут вращатьÑ�Ñ� вмеÑ�те Ñ� ней.", + "block.create.radial_chassis.tooltip.control1": "ПКМ со сгустком слизи", + "block.create.radial_chassis.tooltip.action1": "Делает выбранную сторону _липкой._ При вращении, все присоединенные блоки в пределах заданного диапазона будут вращаться вместе с ней.", "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "МеханичеÑ�кое уÑ�тройÑ�тво, пригодное длÑ� _разрушениÑ�_ _блоков._", - "block.create.mechanical_drill.tooltip.condition1": "При вращении", - "block.create.mechanical_drill.tooltip.behaviour1": "ДейÑ�твует как _Ñ�тационарный_ разрушитель блоков. Также _наноÑ�ит_ _урон_ _Ñ�ущеÑ�твам_ в рабочей облаÑ�ти.", - "block.create.mechanical_drill.tooltip.condition2": "При движении механичеÑ�ким поршнем", - "block.create.mechanical_drill.tooltip.behaviour2": "Разрушает блоки, на которые наталкиваетÑ�Ñ�.", + "block.create.mechanical_drill.tooltip.summary": "Механическое устройство, пригодное для _разрушения_ _блоков._", + "block.create.mechanical_drill.tooltip.condition1": "При вращении", + "block.create.mechanical_drill.tooltip.behaviour1": "Действует как _стационарный_ разрушитель блоков. Также _наносит_ _урон_ _существам_ в рабочей области.", + "block.create.mechanical_drill.tooltip.condition2": "При движении механическим поршнем", + "block.create.mechanical_drill.tooltip.behaviour2": "Разрушает блоки, на которые наталкивается.", "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "МеханичеÑ�кий резак длÑ� раÑ�тений, подходÑ�щий длÑ� автоматизации выращиваниÑ� Ñ�редних раÑ�тений", - "block.create.mechanical_harvester.tooltip.condition1": "При движении механичеÑ�ким поршнем", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Срезает_ вÑ�е _зрелые_ _поÑ�евы_ и Ñ�браÑ�ывает их в иÑ�ходное Ñ�оÑ�тоÑ�ние роÑ�та.", + "block.create.mechanical_harvester.tooltip.summary": "Механический резак для растений, подходящий для автоматизации выращивания средних растений", + "block.create.mechanical_harvester.tooltip.condition1": "При движении механическим поршнем", + "block.create.mechanical_harvester.tooltip.behaviour1": "_Срезает_ все _зрелые_ _посевы_ и сбрасывает их в исходное состояние роста.", "block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH", "block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical_ _Pistons_, _Bearings_ or other controllers.", @@ -1194,22 +1194,22 @@ "block.create.mechanical_saw.tooltip.behaviour3": "UNLOCALIZED: _Cuts_ all _Trees_ with which the saw collides.", "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "Переключение Ñ�игнала на оÑ�нове _предметов_ и _объёма_ _хранилища_ в прикрепленном контейнере.", - "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего порога", - "block.create.stockpile_switch.tooltip.behaviour1": "ПереÑ�таёт подавать Ñ�игнал", - "block.create.stockpile_switch.tooltip.condition2": "Когда выше верхнего порога", - "block.create.stockpile_switch.tooltip.behaviour2": "Ð�ачинает подавать _Ñ�игнал_ пока не будет доÑ�тигнут нижний порог", - "block.create.stockpile_switch.tooltip.control1": "ПКМ", - "block.create.stockpile_switch.tooltip.action1": "Открывает _Меню_ _наÑ�тройки_", + "block.create.stockpile_switch.tooltip.summary": "Переключение сигнала на основе _предметов_ и _объёма_ _хранилища_ в прикрепленном контейнере.", + "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего порога", + "block.create.stockpile_switch.tooltip.behaviour1": "Перестаёт подавать сигнал", + "block.create.stockpile_switch.tooltip.condition2": "Когда выше верхнего порога", + "block.create.stockpile_switch.tooltip.behaviour2": "Начинает подавать _сигнал_ пока не будет достигнут нижний порог", + "block.create.stockpile_switch.tooltip.control1": "ПКМ", + "block.create.stockpile_switch.tooltip.action1": "Открывает _Меню_ _настройки_", "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "Конечные точки длÑ� _беÑ�проводных_ Ñ�оединений. Можно выбрать _чаÑ�тоты_ Ñ� помощью любого предмета. Диапазон Ñ�игнала ограничен, но доÑ�таточно далёк.", - "block.create.redstone_link.tooltip.condition1": "Когда запитан", - "block.create.redstone_link.tooltip.behaviour1": "Получает Ñ�игнал на той же _чаÑ�тоте_ и выводит его.", - "block.create.redstone_link.tooltip.control1": "ПКМ Ñ� предметом", - "block.create.redstone_link.tooltip.action1": "УÑ�танавливает _чаÑ�тоту_ длÑ� Ñ�того звена. Ð’Ñ�его длÑ� определениÑ� чаÑ�тоты можно иÑ�пользовать _2_ _предмета._", - "block.create.redstone_link.tooltip.control2": "ПКМ крадÑ�Ñ�ÑŒ", - "block.create.redstone_link.tooltip.action2": "Переключение между режимами _приёма_ и _передачи._", + "block.create.redstone_link.tooltip.summary": "Конечные точки для _беспроводных_ соединений. Можно выбрать _частоты_ с помощью любого предмета. Диапазон сигнала ограничен, но достаточно далёк.", + "block.create.redstone_link.tooltip.condition1": "Когда запитан", + "block.create.redstone_link.tooltip.behaviour1": "Получает сигнал на той же _частоте_ и выводит его.", + "block.create.redstone_link.tooltip.control1": "ПКМ с предметом", + "block.create.redstone_link.tooltip.action1": "Устанавливает _частоту_ для этого звена. Всего для определения частоты можно использовать _2_ _предмета._", + "block.create.redstone_link.tooltip.control2": "ПКМ крадясь", + "block.create.redstone_link.tooltip.action2": "Переключение между режимами _приёма_ и _передачи._", "block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE", "block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ _Display_ ranging from 0 to 15.", @@ -1217,30 +1217,30 @@ "block.create.nixie_tube.tooltip.behaviour1": "UNLOCALIZED: Shows the current redstone _Signal_ _Strength_ as its displayed value.", "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", - "block.create.redstone_contact.tooltip.summary": "ПроÑ�тое уÑ�тройÑ�тво длÑ� продвинутых механизмов.", - "block.create.redstone_contact.tooltip.condition1": "Когда Ñ�мотрит на другое контактное Ñ�оединение", - "block.create.redstone_contact.tooltip.behaviour1": "Подаёт _Ñ�игнал_", - "block.create.redstone_contact.tooltip.condition2": "При движении механичеÑ�ким поршнем", - "block.create.redstone_contact.tooltip.behaviour2": "Включает вÑ�е Ñ�тационарные контактные Ñ�оединениÑ�, через которые проходит.", + "block.create.redstone_contact.tooltip.summary": "Простое устройство для продвинутых механизмов.", + "block.create.redstone_contact.tooltip.condition1": "Когда смотрит на другое контактное соединение", + "block.create.redstone_contact.tooltip.behaviour1": "Подаёт _сигнал_", + "block.create.redstone_contact.tooltip.condition2": "При движении механическим поршнем", + "block.create.redstone_contact.tooltip.behaviour2": "Включает все стационарные контактные соединения, через которые проходит.", "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Этот _контейнер_ позволÑ�ет контролировать его емкоÑ�Ñ‚ÑŒ. Он может Ñ�одержать до _16_ _Ñ�таков_ любого предмета.", - "block.create.adjustable_crate.tooltip.control1": "ПКМ", - "block.create.adjustable_crate.tooltip.action1": "Открывает _Меню_", + "block.create.adjustable_crate.tooltip.summary": "Этот _контейнер_ позволяет контролировать его емкость. Он может содержать до _16_ _стаков_ любого предмета.", + "block.create.adjustable_crate.tooltip.control1": "ПКМ", + "block.create.adjustable_crate.tooltip.action1": "Открывает _Меню_", "block.create.creative_crate.tooltip": "CREATIVE CRATE", - "block.create.creative_crate.tooltip.summary": "Снабжает _Схемопушку_ беÑ�конечным запаÑ�ом блоков", + "block.create.creative_crate.tooltip.summary": "Снабжает _Схемопушку_ бесконечным запасом блоков", "block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot", "block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless_ _supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентарÑ�_ и броÑ�ает на землю. Ð�е будет броÑ�ать предметы до тех пор, пока проÑ�транÑ�тво не оÑ�вободитÑ�Ñ�. Может быть назначен _фильтр_ в виде Ñ�така предметов.", - "block.create.extractor.tooltip.condition1": "Когда запитан", - "block.create.extractor.tooltip.behaviour1": "_ПриоÑ�танавливает_ Ñ�кÑ�трактор", + "block.create.extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентаря_ и бросает на землю. Не будет бросать предметы до тех пор, пока пространство не освободится. Может быть назначен _фильтр_ в виде стака предметов.", + "block.create.extractor.tooltip.condition1": "Когда запитан", + "block.create.extractor.tooltip.behaviour1": "_Приостанавливает_ экстрактор", "block.create.extractor.tooltip.condition2": "UNLOCALIZED: Active Belt pulling", "block.create.extractor.tooltip.behaviour2": "UNLOCALIZED: Extractors can pull items _from_ _belts_ reinforced with _brass_ _casing_. When the extractor is blocked, the _belt_ _will_ _stall_.", - "block.create.extractor.tooltip.control1": "ПКМ по фильтру", - "block.create.extractor.tooltip.action1": "УÑ�танавливает _Ñ�так_ _в_ _руке_ в качеÑ�тве _фильтра._ ЭкÑ�трактор будет извлекать _определённый_ _предмет_ в _определённом_ _количеÑ�тве_ по фильтру.", + "block.create.extractor.tooltip.control1": "ПКМ по фильтру", + "block.create.extractor.tooltip.action1": "Устанавливает _стак_ _в_ _руке_ в качестве _фильтра._ Экстрактор будет извлекать _определённый_ _предмет_ в _определённом_ _количестве_ по фильтру.", "block.create.transposer.tooltip": "UNLOCALIZED: TRANSPOSER", "block.create.transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_.", @@ -1259,13 +1259,13 @@ "block.create.deployer.tooltip.behaviour2": "UNLOCALIZED: Toggles punch mode. In _punch_ _mode_, the Deployer will attempt to use its item to _break_ _blocks_ or _hurt_ _entities_.", "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентарÑ�_ и броÑ�ает на землю. Ð�е будет броÑ�ать предметы до тех пор, пока проÑ�транÑ�тво не оÑ�вободитÑ�Ñ�. Может быть назначен _фильтр_ в виде Ñ�така предметов. Может управлÑ�Ñ‚ÑŒÑ�Ñ� диÑ�танционно через _Передатчик_ _Ñ�игнала._", - "block.create.linked_extractor.tooltip.condition1": "Когда Ñ�оединение активно", - "block.create.linked_extractor.tooltip.behaviour1": "_ПриоÑ�танавливает_ Ñ�кÑ�трактор", - "block.create.linked_extractor.tooltip.control1": "ПКМ по фильтру", - "block.create.linked_extractor.tooltip.action1": "УÑ�танавливает _Ñ�так_ _в_ _руке_ в качеÑ�тве _фильтра._ ЭкÑ�трактор будет извлекать _определённый_ _предмет_ в _определённом_ _количеÑ�тве_ по фильтру.", - "block.create.linked_extractor.tooltip.control2": "ПКМ по чаÑ�тоте", - "block.create.linked_extractor.tooltip.action2": "УÑ�танавливает _чаÑ�тоту_ длÑ� Ñ�того Ñ�кÑ�трактора. При передаче Ñ�игнала Ñ� передающего _Сигнального_ _Ñ�оединениÑ�_ Ñ�кÑ�трактор будет приоÑ�тановлен.", + "block.create.linked_extractor.tooltip.summary": "_Извлекает_ _предметы_ из прилагаемого _инвентаря_ и бросает на землю. Не будет бросать предметы до тех пор, пока пространство не освободится. Может быть назначен _фильтр_ в виде стака предметов. Может управляться дистанционно через _Передатчик_ _сигнала._", + "block.create.linked_extractor.tooltip.condition1": "Когда соединение активно", + "block.create.linked_extractor.tooltip.behaviour1": "_Приостанавливает_ экстрактор", + "block.create.linked_extractor.tooltip.control1": "ПКМ по фильтру", + "block.create.linked_extractor.tooltip.action1": "Устанавливает _стак_ _в_ _руке_ в качестве _фильтра._ Экстрактор будет извлекать _определённый_ _предмет_ в _определённом_ _количестве_ по фильтру.", + "block.create.linked_extractor.tooltip.control2": "ПКМ по частоте", + "block.create.linked_extractor.tooltip.action2": "Устанавливает _частоту_ для этого экстрактора. При передаче сигнала с передающего _Сигнального_ _соединения_ экстрактор будет приостановлен.", "block.create.linked_transposer.tooltip": "UNLOCALIZED: LINKED TRANSPOSER", "block.create.linked_transposer.tooltip.summary": "UNLOCALIZED: _Takes_ _items_ from an attached _Inventory_ and immediately puts them into the target _Inventory_. Can be assigned an item-stack as a _filter_. Can be controlled remotely via a _Redstone_ _Link_.", @@ -1277,7 +1277,7 @@ "block.create.linked_transposer.tooltip.action2": "UNLOCALIZED: Assigns the currently _held_ _item_ as part of the Frequency listened on. Whenever a transmitting _Redstone_ _Link_ of the same frequency is powered, this Transposer will pause.", "block.create.funnel.tooltip": "BELT FUNNEL", - "block.create.funnel.tooltip.summary": "Собирает входÑ�щие предметы на _МеханичеÑ�кой_ _ленте_ и по возможноÑ�ти кладет их в прилагаемый _инвентарь._ Должен быть непоÑ�редÑ�твенно _над_ лентой, Ñ� проёмом, Ñ�мотрÑ�щим против направлениÑ� ленты. Инвентарь должен быть на той же выÑ�оте, что и воронка.", + "block.create.funnel.tooltip.summary": "Собирает входящие предметы на _Механической_ _ленте_ и по возможности кладет их в прилагаемый _инвентарь._ Должен быть непосредственно _над_ лентой, с проёмом, смотрящим против направления ленты. Инвентарь должен быть на той же высоте, что и воронка.", "block.create.funnel.tooltip.condition1": "UNLOCALIZED: Passive Belt pulling", "block.create.funnel.tooltip.behaviour1": "UNLOCALIZED: Funnels can pull items _from_ _belts_ when placed above them, either sideways or at the end. When a side-ways funnel is backed up, items on the _belt_ _will_ _not_ _stall_.", @@ -1294,9 +1294,9 @@ "block.create.brass_casing.tooltip.behaviour1": "UNLOCALIZED: _Reinforces_ _belts_ with a brass foundation. Reinforced Belts can support _Belt_ _Tunnels_, _Extractors_, _Funnels_, and _Transposers_ interacting with the belt from the sides and below.", "block.create.belt_observer.tooltip": "BELT OBSERVER", - "block.create.belt_observer.tooltip.summary": "Сканирует предметы, проходÑ�щие по _МеханичеÑ�кой_ _ленте_ перед ним. Хорошо работает Ñ� _поршнем_ Ñ�верху, отталкивающим определенные предметы.", - "block.create.belt_observer.tooltip.condition1": "Когда предмет Ñ�оответÑ�твует фильтру", - "block.create.belt_observer.tooltip.behaviour1": "Подаёт короткий _импульÑ�_ Ñ�о вÑ�ех Ñ�торон. ПуÑ�той фильтр Ñ�оответÑ�твует любому Ñ�лементу.", + "block.create.belt_observer.tooltip.summary": "Сканирует предметы, проходящие по _Механической_ _ленте_ перед ним. Хорошо работает с _поршнем_ сверху, отталкивающим определенные предметы.", + "block.create.belt_observer.tooltip.condition1": "Когда предмет соответствует фильтру", + "block.create.belt_observer.tooltip.behaviour1": "Подаёт короткий _импульс_ со всех сторон. Пустой фильтр соответствует любому элементу.", "block.create.belt_observer.tooltip.condition2": "UNLOCALIZED: Pulse Mode", "block.create.belt_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _pulse_ when a _matching_ _item_ _passes_ the center of the observed belt segment.", "block.create.belt_observer.tooltip.condition3": "UNLOCALIZED: Eject Mode", @@ -1305,10 +1305,10 @@ "block.create.belt_observer.tooltip.behaviour4": "UNLOCALIZED: _Splits_ a _matching_ _item_ _stack_ and _ejects_ _half_ of it off the side.", "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "ПроÑ�таÑ� Ñ�хема длÑ� уменьшениÑ� времени проходÑ�щего Ñ�игнала до _1_ _тика._", + "block.create.pulse_repeater.tooltip.summary": "Простая схема для уменьшения времени проходящего сигнала до _1_ _тика._", "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "Продвинутый _Повторитель_ Ñ� _наÑ�траиваемой_ _задержкой_ вплоть до 30 минут.", + "block.create.adjustable_repeater.tooltip.summary": "Продвинутый _Повторитель_ с _настраиваемой_ _задержкой_ вплоть до 30 минут.", "block.create.adjustable_pulse_repeater.tooltip": "UNLOCALIZED: FLEX PULSE REPEATER", "block.create.adjustable_pulse_repeater.tooltip.summary": "UNLOCALIZED: A _Pulse_ _Repeater_ with a _configurable_ _Delay_ up to 30 Minutes.", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index c8d05e698..e30433a0d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -3,818 +3,818 @@ "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "金å�ˆæ¬¢çª—户", - "block.create.acacia_window_pane": "金å�ˆæ¬¢çª—户æ�¿", - "block.create.adjustable_crate": "å�¯è°ƒèŠ‚æ�¿æ�¡ç®±", - "block.create.adjustable_pulley": "å�¯è°ƒèŠ‚è¿žæ�ºé½¿è½®ç®±", - "block.create.adjustable_pulse_repeater": "å�¯è°ƒèŠ‚脉冲中继器", - "block.create.adjustable_repeater": "å�¯è°ƒèŠ‚中继器", - "block.create.analog_lever": "å�¯è°ƒèŠ‚拉æ�†", - "block.create.andesite_bricks": "安山岩砖", - "block.create.andesite_bricks_slab": "安山岩砖å�°é˜¶", - "block.create.andesite_bricks_stairs": "安山岩砖楼梯", - "block.create.andesite_bricks_wall": "安山岩砖墙", - "block.create.andesite_casing": "安山机壳", - "block.create.andesite_cobblestone": "安山岩圆石", - "block.create.andesite_cobblestone_slab": "安山岩圆石å�°é˜¶", - "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", - "block.create.andesite_cobblestone_wall": "安山岩圆石墙", - "block.create.andesite_pillar": "竖纹安山岩", - "block.create.basin": "工作盆", - "block.create.belt": "ä¼ é€�带", + "block.create.acacia_window": "金合欢窗户", + "block.create.acacia_window_pane": "金合欢窗户板", + "block.create.adjustable_crate": "可调节板条箱", + "block.create.adjustable_pulley": "可调节连携齿轮箱", + "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", + "block.create.adjustable_repeater": "可调节中继器", + "block.create.analog_lever": "可调节拉杆", + "block.create.andesite_bricks": "安山岩砖", + "block.create.andesite_bricks_slab": "安山岩砖台阶", + "block.create.andesite_bricks_stairs": "安山岩砖楼梯", + "block.create.andesite_bricks_wall": "安山岩砖墙", + "block.create.andesite_casing": "安山机壳", + "block.create.andesite_cobblestone": "安山岩圆石", + "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", + "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", + "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_pillar": "竖纹安山岩", + "block.create.basin": "工作盆", + "block.create.belt": "传送带", "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", - "block.create.belt_observer": "ä¼ é€�带侦测器", - "block.create.belt_tunnel": "ä¼ é€�带隧é�“", - "block.create.birch_window": "白桦窗户", - "block.create.birch_window_pane": "白桦窗户æ�¿", - "block.create.brass_block": "黄铜å�—", - "block.create.brass_casing": "黄铜机壳", - "block.create.cart_assembler": "矿车装é…�ç«™", - "block.create.chiseled_dark_scoria": "錾制深色熔渣", - "block.create.chiseled_dolomite": "錾制白云岩", - "block.create.chiseled_gabbro": "錾制辉长岩", - "block.create.chiseled_limestone": "錾制石ç�°å²©", - "block.create.chiseled_scoria": "錾制熔渣", - "block.create.chiseled_weathered_limestone": "錾制风化石ç�°å²©", + "block.create.belt_observer": "传送带侦测器", + "block.create.belt_tunnel": "传送带隧道", + "block.create.birch_window": "白桦窗户", + "block.create.birch_window_pane": "白桦窗户板", + "block.create.brass_block": "黄铜块", + "block.create.brass_casing": "黄铜机壳", + "block.create.cart_assembler": "矿车装配站", + "block.create.chiseled_dark_scoria": "錾制深色熔渣", + "block.create.chiseled_dolomite": "錾制白云岩", + "block.create.chiseled_gabbro": "錾制辉长岩", + "block.create.chiseled_limestone": "錾制石灰岩", + "block.create.chiseled_scoria": "錾制熔渣", + "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", "block.create.chute": "UNLOCALIZED: Chute", "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", - "block.create.clockwork_bearing": "时钟轴承", - "block.create.clutch": "离å�ˆå™¨", - "block.create.cogwheel": "齿轮", - "block.create.copper_block": "é“œå�—", - "block.create.copper_casing": "铜机壳", - "block.create.copper_ore": "铜矿石", - "block.create.copper_shingles": "铜瓦", - "block.create.creative_crate": "创造æ�¿æ�¡ç®±", - "block.create.creative_motor": "创造马达", - "block.create.crushing_wheel": "粉碎轮", - "block.create.crushing_wheel_controller": "粉碎轮控制器", - "block.create.cuckoo_clock": "布谷鸟闹钟", - "block.create.dark_oak_window": "深色橡木窗户", - "block.create.dark_oak_window_pane": "深色橡木窗户æ�¿", - "block.create.dark_scoria": "深色熔渣", - "block.create.dark_scoria_bricks": "深色熔渣砖", - "block.create.dark_scoria_bricks_slab": "深色熔渣砖å�°é˜¶", - "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", - "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", - "block.create.dark_scoria_cobblestone": "深色熔渣圆石", - "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石å�°é˜¶", - "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", - "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", - "block.create.dark_scoria_pillar": "竖纹深色熔渣", - "block.create.deployer": "机械手", + "block.create.clockwork_bearing": "时钟轴承", + "block.create.clutch": "离合器", + "block.create.cogwheel": "齿轮", + "block.create.copper_block": "铜块", + "block.create.copper_casing": "铜机壳", + "block.create.copper_ore": "铜矿石", + "block.create.copper_shingles": "铜瓦", + "block.create.creative_crate": "创造板条箱", + "block.create.creative_motor": "创造马达", + "block.create.crushing_wheel": "粉碎轮", + "block.create.crushing_wheel_controller": "粉碎轮控制器", + "block.create.cuckoo_clock": "布谷鸟闹钟", + "block.create.dark_oak_window": "深色橡木窗户", + "block.create.dark_oak_window_pane": "深色橡木窗户板", + "block.create.dark_scoria": "深色熔渣", + "block.create.dark_scoria_bricks": "深色熔渣砖", + "block.create.dark_scoria_bricks_slab": "深色熔渣砖台阶", + "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", + "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", + "block.create.dark_scoria_cobblestone": "深色熔渣圆石", + "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石台阶", + "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", + "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", + "block.create.dark_scoria_pillar": "竖纹深色熔渣", + "block.create.deployer": "机械手", "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "闪长岩砖", - "block.create.diorite_bricks_slab": "闪长岩砖å�°é˜¶", - "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", - "block.create.diorite_bricks_wall": "闪长岩砖墙", - "block.create.diorite_cobblestone": "闪长岩圆石", - "block.create.diorite_cobblestone_slab": "闪长岩圆石å�°é˜¶", - "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", - "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dolomite": "白云岩", - "block.create.dolomite_bricks": "白云岩砖", - "block.create.dolomite_bricks_slab": "白云岩砖å�°é˜¶", - "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", - "block.create.dolomite_bricks_wall": "白云岩砖墙", - "block.create.dolomite_cobblestone": "白云岩圆石", - "block.create.dolomite_cobblestone_slab": "白云岩圆石å�°é˜¶", - "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", - "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", - "block.create.dolomite_pillar": "竖纹白云岩", - "block.create.encased_belt": "è¿žæ�ºé½¿è½®ç®±", - "block.create.encased_fan": "鼓风机", - "block.create.encased_shaft": "齿轮箱", - "block.create.extractor": "æ��å�–器", - "block.create.fancy_andesite_bricks": "方纹安山岩砖", - "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖å�°é˜¶", - "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", - "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", - "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", - "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖å�°é˜¶", - "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", - "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", - "block.create.fancy_diorite_bricks": "方纹闪长岩砖", - "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖å�°é˜¶", - "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", - "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", - "block.create.fancy_dolomite_bricks": "方纹白云岩砖", - "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖å�°é˜¶", - "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", - "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", - "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", - "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖å�°é˜¶", - "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", - "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", - "block.create.fancy_granite_bricks": "方纹花岗岩砖", - "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖å�°é˜¶", - "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", - "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", - "block.create.fancy_limestone_bricks": "方纹石ç�°å²©ç –", - "block.create.fancy_limestone_bricks_slab": "方纹石ç�°å²©ç –å�°é˜¶", - "block.create.fancy_limestone_bricks_stairs": "方纹石ç�°å²©ç –楼梯", - "block.create.fancy_limestone_bricks_wall": "方纹石ç�°å²©ç –墙", - "block.create.fancy_scoria_bricks": "方纹熔渣砖", - "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖å�°é˜¶", - "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", - "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", - "block.create.fancy_weathered_limestone_bricks": "方纹风化石ç�°å²©ç –", - "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石ç�°å²©ç –å�°é˜¶", - "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石ç�°å²©ç –楼梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石ç�°å²©ç –墙", + "block.create.diorite_bricks": "闪长岩砖", + "block.create.diorite_bricks_slab": "闪长岩砖台阶", + "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", + "block.create.diorite_bricks_wall": "闪长岩砖墙", + "block.create.diorite_cobblestone": "闪长岩圆石", + "block.create.diorite_cobblestone_slab": "闪长岩圆石台阶", + "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", + "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", + "block.create.diorite_pillar": "竖纹闪长岩", + "block.create.dolomite": "白云岩", + "block.create.dolomite_bricks": "白云岩砖", + "block.create.dolomite_bricks_slab": "白云岩砖台阶", + "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", + "block.create.dolomite_bricks_wall": "白云岩砖墙", + "block.create.dolomite_cobblestone": "白云岩圆石", + "block.create.dolomite_cobblestone_slab": "白云岩圆石台阶", + "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", + "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", + "block.create.dolomite_pillar": "竖纹白云岩", + "block.create.encased_belt": "连携齿轮箱", + "block.create.encased_fan": "鼓风机", + "block.create.encased_shaft": "齿轮箱", + "block.create.extractor": "提取器", + "block.create.fancy_andesite_bricks": "方纹安山岩砖", + "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", + "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", + "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", + "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", + "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖台阶", + "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", + "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", + "block.create.fancy_diorite_bricks": "方纹闪长岩砖", + "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖台阶", + "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", + "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", + "block.create.fancy_dolomite_bricks": "方纹白云岩砖", + "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖台阶", + "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", + "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", + "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", + "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖台阶", + "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", + "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", + "block.create.fancy_granite_bricks": "方纹花岗岩砖", + "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖台阶", + "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", + "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", + "block.create.fancy_limestone_bricks": "方纹石灰岩砖", + "block.create.fancy_limestone_bricks_slab": "方纹石灰岩砖台阶", + "block.create.fancy_limestone_bricks_stairs": "方纹石灰岩砖楼梯", + "block.create.fancy_limestone_bricks_wall": "方纹石灰岩砖墙", + "block.create.fancy_scoria_bricks": "方纹熔渣砖", + "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖台阶", + "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", + "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", + "block.create.fancy_weathered_limestone_bricks": "方纹风化石灰岩砖", + "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石灰岩砖台阶", + "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石灰岩砖楼梯", + "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石灰岩砖墙", "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.flywheel": "飞轮", - "block.create.framed_glass": "边框玻璃", - "block.create.framed_glass_pane": "边框玻璃æ�¿", - "block.create.funnel": "æ¼�æ–—", - "block.create.furnace_engine": "熔炼引擎", - "block.create.gabbro": "辉长岩", - "block.create.gabbro_bricks": "辉长岩砖", - "block.create.gabbro_bricks_slab": "辉长岩砖å�°é˜¶", - "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", - "block.create.gabbro_bricks_wall": "辉长岩砖墙", - "block.create.gabbro_cobblestone": "辉长岩圆石", - "block.create.gabbro_cobblestone_slab": "辉长岩圆石å�°é˜¶", - "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", - "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", - "block.create.gabbro_pillar": "竖纹辉长岩", - "block.create.gearbox": "å��字齿轮箱", - "block.create.gearshift": "红石齿轮箱", - "block.create.granite_bricks": "花岗岩砖", - "block.create.granite_bricks_slab": "花岗岩砖å�°é˜¶", - "block.create.granite_bricks_stairs": "花岗岩砖楼梯", - "block.create.granite_bricks_wall": "花岗岩砖墙", - "block.create.granite_cobblestone": "花岗岩圆石", - "block.create.granite_cobblestone_slab": "花岗岩圆石å�°é˜¶", - "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", - "block.create.granite_cobblestone_wall": "花岗岩圆石墙", - "block.create.granite_pillar": "竖纹花岗岩", - "block.create.hand_crank": "手摇曲柄", - "block.create.horizontal_framed_glass": "竖直边框玻璃", - "block.create.horizontal_framed_glass_pane": "竖直边框玻璃æ�¿", - "block.create.jungle_window": "丛林窗户", - "block.create.jungle_window_pane": "丛林窗户æ�¿", - "block.create.large_cogwheel": "大齿轮", - "block.create.layered_andesite": "层å� å®‰å±±å²©", - "block.create.layered_dark_scoria": "层å� æ·±è‰²ç†”渣", - "block.create.layered_diorite": "层å� é—ªé•¿å²©", - "block.create.layered_dolomite": "层å� ç™½äº‘岩", - "block.create.layered_gabbro": "层å� è¾‰é•¿å²©", - "block.create.layered_granite": "层å� èŠ±å²—岩", - "block.create.layered_limestone": "层å� çŸ³ç�°å²©", - "block.create.layered_scoria": "层å� ç†”渣", - "block.create.layered_weathered_limestone": "层å� é£ŽåŒ–石ç�°å²©", - "block.create.limesand": "石ç�°æ²™", - "block.create.limestone": "石ç�°å²©", - "block.create.limestone_bricks": "石ç�°å²©ç –", - "block.create.limestone_bricks_slab": "石ç�°å²©ç –å�°é˜¶", - "block.create.limestone_bricks_stairs": "石ç�°å²©ç –楼梯", - "block.create.limestone_bricks_wall": "石ç�°å²©ç –墙", - "block.create.limestone_cobblestone": "石ç�°å²©åœ†çŸ³", - "block.create.limestone_cobblestone_slab": "石ç�°å²©åœ†çŸ³å�°é˜¶", - "block.create.limestone_cobblestone_stairs": "石ç�°å²©åœ†çŸ³æ¥¼æ¢¯", - "block.create.limestone_cobblestone_wall": "石ç�°å²©åœ†çŸ³å¢™", - "block.create.limestone_pillar": "竖纹石ç�°å²©", - "block.create.linear_chassis": "机壳底盘", - "block.create.linked_extractor": "无线æ��å�–器", - "block.create.linked_transposer": "无线传输器", + "block.create.flywheel": "飞轮", + "block.create.framed_glass": "边框玻璃", + "block.create.framed_glass_pane": "边框玻璃板", + "block.create.funnel": "漏斗", + "block.create.furnace_engine": "熔炼引擎", + "block.create.gabbro": "辉长岩", + "block.create.gabbro_bricks": "辉长岩砖", + "block.create.gabbro_bricks_slab": "辉长岩砖台阶", + "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", + "block.create.gabbro_bricks_wall": "辉长岩砖墙", + "block.create.gabbro_cobblestone": "辉长岩圆石", + "block.create.gabbro_cobblestone_slab": "辉长岩圆石台阶", + "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", + "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", + "block.create.gabbro_pillar": "竖纹辉长岩", + "block.create.gearbox": "十字齿轮箱", + "block.create.gearshift": "红石齿轮箱", + "block.create.granite_bricks": "花岗岩砖", + "block.create.granite_bricks_slab": "花岗岩砖台阶", + "block.create.granite_bricks_stairs": "花岗岩砖楼梯", + "block.create.granite_bricks_wall": "花岗岩砖墙", + "block.create.granite_cobblestone": "花岗岩圆石", + "block.create.granite_cobblestone_slab": "花岗岩圆石台阶", + "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", + "block.create.granite_cobblestone_wall": "花岗岩圆石墙", + "block.create.granite_pillar": "竖纹花岗岩", + "block.create.hand_crank": "手摇曲柄", + "block.create.horizontal_framed_glass": "竖直边框玻璃", + "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", + "block.create.jungle_window": "丛林窗户", + "block.create.jungle_window_pane": "丛林窗户板", + "block.create.large_cogwheel": "大齿轮", + "block.create.layered_andesite": "层叠安山岩", + "block.create.layered_dark_scoria": "层叠深色熔渣", + "block.create.layered_diorite": "层叠闪长岩", + "block.create.layered_dolomite": "层叠白云岩", + "block.create.layered_gabbro": "层叠辉长岩", + "block.create.layered_granite": "层叠花岗岩", + "block.create.layered_limestone": "层叠石灰岩", + "block.create.layered_scoria": "层叠熔渣", + "block.create.layered_weathered_limestone": "层叠风化石灰岩", + "block.create.limesand": "石灰沙", + "block.create.limestone": "石灰岩", + "block.create.limestone_bricks": "石灰岩砖", + "block.create.limestone_bricks_slab": "石灰岩砖台阶", + "block.create.limestone_bricks_stairs": "石灰岩砖楼梯", + "block.create.limestone_bricks_wall": "石灰岩砖墙", + "block.create.limestone_cobblestone": "石灰岩圆石", + "block.create.limestone_cobblestone_slab": "石灰岩圆石台阶", + "block.create.limestone_cobblestone_stairs": "石灰岩圆石楼梯", + "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", + "block.create.limestone_pillar": "竖纹石灰岩", + "block.create.linear_chassis": "机壳底盘", + "block.create.linked_extractor": "无线提取器", + "block.create.linked_transposer": "无线传输器", "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "动力轴承", - "block.create.mechanical_crafter": "动力制造器", - "block.create.mechanical_drill": "动力钻头", - "block.create.mechanical_harvester": "动力收割机", - "block.create.mechanical_mixer": "动力æ�…拌器", - "block.create.mechanical_piston": "动力活塞", - "block.create.mechanical_piston_head": "动力活塞头", - "block.create.mechanical_plough": "动力çŠ�", - "block.create.mechanical_press": "动力辊压机", + "block.create.mechanical_bearing": "动力轴承", + "block.create.mechanical_crafter": "动力制造器", + "block.create.mechanical_drill": "动力钻头", + "block.create.mechanical_harvester": "动力收割机", + "block.create.mechanical_mixer": "动力搅拌器", + "block.create.mechanical_piston": "动力活塞", + "block.create.mechanical_piston_head": "动力活塞头", + "block.create.mechanical_plough": "动力犁", + "block.create.mechanical_press": "动力辊压机", "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "动力切割机", - "block.create.millstone": "石磨", - "block.create.minecart_anchor": "矿车锚", - "block.create.mossy_andesite": "生苔安山岩", - "block.create.mossy_dark_scoria": "生苔深色熔渣", - "block.create.mossy_diorite": "生苔闪长岩", - "block.create.mossy_dolomite": "生苔白云岩", - "block.create.mossy_gabbro": "生苔辉长岩", - "block.create.mossy_granite": "生苔花岗岩", - "block.create.mossy_limestone": "生苔石ç�°å²©", - "block.create.mossy_scoria": "生苔熔渣", - "block.create.mossy_weathered_limestone": "生苔风化石ç�°å²©", - "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", - "block.create.natural_scoria": "天然熔渣", - "block.create.nixie_tube": "辉光管", - "block.create.nozzle": "分散网", - "block.create.oak_window": "橡木窗户", - "block.create.oak_window_pane": "橡木窗户æ�¿", - "block.create.ornate_iron_window": "å�Žä¸½é“�窗户", - "block.create.ornate_iron_window_pane": "å�Žä¸½é“�窗户æ�¿", - "block.create.overgrown_andesite": "生è�‰å®‰å±±å²©", - "block.create.overgrown_dark_scoria": "生è�‰æ·±è‰²ç†”渣", - "block.create.overgrown_diorite": "生è�‰é—ªé•¿å²©", - "block.create.overgrown_dolomite": "生è�‰ç™½äº‘岩", - "block.create.overgrown_gabbro": "生è�‰è¾‰é•¿å²©", - "block.create.overgrown_granite": "生è�‰èŠ±å²—岩", - "block.create.overgrown_limestone": "生è�‰çŸ³ç�°å²©", - "block.create.overgrown_scoria": "生è�‰ç†”渣", - "block.create.overgrown_weathered_limestone": "生è�‰é£ŽåŒ–石ç�°å²©", + "block.create.mechanical_saw": "动力切割机", + "block.create.millstone": "石磨", + "block.create.minecart_anchor": "矿车锚", + "block.create.mossy_andesite": "生苔安山岩", + "block.create.mossy_dark_scoria": "生苔深色熔渣", + "block.create.mossy_diorite": "生苔闪长岩", + "block.create.mossy_dolomite": "生苔白云岩", + "block.create.mossy_gabbro": "生苔辉长岩", + "block.create.mossy_granite": "生苔花岗岩", + "block.create.mossy_limestone": "生苔石灰岩", + "block.create.mossy_scoria": "生苔熔渣", + "block.create.mossy_weathered_limestone": "生苔风化石灰岩", + "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", + "block.create.natural_scoria": "天然熔渣", + "block.create.nixie_tube": "辉光管", + "block.create.nozzle": "分散网", + "block.create.oak_window": "橡木窗户", + "block.create.oak_window_pane": "橡木窗户板", + "block.create.ornate_iron_window": "华丽铁窗户", + "block.create.ornate_iron_window_pane": "华丽铁窗户板", + "block.create.overgrown_andesite": "生草安山岩", + "block.create.overgrown_dark_scoria": "生草深色熔渣", + "block.create.overgrown_diorite": "生草闪长岩", + "block.create.overgrown_dolomite": "生草白云岩", + "block.create.overgrown_gabbro": "生草辉长岩", + "block.create.overgrown_granite": "生草花岗岩", + "block.create.overgrown_limestone": "生草石灰岩", + "block.create.overgrown_scoria": "生草熔渣", + "block.create.overgrown_weathered_limestone": "生草风化石灰岩", "block.create.packager": "UNLOCALIZED: Packager", - "block.create.paved_andesite": "安山岩铺路石", - "block.create.paved_andesite_slab": "安山岩铺路石å�°é˜¶", - "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", - "block.create.paved_andesite_wall": "安山岩铺路石墙", - "block.create.paved_dark_scoria": "深色熔渣铺路石", - "block.create.paved_dark_scoria_slab": "深色熔渣铺路石å�°é˜¶", - "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", - "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", - "block.create.paved_diorite": "闪长岩铺路石", - "block.create.paved_diorite_slab": "闪长岩铺路石å�°é˜¶", - "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", - "block.create.paved_diorite_wall": "闪长岩铺路石墙", - "block.create.paved_dolomite": "白云岩铺路石", - "block.create.paved_dolomite_slab": "白云岩铺路石å�°é˜¶", - "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", - "block.create.paved_dolomite_wall": "白云岩铺路石墙", - "block.create.paved_gabbro": "辉长岩铺路石", - "block.create.paved_gabbro_slab": "辉长岩铺路石å�°é˜¶", - "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", - "block.create.paved_gabbro_wall": "辉长岩铺路石墙", - "block.create.paved_granite": "花岗岩铺路石", - "block.create.paved_granite_slab": "花岗岩铺路石å�°é˜¶", - "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", - "block.create.paved_granite_wall": "花岗岩铺路石墙", - "block.create.paved_limestone": "石ç�°å²©é“ºè·¯çŸ³", - "block.create.paved_limestone_slab": "石ç�°å²©é“ºè·¯çŸ³å�°é˜¶", - "block.create.paved_limestone_stairs": "石ç�°å²©é“ºè·¯çŸ³æ¥¼æ¢¯", - "block.create.paved_limestone_wall": "石ç�°å²©é“ºè·¯çŸ³å¢™", - "block.create.paved_scoria": "熔渣铺路石", - "block.create.paved_scoria_slab": "熔渣铺路石å�°é˜¶", - "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", - "block.create.paved_scoria_wall": "熔渣铺路石墙", - "block.create.paved_weathered_limestone": "风化石ç�°å²©é“ºè·¯çŸ³", - "block.create.paved_weathered_limestone_slab": "风化石ç�°å²©é“ºè·¯çŸ³å�°é˜¶", - "block.create.paved_weathered_limestone_stairs": "风化石ç�°å²©é“ºè·¯çŸ³æ¥¼æ¢¯", - "block.create.paved_weathered_limestone_wall": "风化石ç�°å²©é“ºè·¯çŸ³å¢™", - "block.create.piston_extension_pole": "活塞æ�†", - "block.create.polished_dark_scoria": "磨制深色熔渣", - "block.create.polished_dark_scoria_slab": "磨制深色熔渣å�°é˜¶", - "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", - "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", - "block.create.polished_dolomite": "磨制白云岩", - "block.create.polished_dolomite_slab": "磨制白云岩å�°é˜¶", - "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", - "block.create.polished_dolomite_wall": "磨制白云岩墙", - "block.create.polished_gabbro": "磨制辉长岩", - "block.create.polished_gabbro_slab": "磨制辉长岩å�°é˜¶", - "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", - "block.create.polished_gabbro_wall": "磨制辉长岩墙", - "block.create.polished_limestone": "磨制石ç�°å²©", - "block.create.polished_limestone_slab": "磨制石ç�°å²©å�°é˜¶", - "block.create.polished_limestone_stairs": "磨制石ç�°å²©æ¥¼æ¢¯", - "block.create.polished_limestone_wall": "磨制石ç�°å²©å¢™", - "block.create.polished_scoria": "磨制熔渣", - "block.create.polished_scoria_slab": "磨制熔渣å�°é˜¶", - "block.create.polished_scoria_stairs": "磨制熔渣楼梯", - "block.create.polished_scoria_wall": "磨制熔渣墙", - "block.create.polished_weathered_limestone": "磨制风化石ç�°å²©", - "block.create.polished_weathered_limestone_slab": "磨制风化石ç�°å²©å�°é˜¶", - "block.create.polished_weathered_limestone_stairs": "磨制风化石ç�°å²©æ¥¼æ¢¯", - "block.create.polished_weathered_limestone_wall": "磨制风化石ç�°å²©å¢™", - "block.create.portable_storage_interface": "移动å¼�存储接å�£", - "block.create.powered_latch": "é”�存器", - "block.create.powered_toggle_latch": "T触å�‘器", - "block.create.pulley_magnet": "ä¼ é€�带ç£�é“�", - "block.create.pulse_repeater": "脉冲中继器", - "block.create.radial_chassis": "旋转底盘", + "block.create.paved_andesite": "安山岩铺路石", + "block.create.paved_andesite_slab": "安山岩铺路石台阶", + "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", + "block.create.paved_andesite_wall": "安山岩铺路石墙", + "block.create.paved_dark_scoria": "深色熔渣铺路石", + "block.create.paved_dark_scoria_slab": "深色熔渣铺路石台阶", + "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", + "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", + "block.create.paved_diorite": "闪长岩铺路石", + "block.create.paved_diorite_slab": "闪长岩铺路石台阶", + "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", + "block.create.paved_diorite_wall": "闪长岩铺路石墙", + "block.create.paved_dolomite": "白云岩铺路石", + "block.create.paved_dolomite_slab": "白云岩铺路石台阶", + "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", + "block.create.paved_dolomite_wall": "白云岩铺路石墙", + "block.create.paved_gabbro": "辉长岩铺路石", + "block.create.paved_gabbro_slab": "辉长岩铺路石台阶", + "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", + "block.create.paved_gabbro_wall": "辉长岩铺路石墙", + "block.create.paved_granite": "花岗岩铺路石", + "block.create.paved_granite_slab": "花岗岩铺路石台阶", + "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", + "block.create.paved_granite_wall": "花岗岩铺路石墙", + "block.create.paved_limestone": "石灰岩铺路石", + "block.create.paved_limestone_slab": "石灰岩铺路石台阶", + "block.create.paved_limestone_stairs": "石灰岩铺路石楼梯", + "block.create.paved_limestone_wall": "石灰岩铺路石墙", + "block.create.paved_scoria": "熔渣铺路石", + "block.create.paved_scoria_slab": "熔渣铺路石台阶", + "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", + "block.create.paved_scoria_wall": "熔渣铺路石墙", + "block.create.paved_weathered_limestone": "风化石灰岩铺路石", + "block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶", + "block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯", + "block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙", + "block.create.piston_extension_pole": "活塞杆", + "block.create.polished_dark_scoria": "磨制深色熔渣", + "block.create.polished_dark_scoria_slab": "磨制深色熔渣台阶", + "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", + "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", + "block.create.polished_dolomite": "磨制白云岩", + "block.create.polished_dolomite_slab": "磨制白云岩台阶", + "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", + "block.create.polished_dolomite_wall": "磨制白云岩墙", + "block.create.polished_gabbro": "磨制辉长岩", + "block.create.polished_gabbro_slab": "磨制辉长岩台阶", + "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", + "block.create.polished_gabbro_wall": "磨制辉长岩墙", + "block.create.polished_limestone": "磨制石灰岩", + "block.create.polished_limestone_slab": "磨制石灰岩台阶", + "block.create.polished_limestone_stairs": "磨制石灰岩楼梯", + "block.create.polished_limestone_wall": "磨制石灰岩墙", + "block.create.polished_scoria": "磨制熔渣", + "block.create.polished_scoria_slab": "磨制熔渣台阶", + "block.create.polished_scoria_stairs": "磨制熔渣楼梯", + "block.create.polished_scoria_wall": "磨制熔渣墙", + "block.create.polished_weathered_limestone": "磨制风化石灰岩", + "block.create.polished_weathered_limestone_slab": "磨制风化石灰岩台阶", + "block.create.polished_weathered_limestone_stairs": "磨制风化石灰岩楼梯", + "block.create.polished_weathered_limestone_wall": "磨制风化石灰岩墙", + "block.create.portable_storage_interface": "移动式存储接口", + "block.create.powered_latch": "锁存器", + "block.create.powered_toggle_latch": "T触发器", + "block.create.pulley_magnet": "传送带磁铁", + "block.create.pulse_repeater": "脉冲中继器", + "block.create.radial_chassis": "旋转底盘", "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", - "block.create.redstone_contact": "ä¿¡å�·æ£€æµ‹å™¨", - "block.create.redstone_link": "æ— é™�红石信å�·ç»ˆç«¯", + "block.create.redstone_contact": "信号检测器", + "block.create.redstone_link": "无限红石信号终端", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "绳索", - "block.create.rope_pulley": "绳索滑轮", - "block.create.rotation_speed_controller": "转速控制器", - "block.create.schematic_table": "è“�图桌", - "block.create.schematicannon": "è“�图加农炮", - "block.create.scoria": "熔渣", - "block.create.scoria_bricks": "熔渣砖", - "block.create.scoria_bricks_slab": "熔渣砖å�°é˜¶", - "block.create.scoria_bricks_stairs": "熔渣砖楼梯", - "block.create.scoria_bricks_wall": "熔渣砖墙", - "block.create.scoria_cobblestone": "熔渣圆石", - "block.create.scoria_cobblestone_slab": "熔渣圆石å�°é˜¶", - "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", - "block.create.scoria_cobblestone_wall": "熔渣圆石墙", - "block.create.scoria_pillar": "竖纹熔渣", - "block.create.secondary_linear_chassis": "机壳底盘2å�·", - "block.create.sequenced_gearshift": "å�¯ç¼–程齿轮箱", - "block.create.shaft": "传动æ�†", - "block.create.speedometer": "速度表", - "block.create.spruce_window": "云æ�‰çª—户", - "block.create.spruce_window_pane": "云æ�‰çª—户æ�¿", - "block.create.sticky_mechanical_piston": "粘性动力活塞", - "block.create.stockpile_switch": "存储检测器", - "block.create.stressometer": "应力表", - "block.create.tiled_glass": "å��字玻璃窗", - "block.create.tiled_glass_pane": "å��字玻璃窗æ�¿", - "block.create.transposer": "传输器", - "block.create.turntable": "转盘", - "block.create.vertical_extractor": "ç«–ç›´æ��å�–器", - "block.create.vertical_framed_glass": "竖直边框玻璃", - "block.create.vertical_framed_glass_pane": "竖直边框玻璃æ�¿", - "block.create.vertical_funnel": "ç«–ç›´æ¼�æ–—", - "block.create.vertical_linked_extractor": "ç«–ç›´æ— é™�æ��å�–器", - "block.create.vertical_linked_transposer": "竖直无线传输器", - "block.create.vertical_transposer": "竖直传输器", - "block.create.water_wheel": "水车", - "block.create.weathered_limestone": "风化石ç�°å²©", - "block.create.weathered_limestone_bricks": "风化石ç�°å²©ç –", - "block.create.weathered_limestone_bricks_slab": "风化石ç�°å²©ç –å�°é˜¶", - "block.create.weathered_limestone_bricks_stairs": "风化石ç�°å²©ç –楼梯", - "block.create.weathered_limestone_bricks_wall": "风化石ç�°å²©ç –墙", - "block.create.weathered_limestone_cobblestone": "风化石ç�°å²©åœ†çŸ³", - "block.create.weathered_limestone_cobblestone_slab": "风化石ç�°å²©åœ†çŸ³å�°é˜¶", - "block.create.weathered_limestone_cobblestone_stairs": "风化石ç�°å²©åœ†çŸ³æ¥¼æ¢¯", - "block.create.weathered_limestone_cobblestone_wall": "风化石ç�°å²©åœ†çŸ³å¢™", - "block.create.weathered_limestone_pillar": "竖纹风化石ç�°å²©", - "block.create.zinc_block": "锌å�—", - "block.create.zinc_ore": "锌矿石", + "block.create.rope": "绳索", + "block.create.rope_pulley": "绳索滑轮", + "block.create.rotation_speed_controller": "转速控制器", + "block.create.schematic_table": "蓝图桌", + "block.create.schematicannon": "蓝图加农炮", + "block.create.scoria": "熔渣", + "block.create.scoria_bricks": "熔渣砖", + "block.create.scoria_bricks_slab": "熔渣砖台阶", + "block.create.scoria_bricks_stairs": "熔渣砖楼梯", + "block.create.scoria_bricks_wall": "熔渣砖墙", + "block.create.scoria_cobblestone": "熔渣圆石", + "block.create.scoria_cobblestone_slab": "熔渣圆石台阶", + "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", + "block.create.scoria_cobblestone_wall": "熔渣圆石墙", + "block.create.scoria_pillar": "竖纹熔渣", + "block.create.secondary_linear_chassis": "机壳底盘2号", + "block.create.sequenced_gearshift": "可编程齿轮箱", + "block.create.shaft": "传动杆", + "block.create.speedometer": "速度表", + "block.create.spruce_window": "云杉窗户", + "block.create.spruce_window_pane": "云杉窗户板", + "block.create.sticky_mechanical_piston": "粘性动力活塞", + "block.create.stockpile_switch": "存储检测器", + "block.create.stressometer": "应力表", + "block.create.tiled_glass": "十字玻璃窗", + "block.create.tiled_glass_pane": "十字玻璃窗板", + "block.create.transposer": "传输器", + "block.create.turntable": "转盘", + "block.create.vertical_extractor": "竖直提取器", + "block.create.vertical_framed_glass": "竖直边框玻璃", + "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", + "block.create.vertical_funnel": "竖直漏斗", + "block.create.vertical_linked_extractor": "竖直无限提取器", + "block.create.vertical_linked_transposer": "竖直无线传输器", + "block.create.vertical_transposer": "竖直传输器", + "block.create.water_wheel": "水车", + "block.create.weathered_limestone": "风化石灰岩", + "block.create.weathered_limestone_bricks": "风化石灰岩砖", + "block.create.weathered_limestone_bricks_slab": "风化石灰岩砖台阶", + "block.create.weathered_limestone_bricks_stairs": "风化石灰岩砖楼梯", + "block.create.weathered_limestone_bricks_wall": "风化石灰岩砖墙", + "block.create.weathered_limestone_cobblestone": "风化石灰岩圆石", + "block.create.weathered_limestone_cobblestone_slab": "风化石灰岩圆石台阶", + "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", + "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", + "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", + "block.create.zinc_block": "锌块", + "block.create.zinc_ore": "锌矿石", - "entity.create.contraption": "结构", - "entity.create.stationary_contraption": "固定结构", - "entity.create.super_glue": "强力胶", + "entity.create.contraption": "结构", + "entity.create.stationary_contraption": "固定结构", + "entity.create.super_glue": "强力胶", - "item.create.andesite_alloy": "安山å�ˆé‡‘", - "item.create.attribute_filter": "属性过滤器", - "item.create.belt_connector": "ä¼ é€�带", - "item.create.brass_hand": "黄铜手部零件", - "item.create.brass_ingot": "黄铜锭", - "item.create.brass_nugget": "黄铜粒", - "item.create.brass_sheet": "黄铜æ�¿", - "item.create.chromatic_compound": "异彩化å�ˆç‰©", - "item.create.copper_ingot": "铜锭", - "item.create.copper_nugget": "铜粒", - "item.create.copper_sheet": "é“œæ�¿", - "item.create.crafter_slot_cover": "制造器盖æ�¿", - "item.create.crushed_brass": "粉碎黄铜", - "item.create.crushed_copper_ore": "粉碎铜矿石", - "item.create.crushed_gold_ore": "粉碎金矿石", - "item.create.crushed_iron_ore": "粉碎é“�矿石", - "item.create.crushed_zinc_ore": "粉碎锌矿石", - "item.create.deforester": "æ ‘æž—æ¯�ç�­è€…", - "item.create.dough": "é�¢å›¢", - "item.create.electron_tube": "电å­�管", - "item.create.empty_schematic": "空白è“�图", - "item.create.extendo_grip": "伸缩机械手", - "item.create.filter": "过滤器", - "item.create.furnace_minecart_contraption": "装é…�过的动力矿车", - "item.create.goggles": "工程师护目镜", - "item.create.golden_sheet": "金æ�¿", - "item.create.handheld_blockzapper": "手æŒ�å¼�æ–¹å�—放置器", - "item.create.handheld_worldshaper": "手æŒ�å¼�环境塑形器", - "item.create.integrated_circuit": "集æˆ�电路æ�¿", - "item.create.iron_sheet": "é“�æ�¿", - "item.create.lapis_sheet": "é�’金石æ�¿", - "item.create.minecart_contraption": "装é…�过的矿车", - "item.create.polished_rose_quartz": "磨制玫瑰石英", - "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.propeller": "扇å�¶", - "item.create.red_sand_paper": "红砂纸", - "item.create.refined_radiance": "光辉石", - "item.create.rose_quartz": "玫瑰石英", - "item.create.sand_paper": "砂纸", - "item.create.schematic": "è“�图", - "item.create.schematic_and_quill": "è“�图与笔", - "item.create.shadow_steel": "暗影金属", - "item.create.super_glue": "强力胶", - "item.create.tree_fertilizer": "树木肥料", - "item.create.vertical_gearbox": "ç«–ç›´å��字齿轮箱", - "item.create.wand_of_symmetry": "对称法æ�–", - "item.create.wheat_flour": "å°�麦粉", - "item.create.whisk": "æ�…拌器", - "item.create.wrench": "扳手", - "item.create.zinc_ingot": "锌锭", - "item.create.zinc_nugget": "锌粒", + "item.create.andesite_alloy": "安山合金", + "item.create.attribute_filter": "属性过滤器", + "item.create.belt_connector": "传送带", + "item.create.brass_hand": "黄铜手部零件", + "item.create.brass_ingot": "黄铜锭", + "item.create.brass_nugget": "黄铜粒", + "item.create.brass_sheet": "黄铜板", + "item.create.chromatic_compound": "异彩化合物", + "item.create.copper_ingot": "铜锭", + "item.create.copper_nugget": "铜粒", + "item.create.copper_sheet": "铜板", + "item.create.crafter_slot_cover": "制造器盖板", + "item.create.crushed_brass": "粉碎黄铜", + "item.create.crushed_copper_ore": "粉碎铜矿石", + "item.create.crushed_gold_ore": "粉碎金矿石", + "item.create.crushed_iron_ore": "粉碎铁矿石", + "item.create.crushed_zinc_ore": "粉碎锌矿石", + "item.create.deforester": "树林毁灭者", + "item.create.dough": "面团", + "item.create.electron_tube": "电子管", + "item.create.empty_schematic": "空白蓝图", + "item.create.extendo_grip": "伸缩机械手", + "item.create.filter": "过滤器", + "item.create.furnace_minecart_contraption": "装配过的动力矿车", + "item.create.goggles": "工程师护目镜", + "item.create.golden_sheet": "金板", + "item.create.handheld_blockzapper": "手持式方块放置器", + "item.create.handheld_worldshaper": "手持式环境塑形器", + "item.create.integrated_circuit": "集成电路板", + "item.create.iron_sheet": "铁板", + "item.create.lapis_sheet": "青金石板", + "item.create.minecart_contraption": "装配过的矿车", + "item.create.polished_rose_quartz": "磨制玫瑰石英", + "item.create.powdered_obsidian": "黑曜石粉末", + "item.create.propeller": "扇叶", + "item.create.red_sand_paper": "红砂纸", + "item.create.refined_radiance": "光辉石", + "item.create.rose_quartz": "玫瑰石英", + "item.create.sand_paper": "砂纸", + "item.create.schematic": "蓝图", + "item.create.schematic_and_quill": "蓝图与笔", + "item.create.shadow_steel": "暗影金属", + "item.create.super_glue": "强力胶", + "item.create.tree_fertilizer": "树木肥料", + "item.create.vertical_gearbox": "竖直十字齿轮箱", + "item.create.wand_of_symmetry": "对称法杖", + "item.create.wheat_flour": "小麦粉", + "item.create.whisk": "搅拌器", + "item.create.wrench": "扳手", + "item.create.zinc_ingot": "锌锭", + "item.create.zinc_nugget": "锌粒", "_": "->------------------------] Advancements [------------------------<-", - "advancement.create.root": "欢迎æ�¥åˆ°æœºæ¢°åŠ¨åŠ›", - "advancement.create.root.desc": "是时候æ�¥åˆ¶ä½œä¸€äº›è¶…赞的机械结构了ï¼�", - "advancement.create.andesite_alloy": "原始人类的å�ˆé‡‘替代å“�", - "advancement.create.andesite_alloy.desc": "机械动力有ç�€è®¸å¤šçš„æ��料和å�ˆé‡‘,但由于技术有é™�,原始的人类暂时们å�ªèƒ½åˆ¶ä½œå‡ºå®‰å±±å�ˆé‡‘", - "advancement.create.its_alive": "鲜活的机械生命", - "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转.", - "advancement.create.shifting_gears": "æ�¢æŒ¡ï¼ŒåŠ é€Ÿï¼Œèµ·é£žï¼�", - "advancement.create.shifting_gears.desc": "将大齿轮连接到å°�齿轮上, 机械结构的转速将会翻å€�", - "advancement.create.overstressed": "超载", - "advancement.create.overstressed.desc": "首次使能é‡�网络超载.", - "advancement.create.belt": "大批æµ�水作业", - "advancement.create.belt.desc": "用传é€�带连接两个传动æ�†", - "advancement.create.wrench": "细节调整", - "advancement.create.wrench.desc": "å�šå‡ºä¸€ä¸ªæ–¹ä¾¿è°ƒæ•´æ–¹å�—的扳手", - "advancement.create.goggles": "目力工程师", - "advancement.create.goggles.desc": "å�šå‡ºä¸€ä¸ªèƒ½çœ‹åˆ°æœºå™¨åŠ¨èƒ½ä¿¡æ�¯çš„工程师护目镜", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜æ�¥è¯»å�–速度数æ�®", - "advancement.create.stressometer": "精密的应力控制", - "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜æ�¥è¯»å�–应力数æ�®", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", - "advancement.create.lava_wheel": "风ç�«è½®", - "advancement.create.lava_wheel.desc": "你确定岩浆能带动水车?", - "advancement.create.millstone": "便æ�ºå¼�粉碎机", - "advancement.create.millstone.desc": "放置一个石磨并且为其供能", - "advancement.create.andesite_casing": "安山纪元", - "advancement.create.andesite_casing.desc": "使用安山å�ˆé‡‘和木头æ�¥å�ˆæˆ�一个安山机壳", - "advancement.create.mechanical_drill": "å�šå¦‚ç£�石,势如破竹", - "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", + "advancement.create.root": "欢迎来到机械动力", + "advancement.create.root.desc": "是时候来制作一些超赞的机械结构了!", + "advancement.create.andesite_alloy": "原始人类的合金替代品", + "advancement.create.andesite_alloy.desc": "机械动力有着许多的材料和合金,但由于技术有限,原始的人类暂时们只能制作出安山合金", + "advancement.create.its_alive": "鲜活的机械生命", + "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转.", + "advancement.create.shifting_gears": "换挡,加速,起飞!", + "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上, 机械结构的转速将会翻倍", + "advancement.create.overstressed": "超载", + "advancement.create.overstressed.desc": "首次使能量网络超载.", + "advancement.create.belt": "大批流水作业", + "advancement.create.belt.desc": "用传送带连接两个传动杆", + "advancement.create.wrench": "细节调整", + "advancement.create.wrench.desc": "做出一个方便调整方块的扳手", + "advancement.create.goggles": "目力工程师", + "advancement.create.goggles.desc": "做出一个能看到机器动能信息的工程师护目镜", + "advancement.create.speedometer": "精密的速度控制", + "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜来读取速度数据", + "advancement.create.stressometer": "精密的应力控制", + "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜来读取应力数据", + "advancement.create.water_wheel": "治水", + "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", + "advancement.create.lava_wheel": "风火轮", + "advancement.create.lava_wheel.desc": "你确定岩浆能带动水车?", + "advancement.create.millstone": "便携式粉碎机", + "advancement.create.millstone.desc": "放置一个石磨并且为其供能", + "advancement.create.andesite_casing": "安山纪元", + "advancement.create.andesite_casing.desc": "使用安山合金和木头来合成一个安山机壳", + "advancement.create.mechanical_drill": "坚如磐石,势如破竹", + "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", "advancement.create.press": "'Duang!'", - "advancement.create.press.desc": "使用辊压机æ�¥è¾ŠåŽ‹ä¸€äº›æ�¿å­�", - "advancement.create.polished_rose_quartz": "粉ä¸�钻石", - "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至é€�明", - "advancement.create.electron_tube": "å“”~~å“”~~", - "advancement.create.electron_tube.desc": "制作一个å�¯ç”¨äºŽå�ˆæˆ�高级机器的电å­�管", - "advancement.create.mechanical_saw": "一刀两断", - "advancement.create.mechanical_saw.desc": "放置一个切割机并且为其供能", - "advancement.create.basin": "快到碗里æ�¥", - "advancement.create.basin.desc": "放置一个工作盆,并且往里é�¢æ”¾äº›ä¸œè¥¿", - "advancement.create.mixer": "å�‡åŒ€æ�…æ‹Œ", - "advancement.create.mixer.desc": "å°†æ�…拌机放在工作盆上方,并且使其æ�…拌盆内物å“�", - "advancement.create.compact": "å¿«ä¹�压缩", - "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物å“�", - "advancement.create.expert_lane_1": "安山岩专家", - "advancement.create.expert_lane_1.desc": "工作进行中", - "advancement.create.brass": "真正的å�ˆé‡‘", - "advancement.create.brass.desc": "使用碎锌和碎铜æ�¥åˆ¶ä½œç¢Žé»„é“œ", - "advancement.create.brass_casing": "黄铜纪元", - "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", - "advancement.create.copper_casing": "铜纪元", - "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", - "advancement.create.crafter": "自动化æµ�水作业", - "advancement.create.crafter.desc": "放置一些机械å�ˆæˆ�å�°å¹¶ä¸”为其供能", - "advancement.create.deployer": "我就指ç�€ä½ äº†å’‹åœ°ï¼Ÿ", - "advancement.create.deployer.desc": "放置并且功能一个机械手。这å�¯æ˜¯ä½ å�³æ‰‹çš„完美å¤�制å“�", - "advancement.create.fist_bump": "æ�¥ç¢°ä¸ªæ‹³ï¼Œå“¥ä»¬~", - "advancement.create.fist_bump.desc": "使两个机械臂互相碰拳", - "advancement.create.crushing_wheel": "一对大家伙", - "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物å“�的粉碎轮", - "advancement.create.chromatic_compound": "两æž�æ��æ–™", - "advancement.create.chromatic_compound.desc": "制作一个异彩化å�ˆç‰©", - "advancement.create.shadow_steel": "虚空归æ�¥çš„å®�石", - "advancement.create.shadow_steel.desc": "制作一些暗影金属", - "advancement.create.refined_radiance": "闪耀ç�€æ´�白的圣光", - "advancement.create.refined_radiance.desc": "制作一个光辉石", - "advancement.create.zapper": "讲究的建筑师", - "advancement.create.zapper.desc": "制作一个é�žå¸¸æ–¹ä¾¿çš„手æŒ�æ–¹å�—放置器", - "advancement.create.upgraded_zapper": "æ�¥è‡ªå¼‚世界的超频", - "advancement.create.upgraded_zapper.desc": "制作一个完全å�‡çº§çš„手æŒ�æ–¹å�—放置器", - "advancement.create.wand_of_symmetry": "简å�•çš„é•œé�¢å‡ ä½•å­¦", - "advancement.create.wand_of_symmetry.desc": "制作一个对称法æ�–", - "advancement.create.deforester": "超时空ç �ä¼�", - "advancement.create.deforester.desc": "制作一个森林æ¯�ç�­è€…, 然å�Žè·Ÿä½ å�Žé™¢çš„树林说å†�è§�å�§", + "advancement.create.press.desc": "使用辊压机来辊压一些板子", + "advancement.create.polished_rose_quartz": "粉丝钻石", + "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", + "advancement.create.electron_tube": "哔~~哔~~", + "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", + "advancement.create.mechanical_saw": "一刀两断", + "advancement.create.mechanical_saw.desc": "放置一个切割机并且为其供能", + "advancement.create.basin": "快到碗里来", + "advancement.create.basin.desc": "放置一个工作盆,并且往里面放些东西", + "advancement.create.mixer": "均匀搅拌", + "advancement.create.mixer.desc": "将搅拌机放在工作盆上方,并且使其搅拌盆内物品", + "advancement.create.compact": "快乐压缩", + "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物品", + "advancement.create.expert_lane_1": "安山岩专家", + "advancement.create.expert_lane_1.desc": "工作进行中", + "advancement.create.brass": "真正的合金", + "advancement.create.brass.desc": "使用碎锌和碎铜来制作碎黄铜", + "advancement.create.brass_casing": "黄铜纪元", + "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", + "advancement.create.copper_casing": "铜纪元", + "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", + "advancement.create.crafter": "自动化流水作业", + "advancement.create.crafter.desc": "放置一些机械合成台并且为其供能", + "advancement.create.deployer": "我就指着你了咋地?", + "advancement.create.deployer.desc": "放置并且功能一个机械手。这可是你右手的完美复制品", + "advancement.create.fist_bump": "来碰个拳,哥们~", + "advancement.create.fist_bump.desc": "使两个机械臂互相碰拳", + "advancement.create.crushing_wheel": "一对大家伙", + "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", + "advancement.create.chromatic_compound": "两极材料", + "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", + "advancement.create.shadow_steel": "虚空归来的宝石", + "advancement.create.shadow_steel.desc": "制作一些暗影金属", + "advancement.create.refined_radiance": "闪耀着洁白的圣光", + "advancement.create.refined_radiance.desc": "制作一个光辉石", + "advancement.create.zapper": "讲究的建筑师", + "advancement.create.zapper.desc": "制作一个非常方便的手持方块放置器", + "advancement.create.upgraded_zapper": "来自异世界的超频", + "advancement.create.upgraded_zapper.desc": "制作一个完全升级的手持方块放置器", + "advancement.create.wand_of_symmetry": "简单的镜面几何学", + "advancement.create.wand_of_symmetry.desc": "制作一个对称法杖", + "advancement.create.deforester": "超时空砍伐", + "advancement.create.deforester.desc": "制作一个森林毁灭者, 然后跟你后院的树林说再见吧", "advancement.create.extendo_grip": "biu biu biu!", - "advancement.create.extendo_grip.desc": "拿到一个伸缩机械手", - "advancement.create.dual_extendo_grip": "biu——biu——biu——", - "advancement.create.dual_extendo_grip.desc": "å�ŒæŒ�伸缩机械手加长è·�离", - "advancement.create.eob": "Beta版结æ�Ÿ", - "advancement.create.eob.desc": "期待未æ�¥ä¼šæœ‰æ›´å¤šçš„内容. <3", + "advancement.create.extendo_grip.desc": "拿到一个伸缩机械手", + "advancement.create.dual_extendo_grip": "biu——biu——biu——", + "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手加长距离", + "advancement.create.eob": "Beta版结束", + "advancement.create.eob.desc": "期待未来会有更多的内容. <3", "_": "->------------------------] UI & Messages [------------------------<-", - "itemGroup.create.base": "机械动力", - "itemGroup.create.palettes": "机械动力建筑方å�—", + "itemGroup.create.base": "机械动力", + "itemGroup.create.palettes": "机械动力建筑方块", - "death.attack.create.crush": "%1$s 被压æ‰�了", - "death.attack.create.fan_fire": "%1$s 试图接å�—热风的洗礼", - "death.attack.create.fan_lava": "%1$s 在接å�—热风的洗礼中欲ç�«ç„šèº«", - "death.attack.create.mechanical_drill": "%1$s 被钻头钻的å��掉了", - "death.attack.create.mechanical_saw": "%1$s 被圆锯切æˆ�了两截", - "death.attack.create.cuckoo_clock_explosion": "%1$s 被布谷鸟钟炸得粉身碎骨", + "death.attack.create.crush": "%1$s 被压扁了", + "death.attack.create.fan_fire": "%1$s 试图接受热风的洗礼", + "death.attack.create.fan_lava": "%1$s 在接受热风的洗礼中欲火焚身", + "death.attack.create.mechanical_drill": "%1$s 被钻头钻的坏掉了", + "death.attack.create.mechanical_saw": "%1$s 被圆锯切成了两截", + "death.attack.create.cuckoo_clock_explosion": "%1$s 被布谷鸟钟炸得粉身碎骨", - "create.block.deployer.damage_source_name": "二五仔机械臂", + "create.block.deployer.damage_source_name": "二五仔机械臂", "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.recipe.crushing": "粉碎", - "create.recipe.milling": "研磨", - "create.recipe.splashing": "洗涤", - "create.recipe.splashing.fan": "在鼓风机å‰�方倒水", + "create.recipe.crushing": "粉碎", + "create.recipe.milling": "研磨", + "create.recipe.splashing": "洗涤", + "create.recipe.splashing.fan": "在鼓风机前方倒水", "create.recipe.smoking_via_fan": "UNLOCALIZED: Bulk Smoking", "create.recipe.smoking_via_fan.fan": "UNLOCALIZED: Fan behind Fire", "create.recipe.blasting_via_fan": "UNLOCALIZED: Bulk Smelting", "create.recipe.blasting_via_fan.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "金属压片", - "create.recipe.mixing": "æ··å�ˆæ�…æ‹Œ", - "create.recipe.packing": "压å�—å¡‘å½¢", - "create.recipe.mechanical_sawing": "木æ��切割", - "create.recipe.mechanical_crafting": "自动å�ˆæˆ�", - "create.recipe.block_cutting": "æ–¹å�—切割", + "create.recipe.pressing": "金属压片", + "create.recipe.mixing": "混合搅拌", + "create.recipe.packing": "压块塑形", + "create.recipe.mechanical_sawing": "木材切割", + "create.recipe.mechanical_crafting": "自动合成", + "create.recipe.block_cutting": "方块切割", "create.recipe.blockzapper_upgrade": "UNLOCALIZED: Handheld Blockzapper", - "create.recipe.sandpaper_polishing": "砂纸抛光", - "create.recipe.mystery_conversion": "化å�ˆç‰©å�˜å¼‚", - "create.recipe.processing.catalyst": "催化剂", - "create.recipe.processing.chance": "%1$s%% 概率", - "create.recipe.processing.chanceToReturn": "%1$s%% 概率返还", + "create.recipe.sandpaper_polishing": "砂纸抛光", + "create.recipe.mystery_conversion": "化合物变异", + "create.recipe.processing.catalyst": "催化剂", + "create.recipe.processing.chance": "%1$s%% 概率", + "create.recipe.processing.chanceToReturn": "%1$s%% 概率返还", - "create.generic.range": "范围", - "create.generic.radius": "å�Šå¾„", - "create.generic.width": "宽度", - "create.generic.height": "高度", - "create.generic.length": "长度", - "create.generic.speed": "速度", - "create.generic.delay": "延时", + "create.generic.range": "范围", + "create.generic.radius": "半径", + "create.generic.width": "宽度", + "create.generic.height": "高度", + "create.generic.length": "长度", + "create.generic.speed": "速度", + "create.generic.delay": "延时", "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分钟", + "create.generic.unit.seconds": "秒", + "create.generic.unit.minutes": "分钟", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", + "create.generic.unit.degrees": "°", - "create.action.scroll": "滚轮", - "create.action.confirm": "确认", - "create.action.abort": "退出", - "create.action.saveToFile": "ä¿�å­˜", - "create.action.discard": "丢弃", + "create.action.scroll": "滚轮", + "create.action.confirm": "确认", + "create.action.abort": "退出", + "create.action.saveToFile": "保存", + "create.action.discard": "丢弃", - "create.keyinfo.toolmenu": "工具è�œå�•", - "create.keyinfo.scrollup": "(游æˆ�中)å�‘上鼠标滚轮", - "create.keyinfo.scrolldown": "(游æˆ�中)å�‘下鼠标滚轮", + "create.keyinfo.toolmenu": "工具菜单", + "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", + "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", - "create.gui.scrollInput.defaultTitle": "选择一个选项:", - "create.gui.scrollInput.scrollToModify": "滚动修改", - "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数é‡�", - "create.gui.scrollInput.scrollToSelect": "滚动选择", - "create.gui.scrollInput.shiftScrollsFaster": "按ä½�Shift滚动更快", - "create.gui.toolmenu.focusKey": "按ä½� [%1$s] 鼠标滚轮选择", - "create.gui.toolmenu.cycle": "[SCROLL] 循环", - "create.gui.symmetryWand.mirrorType": "é•œå­�类型", - "create.gui.symmetryWand.orientation": "æ–¹å�‘", + "create.gui.scrollInput.defaultTitle": "选择一个选项:", + "create.gui.scrollInput.scrollToModify": "滚动修改", + "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数量", + "create.gui.scrollInput.scrollToSelect": "滚动选择", + "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滚动更快", + "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", + "create.gui.toolmenu.cycle": "[SCROLL] 循环", + "create.gui.symmetryWand.mirrorType": "镜子类型", + "create.gui.symmetryWand.orientation": "方向", - "create.symmetry.mirror.plane": "é•œåƒ�", - "create.symmetry.mirror.doublePlane": "矩形", - "create.symmetry.mirror.triplePlane": "八角", + "create.symmetry.mirror.plane": "镜像", + "create.symmetry.mirror.doublePlane": "矩形", + "create.symmetry.mirror.triplePlane": "八角", - "create.orientation.orthogonal": "åž‚ç›´", - "create.orientation.diagonal": "对角线", - "create.orientation.horizontal": "æ°´å¹³", - "create.orientation.alongZ": "以z轴对é½�", - "create.orientation.alongX": "以x轴对é½�", + "create.orientation.orthogonal": "垂直", + "create.orientation.diagonal": "对角线", + "create.orientation.horizontal": "水平", + "create.orientation.alongZ": "以z轴对齐", + "create.orientation.alongX": "以x轴对齐", - "create.gui.blockzapper.title": "手æŒ�å¼�æ–¹å�—放置机", - "create.gui.blockzapper.replaceMode": "替æ�¢æ¨¡å¼�", - "create.gui.blockzapper.searchDiagonal": "æ ¹æ�®å¯¹è§’线", - "create.gui.blockzapper.searchFuzzy": "忽视边界", - "create.gui.blockzapper.range": "扩散范围", - "create.gui.blockzapper.needsUpgradedAmplifier": "需è¦�å�‡çº§æ‰©æ•£å™¨", - "create.gui.blockzapper.patternSection": "模å¼�", - "create.gui.blockzapper.pattern.solid": "实心", - "create.gui.blockzapper.pattern.checkered": "棋盘", - "create.gui.blockzapper.pattern.inversecheckered": "å��转棋盘", + "create.gui.blockzapper.title": "手持式方块放置机", + "create.gui.blockzapper.replaceMode": "替换模式", + "create.gui.blockzapper.searchDiagonal": "根据对角线", + "create.gui.blockzapper.searchFuzzy": "忽视边界", + "create.gui.blockzapper.range": "扩散范围", + "create.gui.blockzapper.needsUpgradedAmplifier": "需要升级扩散器", + "create.gui.blockzapper.patternSection": "模式", + "create.gui.blockzapper.pattern.solid": "实心", + "create.gui.blockzapper.pattern.checkered": "棋盘", + "create.gui.blockzapper.pattern.inversecheckered": "反转棋盘", "create.gui.blockzapper.pattern.chance25": "25% ", "create.gui.blockzapper.pattern.chance50": "50% ", "create.gui.blockzapper.pattern.chance75": "75% ", - "create.gui.terrainzapper.title": "手æŒ�å¼�环境塑形器", - "create.gui.terrainzapper.placement": "放置模å¼�", - "create.gui.terrainzapper.placement.merged": "结å�ˆ", - "create.gui.terrainzapper.placement.attached": "ä¾�附", - "create.gui.terrainzapper.placement.inserted": "æ�’å…¥", - "create.gui.terrainzapper.brush": "塑形类型", - "create.gui.terrainzapper.brush.cuboid": "矩形体", - "create.gui.terrainzapper.brush.sphere": "ç�ƒä½“", - "create.gui.terrainzapper.brush.cylinder": "圆柱体", - "create.gui.terrainzapper.tool": "填充类型", - "create.gui.terrainzapper.tool.fill": "å¡«å……", - "create.gui.terrainzapper.tool.place": "å¤�写", - "create.gui.terrainzapper.tool.replace": "替æ�¢", - "create.gui.terrainzapper.tool.clear": "清除", - "create.gui.terrainzapper.tool.overlay": "覆盖", - "create.gui.terrainzapper.tool.flatten": "平整", + "create.gui.terrainzapper.title": "手持式环境塑形器", + "create.gui.terrainzapper.placement": "放置模式", + "create.gui.terrainzapper.placement.merged": "结合", + "create.gui.terrainzapper.placement.attached": "依附", + "create.gui.terrainzapper.placement.inserted": "插入", + "create.gui.terrainzapper.brush": "塑形类型", + "create.gui.terrainzapper.brush.cuboid": "矩形体", + "create.gui.terrainzapper.brush.sphere": "球体", + "create.gui.terrainzapper.brush.cylinder": "圆柱体", + "create.gui.terrainzapper.tool": "填充类型", + "create.gui.terrainzapper.tool.fill": "填充", + "create.gui.terrainzapper.tool.place": "复写", + "create.gui.terrainzapper.tool.replace": "替换", + "create.gui.terrainzapper.tool.clear": "清除", + "create.gui.terrainzapper.tool.overlay": "覆盖", + "create.gui.terrainzapper.tool.flatten": "平整", - "create.terrainzapper.shiftRightClickToSet": "Shift+é¼ æ ‡å�³é”® 以设置塑形类型", + "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右键 以设置塑形类型", - "create.blockzapper.usingBlock": "使用: %1$s", - "create.blockzapper.componentUpgrades": "组件å�‡çº§:", - "create.blockzapper.component.body": "机体", - "create.blockzapper.component.amplifier": "增大", - "create.blockzapper.component.accelerator": "加速", - "create.blockzapper.component.retriever": "寻回", - "create.blockzapper.component.scope": "范围", - "create.blockzapper.componentTier.none": "æ— ", + "create.blockzapper.usingBlock": "使用: %1$s", + "create.blockzapper.componentUpgrades": "组件升级:", + "create.blockzapper.component.body": "机体", + "create.blockzapper.component.amplifier": "增大", + "create.blockzapper.component.accelerator": "加速", + "create.blockzapper.component.retriever": "寻回", + "create.blockzapper.component.scope": "范围", + "create.blockzapper.componentTier.none": "无", "create.blockzapper.componentTier.brass": "UNLOCALIZED: Brass", "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", - "create.blockzapper.leftClickToSet": "左键点击方å�—以设定方å�—", - "create.blockzapper.empty": "æ–¹å�—ä¸�足ï¼�", + "create.blockzapper.leftClickToSet": "左键点击方块以设定方块", + "create.blockzapper.empty": "方块不足!", - "create.contraptions.movement_mode": "è¿�动模å¼�", - "create.contraptions.movement_mode.move_place": "å�œæ­¢æ—¶æ€»æ˜¯å®žä½“化方å�—", - "create.contraptions.movement_mode.move_place_returned": "å�œæ­¢æ—¶å�ªåœ¨åˆ�始ä½�置实体化方å�—", - "create.contraptions.movement_mode.move_never_place": "å�ªæœ‰åœ¨åŠ¨åŠ›æ–¹å�—摧æ¯�å�Žæ‰�实体化方å�—", - "create.contraptions.movement_mode.rotate_place": "å�œæ­¢æ—¶æ€»æ˜¯å®žä½“化方å�—", - "create.contraptions.movement_mode.rotate_place_returned": "å�œæ­¢æ—¶å�ªåœ¨æŽ¥è¿‘åˆ�始角度实体化方å�—", - "create.contraptions.movement_mode.rotate_never_place": "å�ªæœ‰åœ¨æ—‹è½¬è½´æ‘§æ¯�å�Žæ‰�实体化方å�—", - "create.contraptions.cart_movement_mode": "矿车è¿�动模å¼�", - "create.contraptions.cart_movement_mode.rotate": "结构与矿车ä¿�æŒ�相å�Œæ–¹å�‘", - "create.contraptions.cart_movement_mode.rotate_paused": "矿车转å�‘时机器å�œæ­¢å·¥ä½œ", - "create.contraptions.cart_movement_mode.rotation_locked": "结构方å�‘ä¿�æŒ�ä¸�å�˜", + "create.contraptions.movement_mode": "运动模式", + "create.contraptions.movement_mode.move_place": "停止时总是实体化方块", + "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置实体化方块", + "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才实体化方块", + "create.contraptions.movement_mode.rotate_place": "停止时总是实体化方块", + "create.contraptions.movement_mode.rotate_place_returned": "停止时只在接近初始角度实体化方块", + "create.contraptions.movement_mode.rotate_never_place": "只有在旋转轴摧毁后才实体化方块", + "create.contraptions.cart_movement_mode": "矿车运动模式", + "create.contraptions.cart_movement_mode.rotate": "结构与矿车保持相同方向", + "create.contraptions.cart_movement_mode.rotate_paused": "矿车转向时机器停止工作", + "create.contraptions.cart_movement_mode.rotation_locked": "结构方向保持不变", - "create.logistics.filter": "过滤器", - "create.logistics.firstFrequency": "频é�“. #1", - "create.logistics.secondFrequency": "频é�“. #2", + "create.logistics.filter": "过滤器", + "create.logistics.firstFrequency": "频道. #1", + "create.logistics.secondFrequency": "频道. #2", - "create.gui.goggles.generator_stats": "产能器状æ€�:", - "create.gui.goggles.kinetic_stats": "动能状æ€�:", - "create.gui.goggles.at_current_speed": "当å‰�速度应力值", - "create.gui.goggles.base_value": "应力基础值", - "create.gui.gauge.info_header": "仪表信æ�¯:", - "create.gui.speedometer.title": "旋转速度", - "create.gui.stressometer.title": "网络应力", - "create.gui.stressometer.capacity": "剩余应力", - "create.gui.stressometer.overstressed": "超载", - "create.gui.stressometer.no_rotation": "无旋转", - "create.gui.contraptions.not_fast_enough": "显然 %1$s 没有足够的转速.", - "create.gui.contraptions.network_overstressed": "显然装置过载,å‡�速高应力消耗的装置或者添加更多动力", - "create.gui.adjustable_crate.title": "æ�¿æ�¡ç®±", - "create.gui.adjustable_crate.storageSpace": "储存空间", - "create.gui.stockpile_switch.title": "储存开关", - "create.gui.stockpile_switch.lowerLimit": "阈值下é™�", - "create.gui.stockpile_switch.upperLimit": "阈值上é™�", - "create.gui.stockpile_switch.startAt": "å�¯åŠ¨ä¿¡å�·", - "create.gui.stockpile_switch.startAbove": "给予红石信å�·å½“容é‡�大于", - "create.gui.stockpile_switch.stopAt": "å�œæ­¢ä¿¡å�·", - "create.gui.stockpile_switch.stopBelow": "å�œæ­¢çº¢çŸ³ä¿¡å�·å½“容é‡�å°�于", - "create.gui.sequenced_gearshift.title": "å�¯ç¼–程齿轮箱", - "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "è·�离", - "create.gui.sequenced_gearshift.instruction.wait": "等待", - "create.gui.sequenced_gearshift.instruction.wait.duration": "é—´éš”", - "create.gui.sequenced_gearshift.instruction.end": "å�œæ­¢", - "create.gui.sequenced_gearshift.speed": "速度, 速度方å�‘", - "create.gui.sequenced_gearshift.speed.forward": "一å€�速, æ­£å�‘", - "create.gui.sequenced_gearshift.speed.forward_fast": "两å€�速, æ­£å�‘", - "create.gui.sequenced_gearshift.speed.back": "一å€�速, å��å�‘", - "create.gui.sequenced_gearshift.speed.back_fast": "两å€�速, å��å�‘", + "create.gui.goggles.generator_stats": "产能器状态:", + "create.gui.goggles.kinetic_stats": "动能状态:", + "create.gui.goggles.at_current_speed": "当前速度应力值", + "create.gui.goggles.base_value": "应力基础值", + "create.gui.gauge.info_header": "仪表信息:", + "create.gui.speedometer.title": "旋转速度", + "create.gui.stressometer.title": "网络应力", + "create.gui.stressometer.capacity": "剩余应力", + "create.gui.stressometer.overstressed": "超载", + "create.gui.stressometer.no_rotation": "无旋转", + "create.gui.contraptions.not_fast_enough": "显然 %1$s 没有足够的转速.", + "create.gui.contraptions.network_overstressed": "显然装置过载,减速高应力消耗的装置或者添加更多动力", + "create.gui.adjustable_crate.title": "板条箱", + "create.gui.adjustable_crate.storageSpace": "储存空间", + "create.gui.stockpile_switch.title": "储存开关", + "create.gui.stockpile_switch.lowerLimit": "阈值下限", + "create.gui.stockpile_switch.upperLimit": "阈值上限", + "create.gui.stockpile_switch.startAt": "启动信号", + "create.gui.stockpile_switch.startAbove": "给予红石信号当容量大于", + "create.gui.stockpile_switch.stopAt": "停止信号", + "create.gui.stockpile_switch.stopBelow": "停止红石信号当容量小于", + "create.gui.sequenced_gearshift.title": "可编程齿轮箱", + "create.gui.sequenced_gearshift.instruction": "指令", + "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", + "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距离", + "create.gui.sequenced_gearshift.instruction.wait": "等待", + "create.gui.sequenced_gearshift.instruction.wait.duration": "间隔", + "create.gui.sequenced_gearshift.instruction.end": "停止", + "create.gui.sequenced_gearshift.speed": "速度, 速度方向", + "create.gui.sequenced_gearshift.speed.forward": "一倍速, 正向", + "create.gui.sequenced_gearshift.speed.forward_fast": "两倍速, 正向", + "create.gui.sequenced_gearshift.speed.back": "一倍速, 反向", + "create.gui.sequenced_gearshift.speed.back_fast": "两倍速, 反向", - "create.schematicAndQuill.dimensions": "è“�图尺寸: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一个ä½�ç½®.", - "create.schematicAndQuill.secondPos": "第二个ä½�ç½®.", - "create.schematicAndQuill.noTarget": "按ä½�Ctrl选择空气方å�—.", - "create.schematicAndQuill.abort": "删除选择.", - "create.schematicAndQuill.prompt": "输入è“�图的å��称:", - "create.schematicAndQuill.fallbackName": "我的è“�图", - "create.schematicAndQuill.saved": "å�¦å­˜ä¸º %1$s", + "create.schematicAndQuill.dimensions": "蓝图尺寸: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "第一个位置.", + "create.schematicAndQuill.secondPos": "第二个位置.", + "create.schematicAndQuill.noTarget": "按住Ctrl选择空气方块.", + "create.schematicAndQuill.abort": "删除选择.", + "create.schematicAndQuill.prompt": "输入蓝图的名称:", + "create.schematicAndQuill.fallbackName": "我的蓝图", + "create.schematicAndQuill.saved": "另存为 %1$s", - "create.schematic.invalid": "[!] 无效的项目", - "create.schematic.position": "ä½�ç½®", - "create.schematic.rotation": "旋转", - "create.schematic.rotation.none": "æ— ", - "create.schematic.rotation.cw90": "顺时针90", - "create.schematic.rotation.cw180": "顺时针180", - "create.schematic.rotation.cw270": "顺时针270", - "create.schematic.mirror": "é•œåƒ�", - "create.schematic.mirror.none": "æ— ", - "create.schematic.mirror.frontBack": "å‰�å�Ž", - "create.schematic.mirror.leftRight": "å·¦å�³", - "create.schematic.tool.deploy": "部署", - "create.schematic.tool.move": "移动 XZ", - "create.schematic.tool.movey": "移动 Y", - "create.schematic.tool.rotate": "旋转", - "create.schematic.tool.print": "打å�°", - "create.schematic.tool.flip": "翻转", - "create.schematic.tool.deploy.description.0": "将结构移到æŸ�个ä½�ç½®.", - "create.schematic.tool.deploy.description.1": "在地é�¢ä¸Šå�•å‡»é¼ æ ‡å�³é”®ä»¥æ”¾ç½®.", - "create.schematic.tool.deploy.description.2": "按ä½�Ctrl以固定è·�离选择.", - "create.schematic.tool.deploy.description.3": "按ä½�Ctrl鼠标滚动更改è·�离.", - "create.schematic.tool.move.description.0": "水平移动è“�图", - "create.schematic.tool.move.description.1": "选定è“�图,然å�ŽæŒ‰ä½�Ctrl鼠标滚动移动.", + "create.schematic.invalid": "[!] 无效的项目", + "create.schematic.position": "位置", + "create.schematic.rotation": "旋转", + "create.schematic.rotation.none": "无", + "create.schematic.rotation.cw90": "顺时针90", + "create.schematic.rotation.cw180": "顺时针180", + "create.schematic.rotation.cw270": "顺时针270", + "create.schematic.mirror": "镜像", + "create.schematic.mirror.none": "无", + "create.schematic.mirror.frontBack": "前后", + "create.schematic.mirror.leftRight": "左右", + "create.schematic.tool.deploy": "部署", + "create.schematic.tool.move": "移动 XZ", + "create.schematic.tool.movey": "移动 Y", + "create.schematic.tool.rotate": "旋转", + "create.schematic.tool.print": "打印", + "create.schematic.tool.flip": "翻转", + "create.schematic.tool.deploy.description.0": "将结构移到某个位置.", + "create.schematic.tool.deploy.description.1": "在地面上单击鼠标右键以放置.", + "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距离选择.", + "create.schematic.tool.deploy.description.3": "按住Ctrl鼠标滚动更改距离.", + "create.schematic.tool.move.description.0": "水平移动蓝图", + "create.schematic.tool.move.description.1": "选定蓝图,然后按住Ctrl鼠标滚动移动.", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "垂直移动è“�图", - "create.schematic.tool.movey.description.1": "按ä½�Ctrl鼠标滚动上下移动", + "create.schematic.tool.movey.description.0": "垂直移动蓝图", + "create.schematic.tool.movey.description.1": "按住Ctrl鼠标滚动上下移动", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "围绕è“�图中心旋转è“�图.", - "create.schematic.tool.rotate.description.1": "按ä½�Ctrl鼠标滚动旋转90度", + "create.schematic.tool.rotate.description.0": "围绕蓝图中心旋转蓝图.", + "create.schematic.tool.rotate.description.1": "按住Ctrl鼠标滚动旋转90度", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "ç«‹å�³å°†ç»“构放置在世界上", - "create.schematic.tool.print.description.1": "å�³é”®å�•æœºç¡®è®¤å½“å‰�ä½�ç½®.", - "create.schematic.tool.print.description.2": "该工具仅适用于创造模å¼�.", + "create.schematic.tool.print.description.0": "立即将结构放置在世界上", + "create.schematic.tool.print.description.1": "右键单机确认当前位置.", + "create.schematic.tool.print.description.2": "该工具仅适用于创造模式.", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你选择的é�¢ç¿»è½¬è“�图.", - "create.schematic.tool.flip.description.1": "指å�‘è“�图,然å�ŽæŒ‰ä½�Ctrl鼠标滚动将其翻转.", + "create.schematic.tool.flip.description.0": "沿你选择的面翻转蓝图.", + "create.schematic.tool.flip.description.1": "指向蓝图,然后按住Ctrl鼠标滚动将其翻转.", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "正在å�Œæ­¥...", - "create.schematics.uploadTooLarge": "ä½ çš„è“�图太大", - "create.schematics.maxAllowedSize": "å…�许的最大è“�图文件大å°�为:", + "create.schematics.synchronizing": "正在同步...", + "create.schematics.uploadTooLarge": "你的蓝图太大", + "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", - "create.gui.schematicTable.title": "è“�图桌", - "create.gui.schematicTable.availableSchematics": "å�¯ç”¨è“�图", - "create.gui.schematicTable.noSchematics": "没有ä¿�存的è“�图", - "create.gui.schematicTable.uploading": "正在上传...", - "create.gui.schematicTable.finished": "上传完æˆ�!", - "create.gui.schematicannon.title": "è“�图加农炮", - "create.gui.schematicannon.settingsTitle": "放置设置", - "create.gui.schematicannon.listPrinter": "物å“�清å�•æ‰“å�°æœº", - "create.gui.schematicannon.gunpowderLevel": "ç�«è�¯ %1$s%%", - "create.gui.schematicannon.shotsRemaining": "å�‘射进度: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "备份: %1$s", - "create.gui.schematicannon.optionEnabled": "当å‰�å�¯ç”¨", - "create.gui.schematicannon.optionDisabled": "当å‰�ç¦�用", - "create.gui.schematicannon.option.dontReplaceSolid": "ä¸�è¦�替æ�¢æ–¹å�—", - "create.gui.schematicannon.option.replaceWithSolid": "用固体方å�—替æ�¢å·¥ä½œåŒºåŸŸå†…çš„æ–¹å�—", - "create.gui.schematicannon.option.replaceWithAny": "用任何方å�—替æ�¢å·¥ä½œåŒºåŸŸå†…çš„æ–¹å�—", - "create.gui.schematicannon.option.replaceWithEmpty": "用空气替æ�¢å·¥ä½œåŒºåŸŸå†…çš„æ–¹å�—", - "create.gui.schematicannon.option.skipMissing": "绕过缺少的方å�—", - "create.gui.schematicannon.option.skipTileEntities": "ä¿�护存储方å�—", - "create.gui.schematicannon.option.skipMissing.description": "如果缺失æ��料, è“�图大炮将忽略当å‰�缺失æ��料并且使用其他已有æ��料继续工作", - "create.gui.schematicannon.option.skipTileEntities.description": "è“�图将é�¿å…�æ›´æ�¢å­˜å‚¨æ–¹å�—,如箱å­�.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "è“�图加农炮将ä¸�会替æ�¢å·¥ä½œèŒƒå›´å†…的任何固体方å�—.", - "create.gui.schematicannon.option.replaceWithSolid.description": "è“�图加农炮会使用所æ��供的固体方å�—æ�¥æ›¿æ�¢å·¥ä½œåŒºåŸŸå†…的其他固体方å�—", - "create.gui.schematicannon.option.replaceWithAny.description": "è“�图加农炮会使用任何所æ��供的方å�—æ�¥æ›¿æ�¢å·¥ä½œåŒºåŸŸå†…的固体方å�—", - "create.gui.schematicannon.option.replaceWithEmpty.description": "è“�图加农炮将清ç�†å’Œæ›¿æ�¢å·¥ä½œåŒºåŸŸå†…所有原本的方å�—.", + "create.gui.schematicTable.title": "蓝图桌", + "create.gui.schematicTable.availableSchematics": "可用蓝图", + "create.gui.schematicTable.noSchematics": "没有保存的蓝图", + "create.gui.schematicTable.uploading": "正在上传...", + "create.gui.schematicTable.finished": "上传完成!", + "create.gui.schematicannon.title": "蓝图加农炮", + "create.gui.schematicannon.settingsTitle": "放置设置", + "create.gui.schematicannon.listPrinter": "物品清单打印机", + "create.gui.schematicannon.gunpowderLevel": "火药 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "发射进度: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "备份: %1$s", + "create.gui.schematicannon.optionEnabled": "当前启用", + "create.gui.schematicannon.optionDisabled": "当前禁用", + "create.gui.schematicannon.option.dontReplaceSolid": "不要替换方块", + "create.gui.schematicannon.option.replaceWithSolid": "用固体方块替换工作区域内的方块", + "create.gui.schematicannon.option.replaceWithAny": "用任何方块替换工作区域内的方块", + "create.gui.schematicannon.option.replaceWithEmpty": "用空气替换工作区域内的方块", + "create.gui.schematicannon.option.skipMissing": "绕过缺少的方块", + "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", + "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料, 蓝图大炮将忽略当前缺失材料并且使用其他已有材料继续工作", + "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块.", + "create.gui.schematicannon.option.replaceWithSolid.description": "蓝图加农炮会使用所提供的固体方块来替换工作区域内的其他固体方块", + "create.gui.schematicannon.option.replaceWithAny.description": "蓝图加农炮会使用任何所提供的方块来替换工作区域内的固体方块", + "create.gui.schematicannon.option.replaceWithEmpty.description": "蓝图加农炮将清理和替换工作区域内所有原本的方块.", - "create.schematicannon.status.idle": "闲置", - "create.schematicannon.status.ready": "准备", - "create.schematicannon.status.running": "è¿�è¡Œ", - "create.schematicannon.status.finished": "完æˆ�", - "create.schematicannon.status.paused": "已暂å�œ", - "create.schematicannon.status.stopped": "å�œæ­¢", - "create.schematicannon.status.noGunpowder": "ç�«è�¯æ¶ˆè€—完毕", - "create.schematicannon.status.targetNotLoaded": "æ–¹å�—未加载", - "create.schematicannon.status.targetOutsideRange": "定ä½�目标太远", - "create.schematicannon.status.searching": "æ�œç´¢", - "create.schematicannon.status.skipping": "跳过", - "create.schematicannon.status.missingBlock": "缺少方å�—:", - "create.schematicannon.status.placing": "建筑中", - "create.schematicannon.status.clearing": "清除方å�—中", - "create.schematicannon.status.schematicInvalid": "è“�图无效", - "create.schematicannon.status.schematicNotPlaced": "è“�图未部署", - "create.schematicannon.status.schematicExpired": "è“�图文件已过期", + "create.schematicannon.status.idle": "闲置", + "create.schematicannon.status.ready": "准备", + "create.schematicannon.status.running": "运行", + "create.schematicannon.status.finished": "完成", + "create.schematicannon.status.paused": "已暂停", + "create.schematicannon.status.stopped": "停止", + "create.schematicannon.status.noGunpowder": "火药消耗完毕", + "create.schematicannon.status.targetNotLoaded": "方块未加载", + "create.schematicannon.status.targetOutsideRange": "定位目标太远", + "create.schematicannon.status.searching": "搜索", + "create.schematicannon.status.skipping": "跳过", + "create.schematicannon.status.missingBlock": "缺少方块:", + "create.schematicannon.status.placing": "建筑中", + "create.schematicannon.status.clearing": "清除方块中", + "create.schematicannon.status.schematicInvalid": "蓝图无效", + "create.schematicannon.status.schematicNotPlaced": "蓝图未部署", + "create.schematicannon.status.schematicExpired": "蓝图文件已过期", - "create.gui.filter.blacklist": "黑å��å�•", - "create.gui.filter.blacklist.description": "å�ªé€šè¿‡ä¸�在黑å��å�•ä¸­çš„物å“�,如果黑å��å�•ä¸ºç©ºï¼Œæ‰€æœ‰ç‰©å“�都å�¯ä»¥é€šè¿‡", - "create.gui.filter.whitelist": "白å��å�•", - "create.gui.filter.whitelist.description": "å�ªé€šè¿‡åœ¨ç™½å��å�•ä¸­çš„物å“�,如果白å��å�•ä¸ºç©ºï¼Œæ‰€æœ‰ç‰©å“�都无法通过", - "create.gui.filter.respect_data": "匹é…�物å“�属性", - "create.gui.filter.respect_data.description": "å�ªæœ‰ç‰©å“�çš„è€�ä¹…ã€�附魔等其他属性相å�Œæ—¶æ‰�å�¯ä»¥åŒ¹é…�", - "create.gui.filter.ignore_data": "忽视物å“�属性", - "create.gui.filter.ignore_data.description": "匹é…�时忽视物å“�çš„è€�ä¹…ã€�附魔等其他属性", + "create.gui.filter.blacklist": "黑名单", + "create.gui.filter.blacklist.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", + "create.gui.filter.whitelist": "白名单", + "create.gui.filter.whitelist.description": "只通过在白名单中的物品,如果白名单为空,所有物品都无法通过", + "create.gui.filter.respect_data": "匹配物品属性", + "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他属性相同时才可以匹配", + "create.gui.filter.ignore_data": "忽视物品属性", + "create.gui.filter.ignore_data.description": "匹配时忽视物品的耐久、附魔等其他属性", - "create.item_attributes.placeable": "å�¯æ”¾ç½®", - "create.item_attributes.consumable": "å�¯é£Ÿç”¨", - "create.item_attributes.smeltable": "å�¯è¢«ç†”炉烧制", - "create.item_attributes.washable": "å�¯è¢«ç­›æ´—", - "create.item_attributes.smokable": "å�¯è¢«çƒŸç†�", - "create.item_attributes.blastable": "å�¯è¢«é«˜ç‚‰å†¶ç‚¼", - "create.item_attributes.enchanted": "已被附魔", - "create.item_attributes.damaged": "å·²æ�Ÿå��", - "create.item_attributes.badly_damaged": "严é‡�å�—æ�Ÿ", - "create.item_attributes.not_stackable": "无法堆å� ", - "create.item_attributes.equipable": "å�¯è£…备", - "create.item_attributes.furnace_fuel": "是燃料", - "create.item_attributes.in_tag": "标签是%1$s", - "create.item_attributes.in_item_group": "属于 %1$s", - "create.item_attributes.added_by": "ç”±%1$s添加", + "create.item_attributes.placeable": "可放置", + "create.item_attributes.consumable": "可食用", + "create.item_attributes.smeltable": "可被熔炉烧制", + "create.item_attributes.washable": "可被筛洗", + "create.item_attributes.smokable": "可被烟熏", + "create.item_attributes.blastable": "可被高炉冶炼", + "create.item_attributes.enchanted": "已被附魔", + "create.item_attributes.damaged": "已损坏", + "create.item_attributes.badly_damaged": "严重受损", + "create.item_attributes.not_stackable": "无法堆叠", + "create.item_attributes.equipable": "可装备", + "create.item_attributes.furnace_fuel": "是燃料", + "create.item_attributes.in_tag": "标签是%1$s", + "create.item_attributes.in_item_group": "属于 %1$s", + "create.item_attributes.added_by": "由%1$s添加", - "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", - "create.gui.attribute_filter.selected_attributes": "已选择的属性:", - "create.gui.attribute_filter.whitelist_disjunctive": "ä»»æ„�匹é…�白å��å�• (任何)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "å�ªè¦�有其中一项属性符å�ˆï¼Œå°±å�¯ä»¥é€šè¿‡", - "create.gui.attribute_filter.whitelist_conjunctive": "全匹é…�白å��å�• (所有)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "å�ªæœ‰æ‰€æœ‰å±žæ€§éƒ½åŒ¹é…�æ‰�å�¯ä»¥é€šè¿‡", - "create.gui.attribute_filter.blacklist": "黑å��å�•", - "create.gui.attribute_filter.blacklist.description": "å�ªè¦�没有上述属性,就å�¯ä»¥é€šè¿‡", - "create.gui.attribute_filter.add_reference_item": "添加å�‚考物å“�", + "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", + "create.gui.attribute_filter.selected_attributes": "已选择的属性:", + "create.gui.attribute_filter.whitelist_disjunctive": "任意匹配白名单 (任何)", + "create.gui.attribute_filter.whitelist_disjunctive.description": "只要有其中一项属性符合,就可以通过", + "create.gui.attribute_filter.whitelist_conjunctive": "全匹配白名单 (所有)", + "create.gui.attribute_filter.whitelist_conjunctive.description": "只有所有属性都匹配才可以通过", + "create.gui.attribute_filter.blacklist": "黑名单", + "create.gui.attribute_filter.blacklist.description": "只要没有上述属性,就可以通过", + "create.gui.attribute_filter.add_reference_item": "添加参考物品", - "create.tooltip.holdKey": "按ä½� [%1$s]", - "create.tooltip.holdKeyOrKey": "按ä½� [%1$s] 或 [%2$s]", + "create.tooltip.holdKey": "按住 [%1$s]", + "create.tooltip.holdKeyOrKey": "按住 [%1$s] 或 [%2$s]", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求速度: %1$s", - "create.tooltip.speedRequirement.none": "æ— ", - "create.tooltip.speedRequirement.medium": "适当的", - "create.tooltip.speedRequirement.high": "飞快的", - "create.tooltip.stressImpact": "应力消耗: %1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "过载", - "create.tooltip.capacityProvided": "应力生产é‡�: %1$s", - "create.tooltip.capacityProvided.low": "å°�", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.capacityProvided.asGenerator": "(作为产能器)", - "create.tooltip.generationSpeed": "产生 %1$s %2$s", - "create.tooltip.analogStrength": "调节强度: %1$s/15", + "create.tooltip.speedRequirement": "需求速度: %1$s", + "create.tooltip.speedRequirement.none": "无", + "create.tooltip.speedRequirement.medium": "适当的", + "create.tooltip.speedRequirement.high": "飞快的", + "create.tooltip.stressImpact": "应力消耗: %1$s", + "create.tooltip.stressImpact.low": "低", + "create.tooltip.stressImpact.medium": "中", + "create.tooltip.stressImpact.high": "高", + "create.tooltip.stressImpact.overstressed": "过载", + "create.tooltip.capacityProvided": "应力生产量: %1$s", + "create.tooltip.capacityProvided.low": "小", + "create.tooltip.capacityProvided.medium": "中", + "create.tooltip.capacityProvided.high": "大", + "create.tooltip.capacityProvided.asGenerator": "(作为产能器)", + "create.tooltip.generationSpeed": "产生 %1$s %2$s", + "create.tooltip.analogStrength": "调节强度: %1$s/15", - "create.mechanical_mixer.min_ingredients": "最少物å“�ç§�类数", + "create.mechanical_mixer.min_ingredients": "最少物品种类数", "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", @@ -826,22 +826,22 @@ "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: æœ�务器æ¯�秒tick速被é™�低为 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: æœ�务器现在æ¯�秒tick速被é™�低为 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: æœ�务器现在ä¸�å�¡äº†ï¼Œ TPS正常 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop æ�¥è®©æœ�务器的TPS速度å�˜å›žæ­£å¸¸", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start æ�¥æ‰‹åŠ¨é™�低æœ�务器TPS速度", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器每秒tick速被降低为 %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在每秒tick速被降低为 >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 服务器现在不卡了, TPS正常 :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 来让服务器的TPS速度变回正常", + "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器TPS速度", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.subtitle.schematicannon_launch_block": "è“�图大炮å�‘å°„", - "create.subtitle.schematicannon_finish": "è“�图大炮完æˆ�任务", - "create.subtitle.slime_added": "粘液挤压", - "create.subtitle.mechanical_press_activation": "辊压机工作", - "create.subtitle.mechanical_press_item_break": "金属碰撞", - "create.subtitle.blockzapper_place": "放置方å�—", - "create.subtitle.blockzapper_confirm": "选择方å�—", - "create.subtitle.blockzapper_deny": "放置失败", - "create.subtitle.block_funnel_eat": "æ¼�æ–—å�žé£Ÿ", + "create.subtitle.schematicannon_launch_block": "蓝图大炮发射", + "create.subtitle.schematicannon_finish": "蓝图大炮完成任务", + "create.subtitle.slime_added": "粘液挤压", + "create.subtitle.mechanical_press_activation": "辊压机工作", + "create.subtitle.mechanical_press_item_break": "金属碰撞", + "create.subtitle.blockzapper_place": "放置方块", + "create.subtitle.blockzapper_confirm": "选择方块", + "create.subtitle.blockzapper_deny": "放置失败", + "create.subtitle.block_funnel_eat": "漏斗吞食", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -856,514 +856,514 @@ "item.create.example_item.tooltip.action1": "These controls are displayed.", "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "完美地镜é�¢å¤�制工作区域内的方å�—放置与破å��", - "item.create.wand_of_symmetry.tooltip.condition1": "当在热键æ �æ—¶", - "item.create.wand_of_symmetry.tooltip.behaviour1": "æŒ�续进行镜é�¢å¤�制", - "item.create.wand_of_symmetry.tooltip.control1": "当å�³é”®åœ°é�¢æ—¶", - "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_é•œå­�", - "item.create.wand_of_symmetry.tooltip.control2": "当å�³é”®ç©ºæ°”æ—¶", - "item.create.wand_of_symmetry.tooltip.action2": "_删除_ é•œå­�", - "item.create.wand_of_symmetry.tooltip.control3": "当潜行å�³é”®æ—¶", - "item.create.wand_of_symmetry.tooltip.action3": "打开_guiç•Œé�¢_", + "item.create.wand_of_symmetry.tooltip.summary": "完美地镜面复制工作区域内的方块放置与破坏", + "item.create.wand_of_symmetry.tooltip.condition1": "当在热键栏时", + "item.create.wand_of_symmetry.tooltip.behaviour1": "持续进行镜面复制", + "item.create.wand_of_symmetry.tooltip.control1": "当右键地面时", + "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_镜子", + "item.create.wand_of_symmetry.tooltip.control2": "当右键空气时", + "item.create.wand_of_symmetry.tooltip.action2": "_删除_ 镜子", + "item.create.wand_of_symmetry.tooltip.control3": "当潜行右键时", + "item.create.wand_of_symmetry.tooltip.action3": "打开_gui界面_", "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "新颖的å°�工具,å�¯ä»¥è¿œè·�离放置或更æ�¢æ–¹å�—.", - "item.create.handheld_blockzapper.tooltip.control1": "当左键方å�—æ—¶", - "item.create.handheld_blockzapper.tooltip.action1": "设定放置此方å�—.", - "item.create.handheld_blockzapper.tooltip.control2": "当å�³é”®æ–¹å�—æ—¶", - "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替æ�¢_ 目标方å�—.", - "item.create.handheld_blockzapper.tooltip.control3": "当潜行å�³é”®æ—¶", - "item.create.handheld_blockzapper.tooltip.action3": "打开_guiç•Œé�¢_", + "item.create.handheld_blockzapper.tooltip.summary": "新颖的小工具,可以远距离放置或更换方块.", + "item.create.handheld_blockzapper.tooltip.control1": "当左键方块时", + "item.create.handheld_blockzapper.tooltip.action1": "设定放置此方块.", + "item.create.handheld_blockzapper.tooltip.control2": "当右键方块时", + "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替换_ 目标方块.", + "item.create.handheld_blockzapper.tooltip.control3": "当潜行右键时", + "item.create.handheld_blockzapper.tooltip.action3": "打开_gui界面_", "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手æŒ�工具", - "item.create.handheld_worldshaper.tooltip.control1": "当左键方å�—æ—¶", - "item.create.handheld_worldshaper.tooltip.action1": "设定放置此方å�—", - "item.create.handheld_worldshaper.tooltip.control2": "当å�³é”®æ–¹å�—æ—¶", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替æ�¢_目标方å�—", - "item.create.handheld_worldshaper.tooltip.control3": "当潜行å�³é”®æ—¶", - "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_guiç•Œé�¢_", + "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", + "item.create.handheld_worldshaper.tooltip.control1": "当左键方块时", + "item.create.handheld_worldshaper.tooltip.action1": "设定放置此方块", + "item.create.handheld_worldshaper.tooltip.control2": "当右键方块时", + "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替换_目标方块", + "item.create.handheld_worldshaper.tooltip.control3": "当潜行右键时", + "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_gui界面_", "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "适用于常è§�树木的快速肥料", - "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", - "item.create.tree_fertilizer.tooltip.behaviour1": "无论_生长时间_多少,直接长大", + "item.create.tree_fertilizer.tooltip.summary": "适用于常见树木的快速肥料", + "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", + "item.create.tree_fertilizer.tooltip.behaviour1": "无论_生长时间_多少,直接长大", "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "_æ ‘æž—æ¯�ç�­è€…_,能够瞬间ç �倒一棵树", + "item.create.deforester.tooltip.summary": "_树林毁灭者_,能够瞬间砍倒一棵树", "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰è·�离_.", - "item.create.extendo_grip.tooltip.condition1": "放置于副手æ �æ—¶", - "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的触碰è·�离,与_主手_的伸缩机械手æ�ºå�Œä½¿ç”¨ï¼Œå�¯è¿›ä¸€æ­¥å¢žåŠ _触碰è·�离_.", + "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_.", + "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", + "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的触碰距离,与_主手_的伸缩机械手携同使用,可进一步增加_触碰距离_.", "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "将物å“�更精确地进行_筛选分类_, å�¯ä»¥å�Œæ—¶_筛选_多个物å“�或者将已标记的_过滤器_放在å�¦ä¸€ä¸ª_过滤器_里_嵌套_使用.", - "item.create.filter.tooltip.condition1": "当处于_过滤器_槽中", - "item.create.filter.tooltip.behaviour1": "æ ¹æ�®_过滤器_çš„é…�ç½®,_控制_物å“�æµ�ç»�过滤器", - "item.create.filter.tooltip.condition2": "当å�³é”®æ—¶", - "item.create.filter.tooltip.behaviour2": "打开_é…�ç½®é�¢æ�¿_", + "item.create.filter.tooltip.summary": "将物品更精确地进行_筛选分类_, 可以同时_筛选_多个物品或者将已标记的_过滤器_放在另一个_过滤器_里_嵌套_使用.", + "item.create.filter.tooltip.condition1": "当处于_过滤器_槽中", + "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,_控制_物品流经过滤器", + "item.create.filter.tooltip.condition2": "当右键时", + "item.create.filter.tooltip.behaviour2": "打开_配置面板_", "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "比起普通过滤器, _属性过滤器_å�¯ä»¥æ ¹æ�®ä¸�å�Œç‰©å“�çš„_属性_æ�¥è¿›è¡Œè¿‡æ»¤", - "item.create.attribute_filter.tooltip.condition1": "当处于_过滤器_槽中", - "item.create.attribute_filter.tooltip.behaviour1": "æ ¹æ�®_过滤器的_é…�ç½®,_控制_物å“�æµ�ç»�过滤器", - "item.create.attribute_filter.tooltip.condition2": "当å�³é”®æ—¶", - "item.create.attribute_filter.tooltip.behaviour2": "打开_é…�ç½®é�¢æ�¿_", + "item.create.attribute_filter.tooltip.summary": "比起普通过滤器, _属性过滤器_可以根据不同物品的_属性_来进行过滤", + "item.create.attribute_filter.tooltip.condition1": "当处于_过滤器_槽中", + "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器的_配置,_控制_物品流经过滤器", + "item.create.attribute_filter.tooltip.condition2": "当右键时", + "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_", "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "å�¯ä½œä¸ºå�ˆæˆ�æ��料或在_è“�图桌_使用", + "item.create.empty_schematic.tooltip.summary": "可作为合成材料或在_蓝图桌_使用", "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "å�¯ä»¥æ”¾ç½®åœ¨ä¸–界中的结构,æ ¹æ�®éœ€è¦�放置全æ�¯å›¾,并使用_è“�图加农炮_进行构建.", - "item.create.schematic.tooltip.condition1": "当全æ�¯å›¾å­˜åœ¨æ—¶", - "item.create.schematic.tooltip.behaviour1": "å�¯ä»¥ä½¿ç”¨å±�幕上的工具定ä½�", - "item.create.schematic.tooltip.control1": "当潜行å�³é”®æ—¶", - "item.create.schematic.tooltip.action1": "打开一个用于输入_精确å��æ ‡_çš„ç•Œé�¢.", + "item.create.schematic.tooltip.summary": "可以放置在世界中的结构,根据需要放置全息图,并使用_蓝图加农炮_进行构建.", + "item.create.schematic.tooltip.condition1": "当全息图存在时", + "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具定位", + "item.create.schematic.tooltip.control1": "当潜行右键时", + "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面.", "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构ä¿�存到.nbt文件.", - "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手æŒ�è“�图与å�³é”®æ—‹è½¬ä¸¤ä¸ªç‚¹", - "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "按ä½�Ctrl鼠标滚轮选择选区大å°�,å�³é”®ç©ºç™½å¤„ä¿�å­˜.", - "item.create.schematic_and_quill.tooltip.control1": "å�³é”®", - "item.create.schematic_and_quill.tooltip.action1": "选å�–点/确认ä¿�å­˜", - "item.create.schematic_and_quill.tooltip.control2": "按ä½�Ctrl鼠标滚轮", - "item.create.schematic_and_quill.tooltip.action2": "在_空中_选择点滚动以调整è·�离。", - "item.create.schematic_and_quill.tooltip.control3": "当潜行å�³é”®æ—¶", - "item.create.schematic_and_quill.tooltip.action3": "_é‡�ç½®_并删除选区.", + "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到.nbt文件.", + "item.create.schematic_and_quill.tooltip.condition1": "第一步", + "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与右键旋转两个点", + "item.create.schematic_and_quill.tooltip.condition2": "第二步", + "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl鼠标滚轮选择选区大小,右键空白处保存.", + "item.create.schematic_and_quill.tooltip.control1": "右键", + "item.create.schematic_and_quill.tooltip.action1": "选取点/确认保存", + "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl鼠标滚轮", + "item.create.schematic_and_quill.tooltip.action2": "在_空中_选择点滚动以调整距离。", + "item.create.schematic_and_quill.tooltip.control3": "当潜行右键时", + "item.create.schematic_and_quill.tooltip.action3": "_重置_并删除选区.", "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "通过å�‘å°„æ–¹å�—以在世界中é‡�新构建已部署的_å…¨æ�¯å›¾_,使用相邻箱å­�中的物å“�å�Š_ç�«è�¯_作为燃料.", - "block.create.schematicannon.tooltip.control1": "当å�³é”®æ—¶", - "block.create.schematicannon.tooltip.action1": "打开_guiç•Œé�¢_", + "block.create.schematicannon.tooltip.summary": "通过发射方块以在世界中重新构建已部署的_全息图_,使用相邻箱子中的物品及_火药_作为燃料.", + "block.create.schematicannon.tooltip.control1": "当右键时", + "block.create.schematicannon.tooltip.action1": "打开_gui界面_", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "å°†ä¿�存的è“�图图写入_空白è“�图_", - "block.create.schematic_table.tooltip.condition1": "放入空白è“�图时", - "block.create.schematic_table.tooltip.behaviour1": "从Schematics文件夹上传所选文件", + "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", + "block.create.schematic_table.tooltip.condition1": "放入空白蓝图时", + "block.create.schematic_table.tooltip.behaviour1": "从Schematics文件夹上传所选文件", "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "å°†_旋转动能_进行直线传递.", + "block.create.shaft.tooltip.summary": "将_旋转动能_进行直线传递.", "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": "å°†_旋转动能_进行直线传递,或者传递到邻近的_齿轮_上", + "block.create.cogwheel.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到邻近的_齿轮_上", "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "大å�·é½¿è½®ä¼ åŠ¨ç»“æž„,连接到_å°�å�·é½¿è½®_时改å�˜å…¶_转速_.", + "block.create.large_cogwheel.tooltip.summary": "大号齿轮传动结构,连接到_小号齿轮_时改变其_转速_.", "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "å°†_旋转动能_进行直线传递,其方å�—体积使其在穿过墙体时更加_美观_.", + "block.create.encased_shaft.tooltip.summary": "将_旋转动能_进行直线传递,其方块体积使其在穿过墙体时更加_美观_.", "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "å��字传动旋转结构,å�Œæ—¶å°†ç›´çº¿æ—‹è½¬æ–¹å�‘_å��转_.", + "block.create.gearbox.tooltip.summary": "十字传动旋转结构,同时将直线旋转方向_反转_.", "item.create.vertical_gearbox.tooltip": " VERTICAL GEARBOX", - "item.create.vertical_gearbox.tooltip.summary": "_ç«–ç›´_版本的_å��字传动_结构", + "item.create.vertical_gearbox.tooltip.summary": "_竖直_版本的_十字传动_结构", "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "用于动能控制_旋转方å�‘_的开关.", - "block.create.gearshift.tooltip.condition1": "当æ��供红石信å�·æ—¶", - "block.create.gearshift.tooltip.behaviour1": "_更改_旋转方å�‘.", + "block.create.gearshift.tooltip.summary": "用于动能控制_旋转方向_的开关.", + "block.create.gearshift.tooltip.condition1": "当提供红石信号时", + "block.create.gearshift.tooltip.behaviour1": "_更改_旋转方向.", "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "传动开关装置.", - "block.create.clutch.tooltip.condition1": "当æ��供红石信å�·æ—¶", - "block.create.clutch.tooltip.behaviour1": "_å�œæ­¢_å�¦ä¸€ä¾§çš„旋转.", + "block.create.clutch.tooltip.summary": "传动开关装置.", + "block.create.clutch.tooltip.condition1": "当提供红石信号时", + "block.create.clutch.tooltip.behaviour1": "_停止_另一侧的旋转.", "block.create.encased_belt.tooltip": "ENCASED_BELT", - "block.create.encased_belt.tooltip.summary": "å°†_旋转动能_进行直线传递,或者传递到临近的_è¿žæ�ºé½¿è½®ç®±_.", - "block.create.encased_belt.tooltip.condition1": "连接到其他传动或装置时", - "block.create.encased_belt.tooltip.behaviour1": "将具有完全相å�Œçš„转速和方å�‘.", + "block.create.encased_belt.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到临近的_连携齿轮箱_.", + "block.create.encased_belt.tooltip.condition1": "连接到其他传动或装置时", + "block.create.encased_belt.tooltip.behaviour1": "将具有完全相同的转速和方向.", "block.create.adjustable_pulley.tooltip": "ANALOG BELT PULLEY", - "block.create.adjustable_pulley.tooltip.summary": "å°†_旋转动能_进行直线传递,或者传递到临近的_è¿žæ�ºé½¿è½®ç®±_.当方å�—接收到信å�·æ—¶æ—‹è½¬é€Ÿåº¦å°†ä¼šæ”¹å�˜.", - "block.create.adjustable_pulley.tooltip.condition1": "当æ��ä¾›ä¸�å�Œçº¢çŸ³ä¿¡å�·å¼ºåº¦æ—¶", - "block.create.adjustable_pulley.tooltip.behaviour1": "如果没有红石信å�·_ä¸�会加速_,最强的红石信å�·å°†ä¼šæ��å�‡è‡³_两å€�速_", + "block.create.adjustable_pulley.tooltip.summary": "将_旋转动能_进行直线传递,或者传递到临近的_连携齿轮箱_.当方块接收到信号时旋转速度将会改变.", + "block.create.adjustable_pulley.tooltip.condition1": "当提供不同红石信号强度时", + "block.create.adjustable_pulley.tooltip.behaviour1": "如果没有红石信号_不会加速_,最强的红石信号将会提升至_两倍速_", "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "用_ä¼ é€�带_连接两个_传动æ�†_,连接的传动æ�†å°†å…·æœ‰å®Œå…¨ç›¸å�Œçš„转速和方å�‘.ä¼ é€�带å�¯ä»¥_传输实体_å’Œ_物å“�_.", - "item.create.belt_connector.tooltip.control1": "当å�³é”®ä¼ åŠ¨æ�†æ—¶", - "item.create.belt_connector.tooltip.action1": "选择传动æ�†ä½œä¸ºä¼ é€�带的传输点,选定的两个传动æ�†éƒ½å¿…须相互_åž‚ç›´_,_æ°´å¹³_或_对角平é½�_.", - "item.create.belt_connector.tooltip.control2": "当潜行å�³é”®æ—¶", - "item.create.belt_connector.tooltip.action2": "_é‡�ç½®_ä¼ é€�带的第一个选定ä½�ç½®", + "item.create.belt_connector.tooltip.summary": "用_传送带_连接两个_传动杆_,连接的传动杆将具有完全相同的转速和方向.传送带可以_传输实体_和_物品_.", + "item.create.belt_connector.tooltip.control1": "当右键传动杆时", + "item.create.belt_connector.tooltip.action1": "选择传动杆作为传送带的传输点,选定的两个传动杆都必须相互_垂直_,_水平_或_对角平齐_.", + "item.create.belt_connector.tooltip.control2": "当潜行右键时", + "item.create.belt_connector.tooltip.action2": "_重置_传送带的第一个选定位置", "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "一副特殊的眼镜,能够让你看è§� _动能_ çš„ä¿¡æ�¯.", - "item.create.goggles.tooltip.condition1": "当装备时", - "item.create.goggles.tooltip.behaviour1": "将会展示å�•ä¸ªåŠ¨èƒ½å…ƒä»¶çš„_速度_ã€�_应力_等信æ�¯", - "item.create.goggles.tooltip.condition2": "当看å�‘仪表时", - "item.create.goggles.tooltip.behaviour2": "将会展示仪表连接网络的_速度_ã€�_应力_等信æ�¯.", + "item.create.goggles.tooltip.summary": "一副特殊的眼镜,能够让你看见 _动能_ 的信息.", + "item.create.goggles.tooltip.condition1": "当装备时", + "item.create.goggles.tooltip.behaviour1": "将会展示单个动能元件的_速度_、_应力_等信息", + "item.create.goggles.tooltip.condition2": "当看向仪表时", + "item.create.goggles.tooltip.behaviour2": "将会展示仪表连接网络的_速度_、_应力_等信息.", "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "一ç§�有用的工具,能够调整_动能_çš„_æ–¹å�‘_ã€�_é…�ç½®_ç­‰.", - "item.create.wrench.tooltip.control1": "当å�³é”®ç‚¹å‡»_动能元件_æ—¶", - "item.create.wrench.tooltip.action1": "以点击的é�¢ä¸ºè½´å¿ƒ_旋转_点击的方å�—", - "item.create.wrench.tooltip.control2": "当潜行å�³é”®æ—¶", - "item.create.wrench.tooltip.action2": "将物å“�_å�–下_并移动到你的背包中.", + "item.create.wrench.tooltip.summary": "一种有用的工具,能够调整_动能_的_方向_、_配置_等.", + "item.create.wrench.tooltip.control1": "当右键点击_动能元件_时", + "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", + "item.create.wrench.tooltip.control2": "当潜行右键时", + "item.create.wrench.tooltip.action2": "将物品_取下_并移动到你的背包中.", "block.create.creative_motor.tooltip": "CREATIVE MOTOR", - "block.create.creative_motor.tooltip.summary": "å�¯ä»¥é…�置的_æ— é™�动力_æ�¥æº�", + "block.create.creative_motor.tooltip.summary": "可以配置的_无限动力_来源", "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "从相邻的æµ�水中获得动力", + "block.create.water_wheel.tooltip.summary": "从相邻的流水中获得动力", "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "有多ç§�用途,主è¦�å�¯ä»¥å°†_动力_å’Œ_风力_进行互相转æ�¢.", - "block.create.encased_fan.tooltip.condition1": "当被红石信å�·æ¿€æ´»å�Ž", - "block.create.encased_fan.tooltip.behaviour1": "å�¯å°†é¼“风机下方的_热能_(ç�«ï¼Œ 岩浆等)转化æˆ�_动能_, 需è¦�将鼓风机å�‘下摆放", - "block.create.encased_fan.tooltip.condition2": "当旋转时", - "block.create.encased_fan.tooltip.behaviour2": "æ ¹æ�®æ—‹è½¬æ–¹å�‘_推动_或者_å�¸å¼•_实体,强度和速度å�–决于给予的动力.", - "block.create.encased_fan.tooltip.condition3": "当气æµ�通过ç�«,æ°´,岩浆时", - "block.create.encased_fan.tooltip.behaviour3": "在_被å�¹å‡º_的水,ç�«ï¼Œå²©æµ†ç²’å­�中放置物å“�会获得相应产物(_建议é…�å�ˆjei查看_).", + "block.create.encased_fan.tooltip.summary": "有多种用途,主要可以将_动力_和_风力_进行互相转换.", + "block.create.encased_fan.tooltip.condition1": "当被红石信号激活后", + "block.create.encased_fan.tooltip.behaviour1": "可将鼓风机下方的_热能_(火, 岩浆等)转化成_动能_, 需要将鼓风机向下摆放", + "block.create.encased_fan.tooltip.condition2": "当旋转时", + "block.create.encased_fan.tooltip.behaviour2": "根据旋转方向_推动_或者_吸引_实体,强度和速度取决于给予的动力.", + "block.create.encased_fan.tooltip.condition3": "当气流通过火,水,岩浆时", + "block.create.encased_fan.tooltip.behaviour3": "在_被吹出_的水,火,岩浆粒子中放置物品会获得相应产物(_建议配合jei查看_).", "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "ä¾�附在鼓风机上,能够将鼓风机的风到_分散_å�„个方å�‘.", + "block.create.nozzle.tooltip.summary": "依附在鼓风机上,能够将鼓风机的风到_分散_各个方向.", "block.create.hand_crank.tooltip": "HAND CRANK", - "block.create.hand_crank.tooltip.summary": "一ç§�简å�•çš„旋转能æº�,需è¦�_人工转动_.", - "block.create.hand_crank.tooltip.condition1": "当使用时", - "block.create.hand_crank.tooltip.behaviour1": "å�‘ä¾�附的结构æ��供动力,_潜行_时将会æ��ä¾›_å��å�‘_的旋转动力", + "block.create.hand_crank.tooltip.summary": "一种简单的旋转能源,需要_人工转动_.", + "block.create.hand_crank.tooltip.condition1": "当使用时", + "block.create.hand_crank.tooltip.behaviour1": "向依附的结构提供动力,_潜行_时将会提供_反向_的旋转动力", "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "精致的工艺å“�,能够记录时间", - "block.create.cuckoo_clock.tooltip.condition1": "当旋转时", - "block.create.cuckoo_clock.tooltip.behaviour1": "显示 _当å‰�时间_ 并且一天会咕咕_两次_.中å�ˆå’•å’•ä¸€æ¬¡ï¼Œ 黄æ˜�å�¯ä»¥ç�¡è§‰çš„时候咕咕一次 ", + "block.create.cuckoo_clock.tooltip.summary": "精致的工艺品,能够记录时间", + "block.create.cuckoo_clock.tooltip.condition1": "当旋转时", + "block.create.cuckoo_clock.tooltip.behaviour1": "显示 _当前时间_ 并且一天会咕咕_两次_.中午咕咕一次, 黄昏可以睡觉的时候咕咕一次 ", "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "让旋转动力给你带æ�¥ä¸€åœºåˆºæ¿€çš„旋转风车体验.", + "block.create.turntable.tooltip.summary": "让旋转动力给你带来一场刺激的旋转风车体验.", "block.create.millstone.tooltip": "MILLSTONE", - "block.create.millstone.tooltip.summary": "一个能_研磨物å“�_的动能装置, å�¯ä»¥è¢«ä¸´è¿‘çš„_齿轮_供能, 或者å�¯ä»¥åœ¨åº•éƒ¨ç”¨ä¼ åŠ¨æ�†ä¾›èƒ½ï¼Œ æˆ�å“�必须被æ��å�–出石磨", - "block.create.millstone.tooltip.condition1": "当旋转è¿�作时", - "block.create.millstone.tooltip.behaviour1": "开始根æ�® _研磨é…�æ–¹_ æ�¥å¤„ç�†ç‰©å“�.", - "block.create.millstone.tooltip.condition2": "当å�³é”®æ—¶", - "block.create.millstone.tooltip.behaviour2": "手动å�–出研磨å�Žçš„æˆ�å“�.", + "block.create.millstone.tooltip.summary": "一个能_研磨物品_的动能装置, 可以被临近的_齿轮_供能, 或者可以在底部用传动杆供能, 成品必须被提取出石磨", + "block.create.millstone.tooltip.condition1": "当旋转运作时", + "block.create.millstone.tooltip.behaviour1": "开始根据 _研磨配方_ 来处理物品.", + "block.create.millstone.tooltip.condition2": "当右键时", + "block.create.millstone.tooltip.behaviour2": "手动取出研磨后的成品.", "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "一对能够粉碎一切的粉碎轮。å�‘两个粉碎轮æ��ä¾›å�‘内且相å��的转速æ�¥å·¥ä½œ", - "block.create.crushing_wheel.tooltip.condition1": "当两个粉碎轮一起è¿�作时", - "block.create.crushing_wheel.tooltip.behaviour1": "粉碎物å“�并获得相应产物(建议é…�å�ˆjei查看)", + "block.create.crushing_wheel.tooltip.summary": "一对能够粉碎一切的粉碎轮。向两个粉碎轮提供向内且相反的转速来工作", + "block.create.crushing_wheel.tooltip.condition1": "当两个粉碎轮一起运作时", + "block.create.crushing_wheel.tooltip.behaviour1": "粉碎物品并获得相应产物(建议配合jei查看)", "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "一个强力的活塞å¼�机器,用于压制其下方的物å“�.", - "block.create.mechanical_press.tooltip.condition1": "当æ��供红石信å�·æ—¶", - "block.create.mechanical_press.tooltip.behaviour1": "_压制_其下方的物å“�.", - "block.create.mechanical_press.tooltip.condition2": "在传é€�带上方时", - "block.create.mechanical_press.tooltip.behaviour2": "_自动压缩_ç»�过传é€�带的物å“�.", + "block.create.mechanical_press.tooltip.summary": "一个强力的活塞式机器,用于压制其下方的物品.", + "block.create.mechanical_press.tooltip.condition1": "当提供红石信号时", + "block.create.mechanical_press.tooltip.behaviour1": "_压制_其下方的物品.", + "block.create.mechanical_press.tooltip.condition2": "在传送带上方时", + "block.create.mechanical_press.tooltip.behaviour2": "_自动压缩_经过传送带的物品.", "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact_ _items_ in the basin whenever all necessary ingredients are present.", "block.create.basin.tooltip": "BASIN", - "block.create.basin.tooltip.summary": "一ç§�方便的_物å“�容器_,常常用于_辊压机_å’Œ_æ�…拌机_,å�¯ä»¥è¢«_红石比较器_检测", + "block.create.basin.tooltip.summary": "一种方便的_物品容器_,常常用于_辊压机_和_搅拌机_,可以被_红石比较器_检测", "block.create.reinforced_rail.tooltip": "UNLOCALIZED: REINFORCED RAIL", "block.create.reinforced_rail.tooltip.summary": "UNLOCALIZED: A timber stabilized rail, _does_ _not_ _need_ _supports_.", "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", - "block.create.mechanical_mixer.tooltip.summary": "一ç§�能够动æ€�进行æ�…拌的机器,需è¦�æ�’定且够快的速度,并且下方需è¦�放置_工作盆_(中间需è¦�一格高)", - "block.create.mechanical_mixer.tooltip.condition1": "当ä½�于工作盆上方", - "block.create.mechanical_mixer.tooltip.behaviour1": "å�ªè¦�_工作盆_中有必è¦�的物å“�,就会将物å“�进行æ�…æ‹Œ", - "block.create.mechanical_mixer.tooltip.condition2": "当使用扳手时", - "block.create.mechanical_mixer.tooltip.behaviour2": "_é…�ç½®_é…�方中物å“�å�ˆæˆ�所需的最å°�æ•°ç›®,通过这个é…�置能够_é�¿å…�ä¸�需è¦�_çš„ã€�相似的é…�æ–¹", + "block.create.mechanical_mixer.tooltip.summary": "一种能够动态进行搅拌的机器,需要恒定且够快的速度,并且下方需要放置_工作盆_(中间需要一格高)", + "block.create.mechanical_mixer.tooltip.condition1": "当位于工作盆上方", + "block.create.mechanical_mixer.tooltip.behaviour1": "只要_工作盆_中有必要的物品,就会将物品进行搅拌", + "block.create.mechanical_mixer.tooltip.condition2": "当使用扳手时", + "block.create.mechanical_mixer.tooltip.behaviour2": "_配置_配方中物品合成所需的最小数目,通过这个配置能够_避免不需要_的、相似的配方", "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", - "block.create.mechanical_crafter.tooltip.summary": "一ç§�ä¾�é� _动能_çš„_自动_å�ˆæˆ�å�°ã€‚æ ¹æ�®æƒ³è¦�å�ˆæˆ�物å“�çš„_å�ˆæˆ�表_æ�¥æ‘†æ”¾_相应数é‡�_的机械制造机,并且用扳手调整物å“�在制造机里的_传动方å�‘_以让他们å�ˆåœ¨ä¸€èµ·å�Žè¢«è¾“出", - "block.create.mechanical_crafter.tooltip.condition1": "当旋转时", - "block.create.mechanical_crafter.tooltip.behaviour1": "当机器中_所有_的物å“�槽有物å“�æ—¶,将会å�¯åŠ¨æ‰€æœ‰çš„制造机æ�¥å·¥ä½œ.", - "block.create.mechanical_crafter.tooltip.condition2": "被红石激活时", - "block.create.mechanical_crafter.tooltip.behaviour2": "强制å�¯åŠ¨å½“å‰�网格中所有给定的_æ��æ–™_çš„_å�ˆæˆ�_", - "block.create.mechanical_crafter.tooltip.control1": "当在机器å‰�方使用扳手时", - "block.create.mechanical_crafter.tooltip.action1": "将会改å�˜ç‰©å“�移动的方å�‘. è¦�å�ˆæˆ�一个物å“�,所有原料必须被_移动到一起_,并且在阵列的_外缘_被弹出机器", - "block.create.mechanical_crafter.tooltip.control2": "当侧方或者å�Žæ–¹ä½¿ç”¨æ‰³æ‰‹æ—¶", - "block.create.mechanical_crafter.tooltip.action2": "连接相邻的制造机的物å“�æ �,这样_相å�Œ_的物å“�就会自动进入所有相互连接的制造机", + "block.create.mechanical_crafter.tooltip.summary": "一种依靠_动能_的_自动_合成台。根据想要合成物品的_合成表_来摆放_相应数量_的机械制造机,并且用扳手调整物品在制造机里的_传动方向_以让他们合在一起后被输出", + "block.create.mechanical_crafter.tooltip.condition1": "当旋转时", + "block.create.mechanical_crafter.tooltip.behaviour1": "当机器中_所有_的物品槽有物品时,将会启动所有的制造机来工作.", + "block.create.mechanical_crafter.tooltip.condition2": "被红石激活时", + "block.create.mechanical_crafter.tooltip.behaviour2": "强制启动当前网格中所有给定的_材料_的_合成_", + "block.create.mechanical_crafter.tooltip.control1": "当在机器前方使用扳手时", + "block.create.mechanical_crafter.tooltip.action1": "将会改变物品移动的方向. 要合成一个物品,所有原料必须被_移动到一起_,并且在阵列的_外缘_被弹出机器", + "block.create.mechanical_crafter.tooltip.control2": "当侧方或者后方使用扳手时", + "block.create.mechanical_crafter.tooltip.action2": "连接相邻的制造机的物品栏,这样_相同_的物品就会自动进入所有相互连接的制造机", "block.create.furnace_engine.tooltip": "FURNACE ENGINE", - "block.create.furnace_engine.tooltip.summary": "一ç§�强力的_旋转动能_çš„æ�¥æº�,但是需è¦�_正在工作_çš„_熔炉_(三ç§�熔炉都å�¯ä»¥)", - "block.create.furnace_engine.tooltip.condition1": "当连接正在燃烧的熔炉", - "block.create.furnace_engine.tooltip.behaviour1": "将会带动_相连_çš„_飞轮_(需è¦�间隔一格),用高炉速度更快", + "block.create.furnace_engine.tooltip.summary": "一种强力的_旋转动能_的来源,但是需要_正在工作_的_熔炉_(三种熔炉都可以)", + "block.create.furnace_engine.tooltip.condition1": "当连接正在燃烧的熔炉", + "block.create.furnace_engine.tooltip.behaviour1": "将会带动_相连_的_飞轮_(需要间隔一格),用高炉速度更快", "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "一ç§�大型的金属轮, 能将_熔炉引擎_æ��供的动能稳定化输出, 需è¦�与_熔炉引擎_间隔一个方å�—", - "block.create.flywheel.tooltip.condition1": "当连接正在输出的_熔炉引擎_", - "block.create.flywheel.tooltip.behaviour1": "将会æ��供相应的_旋转动能_.", + "block.create.flywheel.tooltip.summary": "一种大型的金属轮, 能将_熔炉引擎_提供的动能稳定化输出, 需要与_熔炉引擎_间隔一个方块", + "block.create.flywheel.tooltip.condition1": "当连接正在输出的_熔炉引擎_", + "block.create.flywheel.tooltip.behaviour1": "将会提供相应的_旋转动能_.", "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", - "block.create.portable_storage_interface.tooltip.summary": "一ç§�便æ�ºçš„_物å“�接å�£_,能够将移动的结构中的物å“�进行交互移动", - "block.create.portable_storage_interface.tooltip.condition1": "当处于移动时", - "block.create.portable_storage_interface.tooltip.behaviour1": "与固定的_传输器_交互. 会根æ�®ä¼ è¾“器的方å�‘进行输出或者输入物å“�。 移动结构在传输物å“�的时候会短暂地å�œä¸‹", + "block.create.portable_storage_interface.tooltip.summary": "一种便携的_物品接口_,能够将移动的结构中的物品进行交互移动", + "block.create.portable_storage_interface.tooltip.condition1": "当处于移动时", + "block.create.portable_storage_interface.tooltip.behaviour1": "与固定的_传输器_交互. 会根据传输器的方向进行输出或者输入物品。 移动结构在传输物品的时候会短暂地停下", "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", - "block.create.rotation_speed_controller.tooltip.summary": "一个å�¯ä»¥å�˜æ�¢æ‰€è¿žæŽ¥é½¿è½®æ—‹è½¬é€Ÿåº¦çš„元件", - "block.create.rotation_speed_controller.tooltip.condition1": "当连接大齿轮时", - "block.create.rotation_speed_controller.tooltip.behaviour1": "将输入的旋转动能改å�˜é€Ÿåº¦å�Ž,传递给连接的大齿轮,连接的大齿轮è¦�放在上方.", + "block.create.rotation_speed_controller.tooltip.summary": "一个可以变换所连接齿轮旋转速度的元件", + "block.create.rotation_speed_controller.tooltip.condition1": "当连接大齿轮时", + "block.create.rotation_speed_controller.tooltip.behaviour1": "将输入的旋转动能改变速度后,传递给连接的大齿轮,连接的大齿轮要放在上方.", "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "活塞的高级版本,使用_旋转动能_精确地移动其连接的方å�—,背é�¢å�¯æ”¾ç½®æ´»å¡žæ�†å»¶é•¿æ´»å¡žèŒƒå›´,没有活塞æ�†å°†ä¸�会工作,使用_底盘_或者_粘液å�—_å�¯ä»¥ç§»åŠ¨å¤šè¡Œæ–¹å�—.", - "block.create.mechanical_piston.tooltip.condition1": "推拉活塞时", - "block.create.mechanical_piston.tooltip.behaviour1": "活塞的速度和方å�‘与所接å�—转速的大å°�以å�Šæ–¹å�‘相关.", + "block.create.mechanical_piston.tooltip.summary": "活塞的高级版本,使用_旋转动能_精确地移动其连接的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块.", + "block.create.mechanical_piston.tooltip.condition1": "推拉活塞时", + "block.create.mechanical_piston.tooltip.behaviour1": "活塞的速度和方向与所接受转速的大小以及方向相关.", "block.create.sticky_mechanical_piston.tooltip": "STICKY MECHANICAL PISTON", - "block.create.sticky_mechanical_piston.tooltip.summary": "粘性活塞的高级版本,使用_旋转动能_精确移动其粘贴的方å�—,背é�¢å�¯æ”¾ç½®æ´»å¡žæ�†å»¶é•¿æ´»å¡žèŒƒå›´,没有活塞æ�†å°†ä¸�会工作,使用_底盘_或者_粘液å�—_å�¯ä»¥ç§»åŠ¨å¤šè¡Œæ–¹å�—.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "推拉活塞时", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "活塞的速度和方å�‘与所接å�—转速的大å°�以å�Šæ–¹å�‘相关.", + "block.create.sticky_mechanical_piston.tooltip.summary": "粘性活塞的高级版本,使用_旋转动能_精确移动其粘贴的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块.", + "block.create.sticky_mechanical_piston.tooltip.condition1": "推拉活塞时", + "block.create.sticky_mechanical_piston.tooltip.behaviour1": "活塞的速度和方向与所接受转速的大小以及方向相关.", "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "用于增加_动力活塞_的移动范围", - "block.create.piston_extension_pole.tooltip.condition1": "当连接到动力活塞时", - "block.create.piston_extension_pole.tooltip.behaviour1": "活塞的移动范围将扩大", + "block.create.piston_extension_pole.tooltip.summary": "用于增加_动力活塞_的移动范围", + "block.create.piston_extension_pole.tooltip.condition1": "当连接到动力活塞时", + "block.create.piston_extension_pole.tooltip.behaviour1": "活塞的移动范围将扩大", "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "用于建造大型的旋转结构,或者å��之转æ�¢_风能_为_旋转能_.", - "block.create.mechanical_bearing.tooltip.condition1": "当旋转时", - "block.create.mechanical_bearing.tooltip.behaviour1": "使用_粘液å�—_或者_底盘_æ�¥é©±åŠ¨æ›´å¤šæ–¹å�—", - "block.create.mechanical_bearing.tooltip.condition2": "给予红石信å�·æ—¶", - "block.create.mechanical_bearing.tooltip.behaviour2": "开始旋转并为连接的传动方å�—æ��供动力(此结构需使用_羊毛_建造).", + "block.create.mechanical_bearing.tooltip.summary": "用于建造大型的旋转结构,或者反之转换_风能_为_旋转能_.", + "block.create.mechanical_bearing.tooltip.condition1": "当旋转时", + "block.create.mechanical_bearing.tooltip.behaviour1": "使用_粘液块_或者_底盘_来驱动更多方块", + "block.create.mechanical_bearing.tooltip.condition2": "给予红石信号时", + "block.create.mechanical_bearing.tooltip.behaviour2": "开始旋转并为连接的传动方块提供动力(此结构需使用_羊毛_建造).", "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", - "block.create.clockwork_bearing.tooltip.summary": "一ç§�高级的机械轴承,å�¯ä»¥æ ¹æ�®å½“å‰�游æˆ�内时间旋转两个ä¸�å�Œçš„指针", - "block.create.clockwork_bearing.tooltip.condition1": "当旋转时", - "block.create.clockwork_bearing.tooltip.behaviour1": "旋转第一个连接的结构作为时针,第二个连接的结构作为分针", + "block.create.clockwork_bearing.tooltip.summary": "一种高级的机械轴承,可以根据当前游戏内时间旋转两个不同的指针", + "block.create.clockwork_bearing.tooltip.condition1": "当旋转时", + "block.create.clockwork_bearing.tooltip.behaviour1": "旋转第一个连接的结构作为时针,第二个连接的结构作为分针", "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", - "block.create.sequenced_gearshift.tooltip.summary": "一ç§�å�¯ç¼–程的组件,å�¯ä»¥æ ¹æ�®å†…部的指令改å�˜æ—‹è½¬çš„_æ–¹å�‘_,_速度_,以å�Š_è·�离_。 此组件å�¯ä»¥æœ‰æ•ˆé…�å�ˆæ´»å¡žå’Œè½´æ‰¿ç­‰ä½¿ç”¨ã€‚最高å�¯è®©å…¶æŒ‰_顺åº�_执行_5æ�¡æŒ‡ä»¤_。æ�¡é«˜é€Ÿæ—‹è½¬æ—¶å�¯èƒ½ä¼šå�˜å¾—ä¸�精确。", - "block.create.sequenced_gearshift.tooltip.condition1": "当给予红石信å�·æ—¶", - "block.create.sequenced_gearshift.tooltip.behaviour1": "在输入旋转动能的情况下,执行指令.", - "block.create.sequenced_gearshift.tooltip.condition2": "当å�³é”®æ—¶", - "block.create.sequenced_gearshift.tooltip.behaviour2": "将打开é…�ç½®_é…�置界é�¢_", + "block.create.sequenced_gearshift.tooltip.summary": "一种可编程的组件,可以根据内部的指令改变旋转的_方向_,_速度_,以及_距离_。 此组件可以有效配合活塞和轴承等使用。最高可让其按_顺序_执行_5条指令_。条高速旋转时可能会变得不精确。", + "block.create.sequenced_gearshift.tooltip.condition1": "当给予红石信号时", + "block.create.sequenced_gearshift.tooltip.behaviour1": "在输入旋转动能的情况下,执行指令.", + "block.create.sequenced_gearshift.tooltip.condition2": "当右键时", + "block.create.sequenced_gearshift.tooltip.behaviour2": "将打开配置_配置界面_", "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "将连接当å‰�æ–¹å�—的结构连接在_矿车_上", - "block.create.cart_assembler.tooltip.condition1": "当被红石信å�·æ¿€æ´»æ—¶", - "block.create.cart_assembler.tooltip.behaviour1": "将装é…�站上连接的结构组装到矿车上,并é€�矿车上路", - "block.create.cart_assembler.tooltip.condition2": "没有红石信å�·æ—¶", - "block.create.cart_assembler.tooltip.behaviour2": "å°†ç»�过的矿车上的结构_实体化_,并å�œä½�矿车.", + "block.create.cart_assembler.tooltip.summary": "将连接当前方块的结构连接在_矿车_上", + "block.create.cart_assembler.tooltip.condition1": "当被红石信号激活时", + "block.create.cart_assembler.tooltip.behaviour1": "将装配站上连接的结构组装到矿车上,并送矿车上路", + "block.create.cart_assembler.tooltip.condition2": "没有红石信号时", + "block.create.cart_assembler.tooltip.behaviour2": "将经过的矿车上的结构_实体化_,并停住矿车.", "block.create.cart_assembler.tooltip.condition3": "UNLOCALIZED: When placed above Detector Rail", "block.create.cart_assembler.tooltip.behaviour3": "UNLOCALIZED: _Assembles_ unassembled _carts_, _disassembles_ assembled _carts_.", "block.create.cart_assembler.tooltip.condition4": "UNLOCALIZED: When placed above Activator Rail", "block.create.cart_assembler.tooltip.behaviour4": "UNLOCALIZED: _Disassembles_ _carts_ when _powered_.", "block.create.rope_pulley.tooltip": "ROPE PULLEY", - "block.create.rope_pulley.tooltip.summary": "移动绳索相连的结构. 使用_底盘_或者_粘液å�—_æ�¥ç§»åŠ¨å¤šè¡Œæ–¹å�—", - "block.create.rope_pulley.tooltip.condition1": "当旋转时", - "block.create.rope_pulley.tooltip.behaviour1": "æ ¹æ�®è¾“入的转速的大å°�以å�Šæ–¹å�‘,移动链接的结构.", + "block.create.rope_pulley.tooltip.summary": "移动绳索相连的结构. 使用_底盘_或者_粘液块_来移动多行方块", + "block.create.rope_pulley.tooltip.condition1": "当旋转时", + "block.create.rope_pulley.tooltip.behaviour1": "根据输入的转速的大小以及方向,移动链接的结构.", "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "一ç§�å�¯é…�置的_底盘_。这ç§�底盘å�¯ä»¥å°†å¤šä¸ªæ–¹å�—连接起æ�¥ç»„å�ˆæˆ�_大型结构_", - "block.create.linear_chassis.tooltip.condition1": "被移动时", - "block.create.linear_chassis.tooltip.behaviour1": "移动所有_并排_çš„_机壳底盘_。如果底盘上涂了_粘液ç�ƒ_,那么其范围内一æ�¡ç›´çº¿çš„æ–¹å�—都会被_é»�附移动_(详情è§�Ctrl).", - "block.create.linear_chassis.tooltip.condition2": "当使用扳手时", - "block.create.linear_chassis.tooltip.behaviour2": "通过_鼠标滚轮_æ�¥é…�置连接的方å�—的范围.按ä½�_Ctrl_时滚动滚轮å�¯ä»¥å�Œæ—¶é…�置相连的其他底盘.", - "block.create.linear_chassis.tooltip.control1": "当用粘液ç�ƒå�³é”®æ—¶", - "block.create.linear_chassis.tooltip.action1": "å�˜ä¸º_粘性机壳底盘_. 所有工作范围内与其相连的方å�—会与其_一å�Œç§»åŠ¨_", + "block.create.linear_chassis.tooltip.summary": "一种可配置的_底盘_。这种底盘可以将多个方块连接起来组合成_大型结构_", + "block.create.linear_chassis.tooltip.condition1": "被移动时", + "block.create.linear_chassis.tooltip.behaviour1": "移动所有_并排_的_机壳底盘_。如果底盘上涂了_粘液球_,那么其范围内一条直线的方块都会被_黏附移动_(详情见Ctrl).", + "block.create.linear_chassis.tooltip.condition2": "当使用扳手时", + "block.create.linear_chassis.tooltip.behaviour2": "通过_鼠标滚轮_来配置连接的方块的范围.按住_Ctrl_时滚动滚轮可以同时配置相连的其他底盘.", + "block.create.linear_chassis.tooltip.control1": "当用粘液球右键时", + "block.create.linear_chassis.tooltip.action1": "变为_粘性机壳底盘_. 所有工作范围内与其相连的方块会与其_一同移动_", "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "一ç§�å�¯é…�置的底盘。这ç§�底盘å�¯ä»¥å°†å¤šä¸ªæ–¹å�—连接起æ�¥ç»„å�ˆæˆ�_大型结构_", - "block.create.radial_chassis.tooltip.condition1": "当旋转时", - "block.create.radial_chassis.tooltip.behaviour1": "所有_竖排_çš„_旋转底盘_会互相粘连移动,并且æ¯�个涂了_粘液ç�ƒ_的底盘都会带动其工作å�Šå¾„内的方å�—(详情è§�Ctrl).", - "block.create.radial_chassis.tooltip.condition2": "当使用扳手时", - "block.create.radial_chassis.tooltip.behaviour2": "é…�置连接的方å�—çš„å�Šå¾„.按ä½�_Ctrl_å�¯ä»¥å�Œæ—¶é…�置相连的其他底盘.", - "block.create.radial_chassis.tooltip.control1": "当用粘液ç�ƒå�³é”®æ—¶", - "block.create.radial_chassis.tooltip.action1": "å�˜ä¸º_粘性旋转底盘_.所有工作范围内与其相连的方å�—会与其_一å�Œç§»åŠ¨_.", + "block.create.radial_chassis.tooltip.summary": "一种可配置的底盘。这种底盘可以将多个方块连接起来组合成_大型结构_", + "block.create.radial_chassis.tooltip.condition1": "当旋转时", + "block.create.radial_chassis.tooltip.behaviour1": "所有_竖排_的_旋转底盘_会互相粘连移动,并且每个涂了_粘液球_的底盘都会带动其工作半径内的方块(详情见Ctrl).", + "block.create.radial_chassis.tooltip.condition2": "当使用扳手时", + "block.create.radial_chassis.tooltip.behaviour2": "配置连接的方块的半径.按住_Ctrl_可以同时配置相连的其他底盘.", + "block.create.radial_chassis.tooltip.control1": "当用粘液球右键时", + "block.create.radial_chassis.tooltip.action1": "变为_粘性旋转底盘_.所有工作范围内与其相连的方块会与其_一同移动_.", "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "用于_ç ´å��æ–¹å�—_的装置,å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动", - "block.create.mechanical_drill.tooltip.condition1": "被供能时", - "block.create.mechanical_drill.tooltip.behaviour1": "_原地_ç ´å��æ­£å‰�方的方å�—,且_伤害_在一定范围内生物å�ŠçŽ©å®¶.", - "block.create.mechanical_drill.tooltip.condition2": "当移动时", - "block.create.mechanical_drill.tooltip.behaviour2": "横å�‘或纵å�‘ç ´å��其所_碰到_çš„æ–¹å�—.", + "block.create.mechanical_drill.tooltip.summary": "用于_破坏方块_的装置,可以被_动力活塞_和_动力轴承_等带动", + "block.create.mechanical_drill.tooltip.condition1": "被供能时", + "block.create.mechanical_drill.tooltip.behaviour1": "_原地_破坏正前方的方块,且_伤害_在一定范围内生物及玩家.", + "block.create.mechanical_drill.tooltip.condition2": "当移动时", + "block.create.mechanical_drill.tooltip.behaviour2": "横向或纵向破坏其所_碰到_的方块.", "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "适用于中型作物自动化的收割机,å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动.", - "block.create.mechanical_harvester.tooltip.condition1": "当移动时", - "block.create.mechanical_harvester.tooltip.behaviour1": "收割机移动至æˆ�熟作物,收割作物并将作物å�˜ä¸ºåˆ�始生长状æ€�.", + "block.create.mechanical_harvester.tooltip.summary": "适用于中型作物自动化的收割机,可以被_动力活塞_和_动力轴承_等带动.", + "block.create.mechanical_harvester.tooltip.condition1": "当移动时", + "block.create.mechanical_harvester.tooltip.behaviour1": "收割机移动至成熟作物,收割作物并将作物变为初始生长状态.", "block.create.mechanical_plough.tooltip": "MECHANICAL mechanical_plough", - "block.create.mechanical_plough.tooltip.summary": "çŠ�是一个é�žå¸¸æœ‰ç”¨çš„多功能方å�—, 它å�¯ä»¥è¢« _动力活塞_ å’Œ _动力轴承_ 等带动", - "block.create.mechanical_plough.tooltip.condition1": "当移动时", - "block.create.mechanical_plough.tooltip.behaviour1": "å�¯ä»¥æ‰“掉无碰撞体积的一些_附ç�€æ–¹å�—_,比如ç�«æŠŠå’Œé›ªç­‰. å�¯ä»¥åœ¨ä¸�伤害实体的情况下移动它们. 能åƒ�_锄头_一样翻土耕田.", + "block.create.mechanical_plough.tooltip.summary": "犁是一个非常有用的多功能方块, 它可以被 _动力活塞_ 和 _动力轴承_ 等带动", + "block.create.mechanical_plough.tooltip.condition1": "当移动时", + "block.create.mechanical_plough.tooltip.behaviour1": "可以打掉无碰撞体积的一些_附着方块_,比如火把和雪等. 可以在不伤害实体的情况下移动它们. 能像_锄头_一样翻土耕田.", "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", - "block.create.mechanical_saw.tooltip.summary": "å�¯ä»¥ç”¨äºŽç �æ ‘,也å�¯ä»¥ç”¨äºŽåˆ‡å‰²æ–¹å�—,å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动", - "block.create.mechanical_saw.tooltip.condition1": "当å�‘上放置时", - "block.create.mechanical_saw.tooltip.behaviour1": "å�¯ä»¥åˆ‡å‰²å�„ç§�物å“�(建议é…�å�ˆjei查看)", - "block.create.mechanical_saw.tooltip.condition2": "当方å�‘在水平é�¢æ—¶", - "block.create.mechanical_saw.tooltip.behaviour2": "å�¯ä»¥ç �倒é�¢å‰�的树木", - "block.create.mechanical_saw.tooltip.condition3": "当移动时", - "block.create.mechanical_saw.tooltip.behaviour3": "将会ç �倒碰撞到的树木", + "block.create.mechanical_saw.tooltip.summary": "可以用于砍树,也可以用于切割方块,可以被_动力活塞_和_动力轴承_等带动", + "block.create.mechanical_saw.tooltip.condition1": "当向上放置时", + "block.create.mechanical_saw.tooltip.behaviour1": "可以切割各种物品(建议配合jei查看)", + "block.create.mechanical_saw.tooltip.condition2": "当方向在水平面时", + "block.create.mechanical_saw.tooltip.behaviour2": "可以砍倒面前的树木", + "block.create.mechanical_saw.tooltip.condition3": "当移动时", + "block.create.mechanical_saw.tooltip.behaviour3": "将会砍倒碰撞到的树木", "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "æ ¹æ�®è¿žæŽ¥çš„容器_存储空间_çš„å� ç”¨æƒ…况切æ�¢çº¢çŸ³ä¿¡å�·å¼ºåº¦.", - "block.create.stockpile_switch.tooltip.condition1": "低于下é™�æ—¶", - "block.create.stockpile_switch.tooltip.behaviour1": "å�œæ­¢æ��供红石信å�·", - "block.create.stockpile_switch.tooltip.condition2": "超过上é™�æ—¶", - "block.create.stockpile_switch.tooltip.behaviour2": "开始æ��供红石信å�·,直到å†�次到达下é™�.", - "block.create.stockpile_switch.tooltip.control1": "当å�³é”®æ–¹å�—æ—¶", - "block.create.stockpile_switch.tooltip.action1": "打开é…�ç½®é�¢æ�¿", + "block.create.stockpile_switch.tooltip.summary": "根据连接的容器_存储空间_的占用情况切换红石信号强度.", + "block.create.stockpile_switch.tooltip.condition1": "低于下限时", + "block.create.stockpile_switch.tooltip.behaviour1": "停止提供红石信号", + "block.create.stockpile_switch.tooltip.condition2": "超过上限时", + "block.create.stockpile_switch.tooltip.behaviour2": "开始提供红石信号,直到再次到达下限.", + "block.create.stockpile_switch.tooltip.control1": "当右键方块时", + "block.create.stockpile_switch.tooltip.action1": "打开配置面板", "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "无线红石信å�·ç»ˆç«¯,å�¯ä»¥ä½¿ç”¨ä»»ä½•ç‰©å“�编辑终端频é�“. 虽然è·�离有é™�,但是也挺远的.", - "block.create.redstone_link.tooltip.condition1": "当å�¯ç”¨æ—¶", - "block.create.redstone_link.tooltip.behaviour1": "接收相å�Œé¢‘é�“æ��供的红石信å�·.", - "block.create.redstone_link.tooltip.control1": "当手æŒ�æ–¹å�—å�³é”®æ–¹å�—æ—¶", - "block.create.redstone_link.tooltip.action1": "手æŒ�ä»»æ„�物å“�为其设置频é�“,å�¯ä»¥ç»„å�ˆä¸¤ä¸ªç‰©å“�.", - "block.create.redstone_link.tooltip.control2": "当潜行å�³é”®æ—¶", - "block.create.redstone_link.tooltip.action2": "在终端模å¼�和接收模å¼�之间切æ�¢.", + "block.create.redstone_link.tooltip.summary": "无线红石信号终端,可以使用任何物品编辑终端频道. 虽然距离有限,但是也挺远的.", + "block.create.redstone_link.tooltip.condition1": "当启用时", + "block.create.redstone_link.tooltip.behaviour1": "接收相同频道提供的红石信号.", + "block.create.redstone_link.tooltip.control1": "当手持方块右键方块时", + "block.create.redstone_link.tooltip.action1": "手持任意物品为其设置频道,可以组合两个物品.", + "block.create.redstone_link.tooltip.control2": "当潜行右键时", + "block.create.redstone_link.tooltip.action2": "在终端模式和接收模式之间切换.", "block.create.nixie_tube.tooltip": "NIXIE TUBE", - "block.create.nixie_tube.tooltip.summary": "一个花里胡哨的红石强度显示器,范围:0到15。", - "block.create.nixie_tube.tooltip.condition1": "被红石激活时", - "block.create.nixie_tube.tooltip.behaviour1": "直观的显示当å‰�红石型å�·çš„强度", + "block.create.nixie_tube.tooltip.summary": "一个花里胡哨的红石强度显示器,范围:0到15。", + "block.create.nixie_tube.tooltip.condition1": "被红石激活时", + "block.create.nixie_tube.tooltip.behaviour1": "直观的显示当前红石型号的强度", "block.create.redstone_contact.tooltip": "REDSTONE CONTACT", - "block.create.redstone_contact.tooltip.summary": "一ç§�用于高级红石装置的设备. å�ªèƒ½ä¸¤ä¸¤å·¥ä½œ. å�¯ä»¥è¢«_动力活塞_å’Œ_动力轴承_等带动", - "block.create.redstone_contact.tooltip.condition1": "当正对é�¢æ”¾ç½®ä¹Ÿæ”¾ç½®_相互æœ�å�‘_的接触信å�·å�‘生器时", - "block.create.redstone_contact.tooltip.behaviour1": "æ��ä¾›_红石信å�·_.", - "block.create.redstone_contact.tooltip.condition2": "当移动时", - "block.create.redstone_contact.tooltip.behaviour2": "如果接触到其他信å�·å�‘生器,使其å�‘出红石信å�·.", + "block.create.redstone_contact.tooltip.summary": "一种用于高级红石装置的设备. 只能两两工作. 可以被_动力活塞_和_动力轴承_等带动", + "block.create.redstone_contact.tooltip.condition1": "当正对面放置也放置_相互朝向_的接触信号发生器时", + "block.create.redstone_contact.tooltip.behaviour1": "提供_红石信号_.", + "block.create.redstone_contact.tooltip.condition2": "当移动时", + "block.create.redstone_contact.tooltip.behaviour2": "如果接触到其他信号发生器,使其发出红石信号.", "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "该箱å­�å…�许对其容é‡�进行调整,最大å�¯ä»¥å®¹çº³_16组_物å“�.", - "block.create.adjustable_crate.tooltip.control1": "当å�³é”®æ–¹å�—æ—¶", - "block.create.adjustable_crate.tooltip.action1": "打开箱å­�", + "block.create.adjustable_crate.tooltip.summary": "该箱子允许对其容量进行调整,最大可以容纳_16组_物品.", + "block.create.adjustable_crate.tooltip.control1": "当右键方块时", + "block.create.adjustable_crate.tooltip.action1": "打开箱子", "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "这个容器å�¯ä»¥ç»™ä¸´è¿‘çš„ _è“�图大炮_ æ��供无é™�物å“�以å�Šç‡ƒæ–™ (创造专用物å“�)", - "block.create.creative_crate.tooltip.condition1": "当标记了物å“�æ—¶", - "block.create.creative_crate.tooltip.behaviour1": "容器将会从虚空中æ��ä¾›_æ— é™�é‡�_的标记物å“�,并且任何放置到容器中的物å“�都会被_é€�入虚空_", + "block.create.creative_crate.tooltip.summary": "这个容器可以给临近的 _蓝图大炮_ 提供无限物品以及燃料 (创造专用物品)", + "block.create.creative_crate.tooltip.condition1": "当标记了物品时", + "block.create.creative_crate.tooltip.behaviour1": "容器将会从虚空中提供_无限量_的标记物品,并且任何放置到容器中的物品都会被_送入虚空_", "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "从连接的_容器_里自动将物å“�_输出_到外é�¢,如果å‰�方已ç»�有物å“�,则在物å“�被移动å‰�ä¸�会继续输出. å�¯ä»¥è®¾ç½®_白å��å�•è¿‡æ»¤_.", - "block.create.extractor.tooltip.condition1": "当æ��供红石信å�·æ—¶", - "block.create.extractor.tooltip.behaviour1": "_æš‚å�œ_自动输出", - "block.create.extractor.tooltip.condition2": "放置在传é€�带上时", - "block.create.extractor.tooltip.behaviour2": "当传é€�带被_黄铜机壳_加固时,使用æ��å�–器å�¯ä»¥å°†ä¼ é€�带上的物å“�_æ��å�–_出æ�¥. 当æ��å�–器堵塞时,ä¼ é€�带将会å�œä¸‹.", - "block.create.extractor.tooltip.control1": "当å�³é”®è¿‡æ»¤æ¡†æ—¶", - "block.create.extractor.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", + "block.create.extractor.tooltip.summary": "从连接的_容器_里自动将物品_输出_到外面,如果前方已经有物品,则在物品被移动前不会继续输出. 可以设置_白名单过滤_.", + "block.create.extractor.tooltip.condition1": "当提供红石信号时", + "block.create.extractor.tooltip.behaviour1": "_暂停_自动输出", + "block.create.extractor.tooltip.condition2": "放置在传送带上时", + "block.create.extractor.tooltip.behaviour2": "当传送带被_黄铜机壳_加固时,使用提取器可以将传送带上的物品_提取_出来. 当提取器堵塞时,传送带将会停下.", + "block.create.extractor.tooltip.control1": "当右键过滤框时", + "block.create.extractor.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", "block.create.transposer.tooltip": "TRANSPOSER", - "block.create.transposer.tooltip.summary": "将过滤框_白å��å�•_中的物å“�_传输_到指定的容器.", - "block.create.transposer.tooltip.condition1": "当给予红石信å�·æ—¶", - "block.create.transposer.tooltip.behaviour1": "_æš‚å�œ_传输.", - "block.create.transposer.tooltip.condition2": "放置在传é€�带上时", - "block.create.transposer.tooltip.behaviour2": "当传é€�带被_黄铜机壳_加固时,使用_传输器_å�¯ä»¥å°†ä¼ é€�带上的物å“�_æ��å�–_出æ�¥. 当传输器堵塞时,ä¼ é€�带将会å�œä¸‹.", - "block.create.transposer.tooltip.control1": "当å�³é”®è¿‡æ»¤æ¡†æ—¶", - "block.create.transposer.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", + "block.create.transposer.tooltip.summary": "将过滤框_白名单_中的物品_传输_到指定的容器.", + "block.create.transposer.tooltip.condition1": "当给予红石信号时", + "block.create.transposer.tooltip.behaviour1": "_暂停_传输.", + "block.create.transposer.tooltip.condition2": "放置在传送带上时", + "block.create.transposer.tooltip.behaviour2": "当传送带被_黄铜机壳_加固时,使用_传输器_可以将传送带上的物品_提取_出来. 当传输器堵塞时,传送带将会停下.", + "block.create.transposer.tooltip.control1": "当右键过滤框时", + "block.create.transposer.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", "block.create.deployer.tooltip": "DEPLOYER", - "block.create.deployer.tooltip.summary": "它是一个_机械手_,将尽å�¯èƒ½_模仿玩家_的行为,也能将方å�—从容器中å�–出并_放置_. å�¯ä»¥è®¾ç½®_白å��å�•_.", - "block.create.deployer.tooltip.condition1": "被供能时", - "block.create.deployer.tooltip.behaviour1": "机械手å�¯ä»¥æœ€å¤šä¼¸é•¿_两个方å�—_çš„è·�离", - "block.create.deployer.tooltip.condition2": "当使用扳手时", - "block.create.deployer.tooltip.behaviour2": "将会å�¯ç”¨æ‹³å¤´æ¨¡å¼�,在拳头模å¼�之下,机械臂将会试图使用手中的物å“�_ç ´å��æ–¹å�—_,或者_攻击实体_.", + "block.create.deployer.tooltip.summary": "它是一个_机械手_,将尽可能_模仿玩家_的行为,也能将方块从容器中取出并_放置_. 可以设置_白名单_.", + "block.create.deployer.tooltip.condition1": "被供能时", + "block.create.deployer.tooltip.behaviour1": "机械手可以最多伸长_两个方块_的距离", + "block.create.deployer.tooltip.condition2": "当使用扳手时", + "block.create.deployer.tooltip.behaviour2": "将会启用拳头模式,在拳头模式之下,机械臂将会试图使用手中的物品_破坏方块_,或者_攻击实体_.", "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "从连接的_容器_里自动将物å“�_输出_到外é�¢,如果å‰�方已ç»�有物å“�,则在物å“�被移动å‰�ä¸�会继续输出. å�¯ä»¥è®¾ç½®_白å��å�•è¿‡æ»¤_.å�¯ä»¥ä½¿ç”¨_无线红石信å�·ç»ˆç«¯_控制.", - "block.create.linked_extractor.tooltip.condition1": "当无线红石信å�·æ¿€æ´»æ—¶", - "block.create.linked_extractor.tooltip.behaviour1": "_æš‚å�œ_输出物å“�", - "block.create.linked_extractor.tooltip.control1": "å�³é”®è¿‡æ»¤æ¡†æ—¶", - "block.create.linked_extractor.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", - "block.create.linked_extractor.tooltip.control2": "当å�³é”®æ��å�–器侧é�¢çš„频é�“框时", - "block.create.linked_extractor.tooltip.action2": "手æŒ�ä»»æ„�物å“�为其设置_频é�“_,将接收_无线红石终端_相应频é�“,å�¯ä»¥ç”¨ä¸¤ä¸ªç‰©å“�æ�¥ç»„å�ˆæ ‡è®°é¢‘é�“.", + "block.create.linked_extractor.tooltip.summary": "从连接的_容器_里自动将物品_输出_到外面,如果前方已经有物品,则在物品被移动前不会继续输出. 可以设置_白名单过滤_.可以使用_无线红石信号终端_控制.", + "block.create.linked_extractor.tooltip.condition1": "当无线红石信号激活时", + "block.create.linked_extractor.tooltip.behaviour1": "_暂停_输出物品", + "block.create.linked_extractor.tooltip.control1": "右键过滤框时", + "block.create.linked_extractor.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + "block.create.linked_extractor.tooltip.control2": "当右键提取器侧面的频道框时", + "block.create.linked_extractor.tooltip.action2": "手持任意物品为其设置_频道_,将接收_无线红石终端_相应频道,可以用两个物品来组合标记频道.", "block.create.linked_transposer.tooltip": "LINKED TRANSPOSER", - "block.create.linked_transposer.tooltip.summary": "将过滤框_白å��å�•_中的物å“�_传输_到指定的容器.能够使用_无线红石信å�·ç»ˆç«¯_控制", - "block.create.linked_transposer.tooltip.condition1": "当无线红石信å�·è§¦å�‘æ—¶", - "block.create.linked_transposer.tooltip.behaviour1": "æš‚å�œä¼ è¾“", - "block.create.linked_transposer.tooltip.control1": "当å�³é”®è¿‡æ»¤æ¡†æ—¶", - "block.create.linked_transposer.tooltip.action1": "将当å‰�æŒ�有的_物å“�æ•°é‡�_的物å“�设置为物å“�_过滤白å��å�•_,且输出此_æ•°é‡�_的物å“�.", - "block.create.linked_transposer.tooltip.control2": "当å�³é”®ä¼ è¾“器侧é�¢çš„频é�“框时", - "block.create.linked_transposer.tooltip.action2": "手æŒ�ä»»æ„�物å“�为其设置_频é�“_,将接收_无线红石终端_相应频é�“,å�¯ä»¥ç”¨ä¸¤ä¸ªç‰©å“�æ�¥ç»„å�ˆæ ‡è®°é¢‘é�“.", + "block.create.linked_transposer.tooltip.summary": "将过滤框_白名单_中的物品_传输_到指定的容器.能够使用_无线红石信号终端_控制", + "block.create.linked_transposer.tooltip.condition1": "当无线红石信号触发时", + "block.create.linked_transposer.tooltip.behaviour1": "暂停传输", + "block.create.linked_transposer.tooltip.control1": "当右键过滤框时", + "block.create.linked_transposer.tooltip.action1": "将当前持有的_物品数量_的物品设置为物品_过滤白名单_,且输出此_数量_的物品.", + "block.create.linked_transposer.tooltip.control2": "当右键传输器侧面的频道框时", + "block.create.linked_transposer.tooltip.action2": "手持任意物品为其设置_频道_,将接收_无线红石终端_相应频道,可以用两个物品来组合标记频道.", "block.create.funnel.tooltip": "FUNNEL", - "block.create.funnel.tooltip.summary": "接收传é€�带上的物å“�到_连接的容器_,必须放置在_正对_ä¼ é€�带的_æ–¹å�‘_å�Š_高度_.", - "block.create.funnel.tooltip.condition1": "æ��å�–ä¼ é€�带物å“�", - "block.create.funnel.tooltip.behaviour1": "ä½�于黄铜机壳加固的传é€�带_边上_或者_末端_æ—¶,ä¼ é€�带æ¼�æ–—å�¯ä»¥å°†ç‰©å“�从传é€�带上_拿出_. 传动带æ¼�斗阻塞时_ä¸�会阻塞_ä¼ é€�带.", + "block.create.funnel.tooltip.summary": "接收传送带上的物品到_连接的容器_,必须放置在_正对_传送带的_方向_及_高度_.", + "block.create.funnel.tooltip.condition1": "提取传送带物品", + "block.create.funnel.tooltip.behaviour1": "位于黄铜机壳加固的传送带_边上_或者_末端_时,传送带漏斗可以将物品从传送带上_拿出_. 传动带漏斗阻塞时_不会阻塞_传送带.", "block.create.belt_tunnel.tooltip": "BELT TUNNEL", - "block.create.belt_tunnel.tooltip.summary": "这是一ç§�美观的方å�—,能够让_ä¼ é€�带_穿过墙å£�时更美观, 但是传é€�带必须被黄铜机壳包装æ‰�能在上方放置此方å�—. 如果å�¯åŠ¨äº†_å�Œæ­¥æ¨¡å¼�_,且æ—�边有_ä¼ é€�带隧é�“_æ—¶, 将会等待其他所有传é€�带隧é�“的物å“�_一起通过_. [Ctrl]", - "block.create.belt_tunnel.tooltip.control1": "当使用扳手å�³é”®å‰�é�¢æ—¶", - "block.create.belt_tunnel.tooltip.action1": "å�¯åŠ¨_å�Œæ­¥æ¨¡å¼�_, å�Œæ­¥æ¨¡å¼�下,å�ªæœ‰ä¸´è¿‘çš„_所有_å�Œæ­¥æ¨¡å¼�çš„ä¼ é€�带隧é�“都有物å“�æ—¶æ‰�会_一é½�通过_", - "block.create.belt_tunnel.tooltip.control2": "当使用扳手å�³é”®ä¾§é�¢æ—¶", - "block.create.belt_tunnel.tooltip.action2": "如果传é€�带隧é�“有_å°�窗å�£_,调整其窗å�£å†…çš„_é�®å¸˜é«˜åº¦_", + "block.create.belt_tunnel.tooltip.summary": "这是一种美观的方块,能够让_传送带_穿过墙壁时更美观, 但是传送带必须被黄铜机壳包装才能在上方放置此方块. 如果启动了_同步模式_,且旁边有_传送带隧道_时, 将会等待其他所有传送带隧道的物品_一起通过_. [Ctrl]", + "block.create.belt_tunnel.tooltip.control1": "当使用扳手右键前面时", + "block.create.belt_tunnel.tooltip.action1": "启动_同步模式_, 同步模式下,只有临近的_所有_同步模式的传送带隧道都有物品时才会_一齐通过_", + "block.create.belt_tunnel.tooltip.control2": "当使用扳手右键侧面时", + "block.create.belt_tunnel.tooltip.action2": "如果传送带隧道有_小窗口_,调整其窗口内的_遮帘高度_", "block.create.brass_casing.tooltip": "BRASS CASING", - "block.create.brass_casing.tooltip.summary": "一ç§�å�šå›ºçš„机壳,有多ç§�用处.", - "block.create.brass_casing.tooltip.condition1": "当被使用在传é€�带上时", - "block.create.brass_casing.tooltip.behaviour1": "当传é€�带上装é…�有黄铜机壳时,å�¯ä»¥åœ¨ä¼ é€�带上安装_ä¼ é€�带隧é�“_ã€�_æ��å�–器_ã€�_传输器_ã€�_ä¼ é€�带æ¼�æ–—_等物å“�", + "block.create.brass_casing.tooltip.summary": "一种坚固的机壳,有多种用处.", + "block.create.brass_casing.tooltip.condition1": "当被使用在传送带上时", + "block.create.brass_casing.tooltip.behaviour1": "当传送带上装配有黄铜机壳时,可以在传送带上安装_传送带隧道_、_提取器_、_传输器_、_传送带漏斗_等物品", "block.create.belt_observer.tooltip": "BELT OBSERVER", - "block.create.belt_observer.tooltip.summary": "检测_ä¼ é€�带_上ç»�过侦测器的物å“�ã€�实体. 使用_扳手_å°†å�¯ä»¥ä¿®æ”¹å®ƒçš„模å¼�. é�žç‰©å“�实体总会以观测模å¼�ç»�行侦测. å�¯è¿›è¡Œç‰©å“�标记", - "block.create.belt_observer.tooltip.condition1": "观测模å¼�", - "block.create.belt_observer.tooltip.behaviour1": "当观测到传é€�带上有_匹é…�的物å“�_或者实体时,将会æ��ä¾›_红石信å�·_", - "block.create.belt_observer.tooltip.condition2": "脉冲模å¼�", - "block.create.belt_observer.tooltip.behaviour2": "当侦测器中心线_匹é…�_到物å“�时,将会å�‘出_红石脉冲_", - "block.create.belt_observer.tooltip.condition3": "转移模å¼�", - "block.create.belt_observer.tooltip.behaviour3": "å°†_匹é…�的物å“�_转移至侦测器å‰�方的传é€�带. 如果目标ä½�置被堵塞,物å“�将会_å�œä¸‹_等待转移.", - "block.create.belt_observer.tooltip.condition4": "å�‡åˆ†æ¨¡å¼�", - "block.create.belt_observer.tooltip.behaviour4": "将匹é…�的物å“�_分æˆ�两部分_,一å�Šçš„物å“�被传é€�到å‰�方的传é€�带.", + "block.create.belt_observer.tooltip.summary": "检测_传送带_上经过侦测器的物品、实体. 使用_扳手_将可以修改它的模式. 非物品实体总会以观测模式经行侦测. 可进行物品标记", + "block.create.belt_observer.tooltip.condition1": "观测模式", + "block.create.belt_observer.tooltip.behaviour1": "当观测到传送带上有_匹配的物品_或者实体时,将会提供_红石信号_", + "block.create.belt_observer.tooltip.condition2": "脉冲模式", + "block.create.belt_observer.tooltip.behaviour2": "当侦测器中心线_匹配_到物品时,将会发出_红石脉冲_", + "block.create.belt_observer.tooltip.condition3": "转移模式", + "block.create.belt_observer.tooltip.behaviour3": "将_匹配的物品_转移至侦测器前方的传送带. 如果目标位置被堵塞,物品将会_停下_等待转移.", + "block.create.belt_observer.tooltip.condition4": "均分模式", + "block.create.belt_observer.tooltip.behaviour4": "将匹配的物品_分成两部分_,一半的物品被传送到前方的传送带.", "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "一个简å�•çš„电路元件,将通过的红石信å�·å�˜ä¸º1tick.", + "block.create.pulse_repeater.tooltip.summary": "一个简单的电路元件,将通过的红石信号变为1tick.", "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "高级中继器,最大å�¯è®¾ç½®30分钟延迟", + "block.create.adjustable_repeater.tooltip.summary": "高级中继器,最大可设置30分钟延迟", "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", - "block.create.adjustable_pulse_repeater.tooltip.summary": "一ç§�å�•æ¬¡1tick的红石脉冲器,å�¯ä»¥è°ƒèŠ‚延时至30min", + "block.create.adjustable_pulse_repeater.tooltip.summary": "一种单次1tick的红石脉冲器,可以调节延时至30min", "block.create.analog_lever.tooltip": "ANALOG LEVER", - "block.create.analog_lever.tooltip.summary": "一ç§�å�¯ä»¥è°ƒèŠ‚ä»»æ„�ä¿¡å�·å¼ºåº¦çš„推æ�†.", + "block.create.analog_lever.tooltip.summary": "一种可以调节任意信号强度的推杆.", "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", - "block.create.powered_toggle_latch.tooltip.summary": "一ç§�拉æ�†ï¼Œåœ¨çº¢çŸ³ç”µè·¯ä¸­å�¯ä»¥ç”¨ä½œt触å�‘器.", + "block.create.powered_toggle_latch.tooltip.summary": "一种拉杆,在红石电路中可以用作t触发器.", "block.create.powered_latch.tooltip": "POWERED LATCH", - "block.create.powered_latch.tooltip.summary": "一ç§�拉æ�†,在红石电路中用作é”�存器,从å�Žæ–¹è¾“入将会å�¯ç”¨è¿™ä¸ªæ‹‰æ�†,从侧边输入将会é‡�置这个拉æ�†.", + "block.create.powered_latch.tooltip.summary": "一种拉杆,在红石电路中用作锁存器,从后方输入将会启用这个拉杆,从侧边输入将会重置这个拉杆.", "block.create.speedometer.tooltip": "SPEEDOMETER", - "block.create.speedometer.tooltip.summary": "测é‡�并展示连接网络的旋转速度,支æŒ�使用红石比较器", - "block.create.speedometer.tooltip.condition1": "接入动力时", - "block.create.speedometer.tooltip.behaviour1": "将会用颜色展示速度的大å°�,绿-æ…¢ã€�è“�-中ã€�ç´«-å¿«.", + "block.create.speedometer.tooltip.summary": "测量并展示连接网络的旋转速度,支持使用红石比较器", + "block.create.speedometer.tooltip.condition1": "接入动力时", + "block.create.speedometer.tooltip.behaviour1": "将会用颜色展示速度的大小,绿-慢、蓝-中、紫-快.", "block.create.stressometer.tooltip": "STRESSOMETER", - "block.create.stressometer.tooltip.summary": "测é‡�并展示连接网络的应力值,支æŒ�红石比较器", - "block.create.stressometer.tooltip.condition1": "接入动力时", - "block.create.stressometer.tooltip.behaviour1": "将会用颜色展示承å�—的应力. 如果网络过载则会瘫痪,必须å‡�少机器或者增加动力", + "block.create.stressometer.tooltip.summary": "测量并展示连接网络的应力值,支持红石比较器", + "block.create.stressometer.tooltip.condition1": "接入动力时", + "block.create.stressometer.tooltip.behaviour1": "将会用颜色展示承受的应力. 如果网络过载则会瘫痪,必须减少机器或者增加动力", "tool.create.sand_paper.tooltip": "SAND PAPER", - "tool.create.sand_paper.tooltip.summary": "用æ�¥_打磨_物å“�的砂纸, å�¯ä»¥ç”¨æœºæ¢°è‡‚æ�¥å®žçŽ°è‡ªåŠ¨åŒ–.", - "tool.create.sand_paper.tooltip.condition1": "当使用时", - "tool.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物å“�", + "tool.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸, 可以用机械臂来实现自动化.", + "tool.create.sand_paper.tooltip.condition1": "当使用时", + "tool.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物品", "item.create.super_glue.tooltip": "SUPER GLUE", - "item.create.super_glue.tooltip.summary": "让两个方å�—互相_粘é»�_,他们会一直因此相爱到永远", - "item.create.super_glue.tooltip.condition1": "å�³é”®ä½¿ç”¨æ—¶", - "item.create.super_glue.tooltip.behaviour1": "有强力胶的方å�—çš„_那一é�¢_会å�˜å¾—有粘性。和此é�¢ç›¸é‚»çš„æ–¹å�—在被_动力活塞_或者_动力轴承_等方å�—驱动的时候会被一å�Œå¸¦åŠ¨", - "item.create.super_glue.tooltip.condition2": "在副手上时", - "item.create.super_glue.tooltip.behaviour2": "主手放置的方å�—会被_直接_é»�在所放置的方å�—上", + "item.create.super_glue.tooltip.summary": "让两个方块互相_粘黏_,他们会一直因此相爱到永远", + "item.create.super_glue.tooltip.condition1": "右键使用时", + "item.create.super_glue.tooltip.behaviour1": "有强力胶的方块的_那一面_会变得有粘性。和此面相邻的方块在被_动力活塞_或者_动力轴承_等方块驱动的时候会被一同带动", + "item.create.super_glue.tooltip.condition2": "在副手上时", + "item.create.super_glue.tooltip.behaviour2": "主手放置的方块会被_直接_黏在所放置的方块上", "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "一ç§�用_光辉_锻造的化å�ˆç‰©æ��æ–™.", + "item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料.", "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "一ç§�用_虚空_锻造的化å�ˆç‰©æ��æ–™.", + "item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料.", "item.create.crafter_slot_cover.tooltip": "SLOT COVER", - "item.create.crafter_slot_cover.tooltip.summary": "用æ�¥æ ‡è®°_机械制造机_以ä¸�放入物å“�. 在制造与桶类似的斜å�‘å�ˆæˆ�表时é�žå¸¸æœ‰ç”¨.", + "item.create.crafter_slot_cover.tooltip.summary": "用来标记_机械制造机_以不放入物品. 在制造与桶类似的斜向合成表时非常有用.", "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "工作进行中!", - "create.tooltip.randomWipDescription0": "别把这玩æ„�给熊孩å­�", - "create.tooltip.randomWipDescription1": "æ¯�一次使用这个物å“�都会伤害一å�ªæ— è¾œçš„å°�猫, 所以没有使用就没有伤害。别ï¼�用ï¼�", - "create.tooltip.randomWipDescription2": "使用å�Žæžœè‡ªè´Ÿ", - "create.tooltip.randomWipDescription3": "(摇手指)这å�¯ä¸�是你在找的物å“�, èµ°å¼€å�§", - "create.tooltip.randomWipDescription4": "自爆模å¼�å·²å�¯åŠ¨ï¼Œ10,9,8...", - "create.tooltip.randomWipDescription5": "这玩æ„�真的没用, 我骗你干嘛", - "create.tooltip.randomWipDescription6": "如果你使用这个东西, 那么本作者与它造æˆ�的任何å�Žæžœæ²¡æœ‰è´£ä»».", - "create.tooltip.randomWipDescription7": "这玩æ„�ä¸�是给你用的, æ�¢ä¸ªå�§", - "create.tooltip.randomWipDescription8": "试试就é€�世", + "create.tooltip.workInProgress": "工作进行中!", + "create.tooltip.randomWipDescription0": "别把这玩意给熊孩子", + "create.tooltip.randomWipDescription1": "每一次使用这个物品都会伤害一只无辜的小猫, 所以没有使用就没有伤害。别!用!", + "create.tooltip.randomWipDescription2": "使用后果自负", + "create.tooltip.randomWipDescription3": "(摇手指)这可不是你在找的物品, 走开吧", + "create.tooltip.randomWipDescription4": "自爆模式已启动,10,9,8...", + "create.tooltip.randomWipDescription5": "这玩意真的没用, 我骗你干嘛", + "create.tooltip.randomWipDescription6": "如果你使用这个东西, 那么本作者与它造成的任何后果没有责任.", + "create.tooltip.randomWipDescription7": "这玩意不是给你用的, 换个吧", + "create.tooltip.randomWipDescription8": "试试就逝世", "_": "Thank you for translating Create!" diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java index 86034e2c5..09c09d07f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java @@ -50,7 +50,7 @@ public class BeltGenerator extends SpecialBlockStateGen { if (!casing && pulley) part = Part.MIDDLE; - if ((!casing && vertical && negative || casing && diagonal && negative != (direction.getAxis() == Axis.X) + if ((!casing && vertical && negative || casing && diagonal && negative == (direction.getAxis() == Axis.X) || !casing && sideways && negative) && part != Part.MIDDLE && !pulley) part = part == Part.END ? Part.START : Part.END; diff --git a/src/main/resources/assets/create/models/block/belt/downward_end.json b/src/main/resources/assets/create/models/block/belt/downward_end.json index b6a3245a9..af1981e69 100644 --- a/src/main/resources/assets/create/models/block/belt/downward_end.json +++ b/src/main/resources/assets/create/models/block/belt/downward_end.json @@ -1,73 +1,128 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Top", - "from": [ 1.0, 11.0, 9.2 ], - "to": [ 15.0, 13.0, 15.0 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 7.0 ], "rotation": 270 }, - "south": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 7.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 6.8 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 6.8 ] } - } - }, - { - "name": "Bottom", - "from": [ 1.0, 3.0, 5.9 ], - "to": [ 15.0, 5.0, 15.0 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0.0, 6.0, 2.0, 15.0 ], "rotation": 90 }, - "south": { "texture": "#0", "uv": [ 1.0, 5.0, 15.0, 3.0 ], "rotation": 180 }, - "west": { "texture": "#0", "uv": [ 14.0, 6.0, 16.0, 15.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 6.0, 15.0, 15.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 6.0, 15.0, 15.0 ], "rotation": 180 } - } - }, - { - "name": "Side", - "from": [ 1.0, 4.0, 14.0 ], - "to": [ 15.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 4.0, 2.0, 12.0 ], "rotation": 180 }, - "south": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ], "rotation": 180 }, - "west": { "texture": "#0", "uv": [ 14.0, 4.0, 16.0, 12.0 ], "rotation": 180 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ] } - } - }, - { - "name": "Top Diagonal", - "from": [ 1.0, 11.0, -3.325 ], - "to": [ 15.0, 13.0, 6.7 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 6.0, 2.0, 16.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 6.0, 16.0, 16.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 5.8, 15.0, 16.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 5.8, 15.0, 16.0 ] } - } - }, - { - "name": "Bottom Diagonal", - "from": [ 1.0, 3.0, -3.325 ], - "to": [ 15.0, 5.0, 10.1 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 13.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 13.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 13.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 13.0 ], "rotation": 180 } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Top", + "from": [0.9, 11, 9.2], + "to": [15.1, 13, 15], + "faces": { + "east": {"uv": [0, 1, 2, 7], "rotation": 270, "texture": "#0"}, + "south": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 7], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 6.8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 1, 15, 6.8], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [2.9, 10, 9.2], + "to": [13.1, 11, 14], + "faces": { + "east": {"uv": [2, 2, 3, 7], "rotation": 270, "texture": "#0"}, + "south": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "west": {"uv": [13, 2, 14, 7], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 6.8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3, 2, 13, 7], "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [0.9, 3, 5.9], + "to": [15.1, 5, 15], + "faces": { + "east": {"uv": [0, 6, 2, 15], "rotation": 90, "texture": "#0"}, + "south": {"uv": [1, 5, 15, 3], "rotation": 180, "texture": "#0"}, + "west": {"uv": [14, 6, 16, 15], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 6, 15, 15], "texture": "#0"}, + "down": {"uv": [1, 6, 15, 15], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [2.9, 5, 5.9], + "to": [13.1, 6, 14], + "faces": { + "east": {"uv": [2, 6, 3, 14], "rotation": 90, "texture": "#0"}, + "south": {"uv": [1, 5, 15, 3], "rotation": 180, "texture": "#0"}, + "west": {"uv": [13, 6, 14, 14], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 7, 13, 15], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [1, 4, 14], + "to": [15, 12, 16], + "faces": { + "north": {"uv": [1, 4, 15, 12], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 4, 2, 12], "rotation": 180, "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "rotation": 180, "texture": "#0"}, + "west": {"uv": [14, 4, 16, 12], "rotation": 180, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "down": {"uv": [1, 11, 15, 13], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [2.9, 6, 13], + "to": [13.1, 10, 14], + "faces": { + "north": {"uv": [3, 6, 13, 10], "rotation": 180, "texture": "#0"}, + "east": {"uv": [2, 6, 3, 10], "rotation": 180, "texture": "#0"}, + "west": {"uv": [13, 6, 14, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [1, 11, -3.325], + "to": [15, 13, 6.7], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 7, 15, 9], "texture": "#0"}, + "east": {"uv": [0, 6, 2, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 6, 16, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 6, 15, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 5.8, 15, 16], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [3, 10, -3.325], + "to": [13, 11, 6.7], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [2, 6, 3, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [13, 6, 14, 16], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 5.8, 13, 16], "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [1, 3, -3.325], + "to": [15, 5, 10.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 7, 15, 9], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 13], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 13], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 13], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 13], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [3, 5, -3.325], + "to": [13, 6, 9.1], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [2, 0, 3, 12], "rotation": 90, "texture": "#0"}, + "west": {"uv": [13, 0, 14, 12], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 0, 13, 12], "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/downward_middle.json b/src/main/resources/assets/create/models/block/belt/downward_middle.json index 3c7b313f7..1b81b5db9 100644 --- a/src/main/resources/assets/create/models/block/belt/downward_middle.json +++ b/src/main/resources/assets/create/models/block/belt/downward_middle.json @@ -1,62 +1,108 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Bottom Diagonal", - "from": [ 1.0, 3.0, -3.325 ], - "to": [ 15.0, 5.0, 6.6 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.1 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ], "rotation": 180 } - } - }, - { - "name": "Top Diagonal", - "from": [ 1.0, 11.0, -3.325 ], - "to": [ 15.0, 13.0, 10.0 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 3.0, 2.0, 16.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 3.0, 16.0, 16.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ] } - } - }, - { - "name": "Top Diagonal First", - "from": [ 1.0, 11.0, 10.0 ], - "to": [ 15.0, 13.0, 19.3 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ] } - } - }, - { - "name": "Bottom Diagonal First", - "from": [ 1.0, 3.0, 6.6 ], - "to": [ 15.0, 5.0, 19.3 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 3.0, 2.0, 16.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 3.0, 16.0, 16.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ], "rotation": 180 } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom Diagonal", + "from": [1, 3, -3.325], + "to": [15, 5, 6.6], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 0, 2, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [3, 5, -3.325], + "to": [13, 6, 6.6], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 0, 13, 10], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [1, 11, -3.325], + "to": [15, 13, 10], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 3, 2, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 3, 16, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [3, 10, -3.325], + "to": [13, 11, 10], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 3, 14, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 3, 3, 16], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 3, 13, 16], "texture": "#0"} + } + }, + { + "name": "Top Diagonal First", + "from": [1, 11, 10], + "to": [15, 13, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10.2], "texture": "#0"} + } + }, + { + "name": "Top Diagonal First", + "from": [3, 10, 10], + "to": [13, 11, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 10], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 0, 13, 10], "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal First", + "from": [1, 3, 6.6], + "to": [15, 5, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 3, 2, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 3, 16, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal First", + "from": [3, 5, 6.6], + "to": [13, 6, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 3, 14, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 3, 3, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 3, 13, 16], "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/downward_start.json b/src/main/resources/assets/create/models/block/belt/downward_start.json index e07160dd7..d2654a350 100644 --- a/src/main/resources/assets/create/models/block/belt/downward_start.json +++ b/src/main/resources/assets/create/models/block/belt/downward_start.json @@ -1,73 +1,125 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 1.0, 3.0, 1.0 ], - "to": [ 15.0, 5.0, 6.8 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 7.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 7.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 6.8 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 6.8 ], "rotation": 180 } - } - }, - { - "name": "Top", - "from": [ 1.0, 11.0, 1.0 ], - "to": [ 15.0, 13.0, 10.1 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 6.0, 2.0, 15.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 6.0, 16.0, 15.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 6.0, 15.0, 15.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 6.0, 15.0, 15.0 ] } - } - }, - { - "name": "Side", - "from": [ 1.0, 4.0, 0.0 ], - "to": [ 15.0, 12.0, 2.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 4.0, 2.0, 12.0 ] }, - "south": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ] }, - "west": { "texture": "#0", "uv": [ 14.0, 4.0, 16.0, 12.0 ] }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 } - } - }, - { - "name": "Bottom Diagonal", - "from": [ 1.0, 3.0, 9.2 ], - "to": [ 15.0, 5.0, 19.3 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 11.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 11.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 11.1 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 11.1 ], "rotation": 180 } - } - }, - { - "name": "Top Diagonal", - "from": [ 1.0, 11.0, 5.9 ], - "to": [ 15.0, 13.0, 19.3 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 13.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 13.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 13.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 13.0 ] } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [0.9, 3, 1], + "to": [15.1, 5, 6.8], + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 1, 2, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 7], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 6.8], "texture": "#0"}, + "down": {"uv": [1, 1, 15, 6.8], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [2.9, 5, 2], + "to": [13.1, 6, 6.8], + "faces": { + "east": {"uv": [2, 2, 3, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [13, 2, 14, 7], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 2, 13, 7], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [0.9, 11, 1], + "to": [15.1, 13, 10.1], + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 6, 2, 15], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 6, 16, 15], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 6, 15, 15], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 6, 15, 15], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [2.9, 10, 2], + "to": [13.1, 11, 10.1], + "faces": { + "east": {"uv": [13, 6, 14, 14], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 6, 3, 14], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 6, 13, 14], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [1, 4, 0], + "to": [15, 12, 2], + "faces": { + "north": {"uv": [1, 4, 15, 12], "texture": "#0"}, + "east": {"uv": [0, 4, 2, 12], "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "texture": "#0"}, + "west": {"uv": [14, 4, 16, 12], "texture": "#0"}, + "up": {"uv": [1, 3, 15, 5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Side", + "from": [2.9, 6, 2], + "to": [13.1, 10, 3], + "faces": { + "east": {"uv": [2, 6, 3, 10], "texture": "#0"}, + "south": {"uv": [3, 6, 13, 10], "texture": "#0"}, + "west": {"uv": [13, 6, 14, 10], "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [1, 3, 9.2], + "to": [15, 5, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 1, 2, 11], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 11], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 11.1], "texture": "#0"}, + "down": {"uv": [1, 1, 15, 11], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [3, 5, 9.2], + "to": [13, 6, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 1, 14, 11], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 1, 3, 11], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 1, 13, 11.1], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [1, 11, 5.9], + "to": [15, 13, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 13], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 13], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 13], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 0, 15, 13], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [3, 10, 6.9], + "to": [13, 11, 19.3], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 12], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 12], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 0, 13, 12], "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/horizontal_end.json b/src/main/resources/assets/create/models/block/belt/horizontal_end.json index e8d932c72..180675f62 100644 --- a/src/main/resources/assets/create/models/block/belt/horizontal_end.json +++ b/src/main/resources/assets/create/models/block/belt/horizontal_end.json @@ -18,6 +18,16 @@ "down": {"uv": [1, 0, 15, 15], "rotation": 180, "texture": "#0"} } }, + { + "name": "Bottom", + "from": [3, 5, 0], + "to": [13, 6, 14], + "faces": { + "east": {"uv": [2, 0, 3, 14], "rotation": 90, "texture": "#0"}, + "west": {"uv": [13, 0, 14, 14], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 0, 13, 14], "texture": "#0"} + } + }, { "name": "Top", "from": [1, 11, 0], @@ -30,10 +40,20 @@ "down": {"uv": [1, 1, 15, 16], "texture": "#0"} } }, + { + "name": "Top", + "from": [3, 10, 0], + "to": [13, 11, 14], + "faces": { + "east": {"uv": [2, 2, 3, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [13, 2, 14, 16], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 2, 13, 16], "texture": "#0"} + } + }, { "name": "Side", - "from": [1, 4, 14], - "to": [15, 12, 16], + "from": [1.1, 4, 14], + "to": [14.9, 12, 16], "faces": { "north": {"uv": [1, 4, 15, 12], "rotation": 180, "texture": "#0"}, "east": {"uv": [0, 4, 2, 12], "rotation": 180, "texture": "#0"}, @@ -42,6 +62,16 @@ "up": {"uv": [1, 3, 15, 5], "rotation": 180, "texture": "#0"}, "down": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"} } + }, + { + "name": "Side", + "from": [3, 6, 13], + "to": [13, 10, 14], + "faces": { + "north": {"uv": [3, 6, 13, 10], "rotation": 180, "texture": "#0"}, + "east": {"uv": [2, 6, 3, 10], "rotation": 180, "texture": "#0"}, + "west": {"uv": [13, 6, 14, 10], "rotation": 180, "texture": "#0"} + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/horizontal_middle.json b/src/main/resources/assets/create/models/block/belt/horizontal_middle.json index a80ee37c3..2c2a87512 100644 --- a/src/main/resources/assets/create/models/block/belt/horizontal_middle.json +++ b/src/main/resources/assets/create/models/block/belt/horizontal_middle.json @@ -1,32 +1,52 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 1.0, 3.0, 0.0 ], - "to": [ 15.0, 5.0, 16.0 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 16.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 16.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 16.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 16.0 ], "rotation": 180 } - } - }, - { - "name": "Top", - "from": [ 1.0, 11.0, 0.0 ], - "to": [ 15.0, 13.0, 16.0 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 16.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 16.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 16.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 16.0 ] } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [1, 3, 0], + "to": [15, 5, 16], + "faces": { + "east": {"uv": [0, 0, 2, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 16], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [3, 5, 0], + "to": [13, 6, 16], + "faces": { + "east": {"uv": [13, 0, 14, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 0, 13, 16], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [1, 11, 0], + "to": [15, 13, 16], + "faces": { + "east": {"uv": [0, 0, 2, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 0, 15, 16], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [3, 10, 0], + "to": [13, 11, 16], + "faces": { + "east": {"uv": [13, 0, 14, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [13, 0, 14, 16], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 0, 13, 16], "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/horizontal_start.json b/src/main/resources/assets/create/models/block/belt/horizontal_start.json index f96cea473..e58a1b2f9 100644 --- a/src/main/resources/assets/create/models/block/belt/horizontal_start.json +++ b/src/main/resources/assets/create/models/block/belt/horizontal_start.json @@ -1,47 +1,78 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 1.0, 3.0, 1.0 ], - "to": [ 15.0, 5.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 16.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 16.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 16.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 16.0 ], "rotation": 180 } - } - }, - { - "name": "Top", - "from": [ 1.0, 11.0, 1.0 ], - "to": [ 15.0, 13.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 16.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 16.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 15.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 16.0 ] } - } - }, - { - "name": "Side", - "from": [ 1.0, 4.0, 0.0 ], - "to": [ 15.0, 12.0, 2.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 4.0, 2.0, 12.0 ] }, - "south": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ] }, - "west": { "texture": "#0", "uv": [ 14.0, 4.0, 16.0, 12.0 ] }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [1, 3, 1], + "to": [15, 5, 16], + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 1, 2, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 16], "texture": "#0"}, + "down": {"uv": [1, 1, 15, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [3, 5, 2], + "to": [13, 6, 16], + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [13, 2, 14, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 2, 3, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [3, 2, 13, 16], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [3, 10, 2], + "to": [13, 11, 16], + "faces": { + "east": {"uv": [2, 2, 3, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [13, 2, 14, 16], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 2, 13, 16], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [1, 11, 1], + "to": [15, 13, 16], + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 15], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 15], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 1, 15, 16], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [1.1, 4, 0], + "to": [14.9, 12, 2], + "faces": { + "north": {"uv": [1, 4, 15, 12], "texture": "#0"}, + "east": {"uv": [0, 4, 2, 12], "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "texture": "#0"}, + "west": {"uv": [14, 4, 16, 12], "texture": "#0"}, + "up": {"uv": [1, 3, 15, 5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Side", + "from": [3, 6, 2], + "to": [13, 10, 3], + "faces": { + "east": {"uv": [2, 6, 3, 10], "texture": "#0"}, + "south": {"uv": [3, 6, 13, 10], "texture": "#0"}, + "west": {"uv": [13, 6, 14, 10], "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/sideways_end.json b/src/main/resources/assets/create/models/block/belt/sideways_end.json index a447bd8b1..b4a5bd46d 100644 --- a/src/main/resources/assets/create/models/block/belt/sideways_end.json +++ b/src/main/resources/assets/create/models/block/belt/sideways_end.json @@ -18,6 +18,16 @@ "down": {"uv": [14, 0, 16, 15], "rotation": 180, "texture": "#0"} } }, + { + "name": "Bottom", + "from": [10, 3, 0], + "to": [11, 13, 14], + "faces": { + "west": {"uv": [3, 0, 13, 14], "rotation": 270, "texture": "#0"}, + "up": {"uv": [2, 0, 3, 14], "texture": "#0"}, + "down": {"uv": [13, 0, 14, 14], "rotation": 180, "texture": "#0"} + } + }, { "name": "Top", "from": [3, 1, 0], @@ -30,10 +40,20 @@ "down": {"uv": [14, 1, 16, 16], "texture": "#0"} } }, + { + "name": "Top", + "from": [5, 3, 0], + "to": [6, 13, 14], + "faces": { + "east": {"uv": [3, 2, 13, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [2, 2, 3, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [13, 2, 14, 16], "texture": "#0"} + } + }, { "name": "Side", - "from": [4, 1, 14], - "to": [12, 15, 16], + "from": [4, 1.1, 14], + "to": [12, 14.9, 16], "faces": { "north": {"uv": [1, 4, 15, 12], "rotation": 270, "texture": "#0"}, "east": {"uv": [1, 11, 15, 13], "rotation": 90, "texture": "#0"}, @@ -42,6 +62,16 @@ "up": {"uv": [0, 4, 2, 12], "rotation": 90, "texture": "#0"}, "down": {"uv": [14, 4, 16, 12], "rotation": 90, "texture": "#0"} } + }, + { + "name": "Side", + "from": [6, 3, 13], + "to": [10, 13, 14], + "faces": { + "north": {"uv": [3, 6, 13, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [2, 6, 3, 10], "rotation": 90, "texture": "#0"}, + "down": {"uv": [13, 6, 14, 10], "rotation": 90, "texture": "#0"} + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/sideways_middle.json b/src/main/resources/assets/create/models/block/belt/sideways_middle.json index 24f7c35e6..ed352bba5 100644 --- a/src/main/resources/assets/create/models/block/belt/sideways_middle.json +++ b/src/main/resources/assets/create/models/block/belt/sideways_middle.json @@ -17,6 +17,16 @@ "down": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#0"} } }, + { + "name": "Bottom", + "from": [10, 3, 0], + "to": [11, 13, 16], + "faces": { + "west": {"uv": [3, 0, 13, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [13, 0, 14, 16], "texture": "#0"}, + "down": {"uv": [2, 0, 3, 16], "rotation": 180, "texture": "#0"} + } + }, { "name": "Top", "from": [3, 1, 0], @@ -27,6 +37,16 @@ "up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#0"}, "down": {"uv": [14, 0, 16, 16], "texture": "#0"} } + }, + { + "name": "Top", + "from": [5, 3, 0], + "to": [6, 13, 16], + "faces": { + "east": {"uv": [3, 0, 13, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [13, 0, 14, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [13, 0, 14, 16], "texture": "#0"} + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/sideways_start.json b/src/main/resources/assets/create/models/block/belt/sideways_start.json index 250b8ff75..6ab8c2414 100644 --- a/src/main/resources/assets/create/models/block/belt/sideways_start.json +++ b/src/main/resources/assets/create/models/block/belt/sideways_start.json @@ -18,6 +18,27 @@ "down": {"uv": [14, 1, 16, 16], "rotation": 180, "texture": "#0"} } }, + { + "name": "Bottom", + "from": [10, 3, 2], + "to": [11, 13, 16], + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 270, "texture": "#0"}, + "west": {"uv": [3, 2, 13, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [13, 2, 14, 16], "texture": "#0"}, + "down": {"uv": [2, 2, 3, 16], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [5, 3, 2], + "to": [6, 13, 16], + "faces": { + "east": {"uv": [3, 2, 13, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [2, 2, 3, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [13, 2, 14, 16], "texture": "#0"} + } + }, { "name": "Top", "from": [3, 1, 1], @@ -26,14 +47,14 @@ "north": {"uv": [1, 3, 15, 5], "rotation": 90, "texture": "#0"}, "east": {"uv": [1, 1, 15, 16], "rotation": 270, "texture": "#0"}, "west": {"uv": [1, 0, 15, 15], "rotation": 90, "texture": "#0"}, - "up": {"uv": [0, 1, 2, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [14, 1, 16, 16], "texture": "#0"} + "up": {"uv": [0, 0, 2, 15], "rotation": 180, "texture": "#0"}, + "down": {"uv": [14, 0, 16, 15], "texture": "#0"} } }, { "name": "Side", - "from": [4, 1, 0], - "to": [12, 15, 2], + "from": [4, 1.1, 0], + "to": [12, 14.9, 2], "faces": { "north": {"uv": [1, 4, 15, 12], "rotation": 90, "texture": "#0"}, "east": {"uv": [1, 11, 15, 13], "rotation": 90, "texture": "#0"}, @@ -42,6 +63,16 @@ "up": {"uv": [0, 4, 2, 12], "rotation": 270, "texture": "#0"}, "down": {"uv": [14, 4, 16, 12], "rotation": 270, "texture": "#0"} } + }, + { + "name": "Side", + "from": [6, 3, 2], + "to": [10, 13, 3], + "faces": { + "south": {"uv": [3, 6, 13, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [2, 6, 3, 10], "rotation": 270, "texture": "#0"}, + "down": {"uv": [13, 6, 14, 10], "rotation": 270, "texture": "#0"} + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/upward_end.json b/src/main/resources/assets/create/models/block/belt/upward_end.json index b17d62965..3e7cc8f0d 100644 --- a/src/main/resources/assets/create/models/block/belt/upward_end.json +++ b/src/main/resources/assets/create/models/block/belt/upward_end.json @@ -1,73 +1,125 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 1.0, 3.0, 9.2 ], - "to": [ 15.0, 5.0, 15.0 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0.0, 9.0, 2.0, 15.0 ], "rotation": 90 }, - "south": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ], "rotation": 180 }, - "west": { "texture": "#0", "uv": [ 14.0, 9.0, 16.0, 15.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 9.0, 15.0, 14.8 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 9.0, 15.0, 14.8 ], "rotation": 180 } - } - }, - { - "name": "Top", - "from": [ 1.0, 11.0, 5.9 ], - "to": [ 15.0, 13.0, 15.0 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 10.0 ], "rotation": 270 }, - "south": { "texture": "#0", "uv": [ 1.0, 13.0, 15.0, 11.0 ], "rotation": 180 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 10.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 10.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 10.0 ] } - } - }, - { - "name": "Side", - "from": [ 1.0, 4.0, 14.0 ], - "to": [ 15.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 4.0, 2.0, 12.0 ], "rotation": 180 }, - "south": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ], "rotation": 180 }, - "west": { "texture": "#0", "uv": [ 14.0, 4.0, 16.0, 12.0 ], "rotation": 180 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ] } - } - }, - { - "name": "Bottom Diagonal", - "from": [ 1.0, 3.0, -3.328 ], - "to": [ 15.0, 5.0, 6.75 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.1 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ], "rotation": 180 } - } - }, - { - "name": "Top Diagonal", - "from": [ 1.0, 11.0, -3.328 ], - "to": [ 15.0, 13.0, 10.1 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 3.0, 2.0, 16.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 3.0, 16.0, 16.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ] } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom", + "from": [0.9, 3, 9.2], + "to": [15.1, 5, 15], + "faces": { + "east": {"uv": [0, 9, 2, 15], "rotation": 90, "texture": "#0"}, + "south": {"uv": [1, 3, 15, 5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [14, 9, 16, 15], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 9, 15, 15], "texture": "#0"}, + "down": {"uv": [1, 9, 15, 14.8], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [2.9, 5, 9.2], + "to": [13.1, 6, 14], + "faces": { + "east": {"uv": [13, 9, 14, 14], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 9, 3, 14], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 9, 13, 14], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [0.9, 11, 5.9], + "to": [15.1, 13, 15], + "faces": { + "east": {"uv": [0, 1, 2, 10], "rotation": 270, "texture": "#0"}, + "south": {"uv": [1, 13, 15, 11], "rotation": 180, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 1, 15, 10], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [2.9, 10, 5.9], + "to": [13.1, 11, 14], + "faces": { + "east": {"uv": [13, 2, 14, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 2, 3, 10], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 2, 13, 10], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [1, 4, 14], + "to": [15, 12, 16], + "faces": { + "north": {"uv": [1, 4, 15, 12], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 4, 2, 12], "rotation": 180, "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "rotation": 180, "texture": "#0"}, + "west": {"uv": [14, 4, 16, 12], "rotation": 180, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "down": {"uv": [1, 11, 15, 13], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [2.9, 6, 13], + "to": [13.1, 10, 14], + "faces": { + "north": {"uv": [3, 6, 13, 10], "rotation": 180, "texture": "#0"}, + "east": {"uv": [13, 6, 14, 10], "rotation": 180, "texture": "#0"}, + "west": {"uv": [2, 6, 3, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [1, 3, -3.328], + "to": [15, 5, 6.75], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 0, 2, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10.2], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [3, 5, -3.328], + "to": [13, 6, 6.75], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 0, 13, 10], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [1, 11, -3.328], + "to": [15, 13, 10.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 3, 2, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 3, 16, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [3, 10, -3.328], + "to": [13, 11, 9.1], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 4, 14, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 4, 3, 16], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 4, 13, 16], "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/upward_middle.json b/src/main/resources/assets/create/models/block/belt/upward_middle.json index c1dd92010..19fbdcb55 100644 --- a/src/main/resources/assets/create/models/block/belt/upward_middle.json +++ b/src/main/resources/assets/create/models/block/belt/upward_middle.json @@ -1,62 +1,110 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Bottom Diagonal", - "from": [ 1.0, 3.0, -3.325 ], - "to": [ 15.0, 5.0, 6.6 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.1 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ], "rotation": 180 } - } - }, - { - "name": "Top Diagonal", - "from": [ 1.0, 11.0, -3.325 ], - "to": [ 15.0, 13.0, 10.0 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 3.0, 2.0, 16.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 3.0, 16.0, 16.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ] } - } - }, - { - "name": "Top Diagonal First", - "from": [ 1.0, 11.0, 9.98 ], - "to": [ 15.0, 13.0, 19.3 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ] } - } - }, - { - "name": "Bottom Diagonal First", - "from": [ 1.0, 3.0, 6.58 ], - "to": [ 15.0, 5.0, 19.3 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 3.0, 2.0, 16.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 3.0, 16.0, 16.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ], "rotation": 180 } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Bottom Diagonal", + "from": [1, 3, -3.325], + "to": [15, 5, 6.6], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 0, 2, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [3, 5, -3.325], + "to": [13, 6, 6.6], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 0, 13, 10], "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [1, 11, -3.325], + "to": [15, 13, 10], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 3, 2, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 3, 16, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [3, 10, -3.325], + "to": [13, 11, 10], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 3, 14, 16], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 3, 3, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3, 3, 13, 16], "texture": "#0"} + } + }, + { + "name": "Top Diagonal First", + "from": [1, 11, 9.98], + "to": [15, 13, 19.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10], "texture": "#0"} + } + }, + { + "name": "Top Diagonal First", + "from": [3, 10, 9.98], + "to": [13, 11, 19.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3, 0, 13, 10], "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal First", + "from": [1, 3, 6.58], + "to": [15, 5, 19.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 3, 2, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 3, 16, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal First", + "from": [3, 5, 6.58], + "to": [13, 6, 19.3], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 3, 14, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 3, 3, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 3, 13, 16], "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/upward_start.json b/src/main/resources/assets/create/models/block/belt/upward_start.json index 3ab4a791c..84dddff12 100644 --- a/src/main/resources/assets/create/models/block/belt/upward_start.json +++ b/src/main/resources/assets/create/models/block/belt/upward_start.json @@ -1,73 +1,125 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "create:block/belt", - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Top", - "from": [ 1.0, 11.0, 1.0 ], - "to": [ 15.0, 13.0, 6.8 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 7.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 7.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 6.8 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 6.8 ] } - } - }, - { - "name": "Bottom", - "from": [ 1.0, 3.0, 1.0 ], - "to": [ 15.0, 5.0, 10.1 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 1.0, 2.0, 10.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 1.0, 16.0, 10.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 10.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 1.0, 15.0, 10.0 ], "rotation": 180 } - } - }, - { - "name": "Side", - "from": [ 1.0, 4.0, 0.0 ], - "to": [ 15.0, 12.0, 2.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 4.0, 2.0, 12.0 ] }, - "south": { "texture": "#0", "uv": [ 1.0, 4.0, 15.0, 12.0 ] }, - "west": { "texture": "#0", "uv": [ 14.0, 4.0, 16.0, 12.0 ] }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 } - } - }, - { - "name": "Top Diagonal", - "from": [ 1.0, 11.0, 9.2 ], - "to": [ 15.0, 13.0, 19.325 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 11.0, 15.0, 13.0 ], "rotation": 180 }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ], "rotation": 90 }, - "up": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ], "rotation": 180 }, - "down": { "texture": "#0", "uv": [ 1.0, 0.0, 15.0, 10.2 ] } - } - }, - { - "name": "Bottom Diagonal", - "from": [ 1.0, 3.0, 5.9 ], - "to": [ 15.0, 5.0, 19.325 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 5.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 3.0, 2.0, 16.0 ], "rotation": 90 }, - "west": { "texture": "#0", "uv": [ 14.0, 3.0, 16.0, 16.0 ], "rotation": 270 }, - "up": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ] }, - "down": { "texture": "#0", "uv": [ 1.0, 3.0, 15.0, 16.0 ], "rotation": 180 } - } - } - ] + "textures": { + "0": "create:block/belt", + "particle": "create:block/belt" + }, + "elements": [ + { + "name": "Top", + "from": [0.9, 11, 1], + "to": [15.1, 13, 6.8], + "faces": { + "north": {"uv": [1, 11, 15, 13], "texture": "#0"}, + "east": {"uv": [0, 1, 2, 7], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 7], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 7], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 1, 15, 6.8], "texture": "#0"} + } + }, + { + "name": "Top", + "from": [2.9, 10, 2], + "to": [13.1, 11, 6.8], + "faces": { + "east": {"uv": [13, 2, 14, 7], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 2, 3, 7], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 2, 13, 6.8], "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [0.9, 3, 1], + "to": [15.1, 5, 10.1], + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 1, 2, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 1, 16, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 1, 15, 10], "texture": "#0"}, + "down": {"uv": [1, 1, 15, 10], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom", + "from": [2.9, 5, 2], + "to": [13.1, 6, 10.1], + "faces": { + "east": {"uv": [13, 2, 14, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 2, 3, 10], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 2, 13, 10], "texture": "#0"} + } + }, + { + "name": "Side", + "from": [1, 4, 0], + "to": [15, 12, 2], + "faces": { + "north": {"uv": [1, 4, 15, 12], "texture": "#0"}, + "east": {"uv": [0, 4, 2, 12], "texture": "#0"}, + "south": {"uv": [1, 4, 15, 12], "texture": "#0"}, + "west": {"uv": [14, 4, 16, 12], "texture": "#0"}, + "up": {"uv": [1, 3, 15, 5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Side", + "from": [2.9, 6, 2], + "to": [13.1, 10, 3], + "faces": { + "east": {"uv": [13, 6, 14, 10], "texture": "#0"}, + "south": {"uv": [3, 6, 13, 10], "texture": "#0"}, + "west": {"uv": [2, 6, 3, 10], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [1, 11, 9.2], + "to": [15, 13, 19.325], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 11, 15, 13], "rotation": 180, "texture": "#0"}, + "east": {"uv": [0, 0, 2, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [14, 0, 16, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1, 0, 15, 10], "texture": "#0"} + } + }, + { + "name": "Top Diagonal", + "from": [3, 10, 9.2], + "to": [13, 11, 19.325], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 0, 14, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [2, 0, 3, 10], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 0, 13, 10], "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [1, 3, 5.9], + "to": [15, 5, 19.325], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 3, 15, 5], "texture": "#0"}, + "east": {"uv": [0, 3, 2, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [14, 3, 16, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [1, 3, 15, 16], "texture": "#0"}, + "down": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Bottom Diagonal", + "from": [3, 5, 5.9], + "to": [13, 6, 19.325], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [13, 3, 14, 16], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2, 3, 3, 16], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 3, 13, 16], "texture": "#0"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_pulley.json b/src/main/resources/assets/create/models/block/belt_pulley.json index 9ed34cdb1..df86f499c 100644 --- a/src/main/resources/assets/create/models/block/belt_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_pulley.json @@ -1,54 +1,75 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", + "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "particle": "block/dark_oak_log", - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "block/dark_oak_log", - "3": "block/dark_oak_log" - }, - "elements": [ - { - "name": "Axis", - "from": [ 6.0, 0.0, 6.0 ], - "to": [ 10.0, 16.0, 10.0 ], - "shade": false, - "faces": { - "north": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "up": { "texture": "#1", "uv": [ 6.0, 6.0, 10.0, 10.0 ] }, - "down": { "texture": "#1", "uv": [ 6.0, 6.0, 10.0, 10.0 ] } - } - }, - { - "name": "Pulley", - "from": [ 5.0, 2.0, 5.0 ], - "to": [ 11.0, 14.0, 11.0 ], - "faces": { - "north": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 14.0 ] }, - "east": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 14.0 ] }, - "south": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 14.0 ] }, - "west": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 14.0 ] }, - "up": { "texture": "#3", "uv": [ 5.0, 5.0, 11.0, 11.0 ] }, - "down": { "texture": "#3", "uv": [ 5.0, 5.0, 11.0, 11.0 ] } - } - }, - { - "name": "Pulley2", - "from": [ 5.0, 2.5000000074505806, 5.0 ], - "to": [ 11.0, 13.50000000745058, 11.0 ], - "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": 45.0 }, - "faces": { - "north": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 13.0 ] }, - "east": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 13.0 ] }, - "south": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 13.0 ] }, - "west": { "texture": "#2", "uv": [ 5.0, 2.0, 11.0, 13.0 ] }, - "up": { "texture": "#3", "uv": [ 5.0, 5.0, 11.0, 11.0 ] }, - "down": { "texture": "#3", "uv": [ 5.0, 5.0, 11.0, 11.0 ] } - } - } - ] + "textures": { + "0": "create:block/axis", + "1": "create:block/axis_top", + "2": "block/dark_oak_log", + "3": "block/dark_oak_log_top", + "particle": "block/dark_oak_log" + }, + "elements": [ + { + "name": "Axis", + "from": [6, 0, 6], + "to": [10, 16, 10], + "shade": false, + "faces": { + "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, + "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, + "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, + "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, + "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, + "down": {"uv": [6, 6, 10, 10], "texture": "#1"} + } + }, + { + "name": "Pulley", + "from": [4, 2, 5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [5, 2, 9, 14], "texture": "#2"}, + "south": {"uv": [5, 2, 9, 14], "texture": "#2"}, + "west": {"uv": [5, 2, 11, 14], "texture": "#2"}, + "up": {"uv": [0, 5, 4, 11], "texture": "#3"}, + "down": {"uv": [0, 5, 4, 11], "texture": "#3"} + } + }, + { + "name": "Pulley", + "from": [8, 2, 5], + "to": [12, 14, 11], + "faces": { + "north": {"uv": [5, 2, 9, 14], "texture": "#2"}, + "east": {"uv": [5, 2, 11, 14], "texture": "#2"}, + "south": {"uv": [5, 2, 9, 14], "texture": "#2"}, + "up": {"uv": [12, 5, 16, 11], "texture": "#3"}, + "down": {"uv": [12, 5, 16, 11], "texture": "#3"} + } + }, + { + "name": "Pulley", + "from": [5, 2, 4], + "to": [11, 14, 5], + "faces": { + "north": {"uv": [5, 2, 11, 14], "texture": "#2"}, + "east": {"uv": [5, 2, 6, 14], "texture": "#2"}, + "west": {"uv": [5, 2, 6, 14], "texture": "#2"}, + "up": {"uv": [8, 15, 14, 16], "texture": "#3"}, + "down": {"uv": [6, 15, 12, 16], "texture": "#3"} + } + }, + { + "name": "Pulley", + "from": [5, 2, 11], + "to": [11, 14, 12], + "faces": { + "east": {"uv": [6, 2, 5, 14], "texture": "#2"}, + "south": {"uv": [11, 2, 5, 14], "texture": "#2"}, + "west": {"uv": [6, 2, 5, 14], "texture": "#2"}, + "up": {"uv": [3, 1, 9, 0], "texture": "#3"}, + "down": {"uv": [4, 1, 10, 0], "texture": "#3"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/belt.png b/src/main/resources/assets/create/textures/block/belt.png index daede5a4f15fcabbde1c77bae0af741aab8ebe4b..68b626dd1e819863909783bfd99068f161ded6f9 100644 GIT binary patch delta 168 zcmZovoOzL_6_t21id9#}J9j$pV@B>`jq<0dAHPE{0BKDmny0{2Y)k>%Bd4*<=bdYtO8Wz3)|3 z6-ANf`M&ROHiTg~&oiWL+q$kDiTb`Tdq6_L)1caUo@xzu`XoD!qh$|inliqZJph7a%^uvc oEP2~h`0IHCN;!^0k!4xF0HwAB71B_9<^TWy07*qoM6N<$f{tE}b^rhX diff --git a/src/main/resources/assets/create/textures/block/belt_animated.png b/src/main/resources/assets/create/textures/block/belt_animated.png index 225ff7dccfbdae1d8adea526ae19efc8719352de..28b236d4bf0291af83093be3de38e42c594c38d1 100644 GIT binary patch delta 239 zcmaFPF`H?E1SbnK0|P^Zd(PX5iVF1x0X`wF`uh6L&d%Q6-VqTIX=!O?Wo6aX)lE%J zt*xzXZEYPL9bH{rKs|84b-TtJ$l)yTh%9Dc;5!Jyj5{V~zXb}Gc)B=-cpOg_$kbc1&>%eUsI_M`}@IQ(ChU+K0Xe7oSvS}=W~qFX!Q8_h(Y|_-JP6&gINy`4;FuK z`SHKLzNR4wCnqN|w&In4u~=~V{{EhZBpe+b@yV=avpF0NiEm^FyhtcF(50}X__>WC zXCCDz0QJl@Y!-GJ=pYQgVy>>PetsekL$ldTk!}HaWz;U{>FH@QnaF=}adC5V!=vL% z6xY|+I5kQb!5dG2M70ZI%5*waHtc`5x3@HnW4T=N$q+Xs4BIUr96{LKZWn`WNrVrE z_{Iq%xDlEldAOYnFNcSRtJO+&@&tksR0dR;&PHg0jN{{D8N9#-)l*J0wyThreF_r1 z#$-?o+6=ZL9v7727EsJS1&M4Vo6zctJPcV;`C33Ag0e-00E!Aut1Ha4St@@jZUNy4 zVpK(i0!Tpq$>U_yii%r6ID)XL7ED(G^uiQARa7?40j_HoBu@eA%224w|H8@ay#!a%ORRK%4b<3I&I0LLP>;_5i&TelD$c2~G?IX_j6&7>~yc zkxemq7(y{&1j}O!CL7(qA!mP<*bDinBB%_gGM%v(@=-;Q;58e6QEzlWdB_&oTtTc+kMzY0n7Qy@`QbOm-Kaa90^*F=8(idm*S-5cWSE ztg#pJQALm_f3U`0C`W%qL8AP@>J|`=AW{CLcMHHPqjo{rqCyFws8~gTeCx6C1V~i7 zAf~9O0QOc<(MDy+ii%r6ID)XL78qnpB788!H?E=*e;f5tMNk<~WjephZ=>1+`dyz( zhABrN4?_efQm-7B_zAGv7&u>EUY?(y^~%9`JZAl@%0=X03U`0Z{yzY=B=^@q%GPlN zu@~}DMUdc$IV*>fYZk;_C`Uy>Liq_`voY7OS=edd=K{hJBve!s!`sV~7xFL^d!g71 ziM$|ess#qwk_aCR@r|pf#9qip6+vY{mFbNC6Z@zlNbnkyK{04E*ot^uP>NeXG5ZuG zvXN{;t1I#_WJNCJYXN}>$`%y@b~cx80pSQ@R7Is!b9r#^2ix6Op0XUYq5uE@07*qo IM6N<$f-!jIg8%>k From 2d04c8786596633b9adf415454add9ef1d92a8b1 Mon Sep 17 00:00:00 2001 From: Prusias Date: Tue, 7 Jul 2020 11:04:25 +0200 Subject: [PATCH 37/47] Fixes issue 388, When placing a casing or shaft on a active belt it creates a looping power source. This is avoided by using KineticTileEntity.switchToBlockState, which safely modifies the kinetic network. --- .../content/contraptions/relays/belt/BeltBlock.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 62ad662e1..9ff6242bc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -5,6 +5,7 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; import org.apache.commons.lang3.mutable.MutableInt; import com.simibubi.create.AllBlocks; @@ -266,8 +267,9 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE Date: Tue, 7 Jul 2020 16:03:49 +0200 Subject: [PATCH 38/47] Belt casing overhaul - Sideways and Vertical belts can now be reinforced with casing - Belts can now be reinforced with andesite casing - Reinforcing belts no longer consumes the casing block - Reworked reinforced belt models - Fixed flipped diagonal belt casing once again - Fixed belts breaking instantly when punched in survival mode --- src/generated/resources/.cache/cache | 4 +- .../assets/create/blockstates/belt.json | 96 ++++++------ .../create/blockstates/radial_chassis.json | 72 ++++----- .../java/com/simibubi/create/AllBlocks.java | 31 ++-- .../com/simibubi/create/AllSpriteShifts.java | 1 + .../contraptions/relays/belt/BeltBlock.java | 65 +++------ .../relays/belt/BeltGenerator.java | 12 +- .../contraptions/relays/belt/BeltModel.java | 74 ++++++++++ .../contraptions/relays/belt/BeltShapes.java | 2 + .../relays/belt/BeltTileEntity.java | 44 ++++++ .../block/belt_casing/diagonal_end.json | 110 ++++++++------ .../block/belt_casing/diagonal_middle.json | 62 ++------ .../block/belt_casing/diagonal_pulley.json | 55 ++++--- .../block/belt_casing/diagonal_start.json | 138 ++++++++++-------- .../block/belt_casing/horizontal_end.json | 80 +++++----- .../block/belt_casing/horizontal_middle.json | 17 +-- .../block/belt_casing/horizontal_pulley.json | 67 +++------ .../block/belt_casing/horizontal_start.json | 88 ++++++----- .../block/belt_casing/sideways_end.json | 124 +++++++++++++++- .../block/belt_casing/sideways_middle.json | 31 +++- .../block/belt_casing/sideways_pulley.json | 111 +++++++++++++- .../block/belt_casing/sideways_start.json | 124 +++++++++++++++- .../block/belt_casing/vertical_end.json | 5 - .../block/belt_casing/vertical_middle.json | 5 - .../block/belt_casing/vertical_pulley.json | 5 - .../block/belt_casing/vertical_start.json | 5 - .../textures/block/andesite_casing_belt.png | Bin 0 -> 1483 bytes .../assets/create/textures/block/axis_top.png | Bin 318 -> 215 bytes .../textures/block/brass_casing_belt.png | Bin 0 -> 1164 bytes 29 files changed, 916 insertions(+), 512 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java delete mode 100644 src/main/resources/assets/create/models/block/belt_casing/vertical_end.json delete mode 100644 src/main/resources/assets/create/models/block/belt_casing/vertical_middle.json delete mode 100644 src/main/resources/assets/create/models/block/belt_casing/vertical_pulley.json delete mode 100644 src/main/resources/assets/create/models/block/belt_casing/vertical_start.json create mode 100644 src/main/resources/assets/create/textures/block/andesite_casing_belt.png create mode 100644 src/main/resources/assets/create/textures/block/brass_casing_belt.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 4650a1bad..b89ffae8f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -16,7 +16,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 82bd82270aff7d51e9239680ef4dd7b5c899ceb0 assets\create\blockstates\andesite_cobblestone_wall.json 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json -0051a90014873a4967d74a2be92675ff1826d94a assets\create\blockstates\belt.json +39dc813be2049a42475f93d12f9f2e356139cf1b assets\create\blockstates\belt.json 9bbc9a2dc2428175ae0cadf7537ed6815e3e241d assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json @@ -282,7 +282,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -4439fc83a8c7370ab44b211a3fd48abde20a4728 assets\create\blockstates\radial_chassis.json +6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets\create\blockstates\radial_chassis.json 5e03eb759050c365f9f452ef0659f19a80e1e2f8 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json diff --git a/src/generated/resources/assets/create/blockstates/belt.json b/src/generated/resources/assets/create/blockstates/belt.json index 98e422395..2c9de12cc 100644 --- a/src/generated/resources/assets/create/blockstates/belt.json +++ b/src/generated/resources/assets/create/blockstates/belt.json @@ -131,7 +131,7 @@ "model": "create:block/belt/upward_start" }, "casing=true,facing=south,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 180 }, "casing=false,facing=west,part=start,slope=upward": { @@ -139,7 +139,7 @@ "y": 90 }, "casing=true,facing=west,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 270 }, "casing=false,facing=east,part=start,slope=upward": { @@ -191,7 +191,7 @@ "model": "create:block/belt/upward_end" }, "casing=true,facing=south,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 180 }, "casing=false,facing=west,part=end,slope=upward": { @@ -199,7 +199,7 @@ "y": 90 }, "casing=true,facing=west,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 270 }, "casing=false,facing=east,part=end,slope=upward": { @@ -245,7 +245,7 @@ "y": 180 }, "casing=true,facing=north,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 180 }, "casing=false,facing=south,part=start,slope=downward": { @@ -267,7 +267,7 @@ "y": 270 }, "casing=true,facing=east,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", + "model": "create:block/belt_casing/diagonal_end", "y": 270 }, "casing=false,facing=north,part=middle,slope=downward": { @@ -305,7 +305,7 @@ "y": 180 }, "casing=true,facing=north,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 180 }, "casing=false,facing=south,part=end,slope=downward": { @@ -327,7 +327,7 @@ "y": 270 }, "casing=true,facing=east,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", + "model": "create:block/belt_casing/diagonal_start", "y": 270 }, "casing=false,facing=north,part=pulley,slope=downward": { @@ -366,17 +366,18 @@ "y": 180 }, "casing=true,facing=north,part=start,slope=vertical": { - "model": "create:block/belt_casing/vertical_start", + "model": "create:block/belt_casing/sideways_end", "x": 90, - "y": 180 + "y": 270 }, "casing=false,facing=south,part=start,slope=vertical": { "model": "create:block/belt/horizontal_start", "x": 90 }, "casing=true,facing=south,part=start,slope=vertical": { - "model": "create:block/belt_casing/vertical_start", - "x": 90 + "model": "create:block/belt_casing/sideways_start", + "x": 90, + "y": 90 }, "casing=false,facing=west,part=start,slope=vertical": { "model": "create:block/belt/horizontal_end", @@ -384,9 +385,9 @@ "y": 90 }, "casing=true,facing=west,part=start,slope=vertical": { - "model": "create:block/belt_casing/vertical_start", + "model": "create:block/belt_casing/sideways_end", "x": 90, - "y": 90 + "y": 180 }, "casing=false,facing=east,part=start,slope=vertical": { "model": "create:block/belt/horizontal_start", @@ -394,9 +395,8 @@ "y": 270 }, "casing=true,facing=east,part=start,slope=vertical": { - "model": "create:block/belt_casing/vertical_start", - "x": 90, - "y": 270 + "model": "create:block/belt_casing/sideways_start", + "x": 90 }, "casing=false,facing=north,part=middle,slope=vertical": { "model": "create:block/belt/horizontal_middle", @@ -404,17 +404,18 @@ "y": 180 }, "casing=true,facing=north,part=middle,slope=vertical": { - "model": "create:block/belt_casing/vertical_middle", + "model": "create:block/belt_casing/sideways_middle", "x": 90, - "y": 180 + "y": 270 }, "casing=false,facing=south,part=middle,slope=vertical": { "model": "create:block/belt/horizontal_middle", "x": 90 }, "casing=true,facing=south,part=middle,slope=vertical": { - "model": "create:block/belt_casing/vertical_middle", - "x": 90 + "model": "create:block/belt_casing/sideways_middle", + "x": 90, + "y": 90 }, "casing=false,facing=west,part=middle,slope=vertical": { "model": "create:block/belt/horizontal_middle", @@ -422,9 +423,9 @@ "y": 90 }, "casing=true,facing=west,part=middle,slope=vertical": { - "model": "create:block/belt_casing/vertical_middle", + "model": "create:block/belt_casing/sideways_middle", "x": 90, - "y": 90 + "y": 180 }, "casing=false,facing=east,part=middle,slope=vertical": { "model": "create:block/belt/horizontal_middle", @@ -432,9 +433,8 @@ "y": 270 }, "casing=true,facing=east,part=middle,slope=vertical": { - "model": "create:block/belt_casing/vertical_middle", - "x": 90, - "y": 270 + "model": "create:block/belt_casing/sideways_middle", + "x": 90 }, "casing=false,facing=north,part=end,slope=vertical": { "model": "create:block/belt/horizontal_start", @@ -442,17 +442,18 @@ "y": 180 }, "casing=true,facing=north,part=end,slope=vertical": { - "model": "create:block/belt_casing/vertical_end", + "model": "create:block/belt_casing/sideways_start", "x": 90, - "y": 180 + "y": 270 }, "casing=false,facing=south,part=end,slope=vertical": { "model": "create:block/belt/horizontal_end", "x": 90 }, "casing=true,facing=south,part=end,slope=vertical": { - "model": "create:block/belt_casing/vertical_end", - "x": 90 + "model": "create:block/belt_casing/sideways_end", + "x": 90, + "y": 90 }, "casing=false,facing=west,part=end,slope=vertical": { "model": "create:block/belt/horizontal_start", @@ -460,9 +461,9 @@ "y": 90 }, "casing=true,facing=west,part=end,slope=vertical": { - "model": "create:block/belt_casing/vertical_end", + "model": "create:block/belt_casing/sideways_start", "x": 90, - "y": 90 + "y": 180 }, "casing=false,facing=east,part=end,slope=vertical": { "model": "create:block/belt/horizontal_end", @@ -470,9 +471,8 @@ "y": 270 }, "casing=true,facing=east,part=end,slope=vertical": { - "model": "create:block/belt_casing/vertical_end", - "x": 90, - "y": 270 + "model": "create:block/belt_casing/sideways_end", + "x": 90 }, "casing=false,facing=north,part=pulley,slope=vertical": { "model": "create:block/belt/horizontal_middle", @@ -480,17 +480,18 @@ "y": 180 }, "casing=true,facing=north,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/vertical_pulley", + "model": "create:block/belt_casing/sideways_pulley", "x": 90, - "y": 180 + "y": 270 }, "casing=false,facing=south,part=pulley,slope=vertical": { "model": "create:block/belt/horizontal_middle", "x": 90 }, "casing=true,facing=south,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/vertical_pulley", - "x": 90 + "model": "create:block/belt_casing/sideways_pulley", + "x": 90, + "y": 90 }, "casing=false,facing=west,part=pulley,slope=vertical": { "model": "create:block/belt/horizontal_middle", @@ -498,9 +499,9 @@ "y": 90 }, "casing=true,facing=west,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/vertical_pulley", + "model": "create:block/belt_casing/sideways_pulley", "x": 90, - "y": 90 + "y": 180 }, "casing=false,facing=east,part=pulley,slope=vertical": { "model": "create:block/belt/horizontal_middle", @@ -508,9 +509,8 @@ "y": 270 }, "casing=true,facing=east,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/vertical_pulley", - "x": 90, - "y": 270 + "model": "create:block/belt_casing/sideways_pulley", + "x": 90 }, "casing=false,facing=north,part=start,slope=sideways": { "model": "create:block/belt/sideways_end", @@ -518,7 +518,7 @@ "y": 180 }, "casing=true,facing=north,part=start,slope=sideways": { - "model": "create:block/belt_casing/sideways_start", + "model": "create:block/belt_casing/sideways_end", "x": 180, "y": 180 }, @@ -534,7 +534,7 @@ "y": 90 }, "casing=true,facing=west,part=start,slope=sideways": { - "model": "create:block/belt_casing/sideways_start", + "model": "create:block/belt_casing/sideways_end", "x": 180, "y": 90 }, @@ -586,7 +586,7 @@ "y": 180 }, "casing=true,facing=north,part=end,slope=sideways": { - "model": "create:block/belt_casing/sideways_end", + "model": "create:block/belt_casing/sideways_start", "x": 180, "y": 180 }, @@ -602,7 +602,7 @@ "y": 90 }, "casing=true,facing=west,part=end,slope=sideways": { - "model": "create:block/belt_casing/sideways_end", + "model": "create:block/belt_casing/sideways_start", "x": 180, "y": 90 }, diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 8bd829ffc..f97d8c8bc 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -89,8 +89,8 @@ }, { "when": { - "axis": "x", - "sticky_west": "true" + "sticky_west": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -99,8 +99,8 @@ }, { "when": { - "axis": "y", - "sticky_west": "true" + "sticky_west": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -109,8 +109,8 @@ }, { "when": { - "axis": "z", - "sticky_west": "true" + "sticky_west": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky", @@ -119,8 +119,8 @@ }, { "when": { - "axis": "x", - "sticky_west": "false" + "sticky_west": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -129,8 +129,8 @@ }, { "when": { - "axis": "y", - "sticky_west": "false" + "sticky_west": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -139,8 +139,8 @@ }, { "when": { - "axis": "z", - "sticky_west": "false" + "sticky_west": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z", @@ -149,8 +149,8 @@ }, { "when": { - "axis": "x", - "sticky_north": "true" + "sticky_north": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky" @@ -158,8 +158,8 @@ }, { "when": { - "axis": "y", - "sticky_north": "true" + "sticky_north": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -168,8 +168,8 @@ }, { "when": { - "axis": "z", - "sticky_north": "true" + "sticky_north": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -178,8 +178,8 @@ }, { "when": { - "axis": "x", - "sticky_north": "false" + "sticky_north": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x" @@ -187,8 +187,8 @@ }, { "when": { - "axis": "y", - "sticky_north": "false" + "sticky_north": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -197,8 +197,8 @@ }, { "when": { - "axis": "z", - "sticky_north": "false" + "sticky_north": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -207,8 +207,8 @@ }, { "when": { - "axis": "x", - "sticky_east": "true" + "sticky_east": "true", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -217,8 +217,8 @@ }, { "when": { - "axis": "y", - "sticky_east": "true" + "sticky_east": "true", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -227,8 +227,8 @@ }, { "when": { - "axis": "z", - "sticky_east": "true" + "sticky_east": "true", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky" @@ -236,8 +236,8 @@ }, { "when": { - "axis": "x", - "sticky_east": "false" + "sticky_east": "false", + "axis": "x" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -246,8 +246,8 @@ }, { "when": { - "axis": "y", - "sticky_east": "false" + "sticky_east": "false", + "axis": "y" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -256,8 +256,8 @@ }, { "when": { - "axis": "z", - "sticky_east": "false" + "sticky_east": "false", + "axis": "z" }, "apply": { "model": "create:block/radial_chassis_side_z" diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 888df337b..05099f5e7 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -62,6 +62,7 @@ import com.simibubi.create.content.contraptions.relays.advanced.sequencer.Sequen import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltColor; import com.simibubi.create.content.contraptions.relays.belt.BeltGenerator; +import com.simibubi.create.content.contraptions.relays.belt.BeltModel; import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; import com.simibubi.create.content.contraptions.relays.elementary.CogwheelBlockItem; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; @@ -267,9 +268,11 @@ public class AllBlocks { public static final BlockEntry BELT = REGISTRATE.block("belt", BeltBlock::new) .initialProperties(SharedProperties.beltMaterial, MaterialColor.GRAY) .properties(p -> p.sound(SoundType.CLOTH)) + .properties(p -> p.hardnessAndResistance(0.8F)) + .blockstate(new BeltGenerator()::generate) .transform(StressConfigDefaults.setImpact(1.0)) .onRegister(CreateRegistrate.blockColors(() -> BeltColor::new)) - .blockstate(new BeltGenerator()::generate) + .onRegister(CreateRegistrate.blockModel(() -> BeltModel::new)) .register(); public static final BlockEntry CREATIVE_MOTOR = @@ -390,14 +393,14 @@ public class AllBlocks { .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.standardModel(ctx, prov))) .simpleItem() .register(); - + public static final BlockEntry DEPOT = REGISTRATE.block("depot", DepotBlock::new) .initialProperties(SharedProperties::stone) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .item() .transform(customItemModel("_", "block")) .register(); - + public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) .initialProperties(SharedProperties::softMetal) .addLayer(() -> RenderType::getCutoutMipped) @@ -686,13 +689,12 @@ public class AllBlocks { .transform(customItemModel()) .register(); - // Logistics static { REGISTRATE.startSection(AllSections.LOGISTICS); } - + public static final BlockEntry MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new) .initialProperties(SharedProperties::softMetal) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) @@ -700,7 +702,7 @@ public class AllBlocks { .item(ArmItem::new) .transform(customItemModel()) .register(); - + public static final BlockEntry REALITY_FUNNEL = REGISTRATE.block("reality_funnel", RealityFunnelBlock::new) .initialProperties(SharedProperties::softMetal) @@ -708,18 +710,19 @@ public class AllBlocks { .item(FunnelItem::new) .transform(customItemModel()) .register(); - + public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) .initialProperties(SharedProperties::softMetal) .blockstate(new BeltFunnelGenerator()::generate) .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) .register(); - - public static final BlockEntry CHUTE_FUNNEL = REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(new ChuteFunnelGenerator()::generate) - .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) - .register(); + + public static final BlockEntry CHUTE_FUNNEL = + REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new ChuteFunnelGenerator()::generate) + .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .register(); public static final BlockEntry REDSTONE_CONTACT = REGISTRATE.block("redstone_contact", RedstoneContactBlock::new) @@ -787,7 +790,7 @@ public class AllBlocks { .item() .transform(customItemModel()) .register(); - + public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) .initialProperties(SharedProperties::softMetal) .transform(StressConfigDefaults.setImpact(4.0)) diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index d9f4f15ba..6ff0d05fe 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -51,6 +51,7 @@ public class AllSpriteShifts { public static final SpriteShiftEntry BELT = SpriteShifter.get("block/belt", "block/belt_animated"), + ANDESIDE_BELT_CASING = SpriteShifter.get("block/brass_casing_belt", "block/andesite_casing_belt"), CRAFTER_THINGIES = SpriteShifter.get("block/crafter_thingies", "block/crafter_thingies"); static { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index e37e85ded..59b7be968 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -11,6 +11,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; @@ -121,9 +122,6 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE getDrops(BlockState state, net.minecraft.world.storage.loot.LootContext.Builder builder) { List drops = super.getDrops(state, builder); - if (state.get(CASING)) - drops.addAll(AllBlocks.BRASS_CASING.getDefaultState() - .getDrops(builder)); TileEntity tileEntity = builder.get(LootParameters.BLOCK_ENTITY); if (tileEntity instanceof BeltTileEntity && ((BeltTileEntity) tileEntity).hasPulley()) drops.addAll(AllBlocks.SHAFT.getDefaultState() @@ -222,22 +220,19 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { + withTileEntityDo(world, pos, te -> { DyeColor dyeColor = DyeColor.getColor(heldItem); if (dyeColor == null) return; @@ -248,7 +243,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { - player.inventory.placeItemBackInInventory(worldIn, transportedItemStack.stack); + player.inventory.placeItemBackInInventory(world, transportedItemStack.stack); return Collections.emptyList(); }); } @@ -268,25 +263,26 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE te.setCasingType(CasingType.BRASS)); + return ActionResultType.SUCCESS; + } + + if (AllBlocks.ANDESITE_CASING.isIn(heldItem)) { + if (world.isRemote) + return ActionResultType.SUCCESS; + withTileEntityDo(world, pos, te -> te.setCasingType(CasingType.ANDESITE)); return ActionResultType.SUCCESS; } @@ -297,13 +293,12 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE te.setCasingType(CasingType.NONE)); return ActionResultType.SUCCESS; } @@ -417,8 +412,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE required = new ArrayList<>(); if (state.get(PART) != Part.MIDDLE) required.add(AllBlocks.SHAFT.asStack()); - if (state.get(CASING)) - required.add(AllBlocks.BRASS_CASING.asStack()); if (state.get(PART) == Part.START) required.add(AllItems.BELT_CONNECTOR.asStack()); if (required.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java index 09c09d07f..e2e25b46b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java @@ -9,7 +9,6 @@ import com.tterrag.registrate.providers.RegistrateBlockstateProvider; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.generators.ModelFile; @@ -30,8 +29,9 @@ public class BeltGenerator extends SpecialBlockStateGen { Slope slope = state.get(BeltBlock.SLOPE); boolean flip = casing && slope == Slope.UPWARD; + boolean rotate = casing && slope == Slope.VERTICAL; Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - return horizontalAngle(direction) + (flip ? 180 : 0); + return horizontalAngle(direction) + (flip ? 180 : 0) + (rotate ? 90 : 0); } @Override @@ -41,7 +41,8 @@ public class BeltGenerator extends SpecialBlockStateGen { BeltBlock.Part part = state.get(BeltBlock.PART); Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); Slope slope = state.get(BeltBlock.SLOPE); - boolean diagonal = slope == Slope.UPWARD || slope == Slope.DOWNWARD; + boolean downward = slope == Slope.DOWNWARD; + boolean diagonal = slope == Slope.UPWARD || downward; boolean vertical = slope == Slope.VERTICAL; boolean pulley = part == Part.PULLEY; boolean sideways = slope == Slope.SIDEWAYS; @@ -50,12 +51,13 @@ public class BeltGenerator extends SpecialBlockStateGen { if (!casing && pulley) part = Part.MIDDLE; - if ((!casing && vertical && negative || casing && diagonal && negative == (direction.getAxis() == Axis.X) - || !casing && sideways && negative) && part != Part.MIDDLE && !pulley) + if ((vertical && negative || casing && downward || sideways && negative) && part != Part.MIDDLE && !pulley) part = part == Part.END ? Part.START : Part.END; if (!casing && vertical) slope = Slope.HORIZONTAL; + if (casing && vertical) + slope = Slope.SIDEWAYS; String path = "block/" + (casing ? "belt_casing/" : "belt/"); String slopeName = slope.getName(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java new file mode 100644 index 000000000..c4d6a592d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java @@ -0,0 +1,74 @@ +package com.simibubi.create.content.contraptions.relays.belt; + +import static com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CASING_PROPERTY; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +import com.simibubi.create.AllSpriteShifts; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.utility.SuperByteBuffer; + +import net.minecraft.block.BlockState; +import net.minecraft.client.renderer.model.BakedQuad; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.util.Direction; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.IModelData; + +public class BeltModel extends BakedModelWrapper { + + public BeltModel(IBakedModel template) { + super(template); + } + + @Override + public List getQuads(BlockState state, Direction side, Random rand, IModelData extraData) { + List quads = new ArrayList<>(super.getQuads(state, side, rand, extraData)); + if (!extraData.hasProperty(CASING_PROPERTY)) + return quads; + CasingType type = extraData.getData(CASING_PROPERTY); + if (type == CasingType.NONE || type == CasingType.BRASS) + return quads; + + SpriteShiftEntry spriteShift = AllSpriteShifts.ANDESIDE_BELT_CASING; + + for (int i = 0; i < quads.size(); i++) { + BakedQuad quad = quads.get(i); + if (spriteShift == null) + continue; + if (quad.getSprite() != spriteShift.getOriginal()) + continue; + + TextureAtlasSprite original = quad.getSprite(); + TextureAtlasSprite target = spriteShift.getTarget(); + BakedQuad newQuad = new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length), + quad.getTintIndex(), quad.getFace(), target, quad.shouldApplyDiffuseLighting()); + + VertexFormat format = DefaultVertexFormats.BLOCK; + int[] vertexData = newQuad.getVertexData(); + + for (int vertex = 0; vertex < vertexData.length; vertex += format.getIntegerSize()) { + int uvOffset = 16 / 4; + int uIndex = vertex + uvOffset; + int vIndex = vertex + uvOffset + 1; + float u = Float.intBitsToFloat(vertexData[uIndex]); + float v = Float.intBitsToFloat(vertexData[vIndex]); + vertexData[uIndex] = + Float.floatToRawIntBits(target.getInterpolatedU((SuperByteBuffer.getUnInterpolatedU(original, u)))); + vertexData[vIndex] = + Float.floatToRawIntBits(target.getInterpolatedV((SuperByteBuffer.getUnInterpolatedV(original, v)))); + } + + quads.set(i, newQuad); + } + return quads; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java index 61394a2b1..49005ee9f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java @@ -228,6 +228,8 @@ public class BeltShapes { if (slope == Slope.VERTICAL) return VoxelShapes.empty(); + if (slope == Slope.SIDEWAYS) + return VoxelShapes.empty(); if (slope == Slope.HORIZONTAL) { return AllShapes.CASING_11PX.get(Direction.UP); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index d04364db7..929863ac6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -27,6 +27,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.utility.ColorHelper; +import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; @@ -43,6 +44,9 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.CapabilityItemHandler; @@ -55,6 +59,7 @@ public class BeltTileEntity extends KineticTileEntity { public int beltLength; public int index; public Direction lastInsert; + public CasingType casing; protected BlockPos controller; protected BeltInventory inventory; @@ -62,10 +67,15 @@ public class BeltTileEntity extends KineticTileEntity { public CompoundNBT trackerUpdateTag; + public static enum CasingType { + NONE, ANDESITE, BRASS; + } + public BeltTileEntity(TileEntityType type) { super(type); controller = BlockPos.ZERO; itemHandler = LazyOptional.empty(); + casing = CasingType.NONE; color = -1; } @@ -176,12 +186,24 @@ public class BeltTileEntity extends KineticTileEntity { compound.putInt("Color", color); compound.putInt("Length", beltLength); compound.putInt("Index", index); + NBTHelper.writeEnum(compound, "Casing", casing); if (isController()) compound.put("Inventory", getInventory().write()); return super.write(compound); } + @Override + public void readClientUpdate(CompoundNBT tag) { + CasingType casingBefore = casing; + super.readClientUpdate(tag); + if (casingBefore != casing) { + requestModelDataUpdate(); + if (hasWorld()) + world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16); + } + } + @Override public void read(CompoundNBT compound) { super.read(compound); @@ -200,6 +222,8 @@ public class BeltTileEntity extends KineticTileEntity { if (isController()) getInventory().read(compound.getCompound("Inventory")); + + casing = NBTHelper.readEnum(compound, "Casing", CasingType.class); } @Override @@ -353,6 +377,18 @@ public class BeltTileEntity extends KineticTileEntity { return BeltHelper.getVectorForOffset(controllerTE, transported.beltPosition); } + public void setCasingType(CasingType type) { + if (casing == type) + return; + casing = type; + boolean shouldBlockHaveCasing = type != CasingType.NONE; + BlockState blockState = getBlockState(); + if (blockState.get(BeltBlock.CASING) != shouldBlockHaveCasing) + KineticTileEntity.switchToBlockState(world, pos, blockState.with(BeltBlock.CASING, shouldBlockHaveCasing)); + markDirty(); + sendData(); + } + /** * always target a DirectBeltInsertionBehaviour */ @@ -402,4 +438,12 @@ public class BeltTileEntity extends KineticTileEntity { return empty; } + public static ModelProperty CASING_PROPERTY = new ModelProperty<>(); + + @Override + public IModelData getModelData() { + return new ModelDataMap.Builder().withInitial(CASING_PROPERTY, casing) + .build(); + } + } diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json index 6b14c21f2..fba079751 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json @@ -2,10 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side", + "4": "create:block/brass_casing_belt", "8": "create:block/gearbox", - "particle": "create:block/brass_casing_side" + "particle": "create:block/brass_casing" }, "elements": [ { @@ -14,9 +13,7 @@ "to": [14.9, 11, 12], "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 0, 15, 6], "texture": "#1"}, "east": {"uv": [4, 5, 14, 12], "texture": "#8"}, - "south": {"uv": [0, 0, 15, 6], "texture": "#1"}, "west": {"uv": [2, 5, 12, 12], "texture": "#8"} } }, @@ -30,56 +27,73 @@ "west": {"uv": [6, 3, 10, 5], "texture": "#8"} } }, - { - "name": "Zfighter2", - "from": [0.5, 0.1, -0.1], - "to": [15.5, 11.1, 0.9], - "faces": { - "north": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "east": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "west": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "rotation": 180, "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "Right", - "from": [0, 0, 0], - "to": [16, 11, 5], - "faces": { - "north": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "east": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 11], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "up": {"uv": [12, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [12, 0, 16, 16], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5.1, 11], - "faces": { - "east": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "south": {"uv": [0, 6, 16, 11], "texture": "#2"}, - "west": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 8], "rotation": 180, "texture": "#2"}, - "down": {"uv": [4, 0, 10, 16], "rotation": 270, "texture": "#2"} - } - }, { "name": "Top Diagonal", "from": [-0.1, 2, 11.303], "to": [16.1, 11, 19.328], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "south": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 8.025, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 8.025, 16], "rotation": 90, "texture": "#2"} + "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "east": {"uv": [8, 8, 12.025, 12.5], "texture": "#4"}, + "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "west": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, + "up": {"uv": [12, 0, 16, 8], "rotation": 90, "texture": "#4"}, + "down": {"uv": [12, 0, 16, 8], "rotation": 90, "texture": "#4"} } + }, + { + "name": "Left", + "from": [0, 0, 0], + "to": [16, 3, 4], + "faces": { + "north": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, + "east": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, + "west": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, + "up": {"uv": [8, 3, 16, 5], "texture": "#4"}, + "down": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Left", + "from": [0, 3, 0], + "to": [1, 11, 4], + "faces": { + "north": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, + "east": {"uv": [6, 8, 8, 12], "texture": "#4"}, + "south": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, + "west": {"uv": [0, 8, 2, 12], "texture": "#4"}, + "up": {"uv": [0, 7.5, 2, 8], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Left", + "from": [15, 3, 0], + "to": [16, 11, 4], + "faces": { + "north": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, + "east": {"uv": [2, 8, 0, 12], "texture": "#4"}, + "south": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, + "west": {"uv": [8, 8, 6, 12], "texture": "#4"}, + "up": {"uv": [0, 8, 2, 7.5], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Down", + "from": [0, 0, 4], + "to": [16, 5, 12], + "faces": { + "east": {"uv": [2, 11, 6, 13.5], "texture": "#4"}, + "west": {"uv": [2, 11, 6, 13.5], "texture": "#4"}, + "up": {"uv": [8, 2, 16, 6], "texture": "#4"}, + "down": {"uv": [10, 0, 14, 8], "rotation": 90, "texture": "#4"} + } + } + ], + "groups": [0, 1, 2, + { + "name": "horizontal_start", + "origin": [8, 8, 8], + "children": [3, 4, 5, 6] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json index 4f16acd03..30eacb4eb 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json @@ -2,58 +2,21 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "2": "create:block/brass_casing_side", - "8": "create:block/gearbox" + "4": "create:block/brass_casing_belt", + "particle": "create:block/brass_casing" }, "elements": [ - { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} - } - }, - { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 10, 5], - "faces": { - "north": {"uv": [0, 0, 10, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [11, 1, 16, 11], "texture": "#2"}, - "south": {"uv": [0, 1, 16, 11], "texture": "#2"}, - "west": {"uv": [0, 1, 5, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 5, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 5, 16], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5.1, 11], - "faces": { - "north": {"uv": [0, 6, 16, 11], "texture": "#2"}, - "east": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "west": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 8], "texture": "#2"}, - "down": {"uv": [4, 0, 10, 16], "rotation": 90, "texture": "#2"} - } - }, { "name": "Top Diagonal", "from": [-0.1, 2, -3.325], "to": [16.1, 11, 10], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 13.325, 9], "texture": "#2"}, - "south": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"} + "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "east": {"uv": [9.5, 8, 16, 12.5], "texture": "#4"}, + "west": {"uv": [8, 8, 14.5, 12.5], "texture": "#4"}, + "up": {"uv": [9.5, 0, 16, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [9.5, 0, 16, 8], "rotation": 270, "texture": "#4"} } }, { @@ -62,12 +25,11 @@ "to": [16.1, 11, 19.3], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 9.3, 9], "texture": "#2"}, - "south": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [0, 0, 9.3, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"} + "east": {"uv": [8, 8, 13, 12.5], "texture": "#4"}, + "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "west": {"uv": [11, 8, 16, 12.5], "texture": "#4"}, + "up": {"uv": [8, 0, 12.5, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [8, 0, 12.5, 8], "rotation": 270, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json index 86ce620c3..51ce62cfd 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json @@ -2,10 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side", - "8": "create:block/gearbox" + "4": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" }, "elements": [ { @@ -14,9 +13,7 @@ "to": [14.9, 11, 14], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 0, 15, 6], "texture": "#1"}, "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "south": {"uv": [0, 0, 15, 6], "texture": "#1"}, "west": {"uv": [2, 5, 14, 11], "texture": "#8"} } }, @@ -35,24 +32,22 @@ "from": [0, 0, 0], "to": [16, 10, 5], "faces": { - "north": {"uv": [0, 0, 10, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [11, 1, 16, 11], "texture": "#2"}, - "south": {"uv": [0, 1, 16, 11], "texture": "#2"}, - "west": {"uv": [0, 1, 5, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 5, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 5, 16], "rotation": 90, "texture": "#2"} + "north": {"uv": [8, 0, 13, 8], "rotation": 90, "texture": "#4"}, + "east": {"uv": [5.5, 3, 8, 8], "texture": "#4"}, + "south": {"uv": [8, 1.5, 16, 6.5], "texture": "#4"}, + "west": {"uv": [0, 3, 2.5, 8], "texture": "#4"}, + "down": {"uv": [13.5, 0, 16, 8], "rotation": 90, "texture": "#4"} } }, { "name": "Down", "from": [0, 0, 5], - "to": [16, 5.1, 11], + "to": [16, 5, 11], "faces": { - "north": {"uv": [0, 6, 16, 11], "texture": "#2"}, - "east": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "west": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 8], "texture": "#2"}, - "down": {"uv": [4, 0, 10, 16], "rotation": 90, "texture": "#2"} + "east": {"uv": [2.5, 5.5, 5.5, 8], "texture": "#4"}, + "west": {"uv": [2.5, 5.5, 5.5, 8], "texture": "#4"}, + "up": {"uv": [8, 2.5, 16, 5.5], "texture": "#4"}, + "down": {"uv": [10.5, 0, 13.5, 8], "rotation": 90, "texture": "#4"} } }, { @@ -61,12 +56,12 @@ "to": [16.1, 11, 4.7], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "south": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"} + "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "east": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, + "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "west": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, + "up": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"} } }, { @@ -75,12 +70,12 @@ "to": [16.1, 11, 19.3], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "south": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"} + "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "east": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, + "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "west": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, + "up": {"uv": [8, 0, 12, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [8, 0, 12, 8], "rotation": 270, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json index 252ffe61c..bbc8e8963 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json @@ -2,10 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side", - "8": "create:block/gearbox" + "4": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" }, "elements": [ { @@ -14,9 +13,7 @@ "to": [14.9, 11, 14], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 0, 15, 6], "texture": "#1"}, "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "south": {"uv": [0, 0, 15, 6], "texture": "#1"}, "west": {"uv": [2, 5, 14, 11], "texture": "#8"} } }, @@ -30,69 +27,86 @@ "west": {"uv": [6, 3, 10, 5], "texture": "#8"} } }, - { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 10, 5], - "faces": { - "north": {"uv": [0, 0, 10, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [11, 1, 16, 11], "texture": "#2"}, - "south": {"uv": [0, 1, 16, 11], "texture": "#2"}, - "west": {"uv": [0, 1, 5, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 5, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 5, 16], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Zfighter2", - "from": [0.5, 0.1, 15.1], - "to": [15.5, 11.1, 16.1], - "faces": { - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "south": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Right", - "from": [0, 0, 11], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 0, 2, 11], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "up": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5.1, 11], - "faces": { - "north": {"uv": [0, 6, 16, 11], "texture": "#2"}, - "east": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "west": {"uv": [4, 5.9, 10, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 8], "texture": "#2"}, - "down": {"uv": [4, 0, 10, 16], "rotation": 90, "texture": "#2"} - } - }, { "name": "Top Diagonal", "from": [-0.1, 2, -3.325], "to": [16.1, 11, 4.7], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "south": {"uv": [7, 0, 16, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [0, 0, 8.025, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8.025, 16], "rotation": 270, "texture": "#2"} + "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "east": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, + "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, + "west": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, + "up": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"} } + }, + { + "name": "Left", + "from": [0, 0, 12], + "to": [16, 3, 16], + "faces": { + "east": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, + "south": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, + "west": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, + "up": {"uv": [8, 3, 16, 5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"} + } + }, + { + "name": "Left", + "from": [15, 3, 12], + "to": [16, 11, 16], + "faces": { + "north": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, + "east": {"uv": [0, 8, 2, 12], "texture": "#4"}, + "south": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, + "west": {"uv": [6, 8, 8, 12], "texture": "#4"}, + "up": {"uv": [0, 7.5, 2, 8], "rotation": 270, "texture": "#4"} + } + }, + { + "name": "Left", + "from": [0, 3, 12], + "to": [1, 11, 16], + "faces": { + "north": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, + "east": {"uv": [8, 8, 6, 12], "texture": "#4"}, + "south": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, + "west": {"uv": [2, 8, 0, 12], "texture": "#4"}, + "up": {"uv": [0, 8, 2, 7.5], "rotation": 270, "texture": "#4"} + } + }, + { + "name": "Right", + "from": [0, 0, 0], + "to": [16, 11, 5], + "faces": { + "north": {"uv": [8, 0, 13.5, 8], "rotation": 90, "texture": "#4"}, + "east": {"uv": [5.5, 2.5, 8, 8], "texture": "#4"}, + "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "west": {"uv": [0, 8, 2.5, 13.5], "texture": "#4"}, + "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} + } + }, + { + "name": "Down", + "from": [0, 0, 5], + "to": [16, 5, 12], + "faces": { + "east": {"uv": [2, 11, 5.5, 13.5], "texture": "#4"}, + "west": {"uv": [2.5, 11, 6, 13.5], "texture": "#4"}, + "up": {"uv": [8, 2, 16, 5.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} + } + } + ], + "groups": [0, 1, 2, + { + "name": "horizontal_start", + "origin": [8, 8, 8], + "children": [3, 4, 5, 6, 7] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json index cfe4b73cd..9e1bd4f0e 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json @@ -2,10 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side", - "8": "create:block/gearbox" + "4": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" }, "elements": [ { @@ -13,60 +12,57 @@ "from": [1, 5, 2], "to": [15, 11, 14], "faces": { - "north": {"uv": [0, 0, 15, 6], "texture": "#1"}, "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "south": {"uv": [0, 0, 15, 6], "texture": "#1"}, "west": {"uv": [2, 5, 14, 11], "texture": "#8"} } }, { "name": "Left", - "from": [0, 0, 0], - "to": [16, 11, 4], + "from": [0, 0, 12], + "to": [16, 3, 16], "faces": { - "north": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "east": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "south": {"uv": [14, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 4, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 4, 16], "rotation": 90, "texture": "#2"} + "east": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, + "south": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, + "west": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, + "up": {"uv": [8, 3, 16, 5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"} } }, { - "name": "Zfighter", - "from": [0.5, 0.1, -0.1], - "to": [15.5, 10.9, 0.9], + "name": "Left", + "from": [15, 3, 12], + "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} + "north": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, + "east": {"uv": [0, 8, 2, 12], "texture": "#4"}, + "south": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, + "west": {"uv": [6, 8, 8, 12], "texture": "#4"}, + "up": {"uv": [0, 7.5, 2, 8], "rotation": 270, "texture": "#4"} } }, { - "name": "Zfighter2", - "from": [0.5, 0.1, 15.1], - "to": [15.5, 10.9, 16.1], + "name": "Left", + "from": [0, 3, 12], + "to": [1, 11, 16], "faces": { - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "south": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} + "north": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, + "east": {"uv": [8, 8, 6, 12], "texture": "#4"}, + "south": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, + "west": {"uv": [2, 8, 0, 12], "texture": "#4"}, + "up": {"uv": [0, 8, 2, 7.5], "rotation": 270, "texture": "#4"} } }, { "name": "Right", - "from": [0, 0, 12], - "to": [16, 11, 16], + "from": [0, 0, 0], + "to": [16, 11, 4], "faces": { - "north": {"uv": [0, 0, 2, 11], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "up": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"} + "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "east": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, + "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "west": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, + "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} } }, { @@ -74,10 +70,10 @@ "from": [0, 0, 4], "to": [16, 4, 12], "faces": { - "east": {"uv": [4, 7, 12, 11], "texture": "#2"}, - "west": {"uv": [4, 7, 12, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 10], "texture": "#2"}, - "down": {"uv": [4, 0, 12, 16], "rotation": 90, "texture": "#2"} + "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, + "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, + "up": {"uv": [8, 2, 16, 6], "rotation": 180, "texture": "#4"}, + "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json index f6dd1ac0d..d72517e08 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json @@ -2,9 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side" + "3": "create:block/brass_casing_belt", + "particle": "create:block/brass_casing" }, "elements": [ { @@ -12,12 +11,12 @@ "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 0, 16, 11], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 16, 11], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#2"} + "north": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, + "east": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, + "south": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, + "west": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, + "up": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3"}, + "down": {"uv": [8, 0, 16, 8], "rotation": 90, "texture": "#3"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json index cfe4b73cd..a0d43fd8c 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json @@ -2,10 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side", - "8": "create:block/gearbox" + "4": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" }, "elements": [ { @@ -13,47 +12,21 @@ "from": [1, 5, 2], "to": [15, 11, 14], "faces": { - "north": {"uv": [0, 0, 15, 6], "texture": "#1"}, "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "south": {"uv": [0, 0, 15, 6], "texture": "#1"}, "west": {"uv": [2, 5, 14, 11], "texture": "#8"} } }, { - "name": "Left", + "name": "Right", "from": [0, 0, 0], "to": [16, 11, 4], "faces": { - "north": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "east": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "south": {"uv": [14, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 4, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 4, 16], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Zfighter", - "from": [0.5, 0.1, -0.1], - "to": [15.5, 10.9, 0.9], - "faces": { - "north": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Zfighter2", - "from": [0.5, 0.1, 15.1], - "to": [15.5, 10.9, 16.1], - "faces": { - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "south": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} + "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "east": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, + "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "west": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, + "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} } }, { @@ -61,12 +34,12 @@ "from": [0, 0, 12], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 0, 2, 11], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "up": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"} + "north": {"uv": [8, 8, 0, 13.5], "texture": "#4"}, + "east": {"uv": [8, 8, 6, 13.5], "texture": "#4"}, + "south": {"uv": [8, 8, 0, 13.5], "texture": "#4"}, + "west": {"uv": [2, 8, 0, 13.5], "texture": "#4"}, + "up": {"uv": [8, 0, 6, 8], "rotation": 270, "texture": "#4"}, + "down": {"uv": [10, 0, 8, 8], "rotation": 270, "texture": "#4"} } }, { @@ -74,10 +47,10 @@ "from": [0, 0, 4], "to": [16, 4, 12], "faces": { - "east": {"uv": [4, 7, 12, 11], "texture": "#2"}, - "west": {"uv": [4, 7, 12, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 10], "texture": "#2"}, - "down": {"uv": [4, 0, 12, 16], "rotation": 90, "texture": "#2"} + "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, + "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, + "up": {"uv": [8, 2, 16, 6], "rotation": 180, "texture": "#4"}, + "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json index cfe4b73cd..042448aab 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json @@ -2,10 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "particle": "create:block/brass_casing_side", - "1": "create:block/belt_support_side", - "2": "create:block/brass_casing_side", - "8": "create:block/gearbox" + "4": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" }, "elements": [ { @@ -13,47 +12,44 @@ "from": [1, 5, 2], "to": [15, 11, 14], "faces": { - "north": {"uv": [0, 0, 15, 6], "texture": "#1"}, "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "south": {"uv": [0, 0, 15, 6], "texture": "#1"}, "west": {"uv": [2, 5, 14, 11], "texture": "#8"} } }, { "name": "Left", "from": [0, 0, 0], + "to": [16, 3, 4], + "faces": { + "north": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, + "east": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, + "west": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, + "up": {"uv": [8, 3, 16, 5], "texture": "#4"}, + "down": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Left", + "from": [0, 3, 0], + "to": [1, 11, 4], + "faces": { + "north": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, + "east": {"uv": [6, 8, 8, 12], "texture": "#4"}, + "south": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, + "west": {"uv": [0, 8, 2, 12], "texture": "#4"}, + "up": {"uv": [0, 7.5, 2, 8], "rotation": 90, "texture": "#4"} + } + }, + { + "name": "Left", + "from": [15, 3, 0], "to": [16, 11, 4], "faces": { - "north": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "east": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "south": {"uv": [14, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "up": {"uv": [0, 0, 4, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 4, 16], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Zfighter", - "from": [0.5, 0.1, -0.1], - "to": [15.5, 10.9, 0.9], - "faces": { - "north": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Zfighter2", - "from": [0.5, 0.1, 15.1], - "to": [15.5, 10.9, 16.1], - "faces": { - "east": {"uv": [12, 0, 13, 10.8], "texture": "#2"}, - "south": {"uv": [0, 0, 15, 10.8], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 10.8], "texture": "#2"}, - "up": {"uv": [0, 0, 15, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#2"} + "north": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, + "east": {"uv": [2, 8, 0, 12], "texture": "#4"}, + "south": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, + "west": {"uv": [8, 8, 6, 12], "texture": "#4"}, + "up": {"uv": [0, 8, 2, 7.5], "rotation": 90, "texture": "#4"} } }, { @@ -61,12 +57,12 @@ "from": [0, 0, 12], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 0, 2, 11], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 16, 11], "texture": "#2"}, - "west": {"uv": [12, 0, 16, 11], "texture": "#2"}, - "up": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"} + "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "east": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, + "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, + "west": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, + "up": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"}, + "down": {"uv": [8, 0, 10, 8], "rotation": 90, "texture": "#4"} } }, { @@ -74,10 +70,10 @@ "from": [0, 0, 4], "to": [16, 4, 12], "faces": { - "east": {"uv": [4, 7, 12, 11], "texture": "#2"}, - "west": {"uv": [4, 7, 12, 11], "texture": "#2"}, - "up": {"uv": [0, 2, 16, 10], "texture": "#2"}, - "down": {"uv": [4, 0, 12, 16], "rotation": 90, "texture": "#2"} + "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, + "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, + "up": {"uv": [8, 2, 16, 6], "texture": "#4"}, + "down": {"uv": [10, 0, 14, 8], "rotation": 90, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json index d158fadc8..c35d0e2ec 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json @@ -1,5 +1,123 @@ { - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "name": "Casing", + "from": [5, 0, 0], + "to": [11, 16, 4], + "faces": { + "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [6, 0, 8, 8], "texture": "#3"}, + "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0, 2, 8], "texture": "#3"}, + "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 15, 12], + "to": [11, 16, 16], + "faces": { + "north": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0, 2, 0.5], "texture": "#3"}, + "south": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [6, 0, 8, 0.5], "texture": "#3"}, + "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [2, 14, 2], + "to": [5, 16, 14], + "faces": { + "north": {"uv": [6.5, 12.5, 8, 13.5], "texture": "#3"}, + "east": {"uv": [0, 13.5, 6, 14.5], "texture": "#3"}, + "south": {"uv": [0, 12.5, 1.5, 13.5], "texture": "#3"}, + "west": {"uv": [1, 12.5, 7, 13.5], "texture": "#3"}, + "up": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"}, + "down": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [2, 0, 2], + "to": [5, 2, 14], + "faces": { + "north": {"uv": [6.5, 13.5, 8, 12.5], "texture": "#3"}, + "east": {"uv": [0, 14.5, 6, 13.5], "texture": "#3"}, + "south": {"uv": [0, 13.5, 1.5, 12.5], "texture": "#3"}, + "west": {"uv": [1, 13.5, 7, 12.5], "texture": "#3"}, + "up": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"}, + "down": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [11, 14, 2], + "to": [14, 16, 14], + "faces": { + "north": {"uv": [8, 12.5, 6.5, 13.5], "texture": "#3"}, + "east": {"uv": [7, 12.5, 1, 13.5], "texture": "#3"}, + "south": {"uv": [1.5, 12.5, 0, 13.5], "texture": "#3"}, + "west": {"uv": [6, 13.5, 0, 14.5], "texture": "#3"}, + "up": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [11, 0, 2], + "to": [14, 2, 14], + "faces": { + "north": {"uv": [8, 13.5, 6.5, 12.5], "texture": "#3"}, + "east": {"uv": [7, 13.5, 1, 12.5], "texture": "#3"}, + "south": {"uv": [1.5, 13.5, 0, 12.5], "texture": "#3"}, + "west": {"uv": [6, 14.5, 0, 13.5], "texture": "#3"}, + "up": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 0, 12], + "to": [11, 1, 16], + "faces": { + "north": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0.5, 2, 0], "texture": "#3"}, + "south": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [6, 0.5, 8, 0], "texture": "#3"}, + "up": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 1, 2], + "to": [11, 15, 14], + "faces": { + "up": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"}, + "down": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"} + } + } + ], + "groups": [ + { + "name": "horizontal_middle", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5, 6] + }, + { + "name": "horizontal_start", + "origin": [8, 8, 8], + "children": [7] + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json index d158fadc8..9886764c4 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json @@ -1,5 +1,30 @@ { - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/brass_casing_belt", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "name": "Casing", + "from": [5, 0, 0], + "to": [11, 16, 16], + "faces": { + "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0, 8, 8], "rotation": 270, "texture": "#3"}, + "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0, 8, 8], "texture": "#3"}, + "up": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"} + } + } + ], + "groups": [ + { + "name": "horizontal_middle", + "origin": [8, 8, 8], + "children": [0] + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json index d158fadc8..0f8653d94 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json @@ -1,5 +1,110 @@ { - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "name": "Casing", + "from": [5, 0, 0], + "to": [11, 16, 4], + "faces": { + "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [6, 0, 8, 8], "texture": "#3"}, + "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0, 2, 8], "texture": "#3"}, + "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 0, 12], + "to": [11, 16, 16], + "faces": { + "north": {"uv": [8, 15.5, 16, 12.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [8, 0, 6, 8], "texture": "#3"}, + "south": {"uv": [8, 15.5, 16, 12.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [2, 0, 0, 8], "texture": "#3"}, + "up": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [2, 14, 2], + "to": [5, 16, 14], + "faces": { + "north": {"uv": [6.5, 12.5, 8, 13.5], "texture": "#3"}, + "east": {"uv": [0, 13.5, 6, 14.5], "texture": "#3"}, + "south": {"uv": [0, 12.5, 1.5, 13.5], "texture": "#3"}, + "west": {"uv": [1, 12.5, 7, 13.5], "texture": "#3"}, + "up": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"}, + "down": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [2, 0, 2], + "to": [5, 2, 14], + "faces": { + "north": {"uv": [6.5, 13.5, 8, 12.5], "texture": "#3"}, + "east": {"uv": [0, 14.5, 6, 13.5], "texture": "#3"}, + "south": {"uv": [0, 13.5, 1.5, 12.5], "texture": "#3"}, + "west": {"uv": [1, 13.5, 7, 12.5], "texture": "#3"}, + "up": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"}, + "down": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [11, 14, 2], + "to": [14, 16, 14], + "faces": { + "north": {"uv": [8, 12.5, 6.5, 13.5], "texture": "#3"}, + "east": {"uv": [7, 12.5, 1, 13.5], "texture": "#3"}, + "south": {"uv": [1.5, 12.5, 0, 13.5], "texture": "#3"}, + "west": {"uv": [6, 13.5, 0, 14.5], "texture": "#3"}, + "up": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [11, 0, 2], + "to": [14, 2, 14], + "faces": { + "north": {"uv": [8, 13.5, 6.5, 12.5], "texture": "#3"}, + "east": {"uv": [7, 13.5, 1, 12.5], "texture": "#3"}, + "south": {"uv": [1.5, 13.5, 0, 12.5], "texture": "#3"}, + "west": {"uv": [6, 14.5, 0, 13.5], "texture": "#3"}, + "up": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 1, 2], + "to": [11, 15, 14], + "faces": { + "up": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"}, + "down": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"} + } + } + ], + "groups": [ + { + "name": "horizontal_middle", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5] + }, + { + "name": "horizontal_start", + "origin": [8, 8, 8], + "children": [6] + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json index d158fadc8..b4409d0bb 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json @@ -1,5 +1,123 @@ { - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/brass_casing_belt", + "8": "create:block/gearbox", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "name": "Casing", + "from": [5, 0, 12], + "to": [11, 16, 16], + "faces": { + "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0, 2, 8], "texture": "#3"}, + "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [6, 0, 8, 8], "texture": "#3"}, + "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 15, 0], + "to": [11, 16, 4], + "faces": { + "north": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [6, 0, 8, 0.5], "texture": "#3"}, + "south": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0, 2, 0.5], "texture": "#3"}, + "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [11, 14, 2], + "to": [14, 16, 14], + "faces": { + "north": {"uv": [0, 12.5, 1.5, 13.5], "texture": "#3"}, + "east": {"uv": [1, 12.5, 7, 13.5], "texture": "#3"}, + "south": {"uv": [6.5, 12.5, 8, 13.5], "texture": "#3"}, + "west": {"uv": [0, 13.5, 6, 14.5], "texture": "#3"}, + "up": {"uv": [0, 13.5, 6, 15], "rotation": 270, "texture": "#3"}, + "down": {"uv": [0, 13.5, 6, 15], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [11, 0, 2], + "to": [14, 2, 14], + "faces": { + "north": {"uv": [0, 13.5, 1.5, 12.5], "texture": "#3"}, + "east": {"uv": [1, 13.5, 7, 12.5], "texture": "#3"}, + "south": {"uv": [6.5, 13.5, 8, 12.5], "texture": "#3"}, + "west": {"uv": [0, 14.5, 6, 13.5], "texture": "#3"}, + "up": {"uv": [6, 13.5, 0, 15], "rotation": 270, "texture": "#3"}, + "down": {"uv": [6, 13.5, 0, 15], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [2, 14, 2], + "to": [5, 16, 14], + "faces": { + "north": {"uv": [1.5, 12.5, 0, 13.5], "texture": "#3"}, + "east": {"uv": [6, 13.5, 0, 14.5], "texture": "#3"}, + "south": {"uv": [8, 12.5, 6.5, 13.5], "texture": "#3"}, + "west": {"uv": [7, 12.5, 1, 13.5], "texture": "#3"}, + "up": {"uv": [0, 15, 6, 13.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [0, 15, 6, 13.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [2, 0, 2], + "to": [5, 2, 14], + "faces": { + "north": {"uv": [1.5, 13.5, 0, 12.5], "texture": "#3"}, + "east": {"uv": [6, 14.5, 0, 13.5], "texture": "#3"}, + "south": {"uv": [8, 13.5, 6.5, 12.5], "texture": "#3"}, + "west": {"uv": [7, 13.5, 1, 12.5], "texture": "#3"}, + "up": {"uv": [6, 15, 0, 13.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [6, 15, 0, 13.5], "rotation": 270, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 0, 0], + "to": [11, 1, 4], + "faces": { + "north": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [6, 0.5, 8, 0], "texture": "#3"}, + "south": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, + "west": {"uv": [0, 0.5, 2, 0], "texture": "#3"}, + "up": {"uv": [10, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, + "down": {"uv": [10, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"} + } + }, + { + "name": "Casing", + "from": [5, 1, 2], + "to": [11, 15, 14], + "faces": { + "up": {"uv": [2, 5, 14, 11], "rotation": 270, "texture": "#8"}, + "down": {"uv": [2, 5, 14, 11], "rotation": 270, "texture": "#8"} + } + } + ], + "groups": [ + { + "name": "horizontal_middle", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5, 6] + }, + { + "name": "horizontal_start", + "origin": [8, 8, 8], + "children": [7] + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/vertical_end.json b/src/main/resources/assets/create/models/block/belt_casing/vertical_end.json deleted file mode 100644 index d158fadc8..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/vertical_end.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/vertical_middle.json b/src/main/resources/assets/create/models/block/belt_casing/vertical_middle.json deleted file mode 100644 index d158fadc8..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/vertical_middle.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/vertical_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/vertical_pulley.json deleted file mode 100644 index d158fadc8..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/vertical_pulley.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/vertical_start.json b/src/main/resources/assets/create/models/block/belt_casing/vertical_start.json deleted file mode 100644 index d158fadc8..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/vertical_start.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "_comment": "Vertical belts cannot have casings at the moment", - "textures": {}, - "elements": [] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_belt.png b/src/main/resources/assets/create/textures/block/andesite_casing_belt.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f1303ecc8832a74cc18cdcde3e87f51be9a6a9 GIT binary patch literal 1483 zcmV;+1vL7JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1z<@;K~z{rrB_Rj z8$}SVvBxv^%=j_3_nBR^*(3hQY6G7Azb(oIm0D6a6rllDOaxi z1H_rf1(8K0OE%t@-<}!I*h76a+s=5k$&#HU*ceVqyg=I5AyFi6%6BO3Fs-Sb2z zhmY#T5}B;H)NrU#waBeism^VU73x)+Dz;6wWs+kXbn!w>bghypE-aclS!RKj>K5}W zWS0t5sq(^RQRdu=MP=|y1}(ZJT5Oc5;uM7g9WkJ_`$$~k2N5kd%T#4j#W97nPLzk{O{JJ=S~8c$v-nRAhsPt{bfi%ZZbTY2IQmbb#DS7V)r4z{(udK&QFkEi#)2(v z8mIB$b_E<)4sJYbACShms$u{xJq_s?fYE7yujbF$(WxQs7yO zB4ZRVj{x(7F_}iPr~>#V*MfFGnBzlFeM3BeoKB~firAQ|So#bRa1oyy0Iwx=z?cg# z0E>e^olZFxB03r-YeN_34&WQ$%(4K0#l1m5y}nQT?E&qyx-|6095{WEwGMi0Xe4?| zE9=79X|-uE3OK`K`ggCx;|?7h9??N(NRRh>@{!OR(O?)z#e_cA?hky9pAqE{$;fHo zs5|6*9#W4dhPqR81KZKsd3k7qHk$BPE>l=j*lb-29tnA7WeYR_w1a=(>2ODd3eA2Feem&lL?e&=vK;^i=oD4LjgChe@UPcQ4mp{9VFi<&-b5&3> zK*`fG;H3OT`Lh^+!piE(sU+Yud3yf5eC?Y%cVgwj^W5jQW6h4>Ttx~QKYC~L zHqz+Qs>@h%c9M?22G|hc@w^L*bD26btzDIPq!vpuZs^uu9sO?1# zDio*vep266DTN+@t2J{Wy7l3!@uSCWdS!EgADj_?IHdN_=YT0o-((}kT+iFQ%k_mC z2T)?@KfDvyF4ES=UuP>spS-;m_t;G*BXn)q<#O!H$0B~NjmA@2o{)_H?e=k|>7@xg&F;gL%yA7Y^dIj8m_kXxQ zXTTTlUy1km%0>|5O@qaEkNT%>;{Rbi-INr#?91Q>f002ovPDHLkV1m{*&3XU; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/axis_top.png b/src/main/resources/assets/create/textures/block/axis_top.png index cf1eea2b7668935ed06aa3c3af4e0d1713f58677..ad458051e884fa27e25bf402098c97323c7dddee 100644 GIT binary patch delta 150 zcmV;H0BQfe0@neMNq@lr01m+cxRGn^0001NNklcG?>xBZ%82La>)HEi@96i$(g5U)Y>6Iqr)2tmJ4p)3f)5S(+waZD@x`CWhqvY=9infmPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1R+U8K~z{rtyj&D z6jczf*IzT!z3eh8M7_vC5EH=<)B_xl3yFF$a6kwLE{aCuUt#p%KVXb{Gx5NIqwz@g zfb-hh@72efHJ@ENTv3fM^y<-K z{S`S|m!xrRC|E;=sn8FMhzM7wQF|8#L?O*Lt5(X6a0!pHghJ#4tVLuXbu{!W+UxGEf zKJq9C3`M?m#F$Dx9sR9*JHz`LkD|b?0YS#PkPjta&+}3?{rmoe?u|0~^KL2}luin| zyEzfAI)p%>y3r(G+CD4GW^9koz^1r*gaDzycqbX;LUqH~hHe>qtkqCA4&VkdzGeU% z*A4=73_ZwAOw}o=Zjrs}F>V}CAm#w#tNEd0%z@kxs7~#aFS6G$Fylbv8%_>iI2M2_ z0hj{;>w9A1*i7}y+Pmw-fplERsgOkfZe>D98dpZbKt_VOA#nAwKIQdHjeRXYZk;$# zPHh!Pf^f})kR%}O1Lz5mpB)aw*-70yG_f?%kYJi*V$bCU*|k?a$dg#qA$1c)z|8~m z&`UhgOzP_dFefJ&O}Ny?LV7Zk$YN)b$LswfA~l4j@dxTM!JCyKlVe6l&YW-u(3a2ajB0?DjpM$F6@5 zy!za#IMDVzPc!?$w)W=a;b9ed^|kOiJhynSvvO)<$=R*)9=t=>-hvbd2%@@IwTp2H;lQ-xu?;yVjgIIFwP_4bc5u=m8Y-vO@Ldy<^YVooeiM z19Uw_#ee0aTw4k=A#kBr?>?P7h2ZSDQ{5WT$rslf2ilzA$Qw@yZ`+8>w_m(pbvePE zKW>W*xJ_mew*6y*LE97jFaMal^!yRJa^;%*X5Xofk@25?@-A)Myg^_8@Y_sAzII?u zJZjyD=3m2|LI87p{l59}_nF<^;vDMKh?WU~0#`ooz;|Ds@03HP;;ZO_k1iZ~;sF*` eL01R5f#@Ooy|ThwQ;O&S0000 Date: Wed, 8 Jul 2020 01:36:34 +0200 Subject: [PATCH 39/47] Andesite Logistics - Removed pre-0.3 funnel blocks - Added andesite variant to reality funnels, without filtering or redstone control - Added andesite variant to belt tunnels - Reality Funnel -> Brass Funnel --- src/generated/resources/.cache/cache | 103 +++++--- .../blockstates/andesite_belt_funnel.json | 64 +++++ .../blockstates/andesite_chute_funnel.json | 34 +++ .../create/blockstates/andesite_funnel.json | 30 +++ .../create/blockstates/andesite_tunnel.json | 53 ++++ .../create/blockstates/belt_tunnel.json | 53 ---- ...elt_funnel.json => brass_belt_funnel.json} | 64 ++--- ...te_funnel.json => brass_chute_funnel.json} | 32 +-- ...{reality_funnel.json => brass_funnel.json} | 24 +- .../create/blockstates/brass_tunnel.json | 53 ++++ .../assets/create/blockstates/funnel.json | 34 --- .../create/blockstates/vertical_funnel.json | 42 ---- .../resources/assets/create/lang/en_ud.json | 14 +- .../resources/assets/create/lang/en_us.json | 14 +- .../assets/create/lang/unfinished/de_de.json | 16 +- .../assets/create/lang/unfinished/fr_fr.json | 16 +- .../assets/create/lang/unfinished/it_it.json | 16 +- .../assets/create/lang/unfinished/ja_jp.json | 16 +- .../assets/create/lang/unfinished/ko_kr.json | 16 +- .../assets/create/lang/unfinished/nl_nl.json | 16 +- .../assets/create/lang/unfinished/pt_br.json | 16 +- .../assets/create/lang/unfinished/ru_ru.json | 16 +- .../assets/create/lang/unfinished/zh_cn.json | 16 +- .../andesite_belt_funnel_pull_extended.json | 9 + .../andesite_belt_funnel_pull_retracted.json | 9 + .../andesite_belt_funnel_push_extended.json | 9 + .../andesite_belt_funnel_push_retracted.json | 9 + .../block/andesite_chute_funnel_pull.json | 9 + .../block/andesite_chute_funnel_push.json | 9 + .../create/models/block/andesite_funnel.json | 9 + .../models/block/andesite_tunnel/cross.json | 7 + .../block/andesite_tunnel/fullshade.json | 7 + .../block/andesite_tunnel/halfshade.json | 7 + .../block/andesite_tunnel/straight.json | 7 + .../models/block/andesite_tunnel/t_left.json | 7 + .../models/block/andesite_tunnel/t_right.json | 7 + .../models/block/andesite_tunnel/window.json | 7 + .../block/belt_funnel_pull_off_extended.json | 6 - .../block/belt_funnel_pull_off_retracted.json | 6 - .../block/belt_funnel_pull_on_extended.json | 6 - .../block/belt_funnel_pull_on_retracted.json | 6 - .../block/belt_funnel_push_on_extended.json | 6 - .../block/belt_funnel_push_on_retracted.json | 6 - .../brass_belt_funnel_pull_extended.json | 9 + ...ass_belt_funnel_pull_powered_extended.json | 9 + ...ss_belt_funnel_pull_powered_retracted.json | 9 + .../brass_belt_funnel_pull_retracted.json | 9 + .../brass_belt_funnel_push_extended.json | 9 + ...ass_belt_funnel_push_powered_extended.json | 9 + ...ss_belt_funnel_push_powered_retracted.json | 9 + .../brass_belt_funnel_push_retracted.json | 9 + .../models/block/brass_chute_funnel_pull.json | 9 + .../brass_chute_funnel_pull_powered.json | 9 + .../models/block/brass_chute_funnel_push.json | 9 + .../brass_chute_funnel_push_powered.json | 9 + .../create/models/block/brass_funnel.json | 9 + .../models/block/brass_funnel_powered.json | 9 + .../models/block/brass_tunnel/cross.json | 7 + .../models/block/brass_tunnel/fullshade.json | 7 + .../models/block/brass_tunnel/halfshade.json | 7 + .../models/block/brass_tunnel/straight.json | 7 + .../models/block/brass_tunnel/t_left.json | 7 + .../models/block/brass_tunnel/t_right.json | 7 + .../models/block/brass_tunnel/window.json | 7 + .../models/block/chute_funnel_pull_off.json | 6 - .../models/block/chute_funnel_pull_on.json | 6 - .../models/block/chute_funnel_push_on.json | 6 - .../create/models/item/andesite_funnel.json | 9 + .../create/models/item/andesite_tunnel.json | 7 + .../create/models/item/belt_tunnel.json | 3 - .../create/models/item/brass_funnel.json | 9 + .../create/models/item/brass_tunnel.json | 7 + .../assets/create/models/item/funnel.json | 3 - .../create/models/item/reality_funnel.json | 3 - ..._funnel.json => andesite_belt_funnel.json} | 2 +- .../blocks/andesite_chute_funnel.json | 19 ++ .../loot_tables/blocks/andesite_funnel.json | 19 ++ .../loot_tables/blocks/andesite_tunnel.json | 19 ++ ...cal_funnel.json => brass_belt_funnel.json} | 2 +- ...lt_tunnel.json => brass_chute_funnel.json} | 2 +- .../blocks/{funnel.json => brass_funnel.json} | 2 +- .../{chute_funnel.json => brass_tunnel.json} | 2 +- .../loot_tables/blocks/reality_funnel.json | 19 -- .../data/create/tags/blocks/brittle.json | 4 +- .../java/com/simibubi/create/AllBlocks.java | 103 ++++---- .../com/simibubi/create/AllTileEntities.java | 9 +- .../BlockMovementTraits.java | 3 - .../contraptions/relays/belt/BeltBlock.java | 5 +- .../BeltFunnelInteractionHandler.java | 11 +- .../relays/belt/transport/BeltInventory.java | 2 +- .../BeltTunnelInteractionHandler.java | 9 +- .../block/belts/tunnel/BeltTunnelBlock.java | 12 +- .../belts/tunnel/BeltTunnelTileEntity.java | 27 +- .../block/chute/ChuteTileEntity.java | 15 +- .../extractor/VerticalExtractorGenerator.java | 3 +- .../logistics/block/funnel/FunnelBlock.java | 195 --------------- .../block/funnel/FunnelFilterSlot.java | 52 ---- .../block/funnel/FunnelTileEntity.java | 119 --------- .../block/funnel/VerticalFunnelGenerator.java | 30 --- .../mechanicalArm/ArmInteractionPoint.java | 11 +- .../ArmInteractionPointHandler.java | 1 - .../AndesiteBeltFunnelBlock.java | 16 ++ .../AndesiteChuteFunnelBlock.java | 16 ++ .../realityFunnel/AndesiteFunnelBlock.java | 28 +++ .../block/realityFunnel/BeltFunnelBlock.java | 8 +- .../realityFunnel/BeltFunnelGenerator.java | 22 +- .../realityFunnel/BrassBeltFunnelBlock.java | 16 ++ .../realityFunnel/BrassChuteFunnelBlock.java | 16 ++ .../block/realityFunnel/BrassFunnelBlock.java | 66 +++++ .../block/realityFunnel/ChuteFunnelBlock.java | 7 +- .../realityFunnel/ChuteFunnelGenerator.java | 22 +- .../FunnelFilterSlotPositioning.java | 8 +- .../block/realityFunnel/FunnelItem.java | 14 +- .../FunnelMovementBehaviour.java | 2 +- .../HorizontalInteractionFunnelBlock.java | 31 ++- .../realityFunnel/RealityFunnelBlock.java | 74 +++--- .../RealityFunnelTileEntity.java | 21 +- .../block/redstone/RedstoneLinkBlock.java | 4 +- .../command/ToggleDebugCommand.java | 1 - .../foundation/data/BuilderTransformers.java | 61 +++++ .../foundation/data/SharedProperties.java | 4 +- .../filtering/FilteringBehaviour.java | 2 +- .../block/belt_funnel/block_extended.json | 6 +- .../block/belt_funnel/block_retracted.json | 6 +- .../create/models/block/belt_funnel/flap.json | 2 +- .../models/block/belt_tunnel/cross.json | 4 +- .../create/models/block/belt_tunnel/flap.json | 4 +- .../models/block/belt_tunnel/fullshade.json | 4 +- .../models/block/belt_tunnel/halfshade.json | 4 +- .../models/block/belt_tunnel/indicator.json | 4 +- .../create/models/block/belt_tunnel/item.json | 4 +- .../models/block/belt_tunnel/straight.json | 4 +- .../models/block/belt_tunnel/t_left.json | 4 +- .../models/block/belt_tunnel/t_right.json | 4 +- .../models/block/belt_tunnel/window.json | 4 +- .../models/block/chute_funnel/block.json | 8 +- .../{reality_funnel => funnel}/block.json | 6 +- .../models/block/funnel/horizontal.json | 208 ---------------- .../models/block/funnel/horizontal_belt.json | 144 ----------- .../create/models/block/funnel/item.json | 232 ++++++++++++------ .../create/models/block/funnel/vertical.json | 7 - .../block/reality_funnel/block_powered.json | 6 - .../models/block/reality_funnel/item.json | 208 ---------------- .../textures/block/andesite_casing_belt.png | Bin 1483 -> 1483 bytes .../create/textures/block/andesite_funnel.png | Bin 0 -> 439 bytes .../textures/block/andesite_funnel_back.png | Bin 0 -> 978 bytes .../block/andesite_funnel_plating.png | Bin 0 -> 1403 bytes .../textures/block/andesite_funnel_pull.png | Bin 0 -> 467 bytes .../textures/block/andesite_funnel_push.png | Bin 0 -> 455 bytes .../create/textures/block/andesite_tunnel.png | Bin 0 -> 2738 bytes .../create/textures/block/belt_funnel.png | Bin 611 -> 0 bytes .../textures/block/belt_support_side.png | Bin 496 -> 0 bytes .../create/textures/block/belt_tunnel.png | Bin 2672 -> 0 bytes .../{funnel_off.png => brass_funnel.png} | Bin ...{funnel_back.png => brass_funnel_back.png} | Bin ...l_plating.png => brass_funnel_plating.png} | Bin ...funnel_on.png => brass_funnel_powered.png} | Bin ...nel_pull_off.png => brass_funnel_pull.png} | Bin ...l_on.png => brass_funnel_pull_powered.png} | Bin ...nel_push_off.png => brass_funnel_push.png} | Bin ...h_on.png => brass_funnel_push_powered.png} | Bin .../create/textures/block/brass_tunnel.png | Bin 0 -> 2747 bytes .../textures/block/funnel_horizontal.png | Bin 386 -> 0 bytes .../create/textures/block/funnel_vertical.png | Bin 411 -> 0 bytes .../logistics/belt_tunnel.json | 22 -- .../crafting_shaped/logistics/extractor.json | 26 -- .../crafting_shaped/logistics/funnel.json | 26 -- .../crafting_shaped/logistics/transposer.json | 18 -- .../crafting_shapeless/linked_extractor.json | 15 -- .../crafting_shapeless/linked_transposer.json | 15 -- .../crafting_shapeless/transposer.json | 12 - 171 files changed, 1489 insertions(+), 1794 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json create mode 100644 src/generated/resources/assets/create/blockstates/andesite_chute_funnel.json create mode 100644 src/generated/resources/assets/create/blockstates/andesite_funnel.json create mode 100644 src/generated/resources/assets/create/blockstates/andesite_tunnel.json delete mode 100644 src/generated/resources/assets/create/blockstates/belt_tunnel.json rename src/generated/resources/assets/create/blockstates/{belt_funnel.json => brass_belt_funnel.json} (55%) rename src/generated/resources/assets/create/blockstates/{chute_funnel.json => brass_chute_funnel.json} (53%) rename src/generated/resources/assets/create/blockstates/{reality_funnel.json => brass_funnel.json} (53%) create mode 100644 src/generated/resources/assets/create/blockstates/brass_tunnel.json delete mode 100644 src/generated/resources/assets/create/blockstates/funnel.json delete mode 100644 src/generated/resources/assets/create/blockstates/vertical_funnel.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_chute_funnel_pull.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_chute_funnel_push.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/window.json delete mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json delete mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json delete mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json delete mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json delete mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json delete mode 100644 src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/brass_chute_funnel_pull.json create mode 100644 src/generated/resources/assets/create/models/block/brass_chute_funnel_pull_powered.json create mode 100644 src/generated/resources/assets/create/models/block/brass_chute_funnel_push.json create mode 100644 src/generated/resources/assets/create/models/block/brass_chute_funnel_push_powered.json create mode 100644 src/generated/resources/assets/create/models/block/brass_funnel.json create mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_powered.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/cross.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/straight.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json create mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/window.json delete mode 100644 src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json delete mode 100644 src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json delete mode 100644 src/generated/resources/assets/create/models/block/chute_funnel_push_on.json create mode 100644 src/generated/resources/assets/create/models/item/andesite_funnel.json create mode 100644 src/generated/resources/assets/create/models/item/andesite_tunnel.json delete mode 100644 src/generated/resources/assets/create/models/item/belt_tunnel.json create mode 100644 src/generated/resources/assets/create/models/item/brass_funnel.json create mode 100644 src/generated/resources/assets/create/models/item/brass_tunnel.json delete mode 100644 src/generated/resources/assets/create/models/item/funnel.json delete mode 100644 src/generated/resources/assets/create/models/item/reality_funnel.json rename src/generated/resources/data/create/loot_tables/blocks/{belt_funnel.json => andesite_belt_funnel.json} (86%) create mode 100644 src/generated/resources/data/create/loot_tables/blocks/andesite_chute_funnel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json rename src/generated/resources/data/create/loot_tables/blocks/{vertical_funnel.json => brass_belt_funnel.json} (86%) rename src/generated/resources/data/create/loot_tables/blocks/{belt_tunnel.json => brass_chute_funnel.json} (86%) rename src/generated/resources/data/create/loot_tables/blocks/{funnel.json => brass_funnel.json} (86%) rename src/generated/resources/data/create/loot_tables/blocks/{chute_funnel.json => brass_tunnel.json} (86%) delete mode 100644 src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json delete mode 100644 src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java delete mode 100644 src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlot.java delete mode 100644 src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java delete mode 100644 src/main/java/com/simibubi/create/content/logistics/block/funnel/VerticalFunnelGenerator.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java rename src/main/java/com/simibubi/create/content/logistics/block/{funnel => realityFunnel}/FunnelMovementBehaviour.java (95%) rename src/main/resources/assets/create/models/block/{reality_funnel => funnel}/block.json (97%) delete mode 100644 src/main/resources/assets/create/models/block/funnel/horizontal.json delete mode 100644 src/main/resources/assets/create/models/block/funnel/horizontal_belt.json delete mode 100644 src/main/resources/assets/create/models/block/funnel/vertical.json delete mode 100644 src/main/resources/assets/create/models/block/reality_funnel/block_powered.json delete mode 100644 src/main/resources/assets/create/models/block/reality_funnel/item.json create mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel.png create mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_back.png create mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_plating.png create mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_pull.png create mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_push.png create mode 100644 src/main/resources/assets/create/textures/block/andesite_tunnel.png delete mode 100644 src/main/resources/assets/create/textures/block/belt_funnel.png delete mode 100644 src/main/resources/assets/create/textures/block/belt_support_side.png delete mode 100644 src/main/resources/assets/create/textures/block/belt_tunnel.png rename src/main/resources/assets/create/textures/block/{funnel_off.png => brass_funnel.png} (100%) rename src/main/resources/assets/create/textures/block/{funnel_back.png => brass_funnel_back.png} (100%) rename src/main/resources/assets/create/textures/block/{funnel_plating.png => brass_funnel_plating.png} (100%) rename src/main/resources/assets/create/textures/block/{funnel_on.png => brass_funnel_powered.png} (100%) rename src/main/resources/assets/create/textures/block/{belt_funnel_pull_off.png => brass_funnel_pull.png} (100%) rename src/main/resources/assets/create/textures/block/{belt_funnel_pull_on.png => brass_funnel_pull_powered.png} (100%) rename src/main/resources/assets/create/textures/block/{belt_funnel_push_off.png => brass_funnel_push.png} (100%) rename src/main/resources/assets/create/textures/block/{belt_funnel_push_on.png => brass_funnel_push_powered.png} (100%) create mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel.png delete mode 100644 src/main/resources/assets/create/textures/block/funnel_horizontal.png delete mode 100644 src/main/resources/assets/create/textures/block/funnel_vertical.png delete mode 100644 src/main/resources/data/create/recipes/crafting_shaped/logistics/belt_tunnel.json delete mode 100644 src/main/resources/data/create/recipes/crafting_shaped/logistics/extractor.json delete mode 100644 src/main/resources/data/create/recipes/crafting_shaped/logistics/funnel.json delete mode 100644 src/main/resources/data/create/recipes/crafting_shaped/logistics/transposer.json delete mode 100644 src/main/resources/data/create/recipes/crafting_shapeless/linked_extractor.json delete mode 100644 src/main/resources/data/create/recipes/crafting_shapeless/linked_transposer.json delete mode 100644 src/main/resources/data/create/recipes/crafting_shapeless/transposer.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index b89ffae8f..8e657704f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -5,25 +5,31 @@ f0d6baaabda94151134f569246d61a6e710c35a9 assets\create\blockstates\acacia_window 79c50afcea3a360783a5b3c73de9823511e9aed9 assets\create\blockstates\adjustable_pulse_repeater.json 1d730df54c9eae94063e37396d224fb3c87517e0 assets\create\blockstates\adjustable_repeater.json 9dd79bf5430f674e7d3e3fc7d59edee3d66e241e assets\create\blockstates\analog_lever.json +aaad1fc11aae17e209b0c3fbc9977c724c50c1ef assets\create\blockstates\andesite_belt_funnel.json 585481e97c5066af63ea12fa5dd658798844d64c assets\create\blockstates\andesite_bricks.json 4e8d61aa2c8490301317ef747f67f0169ebfc2ed assets\create\blockstates\andesite_bricks_slab.json da63a8be3191d6d72afef6c79e3aea3f607631f9 assets\create\blockstates\andesite_bricks_stairs.json a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bricks_wall.json 9999a75c7766781eadb12510a09264600bc846e4 assets\create\blockstates\andesite_casing.json +7074f8af642b74edc26464bb627d919516c2de0a assets\create\blockstates\andesite_chute_funnel.json 3af4ea3c44b5ebc7e1e3fb73fb8356faf067a613 assets\create\blockstates\andesite_cobblestone.json 97adf53a7cb99d7652fb39adc957e9e34cbaca47 assets\create\blockstates\andesite_cobblestone_slab.json 96b5284693da168ab8e0809d86515b5f1a7e763f assets\create\blockstates\andesite_cobblestone_stairs.json 82bd82270aff7d51e9239680ef4dd7b5c899ceb0 assets\create\blockstates\andesite_cobblestone_wall.json +2be950008c00513dfe39021b65c26eea8554ee20 assets\create\blockstates\andesite_funnel.json 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json +a9f73f228f2cde7f707fab3467e57a9080233433 assets\create\blockstates\andesite_tunnel.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json 39dc813be2049a42475f93d12f9f2e356139cf1b assets\create\blockstates\belt.json -9bbc9a2dc2428175ae0cadf7537ed6815e3e241d assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json -4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json cf9045eb16e5299a1d917c4cb536289f49411276 assets\create\blockstates\birch_window.json 94a1a91403eb4b035fec48071e7fcae57a8a6abd assets\create\blockstates\birch_window_pane.json +fba967b1f6e44b34a9d9662e2fedfc13aad7f36c assets\create\blockstates\brass_belt_funnel.json 8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets\create\blockstates\brass_block.json b8dd6e505943e06706d0718ece620ab3cf943650 assets\create\blockstates\brass_casing.json +e8583247cc7108c80320b739d7af121a890d79a8 assets\create\blockstates\brass_chute_funnel.json +3057e1121117c0cd651c288cd8e2d46bdf64afb1 assets\create\blockstates\brass_funnel.json +a967a349df6ca76b772abed915545abbca515c90 assets\create\blockstates\brass_tunnel.json 26f3b6a8f8249e4e622ab200057d75e228762817 assets\create\blockstates\cart_assembler.json 7299cea212d879d6d5611bd139b24768b9af236f assets\create\blockstates\chiseled_dark_scoria.json 0f01f813388d3e6907c1cfd992e4b21c914e267e assets\create\blockstates\chiseled_dolomite.json @@ -32,7 +38,6 @@ b8dd6e505943e06706d0718ece620ab3cf943650 assets\create\blockstates\brass_casing. cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scoria.json 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json 99def0a786714a337e2b1b17db844e4d1aee6234 assets\create\blockstates\chute.json -dabf21c320b6d33486478cb0e4b4bbd62a753c7a assets\create\blockstates\chute_funnel.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json @@ -123,7 +128,6 @@ b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weather e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json 61df7769fa61f6dd2868a4377e54320fdd473b4e assets\create\blockstates\framed_glass_pane.json -3cc74c51eb8fc2bbe9285ad0ae640ece0a602bae assets\create\blockstates\funnel.json 3cf49f4812732f00f578fa73785e14ffdf340f21 assets\create\blockstates\furnace_engine.json f512b70d7fd0ca10184f21f5bfb71c83ab11f8ef assets\create\blockstates\gabbro.json d2358eb3d9337741f55339f0b94b2e81d73965c8 assets\create\blockstates\gabbro_bricks.json @@ -283,7 +287,6 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggl 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json 6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets\create\blockstates\radial_chassis.json -5e03eb759050c365f9f452ef0659f19a80e1e2f8 assets\create\blockstates\reality_funnel.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json 1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json @@ -318,7 +321,6 @@ a8094531617e27a545c4815ab2062bf0ffca3633 assets\create\blockstates\turntable.jso d45450255fd7a64cfd2bd8856fd4cff01a49cc8d assets\create\blockstates\vertical_extractor.json 69dfe8afaa8eb6105dae9f76ab8b7847bf90b8c6 assets\create\blockstates\vertical_framed_glass.json c4db76b9d36cfb098df0d158cb6f8b82768ebe14 assets\create\blockstates\vertical_framed_glass_pane.json -3ecf6ddcf6d31a04b98e1d9a46a1db04278041d9 assets\create\blockstates\vertical_funnel.json 0ecc57db2487ed6b370b9cc43d2a873c61d7c37e assets\create\blockstates\vertical_linked_extractor.json 751b99625aca1b4122a0333bfaf93325d37eb003 assets\create\blockstates\vertical_linked_transposer.json 02199afb5b6ebcbc8e11567df05f39eface39e39 assets\create\blockstates\vertical_transposer.json @@ -335,17 +337,17 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json -d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json -b149cd24e07fcadf25331bac859c313373617462 assets\create\lang\en_us.json -feb13f2c71a8ccc5c9a1b3cd58f0e06db6e89825 assets\create\lang\unfinished\de_de.json -e06e04eb9c06679cef7b3b1273c02e83297bf3cb assets\create\lang\unfinished\fr_fr.json -78973e80977ebc94dfadbfc6cd21de91c673f32a assets\create\lang\unfinished\it_it.json -dd821fcf079b96bd636350f9b3c77da13fa8dfc5 assets\create\lang\unfinished\ja_jp.json -92058021567b46150322be87120ca009cf74f808 assets\create\lang\unfinished\ko_kr.json -c076938f726f8ed92ebc8bb27b9df415fb8f06be assets\create\lang\unfinished\nl_nl.json -e4562ef48bd555d84dbe13233e850e0bd0917a90 assets\create\lang\unfinished\pt_br.json -dfacb15608f4b043e06a6ac9441234acbfccf708 assets\create\lang\unfinished\ru_ru.json -a685880eb8e0dd580f74675e66e8470b01415c50 assets\create\lang\unfinished\zh_cn.json +541831ab0cf2f0222f0b7e42ec6c4b0ae636168d assets\create\lang\en_ud.json +fe44adfde38a1084754fe46b632811f90dcfcd7f assets\create\lang\en_us.json +143b76ed828949330ef0e338fb6709c28561ac2d assets\create\lang\unfinished\de_de.json +95bf7693b162141c2c76617ed4e04bec474e2def assets\create\lang\unfinished\fr_fr.json +b3bf60afc7d0dea72a9d7d01df36d34affd6a296 assets\create\lang\unfinished\it_it.json +ef336e01a8e3ed3f8c2713c66476bcc708e3e3b0 assets\create\lang\unfinished\ja_jp.json +66c84c388e552ee8259eca2ab1009493456fc4d3 assets\create\lang\unfinished\ko_kr.json +66b3140ef158b51208a191e6a90473fba5bb1749 assets\create\lang\unfinished\nl_nl.json +775702e0f3fbdab7ef8b1714e3cff69da56bd500 assets\create\lang\unfinished\pt_br.json +7c4c4e7a00456f893538a6baa35d726a8786bf93 assets\create\lang\unfinished\ru_ru.json +ce16074d9dc5d504f2a91b164258f0059163260b assets\create\lang\unfinished\zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -368,6 +370,10 @@ cda6f9761431c5b8538f746db2dc55e5fb57bf01 assets\create\models\block\adjustable_p ce5e0cd1598cf2228bb77a68c304dd210f3848f8 assets\create\models\block\adjustable_repeater_powered.json c82a31943f5adb4a64c6db4c48c94cbce5d95bc4 assets\create\models\block\adjustable_repeater_powered_powering.json 51cf61f8bc25cf62b0e0c0705c75512809358ff0 assets\create\models\block\adjustable_repeater_powering.json +e4af27010c74bb5b1e79b6fccf1669526e1bb5e3 assets\create\models\block\andesite_belt_funnel_pull_extended.json +502916dc860e5ba971af51c640192b5ac02e574f assets\create\models\block\andesite_belt_funnel_pull_retracted.json +f1ba5c40d5e580d3c46d2eeab37b59263d0b0904 assets\create\models\block\andesite_belt_funnel_push_extended.json +5689f01354dcb8bf1547467c7c5b86468f962bce assets\create\models\block\andesite_belt_funnel_push_retracted.json 4d412de3eb98dfee548a0dcdbae5d0168ac67123 assets\create\models\block\andesite_bricks.json 054ef3fff7f146dbf8adc92dc2b6d169c2bdb7a5 assets\create\models\block\andesite_bricks_slab.json 8784414839f6a5786bf43d6a7dff6c27bdf7fe46 assets\create\models\block\andesite_bricks_slab_top.json @@ -377,6 +383,8 @@ c82a31943f5adb4a64c6db4c48c94cbce5d95bc4 assets\create\models\block\adjustable_r f0a955282f7abd5ce0b412ec7b59024113ca970a assets\create\models\block\andesite_bricks_wall_post.json 0ed2fa65af49b5c92c4e5c688c155e37d3d6b118 assets\create\models\block\andesite_bricks_wall_side.json b9943c5585fc081385ea49a4199efeb6c7c22423 assets\create\models\block\andesite_casing.json +d89f1a04622290303729479ce5e19768f296a297 assets\create\models\block\andesite_chute_funnel_pull.json +911cd82e8716a076a7760534de845f60db3534fb assets\create\models\block\andesite_chute_funnel_push.json 77a045e855eb37d2da7ed8f7d27a85b9546c0ab8 assets\create\models\block\andesite_cobblestone.json 7d816d54c85bc7d0cc8db9c68abcba960daa7b43 assets\create\models\block\andesite_cobblestone_slab.json 5179ecd1f926bf3211a1a3f033dfd1d2368eeb20 assets\create\models\block\andesite_cobblestone_slab_top.json @@ -385,13 +393,15 @@ ad255a62a5f54b578db06e89fd7160001f905675 assets\create\models\block\andesite_cob a033fbac3129bba9211c6c4a0e16c905643afa39 assets\create\models\block\andesite_cobblestone_stairs_outer.json 1c574ee47aeb6fcb305bfc95dd131e153b795a0e assets\create\models\block\andesite_cobblestone_wall_post.json 0ed983628e8868f77301bea1111570d3631f24fb assets\create\models\block\andesite_cobblestone_wall_side.json +9febbf6fb88e726a89573c3788bd8348ba805b6d assets\create\models\block\andesite_funnel.json b1d0bb538fc8285b7d3fd77a977d78a104b83b62 assets\create\models\block\andesite_pillar.json -3928a75e18fc9fe02e3d72696e5dfddd40ef164c assets\create\models\block\belt_funnel_pull_off_extended.json -024fdab5f6bb0559bb18d2c3cffa1d5a7baf76e9 assets\create\models\block\belt_funnel_pull_off_retracted.json -eecd774d431bd9c30649e824421ead350b5333cd assets\create\models\block\belt_funnel_pull_on_extended.json -8e6e5caf8befa95d68280ecfaca9a07313570524 assets\create\models\block\belt_funnel_pull_on_retracted.json -5e93193368ebdf0fa4d53b19a306431e6d3ab099 assets\create\models\block\belt_funnel_push_on_extended.json -08f8ffc241e9a49a0981026602deb0230dd8258a assets\create\models\block\belt_funnel_push_on_retracted.json +cb644bda777d361ddf1255644641086d82df8480 assets\create\models\block\andesite_tunnel\cross.json +99e33c403e907dc3febdb6a0a8b183fe454c2448 assets\create\models\block\andesite_tunnel\fullshade.json +c1d4392677fe3871fd6948f29bdf427abc9910ed assets\create\models\block\andesite_tunnel\halfshade.json +8e5c47a028ec674048c208e380152bb4f817a406 assets\create\models\block\andesite_tunnel\straight.json +a814c9aaa2cd44c8035124cd8f87ea4ad368701e assets\create\models\block\andesite_tunnel\t_left.json +64f63d63b7682c4237bf04faf51f68b3d0122de9 assets\create\models\block\andesite_tunnel\t_right.json +b121b55494785695b03bf7971fb0cc77503d857f assets\create\models\block\andesite_tunnel\window.json e8bfb63e0a4426f9d95cd111640169b218dead1b assets\create\models\block\belt_observer\detect.json a2e63810eceb028484b193ddf4315e1811950dc8 assets\create\models\block\belt_observer\detect_belt.json 034c308d46def892e6638ac0b3374849a6a88a26 assets\create\models\block\belt_observer\detect_belt_powered.json @@ -414,17 +424,35 @@ fa79580db6187c864bc8148a41987ecdd1eb03b7 assets\create\models\block\belt_observe 3905ced5892afa60009bf26279f9fa4756c273d4 assets\create\models\block\birch_window_pane_post.json 62b3f2edc5ef5d7dabbcff19220921b0e3582376 assets\create\models\block\birch_window_pane_side.json 95d4230eb366f5e7684820c9337e3956ed34042a assets\create\models\block\birch_window_pane_side_alt.json +7f2ed408fb662a23a75c29398e75bb9deff4c2b5 assets\create\models\block\brass_belt_funnel_pull_extended.json +242c9972e2dc70671ffef4de15a31a74b800fcb4 assets\create\models\block\brass_belt_funnel_pull_powered_extended.json +3f88752bbf2d4d635cfadb9c7217035a74ff78e3 assets\create\models\block\brass_belt_funnel_pull_powered_retracted.json +da2ae304a1b1e02b1ce03cd0205be66d824e16d6 assets\create\models\block\brass_belt_funnel_pull_retracted.json +91ba57aded6f4a99208a8812650f454b1a44fe8b assets\create\models\block\brass_belt_funnel_push_extended.json +ee79efc65b05d953784b00e573d37602629eb9e8 assets\create\models\block\brass_belt_funnel_push_powered_extended.json +1231141717d6609f0e3c282996b1739a2c790e0c assets\create\models\block\brass_belt_funnel_push_powered_retracted.json +253e88f2c11006abdc87156dd409ed3944bb7295 assets\create\models\block\brass_belt_funnel_push_retracted.json 0934933df6bfbb19a1b14cd0e3cab2c18d5a3ebc assets\create\models\block\brass_block.json 166a5c053a81e6aadc24509ed24dc144a7255969 assets\create\models\block\brass_casing.json +8c42d09a18fb17fe846365138d0f0d58c6a3c05e assets\create\models\block\brass_chute_funnel_pull.json +7b3d2865ee7611940af017161aaabc7cb107225d assets\create\models\block\brass_chute_funnel_pull_powered.json +78122dd0f7b65bd071974030682fa484c31d7ba2 assets\create\models\block\brass_chute_funnel_push.json +7edf6b5c95f61071d8a9243a63e786765d6104a3 assets\create\models\block\brass_chute_funnel_push_powered.json +6c617fc504cb2259263d24fc56c4735e455aac6d assets\create\models\block\brass_funnel.json +2f152b82291b7fc994191b1ffb8ec6d65aec748b assets\create\models\block\brass_funnel_powered.json +5544ab512bdfe6acb9b14f8e6576ffcca097f18f assets\create\models\block\brass_tunnel\cross.json +fd2fec2a7699b54516c79d3e554c4fc10c331be1 assets\create\models\block\brass_tunnel\fullshade.json +816aa7593ce220dd7c0dab9eef48eef13be289e3 assets\create\models\block\brass_tunnel\halfshade.json +e65fac8652f201891b25067b922efdd2d9309cc7 assets\create\models\block\brass_tunnel\straight.json +7a85b21c40c659c93c2c41f5edd2227e4ee56614 assets\create\models\block\brass_tunnel\t_left.json +881d97c0b7ee57695dea157bfeeaad212c98766a assets\create\models\block\brass_tunnel\t_right.json +fddfb12eae701af4b84b6e9c1a4cdaceb848fb43 assets\create\models\block\brass_tunnel\window.json 028a07b49c05fe8a93f1d8c229d81e73d887c2df assets\create\models\block\chiseled_dark_scoria.json b1f9ee4867373dd8f976625bab744a1c72c7fd16 assets\create\models\block\chiseled_dolomite.json cd7751090cf3d55296b8e415d0af9b6f18d69770 assets\create\models\block\chiseled_gabbro.json d2e195aa2e90c712e51d855a9a4a334b52f62a69 assets\create\models\block\chiseled_limestone.json ac07568fa7b2d3fa84d0fe89a498514d30514291 assets\create\models\block\chiseled_scoria.json ecb2b85ee210dce329d2be66b98d0f0d4e6fc223 assets\create\models\block\chiseled_weathered_limestone.json -d3a156e746f890b8a0b92caa70b8eb6e690f0fb6 assets\create\models\block\chute_funnel_pull_off.json -5e4424fb63041a449ddffe143ee766018d064c8f assets\create\models\block\chute_funnel_pull_on.json -ac32d22841b5d37ef182869f605b9a97075f3d33 assets\create\models\block\chute_funnel_push_on.json f9a3f0939ea43b404eb2826b94211a25fca5ebc2 assets\create\models\block\clockwork_bearing.json 70406933cc4fa5471af6e562fd84a397347dba17 assets\create\models\block\copper_casing.json 1ef7060b0ca7e9c0bfc8151f98ca08da31862cda assets\create\models\block\crate\brass\bottom.json @@ -961,19 +989,22 @@ d283f86cd05ed378efd82ce46cf49bc83783069b assets\create\models\item\andesite_bric 1ceb0e49f2c46f1d5414d5fd6edfc2bdd3afa6f7 assets\create\models\item\andesite_cobblestone_slab.json b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets\create\models\item\andesite_cobblestone_stairs.json 4856d13a72ec0af9f10226b4a4bf0567eb580b9a assets\create\models\item\andesite_cobblestone_wall.json +0a9f5f6d552813029474dbbfa31e8443ed91adcd assets\create\models\item\andesite_funnel.json 75b8b00c2418b9660d35a7fabd0774925cf1c02f assets\create\models\item\andesite_pillar.json +c259e28f971a736af10b1fd7393118d5d31c51b2 assets\create\models\item\andesite_tunnel.json bf1fc6bdf7fca6f1958a2d3e96202c1cecb50669 assets\create\models\item\basin.json 1da382e7e58eaa9788f5b1d92221ccac573e068f assets\create\models\item\belt_connector.json 695a69d5854e2eb134b55d855bd2b7b18808a01d assets\create\models\item\belt_observer.json -5006164d5bdb17cc5ec9759d7cdaf218e2b45f04 assets\create\models\item\belt_tunnel.json 9044243882cfd49a2827e1b910a4c9b0e46daa47 assets\create\models\item\birch_window.json 6ed49f59ea91068ef68720f43e67a9237594bdf0 assets\create\models\item\birch_window_pane.json 17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets\create\models\item\brass_block.json f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets\create\models\item\brass_casing.json +ab045c951352806c3f632dda7b71573f93f60ac4 assets\create\models\item\brass_funnel.json 361f75a79de5007d7a99ad0a38103c9aa8c3017c assets\create\models\item\brass_hand.json 1786bdffa2ab5a07c88d2797db3d7b54461323c4 assets\create\models\item\brass_ingot.json a37be4a0ec9bf6c381527403c57ced4f81abd67c assets\create\models\item\brass_nugget.json 14ea6ee4db6e7e76446e331a70b6b6bec31e8eb7 assets\create\models\item\brass_sheet.json +2c71c36d0b987d5a5e07da4f23f3eaa88f806edf assets\create\models\item\brass_tunnel.json 3e232a103f7f916fc11edb4d541ca99fe7b44181 assets\create\models\item\cart_assembler.json 99d64b76b3baa84c3bd4b96ccd3376ca12425950 assets\create\models\item\chiseled_dark_scoria.json 83d3571eacde52568786802b268f24c6578c1e5d assets\create\models\item\chiseled_dolomite.json @@ -1085,7 +1116,6 @@ e5e6fb6eb182b85b977e1025a7fe84d46de59320 assets\create\models\item\fluid_pipe.js 8707332c0cb6ee123e7962d08536a60725c64ce8 assets\create\models\item\flywheel.json d62b93d3c274d280f3eec22a28b5175943411d25 assets\create\models\item\framed_glass.json 1041d462c6e856f7f3f2365c299c0599703d1ed7 assets\create\models\item\framed_glass_pane.json -2dc08da54182756cd3520f1420d0506ab50063e1 assets\create\models\item\funnel.json 0bee2855dc9bad52e941153b87e9c35797c246ee assets\create\models\item\furnace_engine.json 090edb6a728fc3803e870d647c7c4e826faadca0 assets\create\models\item\furnace_minecart_contraption.json 2c1608c114ccc285a84e936dc3f1233c535e1a26 assets\create\models\item\gabbro.json @@ -1253,7 +1283,6 @@ d3cfc1a1137c4bc98848947d425d2972df144c95 assets\create\models\item\powdered_obsi 16f363038d5afeae34e0724a6a9f0b8f6e65424a assets\create\models\item\propeller.json 4b8a27ff05ed5331889dfc4b0b4562f3e94b0dfe assets\create\models\item\pulse_repeater.json 469652eb5baa92008dbfc4deec232c3381684af6 assets\create\models\item\radial_chassis.json -c485de0c102ef2d2d709bfb8a26688f1dee78948 assets\create\models\item\reality_funnel.json b9a4ac219a27e60a82f55129f2df5ae6183981e2 assets\create\models\item\redstone_contact.json 52e561abeb954d0349e640566de92ef80ccbf919 assets\create\models\item\redstone_link.json ba99e2fdb64892f4f479a8ac51c226cb5f71f659 assets\create\models\item\red_sand_paper.json @@ -1738,25 +1767,31 @@ fe37896bb804d2be9b8abf3744c5b9b7bc1c086e data\create\advancements\wand_of_symmet 417da41ebd0520ae22ddc3541eb490daf2af95dd data\create\loot_tables\blocks\adjustable_pulse_repeater.json d0ba402852cea164f6d279a9b37cc38ac3958574 data\create\loot_tables\blocks\adjustable_repeater.json 0d139e302f4a11438b0acd664c0df15b41040f69 data\create\loot_tables\blocks\analog_lever.json +d3202a337c15c8b8ec41fa5879bb94327bb75057 data\create\loot_tables\blocks\andesite_belt_funnel.json 1d04146c468ce4bf898b596c171b3ba3146d7d66 data\create\loot_tables\blocks\andesite_bricks.json b67ea51eaed1e847317829636cbf5967522e73d1 data\create\loot_tables\blocks\andesite_bricks_slab.json 0ba4528089294c5229e1904dc3191f604138cf8e data\create\loot_tables\blocks\andesite_bricks_stairs.json db2d27969cb53d9489e7c7e4bf60864fa89b29f4 data\create\loot_tables\blocks\andesite_bricks_wall.json cb36b039a511aca643fe674a63de8d6ad8478256 data\create\loot_tables\blocks\andesite_casing.json +d3202a337c15c8b8ec41fa5879bb94327bb75057 data\create\loot_tables\blocks\andesite_chute_funnel.json 906155b0d00438e695d34dd14b374d94e691460d data\create\loot_tables\blocks\andesite_cobblestone.json 6d2f1bd619b131803d5bc9e393a2c67e03c39ff6 data\create\loot_tables\blocks\andesite_cobblestone_slab.json 6b5393dab7d443da6d54debccbc8b060c6c9bdc7 data\create\loot_tables\blocks\andesite_cobblestone_stairs.json 36d38c085d8e522fe15f0ef9bc64363e163f3de7 data\create\loot_tables\blocks\andesite_cobblestone_wall.json +d3202a337c15c8b8ec41fa5879bb94327bb75057 data\create\loot_tables\blocks\andesite_funnel.json 6908f62c809ea2105bc92765d84d5655197346ab data\create\loot_tables\blocks\andesite_pillar.json +317aa99086127c649981b7b2fc85e66774a30f58 data\create\loot_tables\blocks\andesite_tunnel.json 14bf1764b9313893b6a6f57094f9506ac9fa71a8 data\create\loot_tables\blocks\basin.json c7f81e30c31837a287d6d6040cdb02c7dec11441 data\create\loot_tables\blocks\belt.json -617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\belt_funnel.json 1104e323abb2a8c25769c47dc5d1154965113cc9 data\create\loot_tables\blocks\belt_observer.json -f2acadb49cac3aa6347cae606536cbbde89f0a5f data\create\loot_tables\blocks\belt_tunnel.json 67a8e2513c3cb09e6fe80279fda94f79d5018c37 data\create\loot_tables\blocks\birch_window.json bf1d5843f93533f84bc4adec5b77da2114fa2025 data\create\loot_tables\blocks\birch_window_pane.json +1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data\create\loot_tables\blocks\brass_belt_funnel.json 70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data\create\loot_tables\blocks\brass_block.json 8a14258ad5d79d9e4dc5a318905644b446196420 data\create\loot_tables\blocks\brass_casing.json +1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data\create\loot_tables\blocks\brass_chute_funnel.json +1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data\create\loot_tables\blocks\brass_funnel.json +6c8e784677d1a843b6c707484c79751acdb46ebc data\create\loot_tables\blocks\brass_tunnel.json 0be542fef3bc0e1a0d556883568a1400a8b97df1 data\create\loot_tables\blocks\cart_assembler.json ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data\create\loot_tables\blocks\chiseled_dark_scoria.json 1f907058afd7d8dbe628c9ab315b8ddbdccfbfda data\create\loot_tables\blocks\chiseled_dolomite.json @@ -1765,7 +1800,6 @@ ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data\create\loot_tables\blocks\chiseled 43f446abd3c1c184a08645979edf620e59955a30 data\create\loot_tables\blocks\chiseled_scoria.json adde89e46b12de1eee6fd0c5cb98c5f45feefc15 data\create\loot_tables\blocks\chiseled_weathered_limestone.json 07ccc1576a71338cb73c4e06f8c28a2c86843877 data\create\loot_tables\blocks\chute.json -617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\chute_funnel.json 778b53c36d73b6e9c78fd6c091c9c3535c3c18f7 data\create\loot_tables\blocks\clockwork_bearing.json d76113310fc56eca6382d44df174096f2210d416 data\create\loot_tables\blocks\clutch.json 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data\create\loot_tables\blocks\cogwheel.json @@ -1856,7 +1890,6 @@ c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data\create\loot_tables\blocks\fluid_pi f37526c092c645045c22674dea6c7b1ec503c9c3 data\create\loot_tables\blocks\flywheel.json ce0bb978b11935bc2d1218445f8ab18099af6b8a data\create\loot_tables\blocks\framed_glass.json 89bd90ecd7a1ce1f75bd873989cc58a84c8dcef9 data\create\loot_tables\blocks\framed_glass_pane.json -ed895ef7dcb97ad9b00d80a4fa9c331229dd532e data\create\loot_tables\blocks\funnel.json 4063880eda871fe63a4eb549a19daecabce849e5 data\create\loot_tables\blocks\furnace_engine.json 1070cba1c0f46cf7ebe31089f35333f5eadda6e4 data\create\loot_tables\blocks\gabbro.json 0356e003d8890d31b89d0ad98e32aae892da71f9 data\create\loot_tables\blocks\gabbro_bricks.json @@ -2016,7 +2049,6 @@ a3fb7d3e3bf9dc73ce754002f10c469d57db1f71 data\create\loot_tables\blocks\powered_ 205f5899101262f31f5c1a88bb7d954918d08d04 data\create\loot_tables\blocks\pulley_magnet.json e8fb62c91226ac107dee45c5ebc54c8dd0aee224 data\create\loot_tables\blocks\pulse_repeater.json 768420dab8785909891e52c4d77a182d99ba11d3 data\create\loot_tables\blocks\radial_chassis.json -617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\reality_funnel.json f5907a694206facc01f61f3428f72488486761c7 data\create\loot_tables\blocks\redstone_contact.json 886a0c1386fb12104b736a15689030aaff771270 data\create\loot_tables\blocks\redstone_link.json 97c945de837a6360c0ab7e1371f16ebc1645f6ea data\create\loot_tables\blocks\reinforced_rail.json @@ -2051,7 +2083,6 @@ b201436ae6d2ad5a7d47dca0ee8c7016b4c28fa5 data\create\loot_tables\blocks\transpos 5a47c1535c866184b4ffca65763f5676f319e0aa data\create\loot_tables\blocks\vertical_extractor.json 028e293b5cd694017962f67dc80dba719f904e28 data\create\loot_tables\blocks\vertical_framed_glass.json d0156602dd5f4a274c293df67e19374820c72890 data\create\loot_tables\blocks\vertical_framed_glass_pane.json -ed895ef7dcb97ad9b00d80a4fa9c331229dd532e data\create\loot_tables\blocks\vertical_funnel.json dac789cf53b00eed34308848b5e267b7ccec090c data\create\loot_tables\blocks\vertical_linked_extractor.json 7af5a13c9e10903b11732fbc01ae3299328216f0 data\create\loot_tables\blocks\vertical_linked_transposer.json b201436ae6d2ad5a7d47dca0ee8c7016b4c28fa5 data\create\loot_tables\blocks\vertical_transposer.json @@ -2444,7 +2475,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data\create\recipes\weathered_limestone 6eceb25fabbb6b389ca35de3b829ad061c9c456a data\create\recipes\weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data\create\recipes\weathered_limestone_pillar_from_weathered_limestone_stonecutting.json 266f08e604d229a9d2b46f7272c0b06ec270bf3d data\create\recipes\zinc_block.json -87024323ea933fa10a4e7802f68ce5b9054021e6 data\create\tags\blocks\brittle.json +403576ae5710d4fe731144fe623b1673093076ea data\create\tags\blocks\brittle.json 081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data\create\tags\items\create_ingots.json d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data\create\tags\items\crushed_ores.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data\forge\tags\blocks\glass\colorless.json diff --git a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json new file mode 100644 index 000000000..750bc272b --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json @@ -0,0 +1,64 @@ +{ + "variants": { + "facing=north,pushing=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel_pull_retracted" + }, + "facing=south,pushing=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel_pull_retracted", + "y": 180 + }, + "facing=west,pushing=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel_pull_retracted", + "y": 270 + }, + "facing=east,pushing=false,shape=retracted": { + "model": "create:block/andesite_belt_funnel_pull_retracted", + "y": 90 + }, + "facing=north,pushing=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel_push_retracted" + }, + "facing=south,pushing=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel_push_retracted", + "y": 180 + }, + "facing=west,pushing=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel_push_retracted", + "y": 270 + }, + "facing=east,pushing=true,shape=retracted": { + "model": "create:block/andesite_belt_funnel_push_retracted", + "y": 90 + }, + "facing=north,pushing=false,shape=extended": { + "model": "create:block/andesite_belt_funnel_pull_extended" + }, + "facing=south,pushing=false,shape=extended": { + "model": "create:block/andesite_belt_funnel_pull_extended", + "y": 180 + }, + "facing=west,pushing=false,shape=extended": { + "model": "create:block/andesite_belt_funnel_pull_extended", + "y": 270 + }, + "facing=east,pushing=false,shape=extended": { + "model": "create:block/andesite_belt_funnel_pull_extended", + "y": 90 + }, + "facing=north,pushing=true,shape=extended": { + "model": "create:block/andesite_belt_funnel_push_extended" + }, + "facing=south,pushing=true,shape=extended": { + "model": "create:block/andesite_belt_funnel_push_extended", + "y": 180 + }, + "facing=west,pushing=true,shape=extended": { + "model": "create:block/andesite_belt_funnel_push_extended", + "y": 270 + }, + "facing=east,pushing=true,shape=extended": { + "model": "create:block/andesite_belt_funnel_push_extended", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_chute_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_chute_funnel.json new file mode 100644 index 000000000..cea68cada --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_chute_funnel.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,pushing=false": { + "model": "create:block/andesite_chute_funnel_pull" + }, + "facing=south,pushing=false": { + "model": "create:block/andesite_chute_funnel_pull", + "y": 180 + }, + "facing=west,pushing=false": { + "model": "create:block/andesite_chute_funnel_pull", + "y": 270 + }, + "facing=east,pushing=false": { + "model": "create:block/andesite_chute_funnel_pull", + "y": 90 + }, + "facing=north,pushing=true": { + "model": "create:block/andesite_chute_funnel_push" + }, + "facing=south,pushing=true": { + "model": "create:block/andesite_chute_funnel_push", + "y": 180 + }, + "facing=west,pushing=true": { + "model": "create:block/andesite_chute_funnel_push", + "y": 270 + }, + "facing=east,pushing=true": { + "model": "create:block/andesite_chute_funnel_push", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_funnel.json new file mode 100644 index 000000000..29e935e43 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_funnel.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "create:block/andesite_funnel", + "x": 180 + }, + "facing=up": { + "model": "create:block/andesite_funnel" + }, + "facing=north": { + "model": "create:block/andesite_funnel", + "x": 90 + }, + "facing=south": { + "model": "create:block/andesite_funnel", + "x": 90, + "y": 180 + }, + "facing=west": { + "model": "create:block/andesite_funnel", + "x": 90, + "y": 270 + }, + "facing=east": { + "model": "create:block/andesite_funnel", + "x": 90, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_tunnel.json b/src/generated/resources/assets/create/blockstates/andesite_tunnel.json new file mode 100644 index 000000000..152534c34 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_tunnel.json @@ -0,0 +1,53 @@ +{ + "variants": { + "axis=x,shape=straight": { + "model": "create:block/andesite_tunnel/straight" + }, + "axis=z,shape=straight": { + "model": "create:block/andesite_tunnel/straight", + "y": 90 + }, + "axis=x,shape=window": { + "model": "create:block/andesite_tunnel/window" + }, + "axis=z,shape=window": { + "model": "create:block/andesite_tunnel/window", + "y": 90 + }, + "axis=x,shape=halfshade": { + "model": "create:block/andesite_tunnel/halfshade" + }, + "axis=z,shape=halfshade": { + "model": "create:block/andesite_tunnel/halfshade", + "y": 90 + }, + "axis=x,shape=fullshade": { + "model": "create:block/andesite_tunnel/fullshade" + }, + "axis=z,shape=fullshade": { + "model": "create:block/andesite_tunnel/fullshade", + "y": 90 + }, + "axis=x,shape=t_left": { + "model": "create:block/andesite_tunnel/t_left" + }, + "axis=z,shape=t_left": { + "model": "create:block/andesite_tunnel/t_left", + "y": 90 + }, + "axis=x,shape=t_right": { + "model": "create:block/andesite_tunnel/t_right" + }, + "axis=z,shape=t_right": { + "model": "create:block/andesite_tunnel/t_right", + "y": 90 + }, + "axis=x,shape=cross": { + "model": "create:block/andesite_tunnel/cross" + }, + "axis=z,shape=cross": { + "model": "create:block/andesite_tunnel/cross", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/belt_tunnel.json b/src/generated/resources/assets/create/blockstates/belt_tunnel.json deleted file mode 100644 index b3f8cbd90..000000000 --- a/src/generated/resources/assets/create/blockstates/belt_tunnel.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "variants": { - "axis=x,shape=straight": { - "model": "create:block/belt_tunnel/straight" - }, - "axis=z,shape=straight": { - "model": "create:block/belt_tunnel/straight", - "y": 90 - }, - "axis=x,shape=window": { - "model": "create:block/belt_tunnel/window" - }, - "axis=z,shape=window": { - "model": "create:block/belt_tunnel/window", - "y": 90 - }, - "axis=x,shape=halfshade": { - "model": "create:block/belt_tunnel/halfshade" - }, - "axis=z,shape=halfshade": { - "model": "create:block/belt_tunnel/halfshade", - "y": 90 - }, - "axis=x,shape=fullshade": { - "model": "create:block/belt_tunnel/fullshade" - }, - "axis=z,shape=fullshade": { - "model": "create:block/belt_tunnel/fullshade", - "y": 90 - }, - "axis=x,shape=t_left": { - "model": "create:block/belt_tunnel/t_left" - }, - "axis=z,shape=t_left": { - "model": "create:block/belt_tunnel/t_left", - "y": 90 - }, - "axis=x,shape=t_right": { - "model": "create:block/belt_tunnel/t_right" - }, - "axis=z,shape=t_right": { - "model": "create:block/belt_tunnel/t_right", - "y": 90 - }, - "axis=x,shape=cross": { - "model": "create:block/belt_tunnel/cross" - }, - "axis=z,shape=cross": { - "model": "create:block/belt_tunnel/cross", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/belt_funnel.json b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json similarity index 55% rename from src/generated/resources/assets/create/blockstates/belt_funnel.json rename to src/generated/resources/assets/create/blockstates/brass_belt_funnel.json index ebd56a413..779a55e87 100644 --- a/src/generated/resources/assets/create/blockstates/belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json @@ -1,123 +1,123 @@ { "variants": { "facing=north,powered=false,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_off_retracted" + "model": "create:block/brass_belt_funnel_pull_retracted" }, "facing=south,powered=false,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_off_retracted", + "model": "create:block/brass_belt_funnel_pull_retracted", "y": 180 }, "facing=west,powered=false,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_off_retracted", + "model": "create:block/brass_belt_funnel_pull_retracted", "y": 270 }, "facing=east,powered=false,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_off_retracted", + "model": "create:block/brass_belt_funnel_pull_retracted", "y": 90 }, "facing=north,powered=true,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_on_retracted" + "model": "create:block/brass_belt_funnel_pull_powered_retracted" }, "facing=south,powered=true,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_on_retracted", + "model": "create:block/brass_belt_funnel_pull_powered_retracted", "y": 180 }, "facing=west,powered=true,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_on_retracted", + "model": "create:block/brass_belt_funnel_pull_powered_retracted", "y": 270 }, "facing=east,powered=true,pushing=false,shape=retracted": { - "model": "create:block/belt_funnel_pull_on_retracted", + "model": "create:block/brass_belt_funnel_pull_powered_retracted", "y": 90 }, "facing=north,powered=false,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted" + "model": "create:block/brass_belt_funnel_push_retracted" }, "facing=south,powered=false,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted", + "model": "create:block/brass_belt_funnel_push_retracted", "y": 180 }, "facing=west,powered=false,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted", + "model": "create:block/brass_belt_funnel_push_retracted", "y": 270 }, "facing=east,powered=false,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted", + "model": "create:block/brass_belt_funnel_push_retracted", "y": 90 }, "facing=north,powered=true,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel_push_on_retracted" + "model": "create:block/brass_belt_funnel_push_powered_retracted" }, "facing=south,powered=true,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel_push_on_retracted", + "model": "create:block/brass_belt_funnel_push_powered_retracted", "y": 180 }, "facing=west,powered=true,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel_push_on_retracted", + "model": "create:block/brass_belt_funnel_push_powered_retracted", "y": 270 }, "facing=east,powered=true,pushing=true,shape=retracted": { - "model": "create:block/belt_funnel_push_on_retracted", + "model": "create:block/brass_belt_funnel_push_powered_retracted", "y": 90 }, "facing=north,powered=false,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_off_extended" + "model": "create:block/brass_belt_funnel_pull_extended" }, "facing=south,powered=false,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_off_extended", + "model": "create:block/brass_belt_funnel_pull_extended", "y": 180 }, "facing=west,powered=false,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_off_extended", + "model": "create:block/brass_belt_funnel_pull_extended", "y": 270 }, "facing=east,powered=false,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_off_extended", + "model": "create:block/brass_belt_funnel_pull_extended", "y": 90 }, "facing=north,powered=true,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_on_extended" + "model": "create:block/brass_belt_funnel_pull_powered_extended" }, "facing=south,powered=true,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_on_extended", + "model": "create:block/brass_belt_funnel_pull_powered_extended", "y": 180 }, "facing=west,powered=true,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_on_extended", + "model": "create:block/brass_belt_funnel_pull_powered_extended", "y": 270 }, "facing=east,powered=true,pushing=false,shape=extended": { - "model": "create:block/belt_funnel_pull_on_extended", + "model": "create:block/brass_belt_funnel_pull_powered_extended", "y": 90 }, "facing=north,powered=false,pushing=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended" + "model": "create:block/brass_belt_funnel_push_extended" }, "facing=south,powered=false,pushing=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended", + "model": "create:block/brass_belt_funnel_push_extended", "y": 180 }, "facing=west,powered=false,pushing=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended", + "model": "create:block/brass_belt_funnel_push_extended", "y": 270 }, "facing=east,powered=false,pushing=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended", + "model": "create:block/brass_belt_funnel_push_extended", "y": 90 }, "facing=north,powered=true,pushing=true,shape=extended": { - "model": "create:block/belt_funnel_push_on_extended" + "model": "create:block/brass_belt_funnel_push_powered_extended" }, "facing=south,powered=true,pushing=true,shape=extended": { - "model": "create:block/belt_funnel_push_on_extended", + "model": "create:block/brass_belt_funnel_push_powered_extended", "y": 180 }, "facing=west,powered=true,pushing=true,shape=extended": { - "model": "create:block/belt_funnel_push_on_extended", + "model": "create:block/brass_belt_funnel_push_powered_extended", "y": 270 }, "facing=east,powered=true,pushing=true,shape=extended": { - "model": "create:block/belt_funnel_push_on_extended", + "model": "create:block/brass_belt_funnel_push_powered_extended", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/chute_funnel.json b/src/generated/resources/assets/create/blockstates/brass_chute_funnel.json similarity index 53% rename from src/generated/resources/assets/create/blockstates/chute_funnel.json rename to src/generated/resources/assets/create/blockstates/brass_chute_funnel.json index 59a0eda96..0e5f38388 100644 --- a/src/generated/resources/assets/create/blockstates/chute_funnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_chute_funnel.json @@ -1,63 +1,63 @@ { "variants": { "facing=north,powered=false,pushing=false": { - "model": "create:block/chute_funnel_pull_off" + "model": "create:block/brass_chute_funnel_pull" }, "facing=south,powered=false,pushing=false": { - "model": "create:block/chute_funnel_pull_off", + "model": "create:block/brass_chute_funnel_pull", "y": 180 }, "facing=west,powered=false,pushing=false": { - "model": "create:block/chute_funnel_pull_off", + "model": "create:block/brass_chute_funnel_pull", "y": 270 }, "facing=east,powered=false,pushing=false": { - "model": "create:block/chute_funnel_pull_off", + "model": "create:block/brass_chute_funnel_pull", "y": 90 }, "facing=north,powered=true,pushing=false": { - "model": "create:block/chute_funnel_pull_on" + "model": "create:block/brass_chute_funnel_pull_powered" }, "facing=south,powered=true,pushing=false": { - "model": "create:block/chute_funnel_pull_on", + "model": "create:block/brass_chute_funnel_pull_powered", "y": 180 }, "facing=west,powered=true,pushing=false": { - "model": "create:block/chute_funnel_pull_on", + "model": "create:block/brass_chute_funnel_pull_powered", "y": 270 }, "facing=east,powered=true,pushing=false": { - "model": "create:block/chute_funnel_pull_on", + "model": "create:block/brass_chute_funnel_pull_powered", "y": 90 }, "facing=north,powered=false,pushing=true": { - "model": "create:block/chute_funnel/block" + "model": "create:block/brass_chute_funnel_push" }, "facing=south,powered=false,pushing=true": { - "model": "create:block/chute_funnel/block", + "model": "create:block/brass_chute_funnel_push", "y": 180 }, "facing=west,powered=false,pushing=true": { - "model": "create:block/chute_funnel/block", + "model": "create:block/brass_chute_funnel_push", "y": 270 }, "facing=east,powered=false,pushing=true": { - "model": "create:block/chute_funnel/block", + "model": "create:block/brass_chute_funnel_push", "y": 90 }, "facing=north,powered=true,pushing=true": { - "model": "create:block/chute_funnel_push_on" + "model": "create:block/brass_chute_funnel_push_powered" }, "facing=south,powered=true,pushing=true": { - "model": "create:block/chute_funnel_push_on", + "model": "create:block/brass_chute_funnel_push_powered", "y": 180 }, "facing=west,powered=true,pushing=true": { - "model": "create:block/chute_funnel_push_on", + "model": "create:block/brass_chute_funnel_push_powered", "y": 270 }, "facing=east,powered=true,pushing=true": { - "model": "create:block/chute_funnel_push_on", + "model": "create:block/brass_chute_funnel_push_powered", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/reality_funnel.json b/src/generated/resources/assets/create/blockstates/brass_funnel.json similarity index 53% rename from src/generated/resources/assets/create/blockstates/reality_funnel.json rename to src/generated/resources/assets/create/blockstates/brass_funnel.json index 7b9e14ef9..bd9c61333 100644 --- a/src/generated/resources/assets/create/blockstates/reality_funnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_funnel.json @@ -1,54 +1,54 @@ { "variants": { "facing=down,powered=false": { - "model": "create:block/reality_funnel/block", + "model": "create:block/brass_funnel", "x": 180 }, "facing=up,powered=false": { - "model": "create:block/reality_funnel/block" + "model": "create:block/brass_funnel" }, "facing=north,powered=false": { - "model": "create:block/reality_funnel/block", + "model": "create:block/brass_funnel", "x": 90 }, "facing=south,powered=false": { - "model": "create:block/reality_funnel/block", + "model": "create:block/brass_funnel", "x": 90, "y": 180 }, "facing=west,powered=false": { - "model": "create:block/reality_funnel/block", + "model": "create:block/brass_funnel", "x": 90, "y": 270 }, "facing=east,powered=false": { - "model": "create:block/reality_funnel/block", + "model": "create:block/brass_funnel", "x": 90, "y": 90 }, "facing=down,powered=true": { - "model": "create:block/reality_funnel/block_powered", + "model": "create:block/brass_funnel_powered", "x": 180 }, "facing=up,powered=true": { - "model": "create:block/reality_funnel/block_powered" + "model": "create:block/brass_funnel_powered" }, "facing=north,powered=true": { - "model": "create:block/reality_funnel/block_powered", + "model": "create:block/brass_funnel_powered", "x": 90 }, "facing=south,powered=true": { - "model": "create:block/reality_funnel/block_powered", + "model": "create:block/brass_funnel_powered", "x": 90, "y": 180 }, "facing=west,powered=true": { - "model": "create:block/reality_funnel/block_powered", + "model": "create:block/brass_funnel_powered", "x": 90, "y": 270 }, "facing=east,powered=true": { - "model": "create:block/reality_funnel/block_powered", + "model": "create:block/brass_funnel_powered", "x": 90, "y": 90 } diff --git a/src/generated/resources/assets/create/blockstates/brass_tunnel.json b/src/generated/resources/assets/create/blockstates/brass_tunnel.json new file mode 100644 index 000000000..05e7de04f --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/brass_tunnel.json @@ -0,0 +1,53 @@ +{ + "variants": { + "axis=x,shape=straight": { + "model": "create:block/brass_tunnel/straight" + }, + "axis=z,shape=straight": { + "model": "create:block/brass_tunnel/straight", + "y": 90 + }, + "axis=x,shape=window": { + "model": "create:block/brass_tunnel/window" + }, + "axis=z,shape=window": { + "model": "create:block/brass_tunnel/window", + "y": 90 + }, + "axis=x,shape=halfshade": { + "model": "create:block/brass_tunnel/halfshade" + }, + "axis=z,shape=halfshade": { + "model": "create:block/brass_tunnel/halfshade", + "y": 90 + }, + "axis=x,shape=fullshade": { + "model": "create:block/brass_tunnel/fullshade" + }, + "axis=z,shape=fullshade": { + "model": "create:block/brass_tunnel/fullshade", + "y": 90 + }, + "axis=x,shape=t_left": { + "model": "create:block/brass_tunnel/t_left" + }, + "axis=z,shape=t_left": { + "model": "create:block/brass_tunnel/t_left", + "y": 90 + }, + "axis=x,shape=t_right": { + "model": "create:block/brass_tunnel/t_right" + }, + "axis=z,shape=t_right": { + "model": "create:block/brass_tunnel/t_right", + "y": 90 + }, + "axis=x,shape=cross": { + "model": "create:block/brass_tunnel/cross" + }, + "axis=z,shape=cross": { + "model": "create:block/brass_tunnel/cross", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/funnel.json b/src/generated/resources/assets/create/blockstates/funnel.json deleted file mode 100644 index 303155a12..000000000 --- a/src/generated/resources/assets/create/blockstates/funnel.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "variants": { - "belt=false,facing=north": { - "model": "create:block/funnel/horizontal" - }, - "belt=true,facing=north": { - "model": "create:block/funnel/horizontal_belt" - }, - "belt=false,facing=south": { - "model": "create:block/funnel/horizontal", - "y": 180 - }, - "belt=true,facing=south": { - "model": "create:block/funnel/horizontal_belt", - "y": 180 - }, - "belt=false,facing=west": { - "model": "create:block/funnel/horizontal", - "y": 270 - }, - "belt=true,facing=west": { - "model": "create:block/funnel/horizontal_belt", - "y": 270 - }, - "belt=false,facing=east": { - "model": "create:block/funnel/horizontal", - "y": 90 - }, - "belt=true,facing=east": { - "model": "create:block/funnel/horizontal_belt", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/vertical_funnel.json b/src/generated/resources/assets/create/blockstates/vertical_funnel.json deleted file mode 100644 index 2b4f2a6f2..000000000 --- a/src/generated/resources/assets/create/blockstates/vertical_funnel.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "variants": { - "facing=north,upward=false": { - "model": "create:block/funnel/vertical", - "x": 90, - "y": 180 - }, - "facing=south,upward=false": { - "model": "create:block/funnel/vertical", - "x": 90 - }, - "facing=west,upward=false": { - "model": "create:block/funnel/vertical", - "x": 90, - "y": 90 - }, - "facing=east,upward=false": { - "model": "create:block/funnel/vertical", - "x": 90, - "y": 270 - }, - "facing=north,upward=true": { - "model": "create:block/funnel/vertical", - "x": 270 - }, - "facing=south,upward=true": { - "model": "create:block/funnel/vertical", - "x": 270, - "y": 180 - }, - "facing=west,upward=true": { - "model": "create:block/funnel/vertical", - "x": 270, - "y": 270 - }, - "facing=east,upward=true": { - "model": "create:block/funnel/vertical", - "x": 270, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index f35699efa..be027ea35 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -6,25 +6,31 @@ "block.create.adjustable_pulse_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DDs\u05DFn\u0500 \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", "block.create.adjustable_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", "block.create.analog_lever": "\u0279\u01DD\u028C\u01DD\uA780 bo\u05DF\u0250u\u2C6F", + "block.create.andesite_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_casing": "bu\u0131s\u0250\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", + "block.create.andesite_chute_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287n\u0265\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", + "block.create.andesite_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131s\u01DDpu\u2C6F", + "block.create.andesite_tunnel": "\u05DF\u01DDuun\u27D8 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.basin": "u\u0131s\u0250\u15FA", "block.create.belt": "\u0287\u05DF\u01DD\u15FA", - "block.create.belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA", "block.create.belt_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287\u05DF\u01DD\u15FA", - "block.create.belt_tunnel": "\u05DF\u01DDuun\u27D8 \u0287\u05DF\u01DD\u15FA", "block.create.birch_window": "\u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA", "block.create.birch_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA", + "block.create.brass_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA ss\u0250\u0279\u15FA", "block.create.brass_block": "\u029E\u0254o\u05DF\u15FA ss\u0250\u0279\u15FA", "block.create.brass_casing": "bu\u0131s\u0250\u0186 ss\u0250\u0279\u15FA", + "block.create.brass_chute_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287n\u0265\u0186 ss\u0250\u0279\u15FA", + "block.create.brass_funnel": "\u05DF\u01DDuun\u2132 ss\u0250\u0279\u15FA", + "block.create.brass_tunnel": "\u05DF\u01DDuun\u27D8 ss\u0250\u0279\u15FA", "block.create.cart_assembler": "\u0279\u01DD\u05DFq\u026F\u01DDss\u2C6F \u0287\u0279\u0250\u0186", "block.create.chiseled_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", @@ -33,7 +39,6 @@ "block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chute": "\u01DD\u0287n\u0265\u0186", - "block.create.chute_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287n\u0265\u0186", "block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186", "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", @@ -124,7 +129,6 @@ "block.create.flywheel": "\u05DF\u01DD\u01DD\u0265\u028D\u028E\u05DF\u2132", "block.create.framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132", "block.create.framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132", - "block.create.funnel": "\u05DF\u01DDuun\u2132", "block.create.furnace_engine": "\u01DDu\u0131bu\u018E \u01DD\u0254\u0250u\u0279n\u2132", "block.create.gabbro": "o\u0279qq\u0250\u2141", "block.create.gabbro_bricks": "s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141", @@ -284,7 +288,6 @@ "block.create.pulley_magnet": "\u0287\u01DDub\u0250W \u028E\u01DD\u05DF\u05DFn\u0500", "block.create.pulse_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DDs\u05DFn\u0500", "block.create.radial_chassis": "s\u0131ss\u0250\u0265\u0186 \u05DF\u0250\u0131p\u0250\u1D1A", - "block.create.reality_funnel": "\u05DF\u01DDuun\u2132 \u028E\u0287\u0131\u05DF\u0250\u01DD\u1D1A", "block.create.redstone_contact": "\u0287\u0254\u0250\u0287uo\u0186 \u01DDuo\u0287sp\u01DD\u1D1A", "block.create.redstone_link": "\u029Eu\u0131\uA780 \u01DDuo\u0287sp\u01DD\u1D1A", "block.create.reinforced_rail": "\u05DF\u0131\u0250\u1D1A p\u01DD\u0254\u0279o\u025Fu\u0131\u01DD\u1D1A", @@ -319,7 +322,6 @@ "block.create.vertical_extractor": "\u0279o\u0287\u0254\u0250\u0279\u0287x\u018E \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", "block.create.vertical_framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", "block.create.vertical_framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", - "block.create.vertical_funnel": "\u05DF\u01DDuun\u2132 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", "block.create.vertical_linked_extractor": "\u0279o\u0287\u0254\u0250\u0279\u0287x\u018E p\u01DD\u029Eu\u0131\uA780 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", "block.create.vertical_linked_transposer": "\u0279\u01DDsodsu\u0250\u0279\u27D8 p\u01DD\u029Eu\u0131\uA780 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", "block.create.vertical_transposer": "\u0279\u01DDsodsu\u0250\u0279\u27D8 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 128dd9440..5e18d7883 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -9,25 +9,31 @@ "block.create.adjustable_pulse_repeater": "Adjustable Pulse Repeater", "block.create.adjustable_repeater": "Adjustable Repeater", "block.create.analog_lever": "Analog Lever", + "block.create.andesite_belt_funnel": "Andesite Belt Funnel", "block.create.andesite_bricks": "Andesite Bricks", "block.create.andesite_bricks_slab": "Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "Andesite Bricks Wall", "block.create.andesite_casing": "Andesite Casing", + "block.create.andesite_chute_funnel": "Andesite Chute Funnel", "block.create.andesite_cobblestone": "Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "Andesite Cobblestone Wall", + "block.create.andesite_funnel": "Andesite Funnel", "block.create.andesite_pillar": "Andesite Pillar", + "block.create.andesite_tunnel": "Andesite Tunnel", "block.create.basin": "Basin", "block.create.belt": "Belt", - "block.create.belt_funnel": "Belt Funnel", "block.create.belt_observer": "Belt Observer", - "block.create.belt_tunnel": "Belt Tunnel", "block.create.birch_window": "Birch Window", "block.create.birch_window_pane": "Birch Window Pane", + "block.create.brass_belt_funnel": "Brass Belt Funnel", "block.create.brass_block": "Brass Block", "block.create.brass_casing": "Brass Casing", + "block.create.brass_chute_funnel": "Brass Chute Funnel", + "block.create.brass_funnel": "Brass Funnel", + "block.create.brass_tunnel": "Brass Tunnel", "block.create.cart_assembler": "Cart Assembler", "block.create.chiseled_dark_scoria": "Chiseled Dark Scoria", "block.create.chiseled_dolomite": "Chiseled Dolomite", @@ -36,7 +42,6 @@ "block.create.chiseled_scoria": "Chiseled Scoria", "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", "block.create.chute": "Chute", - "block.create.chute_funnel": "Chute Funnel", "block.create.clockwork_bearing": "Clockwork Bearing", "block.create.clutch": "Clutch", "block.create.cogwheel": "Cogwheel", @@ -127,7 +132,6 @@ "block.create.flywheel": "Flywheel", "block.create.framed_glass": "Framed Glass", "block.create.framed_glass_pane": "Framed Glass Pane", - "block.create.funnel": "Funnel", "block.create.furnace_engine": "Furnace Engine", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Gabbro Bricks", @@ -287,7 +291,6 @@ "block.create.pulley_magnet": "Pulley Magnet", "block.create.pulse_repeater": "Pulse Repeater", "block.create.radial_chassis": "Radial Chassis", - "block.create.reality_funnel": "Reality Funnel", "block.create.redstone_contact": "Redstone Contact", "block.create.redstone_link": "Redstone Link", "block.create.reinforced_rail": "Reinforced Rail", @@ -322,7 +325,6 @@ "block.create.vertical_extractor": "Vertical Extractor", "block.create.vertical_framed_glass": "Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "Vertical Framed Glass Pane", - "block.create.vertical_funnel": "Vertical Funnel", "block.create.vertical_linked_extractor": "Vertical Linked Extractor", "block.create.vertical_linked_transposer": "Vertical Linked Transposer", "block.create.vertical_transposer": "Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index d920041b5..0b7f7b251 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 774", + "_": "Missing Localizations: 777", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", "block.create.adjustable_repeater": "Verzögernder Verstärker", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "Andesitziegel", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "UNLOCALIZED: Basin", "block.create.belt": "Mechanischer Riemen", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Fließband-Beobachter", - "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", @@ -128,7 +133,6 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Fließbandtrichter", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Gabbroziegel", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", "block.create.pulse_repeater": "Pulsierender Verstärker", "block.create.radial_chassis": "Drehgerüst", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Redstone-Kontakt", "block.create.redstone_link": "Redstone-Verbindung", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index b4b09cdfc..21baa7d50 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 376", + "_": "Missing Localizations: 380", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", "block.create.adjustable_repeater": "Répéteur réglable", "block.create.analog_lever": "Levier analogique", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "Briques d'andésite", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "Boîtier en andésite", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "Bassin", "block.create.belt": "Tapis roulant", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Observateur d'entité", - "block.create.belt_tunnel": "Tunnel de convoyeur", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "Boîtier en laiton", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "Assembleur de wagon", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "Roulement mécanique horloger", "block.create.clutch": "Embrayage", "block.create.cogwheel": "Roue dentée", @@ -128,7 +133,6 @@ "block.create.flywheel": "Volant d'inertie", "block.create.framed_glass": "Grande fenêtre en verre", "block.create.framed_glass_pane": "Grande vitre encadrée", - "block.create.funnel": "Entonnoir amélioré", "block.create.furnace_engine": "Moteur de four", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Briques de gabbro", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "Aimant de poulie", "block.create.pulse_repeater": "Répéteur d'impulsions", "block.create.radial_chassis": "Châssis radial", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "redstone_contact Redstone", "block.create.redstone_link": "Liaison Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "Fenêtre en verre verticale", "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index e477c8700..cd54613f7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 360", + "_": "Missing Localizations: 364", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "Ripetitore di Impulsi Regolabile", "block.create.adjustable_repeater": "Ripetitore Regolabile", "block.create.analog_lever": "Leva Analogica", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "Mattoni di Andesite", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "Involucro di Andesite", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "Bacinella", "block.create.belt": "Nastro Meccanico", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Osservatore a Cinghia", - "block.create.belt_tunnel": "Tunnel Trasportatore", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "Blocco di Ottone", "block.create.brass_casing": "Involucro di Ottone", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "Assemblatore Carrello da Miniera", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "Supporto del Orologio", "block.create.clutch": "Frizione", "block.create.cogwheel": "Ruota Dentata", @@ -128,7 +133,6 @@ "block.create.flywheel": "Volano", "block.create.framed_glass": "Finestra Grande Vetro", "block.create.framed_glass_pane": "Pannello di Finestra Grande Vetro", - "block.create.funnel": "Imbuto", "block.create.furnace_engine": "Motore Fornace", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Mattoni di Gabbro", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "Magnete della Puleggia", "block.create.pulse_repeater": "Ripetitore di Impulsi", "block.create.radial_chassis": "Telaio Radiale", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Contatto Redstone", "block.create.redstone_link": "Collegamento Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "Finestra Verticale Vetro", "block.create.vertical_framed_glass_pane": "Pannello di Finestra Verticale Vetro", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index eb1aba63d..4bc000f9d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 355", + "_": "Missing Localizations: 359", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "調整可能なパルスリピーター", "block.create.adjustable_repeater": "調整可能なリピーター", "block.create.analog_lever": "アナログレバー", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "安山岩レンガ", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "安山岩ケーシング", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "鉢", "block.create.belt": "メカニカルベルト", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "ベルトオブザーバー", - "block.create.belt_tunnel": "コンベアトンネル", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "真鍮ブロック", "block.create.brass_casing": "真鍮ケーシング", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "カートアセンブラ", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "時計仕掛けのベアリング", "block.create.clutch": "クラッチ", "block.create.cogwheel": "歯車", @@ -128,7 +133,6 @@ "block.create.flywheel": "勢車", "block.create.framed_glass": "大きなガラス窓", "block.create.framed_glass_pane": "大きなガラス窓板", - "block.create.funnel": "漏斗", "block.create.furnace_engine": "かまどエンジン", "block.create.gabbro": "斑れい岩", "block.create.gabbro_bricks": "斑れい岩レンガ", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "プーリーマグネット", "block.create.pulse_repeater": "パルスリピーター", "block.create.radial_chassis": "ラジアルシャーシ", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "レッドストーンコンタクト", "block.create.redstone_link": "レッドストーンリンク", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "垂直ガラス窓", "block.create.vertical_framed_glass_pane": "垂直ガラス窓板", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index a46b6bf9b..92d51ddfc 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 360", + "_": "Missing Localizations: 364", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", "block.create.adjustable_repeater": "가변 리피터", "block.create.analog_lever": "아날로그 레버", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "안산안 벽돌", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "안산암 케이스", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "대야", "block.create.belt": "컨베이어 벨트", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "벨트 감지기", - "block.create.belt_tunnel": "컨베이어 벨트 터널", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "황동 블럭", "block.create.brass_casing": "황동 케이스", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "카트 조립기", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "시계 베어링", "block.create.clutch": "클러치", "block.create.cogwheel": "톱나버퀴", @@ -128,7 +133,6 @@ "block.create.flywheel": "플라이휠", "block.create.framed_glass": "큰 유리", "block.create.framed_glass_pane": "큰 유리판", - "block.create.funnel": "깔대기", "block.create.furnace_engine": "화로 엔진", "block.create.gabbro": "반려암", "block.create.gabbro_bricks": "반려암 벽돌", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "도르래 자석", "block.create.pulse_repeater": "펄스 리피터", "block.create.radial_chassis": "원형 섀시", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "동형 감지기", "block.create.redstone_link": "레드스톤 링크", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "수직 유리", "block.create.vertical_framed_glass_pane": "수직 유리판", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 72168412c..82e15be94 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 710", + "_": "Missing Localizations: 714", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", "block.create.adjustable_repeater": "FlexSterker", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "Andesietstenen", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "Bekken", "block.create.belt": "Mechanische Transportband", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Transportband Observeerder", - "block.create.belt_tunnel": "Transportband Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "Kar Assembler", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Koppeling", "block.create.cogwheel": "Tandwiel", @@ -128,7 +133,6 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "Ingelijst Glas", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Transportband Trechter", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Gabbrostenen", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", "block.create.pulse_repeater": "Pulse Versterker", "block.create.radial_chassis": "Rotation Frame", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Redstone redstone_contact", "block.create.redstone_link": "Redstone Brug", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 345a72f3e..134623835 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 781", + "_": "Missing Localizations: 784", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", "block.create.adjustable_repeater": "Repetidor Flex", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "Tijolos de Andesite", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "UNLOCALIZED: Basin", "block.create.belt": "Esteira Mecânica", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Observador de Esteira", - "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Embreagem", "block.create.cogwheel": "Roda Dentada", @@ -128,7 +133,6 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Funil de Esteira", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", "block.create.gabbro": "Gabbro", "block.create.gabbro_bricks": "Tijolos de Gabbro", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", "block.create.pulse_repeater": "Repetidor de Pulso", "block.create.radial_chassis": "Chassis de Rotação", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Contato de Redstone", "block.create.redstone_link": "Conexão de Redstone", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index d4a63d2ae..b3f27dba3 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 775", + "_": "Missing Localizations: 778", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", "block.create.adjustable_repeater": "Настраиваемый повторитель", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "Андезитовые кирпичи", "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "UNLOCALIZED: Basin", "block.create.belt": "Механическая лента", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "Ленточный сканер", - "block.create.belt_tunnel": "UNLOCALIZED: Belt Tunnel", "block.create.birch_window": "UNLOCALIZED: Birch Window", "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Переключаемая муфта", "block.create.cogwheel": "Шестерня", @@ -128,7 +133,6 @@ "block.create.flywheel": "UNLOCALIZED: Flywheel", "block.create.framed_glass": "UNLOCALIZED: Framed Glass", "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.funnel": "Ленточная воронка", "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", "block.create.gabbro": "Габбро", "block.create.gabbro_bricks": "Габбровые кирпичи", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", "block.create.pulse_repeater": "Повторитель импульса", "block.create.radial_chassis": "Поворотная рама", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "Контактное соединение", "block.create.redstone_link": "Сигнальное соединение", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "UNLOCALIZED: Vertical Extractor", "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.vertical_funnel": "UNLOCALIZED: Vertical Funnel", "block.create.vertical_linked_extractor": "UNLOCALIZED: Vertical Linked Extractor", "block.create.vertical_linked_transposer": "UNLOCALIZED: Vertical Linked Transposer", "block.create.vertical_transposer": "UNLOCALIZED: Vertical Transposer", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index e30433a0d..0f1a8b8b8 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 35", + "_": "Missing Localizations: 40", "_": "->------------------------] Game Elements [------------------------<-", @@ -10,25 +10,31 @@ "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", "block.create.adjustable_repeater": "可调节中继器", "block.create.analog_lever": "可调节拉杆", + "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_bricks": "安山岩砖", "block.create.andesite_bricks_slab": "安山岩砖台阶", "block.create.andesite_bricks_stairs": "安山岩砖楼梯", "block.create.andesite_bricks_wall": "安山岩砖墙", "block.create.andesite_casing": "安山机壳", + "block.create.andesite_chute_funnel": "UNLOCALIZED: Andesite Chute Funnel", "block.create.andesite_cobblestone": "安山岩圆石", "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "竖纹安山岩", + "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", "block.create.basin": "工作盆", "block.create.belt": "传送带", - "block.create.belt_funnel": "UNLOCALIZED: Belt Funnel", "block.create.belt_observer": "传送带侦测器", - "block.create.belt_tunnel": "传送带隧道", "block.create.birch_window": "白桦窗户", "block.create.birch_window_pane": "白桦窗户板", + "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "黄铜块", "block.create.brass_casing": "黄铜机壳", + "block.create.brass_chute_funnel": "UNLOCALIZED: Brass Chute Funnel", + "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", + "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.cart_assembler": "矿车装配站", "block.create.chiseled_dark_scoria": "錾制深色熔渣", "block.create.chiseled_dolomite": "錾制白云岩", @@ -37,7 +43,6 @@ "block.create.chiseled_scoria": "錾制熔渣", "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", "block.create.chute": "UNLOCALIZED: Chute", - "block.create.chute_funnel": "UNLOCALIZED: Chute Funnel", "block.create.clockwork_bearing": "时钟轴承", "block.create.clutch": "离合器", "block.create.cogwheel": "齿轮", @@ -128,7 +133,6 @@ "block.create.flywheel": "飞轮", "block.create.framed_glass": "边框玻璃", "block.create.framed_glass_pane": "边框玻璃板", - "block.create.funnel": "漏斗", "block.create.furnace_engine": "熔炼引擎", "block.create.gabbro": "辉长岩", "block.create.gabbro_bricks": "辉长岩砖", @@ -288,7 +292,6 @@ "block.create.pulley_magnet": "传送带磁铁", "block.create.pulse_repeater": "脉冲中继器", "block.create.radial_chassis": "旋转底盘", - "block.create.reality_funnel": "UNLOCALIZED: Reality Funnel", "block.create.redstone_contact": "信号检测器", "block.create.redstone_link": "无限红石信号终端", "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", @@ -323,7 +326,6 @@ "block.create.vertical_extractor": "竖直提取器", "block.create.vertical_framed_glass": "竖直边框玻璃", "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", - "block.create.vertical_funnel": "竖直漏斗", "block.create.vertical_linked_extractor": "竖直无限提取器", "block.create.vertical_linked_transposer": "竖直无线传输器", "block.create.vertical_transposer": "竖直传输器", diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json new file mode 100644 index 000000000..da858b2fc --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_extended.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/andesite_casing", + "2": "create:block/andesite_funnel_pull", + "3": "create:block/andesite_funnel_back", + "4": "create:block/andesite_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json new file mode 100644 index 000000000..67b96635e --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pull_retracted.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/andesite_casing", + "2": "create:block/andesite_funnel_pull", + "3": "create:block/andesite_funnel_back", + "4": "create:block/andesite_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json new file mode 100644 index 000000000..105a02ccb --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_extended.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/andesite_casing", + "2": "create:block/andesite_funnel_push", + "3": "create:block/andesite_funnel_back", + "4": "create:block/andesite_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json new file mode 100644 index 000000000..1284e8489 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_push_retracted.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/andesite_casing", + "2": "create:block/andesite_funnel_push", + "3": "create:block/andesite_funnel_back", + "4": "create:block/andesite_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_chute_funnel_pull.json b/src/generated/resources/assets/create/models/block/andesite_chute_funnel_pull.json new file mode 100644 index 000000000..4561dbc7a --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_chute_funnel_pull.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "particle": "create:block/andesite_casing", + "3": "create:block/andesite_funnel_pull", + "1_2": "create:block/andesite_funnel_back", + "4": "create:block/andesite_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_chute_funnel_push.json b/src/generated/resources/assets/create/models/block/andesite_chute_funnel_push.json new file mode 100644 index 000000000..5e9dde5b1 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_chute_funnel_push.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "particle": "create:block/andesite_casing", + "3": "create:block/andesite_funnel_push", + "1_2": "create:block/andesite_funnel_back", + "4": "create:block/andesite_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel.json b/src/generated/resources/assets/create/models/block/andesite_funnel.json new file mode 100644 index 000000000..d16aeb312 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_funnel.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/funnel/block", + "textures": { + "2": "create:block/andesite_funnel_back", + "3": "create:block/andesite_funnel", + "4": "create:block/andesite_funnel_plating", + "particle": "create:block/andesite_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json new file mode 100644 index 000000000..358403aca --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/cross", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json new file mode 100644 index 000000000..b1656f6c8 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/fullshade", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json new file mode 100644 index 000000000..c679c0a88 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/halfshade", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json new file mode 100644 index 000000000..53fc1627a --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/straight", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json new file mode 100644 index 000000000..12beb7306 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/t_left", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json new file mode 100644 index 000000000..a5b30e322 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/t_right", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json new file mode 100644 index 000000000..a2cef9213 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/window", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json deleted file mode 100644 index d5b74c732..000000000 --- a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "2": "create:block/belt_funnel_pull_off" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json deleted file mode 100644 index 8139c8f3c..000000000 --- a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "2": "create:block/belt_funnel_pull_off" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json deleted file mode 100644 index 04c877bc1..000000000 --- a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "2": "create:block/belt_funnel_pull_on" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json deleted file mode 100644 index a0e81c6cd..000000000 --- a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "2": "create:block/belt_funnel_pull_on" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json deleted file mode 100644 index 94272c53b..000000000 --- a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "2": "create:block/belt_funnel_push_on" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json deleted file mode 100644 index a1800b8e0..000000000 --- a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "2": "create:block/belt_funnel_push_on" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json new file mode 100644 index 000000000..744a196ce --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_extended.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_pull", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json new file mode 100644 index 000000000..aa5aa7d49 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_extended.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_pull_powered", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json new file mode 100644 index 000000000..6bdee09e6 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_pull_powered", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json new file mode 100644 index 000000000..8121dc133 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pull_retracted.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_pull", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json new file mode 100644 index 000000000..a52556ff0 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_extended.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_push", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json new file mode 100644 index 000000000..aa3f44366 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_extended.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_push_powered", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json new file mode 100644 index 000000000..fc08d9de8 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_powered_retracted.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_push_powered", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json new file mode 100644 index 000000000..9dcab1608 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_push_retracted.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/brass_casing", + "2": "create:block/brass_funnel_push", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_chute_funnel_pull.json b/src/generated/resources/assets/create/models/block/brass_chute_funnel_pull.json new file mode 100644 index 000000000..f5621e7c1 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_chute_funnel_pull.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "particle": "create:block/brass_casing", + "3": "create:block/brass_funnel_pull", + "1_2": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_chute_funnel_pull_powered.json b/src/generated/resources/assets/create/models/block/brass_chute_funnel_pull_powered.json new file mode 100644 index 000000000..4905bfe91 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_chute_funnel_pull_powered.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "particle": "create:block/brass_casing", + "3": "create:block/brass_funnel_pull_powered", + "1_2": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_chute_funnel_push.json b/src/generated/resources/assets/create/models/block/brass_chute_funnel_push.json new file mode 100644 index 000000000..c7fa3fa20 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_chute_funnel_push.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "particle": "create:block/brass_casing", + "3": "create:block/brass_funnel_push", + "1_2": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_chute_funnel_push_powered.json b/src/generated/resources/assets/create/models/block/brass_chute_funnel_push_powered.json new file mode 100644 index 000000000..549934816 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_chute_funnel_push_powered.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "particle": "create:block/brass_casing", + "3": "create:block/brass_funnel_push_powered", + "1_2": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel.json b/src/generated/resources/assets/create/models/block/brass_funnel.json new file mode 100644 index 000000000..959b75b9a --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_funnel.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/funnel/block", + "textures": { + "2": "create:block/brass_funnel_back", + "3": "create:block/brass_funnel", + "4": "create:block/brass_funnel_plating", + "particle": "create:block/brass_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_powered.json new file mode 100644 index 000000000..d1e5a5f36 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_funnel_powered.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/funnel/block", + "textures": { + "2": "create:block/brass_funnel_back", + "3": "create:block/brass_funnel_powered", + "4": "create:block/brass_funnel_plating", + "particle": "create:block/brass_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json b/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json new file mode 100644 index 000000000..ddd59b92b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/cross", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json b/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json new file mode 100644 index 000000000..40d276e2b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/fullshade", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json b/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json new file mode 100644 index 000000000..60b51a330 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/halfshade", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json b/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json new file mode 100644 index 000000000..dd6fd9f1f --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/straight", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json new file mode 100644 index 000000000..38ff1c45c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/t_left", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json new file mode 100644 index 000000000..39ffb1a04 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/t_right", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json b/src/generated/resources/assets/create/models/block/brass_tunnel/window.json new file mode 100644 index 000000000..b01232551 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/window.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/window", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json b/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json deleted file mode 100644 index f506327e4..000000000 --- a/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/chute_funnel/block", - "textures": { - "3": "create:block/belt_funnel_pull_off" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json b/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json deleted file mode 100644 index 2ae11c5a2..000000000 --- a/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/chute_funnel/block", - "textures": { - "3": "create:block/belt_funnel_pull_on" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json b/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json deleted file mode 100644 index a41a5207c..000000000 --- a/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/chute_funnel/block", - "textures": { - "3": "create:block/belt_funnel_push_on" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_funnel.json b/src/generated/resources/assets/create/models/item/andesite_funnel.json new file mode 100644 index 000000000..b3601a41f --- /dev/null +++ b/src/generated/resources/assets/create/models/item/andesite_funnel.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/funnel/item", + "textures": { + "2": "create:block/andesite_funnel_back", + "3": "create:block/andesite_funnel", + "4": "create:block/andesite_funnel_plating", + "particle": "create:block/andesite_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_tunnel.json b/src/generated/resources/assets/create/models/item/andesite_tunnel.json new file mode 100644 index 000000000..602fd4968 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/andesite_tunnel.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/item", + "textures": { + "0": "create:block/andesite_tunnel", + "particle": "block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/belt_tunnel.json b/src/generated/resources/assets/create/models/item/belt_tunnel.json deleted file mode 100644 index e47d5d8df..000000000 --- a/src/generated/resources/assets/create/models/item/belt_tunnel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_funnel.json b/src/generated/resources/assets/create/models/item/brass_funnel.json new file mode 100644 index 000000000..3e7642b35 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/brass_funnel.json @@ -0,0 +1,9 @@ +{ + "parent": "create:block/funnel/item", + "textures": { + "2": "create:block/brass_funnel_back", + "3": "create:block/brass_funnel", + "4": "create:block/brass_funnel_plating", + "particle": "create:block/brass_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_tunnel.json b/src/generated/resources/assets/create/models/item/brass_tunnel.json new file mode 100644 index 000000000..faa128867 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/brass_tunnel.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/belt_tunnel/item", + "textures": { + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/funnel.json b/src/generated/resources/assets/create/models/item/funnel.json deleted file mode 100644 index 2092f1ffc..000000000 --- a/src/generated/resources/assets/create/models/item/funnel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/funnel/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/reality_funnel.json b/src/generated/resources/assets/create/models/item/reality_funnel.json deleted file mode 100644 index 38f4140ef..000000000 --- a/src/generated/resources/assets/create/models/item/reality_funnel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/reality_funnel/item" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_belt_funnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json rename to src/generated/resources/data/create/loot_tables/blocks/andesite_belt_funnel.json index 4f7095793..c6403dc5a 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/belt_funnel.json +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_belt_funnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:reality_funnel" + "name": "create:andesite_funnel" } ], "conditions": [ diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_chute_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_chute_funnel.json new file mode 100644 index 000000000..c6403dc5a --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_chute_funnel.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:andesite_funnel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json new file mode 100644 index 000000000..c6403dc5a --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:andesite_funnel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json new file mode 100644 index 000000000..64e2b05ab --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:andesite_tunnel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/vertical_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_belt_funnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/vertical_funnel.json rename to src/generated/resources/data/create/loot_tables/blocks/brass_belt_funnel.json index 34ac7539d..c23027b20 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/vertical_funnel.json +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_belt_funnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:funnel" + "name": "create:brass_funnel" } ], "conditions": [ diff --git a/src/generated/resources/data/create/loot_tables/blocks/belt_tunnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_chute_funnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/belt_tunnel.json rename to src/generated/resources/data/create/loot_tables/blocks/brass_chute_funnel.json index 727739640..c23027b20 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/belt_tunnel.json +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_chute_funnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:belt_tunnel" + "name": "create:brass_funnel" } ], "conditions": [ diff --git a/src/generated/resources/data/create/loot_tables/blocks/funnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_funnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/funnel.json rename to src/generated/resources/data/create/loot_tables/blocks/brass_funnel.json index 34ac7539d..c23027b20 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/funnel.json +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_funnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:funnel" + "name": "create:brass_funnel" } ], "conditions": [ diff --git a/src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_tunnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json rename to src/generated/resources/data/create/loot_tables/blocks/brass_tunnel.json index 4f7095793..c627a6553 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_tunnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:reality_funnel" + "name": "create:brass_tunnel" } ], "conditions": [ diff --git a/src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json deleted file mode 100644 index 4f7095793..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/reality_funnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:reality_funnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json index b07e222fb..c2e37b343 100644 --- a/src/generated/resources/data/create/tags/blocks/brittle.json +++ b/src/generated/resources/data/create/tags/blocks/brittle.json @@ -10,8 +10,6 @@ "create:extractor", "create:vertical_extractor", "create:linked_extractor", - "create:vertical_linked_extractor", - "create:funnel", - "create:vertical_funnel" + "create:vertical_linked_extractor" ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 05099f5e7..4560fb109 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -93,19 +93,19 @@ import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator; import com.simibubi.create.content.logistics.block.extractor.ExtractorBlock; import com.simibubi.create.content.logistics.block.extractor.LinkedExtractorBlock; import com.simibubi.create.content.logistics.block.extractor.VerticalExtractorGenerator; -import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.VerticalFunnelGenerator; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmItem; import com.simibubi.create.content.logistics.block.packager.PackagerBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.AndesiteBeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.AndesiteChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.AndesiteFunnelBlock; import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelGenerator; -import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.BrassBeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.BrassChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.BrassFunnelBlock; import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelGenerator; -import com.simibubi.create.content.logistics.block.realityFunnel.FunnelItem; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; @@ -138,6 +138,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.state.properties.PistonType; import net.minecraft.tags.BlockTags; import net.minecraft.util.Direction.Axis; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.common.ToolType; @@ -703,25 +704,54 @@ public class AllBlocks { .transform(customItemModel()) .register(); - public static final BlockEntry REALITY_FUNNEL = - REGISTRATE.block("reality_funnel", RealityFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) - .item(FunnelItem::new) - .transform(customItemModel()) + public static final BlockEntry ANDESITE_FUNNEL = + REGISTRATE.block("andesite_funnel", AndesiteFunnelBlock::new) + .initialProperties(SharedProperties::stone) + .transform(BuilderTransformers.funnel("andesite", Create.asResource("block/andesite_casing"))) .register(); - public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(new BeltFunnelGenerator()::generate) - .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) - .register(); + public static final BlockEntry ANDESITE_BELT_FUNNEL = + REGISTRATE.block("andesite_belt_funnel", AndesiteBeltFunnelBlock::new) + .initialProperties(SharedProperties::stone) + .blockstate(new BeltFunnelGenerator("andesite")::generate) + .loot((p, b) -> p.registerDropping(b, ANDESITE_FUNNEL.get())) + .register(); - public static final BlockEntry CHUTE_FUNNEL = - REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) + public static final BlockEntry ANDESITE_CHUTE_FUNNEL = + REGISTRATE.block("andesite_chute_funnel", AndesiteChuteFunnelBlock::new) + .initialProperties(SharedProperties::stone) + .blockstate(new ChuteFunnelGenerator("andesite")::generate) + .loot((p, b) -> p.registerDropping(b, ANDESITE_FUNNEL.get())) + .register(); + + public static final BlockEntry BRASS_FUNNEL = + REGISTRATE.block("brass_funnel", BrassFunnelBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate(new ChuteFunnelGenerator()::generate) - .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .transform(BuilderTransformers.funnel("brass", Create.asResource("block/brass_casing"))) + .register(); + + public static final BlockEntry BRASS_BELT_FUNNEL = + REGISTRATE.block("brass_belt_funnel", BrassBeltFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new BeltFunnelGenerator("brass")::generate) + .loot((p, b) -> p.registerDropping(b, BRASS_FUNNEL.get())) + .register(); + + public static final BlockEntry BRASS_CHUTE_FUNNEL = + REGISTRATE.block("brass_chute_funnel", BrassChuteFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new ChuteFunnelGenerator("brass")::generate) + .loot((p, b) -> p.registerDropping(b, BRASS_FUNNEL.get())) + .register(); + + public static final BlockEntry ANDESITE_TUNNEL = + REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new) + .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) + .register(); + + public static final BlockEntry BRASS_TUNNEL = + REGISTRATE.block("brass_tunnel", BeltTunnelBlock::new) + .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) .register(); public static final BlockEntry REDSTONE_CONTACT = @@ -777,20 +807,6 @@ public class AllBlocks { .transform(customItemModel()) .register(); - public static final BlockEntry BELT_TUNNEL = REGISTRATE.block("belt_tunnel", BeltTunnelBlock::new) - .initialProperties(SharedProperties::stone) - .addLayer(() -> RenderType::getCutoutMipped) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(state -> ConfiguredModel.builder() - .modelFile(p.models() - .getExistingFile(p.modLoc("block/belt_tunnel/" + state.get(BeltTunnelBlock.SHAPE) - .getName()))) - .rotationY(state.get(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) - .build())) - .item() - .transform(customItemModel()) - .register(); - public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) .initialProperties(SharedProperties::softMetal) .transform(StressConfigDefaults.setImpact(4.0)) @@ -839,23 +855,6 @@ public class AllBlocks { .addLayer(() -> RenderType::getCutoutMipped) .register(); - public static final BlockEntry FUNNEL = REGISTRATE.block("funnel", FunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.BRITTLE.tag) - .blockstate((c, p) -> p.horizontalBlock(c.get(), state -> p.models() - .getExistingFile(p.modLoc("block/funnel/horizontal" + (state.get(FunnelBlock.BELT) ? "_belt" : ""))))) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry VERTICAL_FUNNEL = - REGISTRATE.block("vertical_funnel", FunnelBlock.Vertical::new) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.BRITTLE.tag) - .blockstate(new VerticalFunnelGenerator()::generate) - .loot((p, b) -> p.registerDropping(b, FUNNEL.get())) - .register(); - public static final BlockEntry TRANSPOSER = REGISTRATE.block("transposer", TransposerBlock::new) .initialProperties(SharedProperties::softMetal) .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p, c.getName() + "/block"), 180)) diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index b639047f5..044d4fa25 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -81,7 +81,6 @@ import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterRend import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterTileEntity; import com.simibubi.create.content.logistics.block.extractor.ExtractorTileEntity; import com.simibubi.create.content.logistics.block.extractor.LinkedExtractorTileEntity; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateTileEntity; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateTileEntity; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmRenderer; @@ -159,7 +158,7 @@ public class AllTileEntities { public static final TileEntityEntry CHUTE = register("chute", ChuteTileEntity::new, AllBlocks.CHUTE); public static final TileEntityEntry BELT_TUNNEL = - register("belt_tunnel", BeltTunnelTileEntity::new, AllBlocks.BELT_TUNNEL); + register("belt_tunnel", BeltTunnelTileEntity::new, AllBlocks.ANDESITE_TUNNEL, AllBlocks.BRASS_TUNNEL); public static final TileEntityEntry MECHANICAL_ARM = register("mechanical_arm", ArmTileEntity::new, AllBlocks.MECHANICAL_ARM); public static final TileEntityEntry MECHANICAL_PISTON = register("mechanical_piston", @@ -229,7 +228,8 @@ public class AllTileEntities { public static final TileEntityEntry DEPOT = register("depot", DepotTileEntity::new, AllBlocks.DEPOT); public static final TileEntityEntry REALITY_FUNNEL = register("reality_funnel", - RealityFunnelTileEntity::new, AllBlocks.REALITY_FUNNEL, AllBlocks.BELT_FUNNEL, AllBlocks.CHUTE_FUNNEL); + RealityFunnelTileEntity::new, AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.BRASS_CHUTE_FUNNEL, + AllBlocks.ANDESITE_FUNNEL, AllBlocks.ANDESITE_BELT_FUNNEL, AllBlocks.ANDESITE_CHUTE_FUNNEL); public static final TileEntityEntry PACKAGER = register("packager", PackagerTileEntity::new, AllBlocks.PACKAGER); @@ -241,8 +241,6 @@ public class AllTileEntities { register("transposer", TransposerTileEntity::new, AllBlocks.TRANSPOSER, AllBlocks.VERTICAL_TRANSPOSER); public static final TileEntityEntry LINKED_TRANSPOSER = register("linked_transposer", LinkedTransposerTileEntity::new, AllBlocks.LINKED_TRANSPOSER, AllBlocks.VERTICAL_LINKED_TRANSPOSER); - public static final TileEntityEntry FUNNEL = - register("funnel", FunnelTileEntity::new, AllBlocks.FUNNEL, AllBlocks.VERTICAL_FUNNEL); public static final TileEntityEntry BELT_OBSERVER = register("belt_observer", BeltObserverTileEntity::new, AllBlocks.BELT_OBSERVER); public static final TileEntityEntry ADJUSTABLE_REPEATER = @@ -314,7 +312,6 @@ public class AllTileEntities { bind(LINKED_EXTRACTOR, SmartTileEntityRenderer::new); bind(TRANSPOSER, SmartTileEntityRenderer::new); bind(LINKED_TRANSPOSER, SmartTileEntityRenderer::new); - bind(FUNNEL, SmartTileEntityRenderer::new); bind(REALITY_FUNNEL, RealityFunnelRenderer::new); bind(BELT_TUNNEL, BeltTunnelRenderer::new); bind(MECHANICAL_ARM, ArmRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java index 9d99d6491..e5944e514 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementTraits.java @@ -19,7 +19,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pul import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; import com.simibubi.create.content.logistics.block.extractor.ExtractorBlock; -import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; import com.simibubi.create.content.logistics.block.transposer.TransposerBlock; @@ -97,8 +96,6 @@ public class BlockMovementTraits { return true; if (block instanceof ExtractorBlock) return true; - if (block instanceof FunnelBlock) - return true; return blockState.getPushReaction() != PushReaction.BLOCK; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 59b7be968..ceb92d25e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -522,8 +522,9 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE, return tunnelState; } - public static void updateTunnel(World world, BlockPos pos) { + public void updateTunnel(World world, BlockPos pos) { BlockState tunnel = world.getBlockState(pos); BlockState newTunnel = getTunnelState(world, pos); if (tunnel != newTunnel) { @@ -144,9 +144,8 @@ public class BeltTunnelBlock extends Block implements ITE, return group; } - private static BlockState getTunnelState(IBlockReader reader, BlockPos pos) { - BlockState state = AllBlocks.BELT_TUNNEL.getDefaultState(); - + private BlockState getTunnelState(IBlockReader reader, BlockPos pos) { + BlockState state = getDefaultState(); BlockState belt = reader.getBlockState(pos.down()); if (AllBlocks.BELT.has(belt)) state = state.with(HORIZONTAL_AXIS, belt.get(BeltBlock.HORIZONTAL_FACING) @@ -174,8 +173,9 @@ public class BeltTunnelBlock extends Block implements ITE, if (state.get(SHAPE) == Shape.STRAIGHT) { Direction fw = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - if (AllBlocks.BELT_TUNNEL.has(reader.getBlockState(pos.offset(fw))) - && AllBlocks.BELT_TUNNEL.has(reader.getBlockState(pos.offset(fw.getOpposite())))) + BlockState blockState1 = reader.getBlockState(pos.offset(fw)); + BlockState blockState2 = reader.getBlockState(pos.offset(fw.getOpposite())); + if (blockState1.getBlock() instanceof BeltTunnelBlock && blockState2.getBlock() instanceof BeltTunnelBlock) state = state.with(SHAPE, Shape.WINDOW); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java index 0ea67c232..5d9cfa415 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java @@ -54,9 +54,11 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT if (AllBlocks.BELT.has(world.getBlockState(pos.down()))) { TileEntity teBelow = world.getTileEntity(pos.down()); if (teBelow != null) { - T capBelow = teBelow.getCapability(capability, Direction.UP).orElse(null); + T capBelow = teBelow.getCapability(capability, Direction.UP) + .orElse(null); if (capBelow != null) { - cap = LazyOptional.of(() -> capBelow).cast(); + cap = LazyOptional.of(() -> capBelow) + .cast(); } } } @@ -102,7 +104,7 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT syncedFlaps.remove(face); else syncedFlaps.put(face, ItemStack.EMPTY); - + markDirty(); sendData(); return true; @@ -115,7 +117,8 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT ListNBT flapsNBT = new ListNBT(); for (Pair pair : flapsToSend) { CompoundNBT flap = new CompoundNBT(); - flap.putInt("Flap", pair.getKey().getIndex()); + flap.putInt("Flap", pair.getKey() + .getIndex()); flap.putBoolean("FlapInward", pair.getValue()); flapsNBT.add(flap); } @@ -148,13 +151,15 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT flaps.clear(); BlockState tunnelState = getBlockState(); for (Direction direction : Direction.values()) { - if (direction.getAxis().isVertical()) + if (direction.getAxis() + .isVertical()) continue; - if (AllBlocks.BELT_TUNNEL.has(world.getBlockState(pos.offset(direction)))) + BlockState blockState = world.getBlockState(pos.offset(direction)); + if (blockState.getBlock() instanceof BeltTunnelBlock) continue; if (direction.getAxis() != tunnelState.get(BlockStateProperties.HORIZONTAL_AXIS)) { - boolean positive = direction.getAxisDirection() == AxisDirection.POSITIVE - ^ direction.getAxis() == Axis.Z; + boolean positive = + direction.getAxisDirection() == AxisDirection.POSITIVE ^ direction.getAxis() == Axis.Z; Shape shape = tunnelState.get(BeltTunnelBlock.SHAPE); if (BeltTunnelBlock.isStraight(tunnelState)) continue; @@ -163,14 +168,16 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT if (!positive && shape == Shape.T_RIGHT) continue; } - flaps.put(direction, new InterpolatedChasingValue().target(0).withSpeed(.05f)); + flaps.put(direction, new InterpolatedChasingValue().target(0) + .withSpeed(.05f)); } } public void flap(Direction side, boolean inward) { if (world.isRemote) { if (flaps.containsKey(side)) - flaps.get(side).set(inward ? -1 : 1); + flaps.get(side) + .set(inward ? -1 : 1); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index 1d266f23c..4d8cfdfc0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock; import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; +import com.simibubi.create.content.logistics.block.realityFunnel.BrassFunnelBlock; import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelBlock; import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; import com.simibubi.create.foundation.gui.widgets.InterpolatedValue; @@ -146,10 +147,10 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor return false; BlockState stateBelow = world.getBlockState(pos.down()); - if (AllBlocks.REALITY_FUNNEL.has(stateBelow)) { - if (stateBelow.get(RealityFunnelBlock.POWERED)) + if (AllBlocks.BRASS_FUNNEL.has(stateBelow)) { + if (stateBelow.get(BrassFunnelBlock.POWERED)) return false; - if (stateBelow.get(RealityFunnelBlock.FACING) != Direction.UP) + if (stateBelow.get(BrassFunnelBlock.FACING) != Direction.UP) return false; ItemStack remainder = RealityFunnelBlock.tryInsert(world, pos.down(), item, simulate); if (!simulate) @@ -186,9 +187,9 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor private boolean handleUpwardOutput(boolean simulate) { BlockState stateAbove = world.getBlockState(pos.up()); - if (AllBlocks.REALITY_FUNNEL.has(stateAbove)) { - if (!stateAbove.get(RealityFunnelBlock.POWERED) - && stateAbove.get(RealityFunnelBlock.FACING) == Direction.DOWN) { + if (AllBlocks.BRASS_FUNNEL.has(stateAbove)) { + if (!stateAbove.get(BrassFunnelBlock.POWERED) + && stateAbove.get(BrassFunnelBlock.FACING) == Direction.DOWN) { ItemStack remainder = RealityFunnelBlock.tryInsert(world, pos.up(), item, simulate); if (remainder.isEmpty()) { if (!simulate) @@ -242,7 +243,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor for (Direction direction : Iterate.horizontalDirections) { BlockPos funnelPos = pos.offset(direction); BlockState funnelState = world.getBlockState(funnelPos); - if (AllBlocks.CHUTE_FUNNEL.has(funnelState)) { + if (AllBlocks.BRASS_CHUTE_FUNNEL.has(funnelState)) { if (funnelState.get(ChuteFunnelBlock.POWERED)) continue; if (funnelState.get(ChuteFunnelBlock.HORIZONTAL_FACING) != direction.getOpposite()) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/extractor/VerticalExtractorGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/extractor/VerticalExtractorGenerator.java index 27f87ac30..6a78f11e4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/extractor/VerticalExtractorGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/extractor/VerticalExtractorGenerator.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.block.extractor; -import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; @@ -25,7 +24,7 @@ public class VerticalExtractorGenerator extends SpecialBlockStateGen { @Override protected int getYRotation(BlockState state) { - return (state.get(FunnelBlock.UPWARD) ? 0 : 180) + horizontalAngle(state.get(FunnelBlock.HORIZONTAL_FACING)); + return (state.get(ExtractorBlock.UPWARD) ? 0 : 180) + horizontalAngle(state.get(ExtractorBlock.HORIZONTAL_FACING)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java deleted file mode 100644 index b99794025..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.simibubi.create.content.logistics.block.funnel; - -import java.util.Collections; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.components.structureMovement.IPortableBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; - -public class FunnelBlock extends AttachedLogisticalBlock - implements ITE, IPortableBlock { - - public static final BooleanProperty BELT = BooleanProperty.create("belt"); - public static final MovementBehaviour MOVEMENT = new FunnelMovementBehaviour(); - - public FunnelBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(Builder builder) { - if (!isVertical()) - builder.add(BELT); - super.fillStateContainer(builder); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.FUNNEL.create(); - } - - @Override - protected boolean isVertical() { - return false; - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (worldIn.isRemote) - return; - if (!(entityIn instanceof ItemEntity)) - return; - ItemEntity itemEntity = (ItemEntity) entityIn; - withTileEntityDo(worldIn, pos, te -> { - ItemStack remainder = te.tryToInsert(itemEntity.getItem()); - if (remainder.isEmpty()) - itemEntity.remove(); - if (remainder.getCount() < itemEntity.getItem().getCount()) - itemEntity.setItem(remainder); - }); - } - - @Override - protected BlockState getVerticalDefaultState() { - return AllBlocks.VERTICAL_FUNNEL.getDefaultState(); - } - - @Override - protected BlockState getHorizontalDefaultState() { - return AllBlocks.FUNNEL.getDefaultState(); - } - - @Override - public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { - if (facing == Direction.DOWN && !isVertical(stateIn)) - return stateIn.with(BELT, isOnBelt(worldIn, currentPos)); - return stateIn; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState state = super.getStateForPlacement(context); - if (!isVertical(state)) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - state = state.with(BELT, isOnBelt(world, pos)); - } - return state; - } - - protected boolean isOnBelt(IWorld world, BlockPos pos) { - return AllBlocks.BELT.has(world.getBlockState(pos.down())); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - Direction direction = getBlockFacing(state); - if (!isVertical(state) && state.get(BELT)) - return AllShapes.BELT_FUNNEL.get(direction); - return AllShapes.FUNNEL.get(direction); - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - if (worldIn.isRemote) - return; - - if (isOnBelt(worldIn, pos)) { - BeltTileEntity belt = BeltHelper.getSegmentTE(worldIn, pos.down()); - if (belt == null) - return; - - BeltTileEntity controllerBelt = belt.getControllerTE(); - if (controllerBelt == null) - return; - - controllerBelt.getInventory().applyToEachWithin(belt.index + .5f, .55f, (transportedItemStack) -> { - controllerBelt.getInventory().eject(transportedItemStack); - return Collections.emptyList(); - }); - } - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); - worldIn.removeTileEntity(pos); - } - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - - if (hit.getFace() == getBlockFacing(state).getOpposite()) { - if (!worldIn.isRemote) - withTileEntityDo(worldIn, pos, te -> { - ItemStack heldItem = player.getHeldItem(handIn).copy(); - ItemStack remainder = te.tryToInsert(heldItem); - if (!ItemStack.areItemStacksEqual(remainder, heldItem)) - player.setHeldItem(handIn, remainder); - }); - return ActionResultType.SUCCESS; - } - - return ActionResultType.PASS; - } - - public static class Vertical extends FunnelBlock { - public Vertical(Properties properties) { - super(properties); - } - - @Override - protected boolean isVertical() { - return true; - } - } - - @Override - public MovementBehaviour getMovementBehaviour() { - return MOVEMENT; - } - - @Override - public Class getTileEntityClass() { - return FunnelTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlot.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlot.java deleted file mode 100644 index a4dea706a..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlot.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.content.logistics.block.funnel; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; -import com.simibubi.create.content.logistics.block.extractor.ExtractorBlock; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.Vec3d; - -public class FunnelFilterSlot extends ValueBoxTransform { - - Vec3d offsetForHorizontal = VecHelper.voxelSpace(8f, 14f, 13.5f); - Vec3d offsetForBelt = VecHelper.voxelSpace(8f, 8.5f, 14f); - Vec3d offsetForUpward = VecHelper.voxelSpace(8f, 13.5f, 2f); - Vec3d offsetForDownward = VecHelper.voxelSpace(8f, 2.5f, 2f); - - @Override - protected Vec3d getLocalOffset(BlockState state) { - Vec3d vec = offsetForHorizontal; - float yRot = AngleHelper.horizontalAngle(state.get(ExtractorBlock.HORIZONTAL_FACING)); - if (AttachedLogisticalBlock.isVertical(state)) - vec = state.get(AttachedLogisticalBlock.UPWARD) ? offsetForUpward : offsetForDownward; - else if (state.get(FunnelBlock.BELT)) - vec = offsetForBelt; - - return VecHelper.rotateCentered(vec, yRot, Axis.Y); - } - - @Override - protected void rotate(BlockState state, MatrixStack ms) { - Direction blockFacing = AttachedLogisticalBlock.getBlockFacing(state); - boolean vertical = AttachedLogisticalBlock.isVertical(state); - float horizontalAngle = AngleHelper.horizontalAngle(state.get(ExtractorBlock.HORIZONTAL_FACING)); - - float yRot = blockFacing == Direction.DOWN ? horizontalAngle + 180 : horizontalAngle; - float xRot = (vertical || state.get(FunnelBlock.BELT)) ? 90 : 0; - - if (blockFacing == Direction.UP) - xRot += 180; - - MatrixStacker.of(ms) - .rotateY(yRot) - .rotateX(xRot); - } - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java deleted file mode 100644 index fb2d2f541..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.simibubi.create.content.logistics.block.funnel; - -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.logistics.block.AttachedLogisticalBlock; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InventoryManagementBehaviour.Attachments; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.Vec3i; - -public class FunnelTileEntity extends SmartTileEntity { - - private FilteringBehaviour filtering; - private InsertingBehaviour inserting; - private ItemStack justEaten; - - public FunnelTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void addBehaviours(List behaviours) { - filtering = new FilteringBehaviour(this, new FunnelFilterSlot()).withCallback(this::filterChanged); - behaviours.add(filtering); - inserting = new InsertingBehaviour(this, - Attachments.toward(() -> AttachedLogisticalBlock.getBlockFacing(getBlockState()))); - behaviours.add(inserting); - } - - public void filterChanged(ItemStack stack) { - } - - @Override - public CompoundNBT writeToClient(CompoundNBT tag) { - if (justEaten != null) { - tag.put("Nom", justEaten.serializeNBT()); - justEaten = null; - } - return super.writeToClient(tag); - } - - @Override - public void readClientUpdate(CompoundNBT tag) { - super.readClientUpdate(tag); - if (tag.contains("Nom")) - justEaten = ItemStack.read(tag.getCompound("Nom")); - } - - @Override - public void tick() { - super.tick(); - if (world.isRemote && justEaten != null) { - spawnParticles(justEaten); - justEaten = null; - } - } - - public ItemStack tryToInsert(ItemStack stack) { - if (!filtering.test(stack)) - return stack; - - ItemStack remainder = ItemStack.EMPTY; - - BeltTileEntity targetingBelt = getTargetingBelt(); - if (targetingBelt != null) { - Direction facing = AttachedLogisticalBlock.getBlockFacing(getBlockState()); - if (!targetingBelt.tryInsertingFromSide(facing, stack.copy(), false)) - remainder = stack; - } else { - remainder = inserting.insert(stack.copy(), false); - } - - if (remainder.isEmpty()) { - if (!world.isRemote) - world.playSound(null, pos, AllSoundEvents.BLOCK_FUNNEL_EAT.get(), SoundCategory.BLOCKS, .125f, 1f); - justEaten = stack.copy(); - } - - if (remainder.getCount() != stack.getCount()) - sendData(); - - return remainder; - } - - protected BeltTileEntity getTargetingBelt() { - BlockPos targetPos = pos.offset(AttachedLogisticalBlock.getBlockFacing(getBlockState())); - if (!AllBlocks.BELT.has(world.getBlockState(targetPos))) - return null; - return BeltHelper.getSegmentTE(world, targetPos); - } - - public void spawnParticles(ItemStack stack) { - Vec3i directionVec = getBlockState().get(BlockStateProperties.HORIZONTAL_FACING).getDirectionVec(); - float xSpeed = directionVec.getX() * 1 / 8f; - float zSpeed = directionVec.getZ() * 1 / 8f; - Vec3d vec = VecHelper.getCenterOf(pos); - world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), vec.x, vec.y - 9 / 16f, vec.z, xSpeed, - 1 / 6f, zSpeed); - } - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/VerticalFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/VerticalFunnelGenerator.java deleted file mode 100644 index 1c1ee2649..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/VerticalFunnelGenerator.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.content.logistics.block.funnel; - -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraftforge.client.model.generators.ModelFile; - -public class VerticalFunnelGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - return state.get(FunnelBlock.UPWARD) ? 270 : 90; - } - - @Override - protected int getYRotation(BlockState state) { - return (state.get(FunnelBlock.UPWARD) ? 180 : 0) + horizontalAngle(state.get(FunnelBlock.HORIZONTAL_FACING)); - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return prov.models() - .getExistingFile(prov.modLoc("block/funnel/vertical")); - } - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java index c247eaf62..f9250cf2d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -69,7 +69,7 @@ public abstract class ArmInteractionPoint { static boolean isInteractable(BlockState state) { return AllBlocks.DEPOT.has(state) || AllBlocks.BELT.has(state) || AllBlocks.CHUTE.has(state) - || AllBlocks.REALITY_FUNNEL.has(state); + || state.getBlock() instanceof RealityFunnelBlock; } ArmAngleTarget getTargetAngles(BlockPos armPos) { @@ -125,7 +125,7 @@ public abstract class ArmInteractionPoint { point = new Belt(); if (AllBlocks.CHUTE.has(state)) point = new Chute(); - if (AllBlocks.REALITY_FUNNEL.has(state)) + if (state.getBlock() instanceof RealityFunnelBlock) point = new Funnel(); if (point != null) { @@ -209,9 +209,10 @@ public abstract class ArmInteractionPoint { @Override Direction getInteractionDirection() { - return RealityFunnelBlock.getFunnelFacing(state).getOpposite(); + return RealityFunnelBlock.getFunnelFacing(state) + .getOpposite(); } - + @Override ItemStack insert(World world, ItemStack stack, boolean simulate) { FilteringBehaviour filtering = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); @@ -225,7 +226,7 @@ public abstract class ArmInteractionPoint { @Override boolean isValid(BlockState state) { - return AllBlocks.REALITY_FUNNEL.has(state); + return state.getBlock() instanceof RealityFunnelBlock; } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java index b6a94e2b1..12f61cf53 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java @@ -23,7 +23,6 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java new file mode 100644 index 000000000..cfb9d5d95 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java @@ -0,0 +1,16 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +public class AndesiteBeltFunnelBlock extends BeltFunnelBlock { + + public AndesiteBeltFunnelBlock(Properties p_i48377_1_) { + super(AllBlocks.ANDESITE_FUNNEL, p_i48377_1_); + } + + @Override + public boolean hasPoweredProperty() { + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java new file mode 100644 index 000000000..a6a6e3f62 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java @@ -0,0 +1,16 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +public class AndesiteChuteFunnelBlock extends ChuteFunnelBlock { + + public AndesiteChuteFunnelBlock(Properties p_i48377_1_) { + super(AllBlocks.ANDESITE_FUNNEL, p_i48377_1_); + } + + @Override + public boolean hasPoweredProperty() { + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java new file mode 100644 index 000000000..e537e8799 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java @@ -0,0 +1,28 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; + +public class AndesiteFunnelBlock extends RealityFunnelBlock { + + public AndesiteFunnelBlock(Properties p_i48415_1_) { + super(p_i48415_1_); + } + + @Override + public BlockState getEquivalentBeltFunnel(BlockState state) { + Direction facing = state.get(FACING); + return AllBlocks.ANDESITE_BELT_FUNNEL.getDefaultState() + .with(BeltFunnelBlock.HORIZONTAL_FACING, facing); + } + + @Override + public BlockState getEquivalentChuteFunnel(BlockState state) { + Direction facing = state.get(FACING); + return AllBlocks.ANDESITE_CHUTE_FUNNEL.getDefaultState() + .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index ca185b137..a71f67a72 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -3,12 +3,12 @@ package com.simibubi.create.content.logistics.block.realityFunnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VoxelShaper; +import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -28,7 +28,7 @@ import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { +public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); @@ -47,8 +47,8 @@ public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { } } - public BeltFunnelBlock(Properties p_i48377_1_) { - super(p_i48377_1_); + public BeltFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { + super(parent, p_i48377_1_); setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java index 0b74af3fe..3c494de97 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.block.realityFunnel; -import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.RegistrateBlockstateProvider; @@ -11,6 +10,12 @@ import net.minecraftforge.client.model.generators.ModelFile; public class BeltFunnelGenerator extends SpecialBlockStateGen { + private String type; + + public BeltFunnelGenerator(String type) { + this.type = type; + } + @Override protected int getXRotation(BlockState state) { return 0; @@ -25,15 +30,18 @@ public class BeltFunnelGenerator extends SpecialBlockStateGen { public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, BlockState state) { boolean pushing = state.get(BeltFunnelBlock.PUSHING); - boolean powered = state.get(BeltFunnelBlock.POWERED); + boolean powered = state.has(BeltFunnelBlock.POWERED) && state.get(BeltFunnelBlock.POWERED); String shapeName = state.get(BeltFunnelBlock.SHAPE) .getName(); - if (pushing && !powered) - return AssetLookup.partialBaseModel(ctx, prov, shapeName); - String name = ctx.getName() + "_" + (pushing ? "push_" : "pull_") + (powered ? "on" : "off"); + String suffix = (pushing ? "push" : "pull") + (powered ? "_powered" : ""); + String name = ctx.getName() + "_" + suffix; + String textureName = type + "_funnel_" + suffix; return prov.models() - .withExistingParent(name + "_" + shapeName, prov.modLoc("block/" + ctx.getName() + "/block_" + shapeName)) - .texture("2", prov.modLoc("block/" + name)); + .withExistingParent(name + "_" + shapeName, prov.modLoc("block/belt_funnel/block_" + shapeName)) + .texture("particle", prov.modLoc("block/" + type + "_casing")) + .texture("2", prov.modLoc("block/" + textureName)) + .texture("3", prov.modLoc("block/" + type + "_funnel_back")) + .texture("4", prov.modLoc("block/" + type + "_funnel_plating")); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java new file mode 100644 index 000000000..cf0ae9ef3 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java @@ -0,0 +1,16 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +public class BrassBeltFunnelBlock extends BeltFunnelBlock { + + public BrassBeltFunnelBlock(Properties p_i48377_1_) { + super(AllBlocks.BRASS_FUNNEL, p_i48377_1_); + } + + @Override + public boolean hasPoweredProperty() { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java new file mode 100644 index 000000000..ad584afd2 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java @@ -0,0 +1,16 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +public class BrassChuteFunnelBlock extends ChuteFunnelBlock { + + public BrassChuteFunnelBlock(Properties p_i48377_1_) { + super(AllBlocks.BRASS_FUNNEL, p_i48377_1_); + } + + @Override + public boolean hasPoweredProperty() { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java new file mode 100644 index 000000000..c036722bd --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java @@ -0,0 +1,66 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class BrassFunnelBlock extends RealityFunnelBlock { + + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + + public BrassFunnelBlock(Properties p_i48415_1_) { + super(p_i48415_1_); + setDefaultState(getDefaultState().with(POWERED, false)); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + return super.getStateForPlacement(context).with(POWERED, context.getWorld() + .isBlockPowered(context.getPos())); + } + + @Override + protected boolean canInsertIntoFunnel(BlockState state) { + return super.canInsertIntoFunnel(state) && !state.get(POWERED); + } + + @Override + protected void fillStateContainer(Builder builder) { + super.fillStateContainer(builder.add(POWERED)); + } + + @Override + public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + boolean isMoving) { + if (worldIn.isRemote) + return; + boolean previouslyPowered = state.get(POWERED); + if (previouslyPowered != worldIn.isBlockPowered(pos)) + worldIn.setBlockState(pos, state.cycle(POWERED), 2); + } + + @Override + public BlockState getEquivalentBeltFunnel(BlockState state) { + Direction facing = state.get(FACING); + return AllBlocks.BRASS_BELT_FUNNEL.getDefaultState() + .with(BeltFunnelBlock.HORIZONTAL_FACING, facing) + .with(POWERED, state.get(POWERED)); + } + + @Override + public BlockState getEquivalentChuteFunnel(BlockState state) { + Direction facing = state.get(FACING); + return AllBlocks.BRASS_CHUTE_FUNNEL.getDefaultState() + .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing) + .with(POWERED, state.get(POWERED)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java index 25f79c470..596f94a81 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.logistics.block.realityFunnel; import com.simibubi.create.AllShapes; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; +import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.block.BlockState; import net.minecraft.util.Direction; @@ -11,10 +12,10 @@ import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; -public class ChuteFunnelBlock extends HorizontalInteractionFunnelBlock { +public abstract class ChuteFunnelBlock extends HorizontalInteractionFunnelBlock { - public ChuteFunnelBlock(Properties p_i48377_1_) { - super(p_i48377_1_); + public ChuteFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { + super(parent, p_i48377_1_); } public static boolean isOnValidChute(BlockState state, IWorldReader world, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java index 98ce6320f..fb78f26e4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.logistics.block.realityFunnel; -import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.RegistrateBlockstateProvider; @@ -11,6 +10,12 @@ import net.minecraftforge.client.model.generators.ModelFile; public class ChuteFunnelGenerator extends SpecialBlockStateGen { + private String type; + + public ChuteFunnelGenerator(String type) { + this.type = type; + } + @Override protected int getXRotation(BlockState state) { return 0; @@ -25,15 +30,16 @@ public class ChuteFunnelGenerator extends SpecialBlockStateGen { public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, BlockState state) { boolean pushing = state.get(ChuteFunnelBlock.PUSHING); - boolean powered = state.get(ChuteFunnelBlock.POWERED); - if (pushing && !powered) - return AssetLookup.partialBaseModel(ctx, prov); - String suffix = (pushing ? "push_" : "pull_") + (powered ? "on" : "off"); - String textureName = "belt_funnel_" + suffix; + boolean powered = state.has(ChuteFunnelBlock.POWERED) && state.get(ChuteFunnelBlock.POWERED); + String suffix = (pushing ? "push" : "pull") + (powered ? "_powered" : ""); + String textureName = type + "_funnel_" + suffix; String modelName = ctx.getName() + "_" + suffix; return prov.models() - .withExistingParent(modelName, prov.modLoc("block/" + ctx.getName() + "/block")) - .texture("3", prov.modLoc("block/" + textureName)); + .withExistingParent(modelName, prov.modLoc("block/chute_funnel/block")) + .texture("particle", prov.modLoc("block/" + type + "_casing")) + .texture("3", prov.modLoc("block/" + textureName)) + .texture("1_2", prov.modLoc("block/" + type + "_funnel_back")) + .texture("4", prov.modLoc("block/" + type + "_funnel_plating")); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java index fcf0af437..281213b2a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java @@ -19,7 +19,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { @Override protected Vec3d getLocalOffset(BlockState state) { - if (AllBlocks.BELT_FUNNEL.has(state)) + if (AllBlocks.BRASS_BELT_FUNNEL.has(state)) if (state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED) return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 13, 7.5f), AngleHelper.horizontalAngle(getSide()), Axis.Y); @@ -33,7 +33,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { localOffset = VecHelper.rotateCentered(southLocation, AngleHelper.horizontalAngle(getSide()), Axis.Y); } - if (AllBlocks.CHUTE_FUNNEL.has(state)) { + if (AllBlocks.BRASS_CHUTE_FUNNEL.has(state)) { Direction facing = state.get(ChuteFunnelBlock.HORIZONTAL_FACING); localOffset = localOffset.subtract(new Vec3d(facing.getDirectionVec()).scale(2 / 16f)); } @@ -47,7 +47,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { if (!facing.getAxis() .isVertical() - && !(AllBlocks.BELT_FUNNEL.has(state) && state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED)) { + && !(AllBlocks.BRASS_BELT_FUNNEL.has(state) && state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED)) { Direction verticalDirection = DirectionHelper.rotateAround(getSide(), facing.rotateY() .getAxis()); if (facing.getAxis() == Axis.Z) @@ -81,7 +81,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { if (facing == null) return false; - if (AllBlocks.BELT_FUNNEL.has(state)) + if (AllBlocks.BRASS_BELT_FUNNEL.has(state)) return state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED ? direction == facing : direction != Direction.DOWN && direction.getAxis() != facing.getAxis(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java index da693fe5b..5a276a35f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java @@ -1,7 +1,5 @@ package com.simibubi.create.content.logistics.block.realityFunnel; -import com.simibubi.create.AllBlocks; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.BlockItem; @@ -41,11 +39,15 @@ public class FunnelItem extends BlockItem { .isHorizontal()) return state; - BlockState equivalentBeltFunnel = AllBlocks.BELT_FUNNEL.get() - .getStateForPlacement(ctx) + RealityFunnelBlock block = (RealityFunnelBlock) getBlock(); + Block beltFunnelBlock = block.getEquivalentBeltFunnel(state) + .getBlock(); + Block chuteFunnelBlock = block.getEquivalentChuteFunnel(state) + .getBlock(); + + BlockState equivalentBeltFunnel = beltFunnelBlock.getStateForPlacement(ctx) .with(BeltFunnelBlock.HORIZONTAL_FACING, direction); - BlockState equivalentChuteFunnel = AllBlocks.CHUTE_FUNNEL.get() - .getStateForPlacement(ctx) + BlockState equivalentChuteFunnel = chuteFunnelBlock.getStateForPlacement(ctx) .with(ChuteFunnelBlock.HORIZONTAL_FACING, direction); BlockState reversedChuteFunnel = equivalentChuteFunnel.rotate(Rotation.CLOCKWISE_180) .cycle(ChuteFunnelBlock.PUSHING); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelMovementBehaviour.java similarity index 95% rename from src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java rename to src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelMovementBehaviour.java index c0cc9deef..a4521ec6e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelMovementBehaviour.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.funnel; +package com.simibubi.create.content.logistics.block.realityFunnel; import java.util.List; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java index dd53e51d2..0e284bb4d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.logistics.block.realityFunnel; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -28,13 +28,19 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty PUSHING = BooleanProperty.create("pushing"); + private BlockEntry parent; - public HorizontalInteractionFunnelBlock(Properties p_i48377_1_) { + public HorizontalInteractionFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { super(p_i48377_1_); - setDefaultState(getDefaultState().with(PUSHING, true) - .with(POWERED, false)); + this.parent = parent; + BlockState defaultState = getDefaultState().with(PUSHING, true); + if (hasPoweredProperty()) + defaultState = defaultState.with(POWERED, false); + setDefaultState(defaultState); } + public abstract boolean hasPoweredProperty(); + @Override public boolean hasTileEntity(BlockState state) { return true; @@ -47,13 +53,18 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i @Override protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, POWERED, PUSHING)); + if (hasPoweredProperty()) + p_206840_1_.add(POWERED); + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, PUSHING)); } @Override public BlockState getStateForPlacement(BlockItemUseContext ctx) { - return super.getStateForPlacement(ctx).with(POWERED, ctx.getWorld() - .isBlockPowered(ctx.getPos())); + BlockState stateForPlacement = super.getStateForPlacement(ctx); + if (hasPoweredProperty()) + stateForPlacement = stateForPlacement.with(POWERED, ctx.getWorld() + .isBlockPowered(ctx.getPos())); + return stateForPlacement; } @Override @@ -69,14 +80,14 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i @Override public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, PlayerEntity player) { - return AllBlocks.REALITY_FUNNEL.asStack(); + return parent.asStack(); } @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, BlockPos pos, BlockPos p_196271_6_) { if (!canStillInteract(state, world, pos)) - return AllBlocks.REALITY_FUNNEL.getDefaultState() + return parent.getDefaultState() .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); return state; } @@ -94,6 +105,8 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i @Override public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) { + if (!hasPoweredProperty()) + return; if (worldIn.isRemote) return; boolean previouslyPowered = state.get(POWERED); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index 38361f52a..640f49b02 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -2,7 +2,6 @@ package com.simibubi.create.content.logistics.block.realityFunnel; import javax.annotation.Nullable; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; @@ -17,15 +16,17 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.item.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemStack; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Direction.AxisDirection; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; @@ -34,13 +35,10 @@ import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public class RealityFunnelBlock extends ProperDirectionalBlock implements ITE { - - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; +public abstract class RealityFunnelBlock extends ProperDirectionalBlock implements ITE { public RealityFunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); - setDefaultState(getDefaultState().with(POWERED, false)); } @Override @@ -53,9 +51,27 @@ public class RealityFunnelBlock extends ProperDirectionalBlock implements ITE { + ItemStack heldItem = player.getHeldItem(handIn) + .copy(); + ItemStack remainder = tryInsert(worldIn, pos, heldItem, false); + if (!ItemStack.areItemStacksEqual(remainder, heldItem)) + player.setHeldItem(handIn, remainder); + }); + return ActionResultType.SUCCESS; + } + + return ActionResultType.PASS; } @Override @@ -64,7 +80,7 @@ public class RealityFunnelBlock extends ProperDirectionalBlock implements ITE builder) { - super.fillStateContainer(builder.add(POWERED)); - } - @Override public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { return AllShapes.REALITY_FUNNEL.get(state.get(FACING)); @@ -130,24 +141,17 @@ public class RealityFunnelBlock extends ProperDirectionalBlock implements ITE { BlockState blockState = getBlockState(); return blockState.getBlock() instanceof HorizontalInteractionFunnelBlock && blockState.get(HorizontalInteractionFunnelBlock.PUSHING) || determineCurrentMode() == Mode.CHUTE_END; }); - + filtering.onlyActiveWhen(this::supportsFiltering); behaviours.add(filtering); - behaviours.add(inserting); - behaviours.add(extracting); + + } + + private boolean supportsFiltering() { + BlockState blockState = getBlockState(); + return blockState != null && blockState.has(BlockStateProperties.POWERED); } public void flap(boolean inward) { @@ -189,7 +196,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { } public boolean hasFlap() { - return AllBlocks.BELT_FUNNEL.has(getBlockState()) + return getBlockState().getBlock() instanceof BeltFunnelBlock && getBlockState().get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java index 1933627ff..1a48f106e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.logistics.block.redstone; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ProperDirectionalBlock; import com.simibubi.create.foundation.utility.Iterate; @@ -165,7 +165,7 @@ public class RedstoneLinkBlock extends ProperDirectionalBlock implements ITE NonNullUnaryOperator> funnel( + String type, ResourceLocation particleTexture) { + return b -> { + return b.blockstate((c, p) -> { + Function model = s -> { + String powered = + s.has(BlockStateProperties.POWERED) && s.get(BlockStateProperties.POWERED) ? "_powered" : ""; + return p.models() + .withExistingParent("block/" + type + "_funnel" + powered, p.modLoc("block/funnel/block")) + .texture("2", p.modLoc("block/" + type + "_funnel_back")) + .texture("3", p.modLoc("block/" + type + "_funnel" + powered)) + .texture("4", p.modLoc("block/" + type + "_funnel_plating")) + .texture("particle", particleTexture); + }; + p.directionalBlock(c.get(), model); + }) + .item(FunnelItem::new) + .model((c, p) -> { + p.withExistingParent("item/" + type + "_funnel", p.modLoc("block/funnel/item")) + .texture("2", p.modLoc("block/" + type + "_funnel_back")) + .texture("3", p.modLoc("block/" + type + "_funnel")) + .texture("4", p.modLoc("block/" + type + "_funnel_plating")) + .texture("particle", particleTexture); + }) + .build(); + }; + } + + public static NonNullUnaryOperator> beltTunnel( + String type, ResourceLocation particleTexture) { + return b -> b.initialProperties(SharedProperties::stone) + .addLayer(() -> RenderType::getCutoutMipped) + .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .forAllStates(state -> { + String id = "block/" + type + "_tunnel"; + String shapeName = state.get(BeltTunnelBlock.SHAPE) + .getName(); + return ConfiguredModel.builder() + .modelFile(p.models() + .withExistingParent(id + "/" + shapeName, p.modLoc("block/belt_tunnel/" + shapeName)) + .texture("0", p.modLoc(id)) + .texture("particle", particleTexture)) + .rotationY(state.get(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) + .build(); + })) + .item() + .model((c, p) -> { + String id = type + "_tunnel"; + p.withExistingParent("item/" + id, p.modLoc("block/belt_tunnel/item")) + .texture("0", p.modLoc("block/" + id)) + .texture("particle", particleTexture); + }) + .build(); + } + public static NonNullUnaryOperator> mechanicalPiston(PistonType type) { return b -> b.initialProperties(SharedProperties::stone) .properties(p -> p.nonOpaque()) diff --git a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java index 1b143ec12..2c25c51bd 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java +++ b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java @@ -14,11 +14,11 @@ public class SharedProperties { public static Block stone() { return Blocks.ANDESITE; } - + public static Block softMetal() { return Blocks.GOLD_BLOCK; } - + public static Block wooden() { return Blocks.STRIPPED_SPRUCE_WOOD; } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java index 1f4fc520a..1abae30c6 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java @@ -155,7 +155,7 @@ public class FilteringBehaviour extends TileEntityBehaviour { } public boolean test(ItemStack stack) { - return filter.isEmpty() || FilterItem.test(tileEntity.getWorld(), stack, filter); + return !isActive() || filter.isEmpty() || FilterItem.test(tileEntity.getWorld(), stack, filter); } @Override diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index 06b398e96..769dac047 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -2,9 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/belt_funnel_push_off", - "3": "create:block/funnel_back", - "4": "create:block/funnel_plating", + "2": "create:block/brass_funnel_push", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating", "particle": "create:block/brass_block" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 7da170c36..ee59d4be2 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -2,9 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/belt_funnel_push_off", - "3": "create:block/funnel_back", - "4": "create:block/funnel_plating", + "2": "create:block/brass_funnel_push", + "3": "create:block/brass_funnel_back", + "4": "create:block/brass_funnel_plating", "particle": "create:block/brass_block" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/belt_funnel/flap.json b/src/main/resources/assets/create/models/block/belt_funnel/flap.json index f00cc83a2..328a8a1f5 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/flap.json @@ -1,6 +1,6 @@ { "textures": { - "4": "create:block/funnel_plating" + "4": "create:block/brass_funnel_plating" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json index 81c29b76d..ebc0f82f0 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json index b1b1e371e..17626fed4 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json b/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json index 2deeb5bfa..4b5217f11 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json b/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json index bdc3759ca..bc5fe4c68 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json b/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json index 1558c2d43..0b0a2e788 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/item.json b/src/main/resources/assets/create/models/block/belt_tunnel/item.json index dc73dabf0..fdde3f3a9 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/item.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/item.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json index 027b65eb7..2de43a1e2 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json index fbb3568b4..b2c3f760f 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json index 85bb96bcf..15d6fdcbd 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/window.json b/src/main/resources/assets/create/models/block/belt_tunnel/window.json index dda810dce..38de43720 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/window.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/window.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/belt_tunnel", - "particle": "create:block/belt_tunnel" + "0": "create:block/brass_tunnel", + "particle": "create:block/brass_tunnel" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/chute_funnel/block.json b/src/main/resources/assets/create/models/block/chute_funnel/block.json index a7597b729..43a769f49 100644 --- a/src/main/resources/assets/create/models/block/chute_funnel/block.json +++ b/src/main/resources/assets/create/models/block/chute_funnel/block.json @@ -2,12 +2,12 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt_funnel_push_off", - "4": "create:block/funnel_plating", + "3": "create:block/brass_funnel_push", + "4": "create:block/brass_funnel_plating", "13": "create:block/chute", "particle": "create:block/brass_block", - "3_particle": "create:block/brass_block", - "1_2": "create:block/funnel_back" + "3_particle": "#particle", + "1_2": "create:block/brass_funnel_back" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/reality_funnel/block.json b/src/main/resources/assets/create/models/block/funnel/block.json similarity index 97% rename from src/main/resources/assets/create/models/block/reality_funnel/block.json rename to src/main/resources/assets/create/models/block/funnel/block.json index 3ec2eb39f..5ec5f5d4d 100644 --- a/src/main/resources/assets/create/models/block/reality_funnel/block.json +++ b/src/main/resources/assets/create/models/block/funnel/block.json @@ -2,9 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/funnel_back", - "3": "create:block/funnel_off", - "4": "create:block/funnel_plating", + "2": "create:block/brass_funnel_back", + "3": "create:block/brass_funnel", + "4": "create:block/brass_funnel_plating", "particle": "create:block/brass_block" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/funnel/horizontal.json b/src/main/resources/assets/create/models/block/funnel/horizontal.json deleted file mode 100644 index 630a512ea..000000000 --- a/src/main/resources/assets/create/models/block/funnel/horizontal.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "block/dark_oak_log_top", - "4": "create:block/extractor", - "brass_casing": "create:block/brass_casing", - "belt_funnel": "create:block/belt_funnel", - "package_funnel_horizontal": "create:block/funnel_horizontal", - "particle": "#package_funnel_horizontal" - }, - "elements": [ - { - "name": "Cube", - "from": [1, 1, 0], - "to": [15, 2, 3], - "faces": { - "north": {"uv": [1, 14, 15, 15], "texture": "#3"}, - "east": {"uv": [0, 12, 1, 15], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [0, 13, 14, 14], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [0, 12, 1, 15], "rotation": 90, "texture": "#belt_funnel"}, - "up": {"uv": [0, 12, 14, 15], "rotation": 180, "texture": "#belt_funnel"}, - "down": {"uv": [0, 12, 14, 15], "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [1.1, 1.1, -1], - "to": [14.9, 2, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 5]}, - "faces": { - "north": {"uv": [1, 14, 15, 15], "texture": "#3"}, - "east": {"uv": [0, 15, 1, 16], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [0, 13, 14, 14], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [0, 15, 1, 16], "rotation": 90, "texture": "#belt_funnel"}, - "up": {"uv": [0, 12, 14, 13], "rotation": 180, "texture": "#belt_funnel"}, - "down": {"uv": [0, 15, 14, 16], "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [11, 14, 0], - "to": [15, 15, 3], - "faces": { - "north": {"uv": [11, 1, 15, 2], "texture": "#3"}, - "east": {"uv": [13, 12, 14, 15], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [10, 0, 14, 1], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [13, 12, 14, 15], "rotation": 90, "texture": "#belt_funnel"}, - "up": {"uv": [0, 12, 4, 15], "rotation": 180, "texture": "#belt_funnel"}, - "down": {"uv": [0, 12, 4, 15], "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [11, 14, -1], - "to": [14.9, 14.9, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 5]}, - "faces": { - "north": {"uv": [11, 1, 15, 2], "texture": "#3"}, - "east": {"uv": [13, 15, 14, 16], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [10, 0, 14, 1], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [13, 12, 14, 13], "rotation": 90, "texture": "#belt_funnel"}, - "up": {"uv": [0, 15, 4, 16], "rotation": 180, "texture": "#belt_funnel"}, - "down": {"uv": [0, 12, 4, 13], "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [1, 14, 0], - "to": [5, 15, 3], - "faces": { - "north": {"uv": [1, 1, 5, 2], "texture": "#3"}, - "east": {"uv": [13, 12, 14, 15], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [0, 0, 4, 1], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [13, 12, 14, 15], "rotation": 90, "texture": "#belt_funnel"}, - "up": {"uv": [10, 12, 14, 15], "rotation": 180, "texture": "#belt_funnel"}, - "down": {"uv": [0, 12, 4, 15], "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [1.1, 14, -1], - "to": [5, 14.9, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 5]}, - "faces": { - "north": {"uv": [1, 1, 5, 2], "texture": "#3"}, - "east": {"uv": [13, 12, 14, 13], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [0, 0, 4, 1], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [13, 15, 14, 16], "rotation": 90, "texture": "#belt_funnel"}, - "up": {"uv": [10, 15, 14, 16], "rotation": 180, "texture": "#belt_funnel"}, - "down": {"uv": [0, 12, 4, 13], "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [1, 2, 0], - "to": [2, 14, 3], - "faces": { - "north": {"uv": [14, 2, 15, 14], "texture": "#3"}, - "east": {"uv": [1, 12, 13, 15], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [0, 1, 1, 13], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [1, 12, 13, 15], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [1.1, 2, -1], - "to": [2, 14, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 5]}, - "faces": { - "north": {"uv": [14, 2, 15, 14], "texture": "#3"}, - "east": {"uv": [1, 12, 13, 13], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [0, 1, 1, 13], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [1, 15, 13, 16], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [14, 2, 0], - "to": [15, 14, 3], - "faces": { - "north": {"uv": [1, 2, 2, 14], "texture": "#3"}, - "east": {"uv": [1, 12, 13, 15], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [13, 1, 14, 13], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [1, 12, 13, 15], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Cube", - "from": [14, 2, -1], - "to": [14.9, 14, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 5]}, - "faces": { - "north": {"uv": [1, 2, 2, 14], "texture": "#3"}, - "east": {"uv": [1, 15, 13, 16], "rotation": 270, "texture": "#belt_funnel"}, - "south": {"uv": [13, 1, 14, 13], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [1, 12, 13, 13], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Inner", - "from": [2, 2, -1], - "to": [14, 14, 2], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#3"}, - "east": {"uv": [12, 2, 16, 14], "texture": "#3"}, - "south": {"uv": [1, 1, 13, 13], "texture": "#package_funnel_horizontal"}, - "west": {"uv": [0, 2, 4, 14], "texture": "#3"}, - "up": {"uv": [2, 0, 14, 4], "texture": "#3"}, - "down": {"uv": [2, 12, 14, 16], "texture": "#3"} - } - }, - { - "name": "Inner", - "from": [2.1, 2.1, -2], - "to": [13.9, 13.9, -1], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#brass_casing"}, - "east": {"uv": [12, 2, 13, 14], "texture": "#3"}, - "west": {"uv": [0, 2, 1, 14], "texture": "#3"}, - "up": {"uv": [2, 0, 14, 1], "texture": "#3"}, - "down": {"uv": [2, 12, 14, 13], "texture": "#3"} - } - }, - { - "name": "Filter", - "from": [5, 12, 0], - "to": [11, 16, 3], - "faces": { - "north": {"uv": [6, 8, 12, 12], "texture": "#4"}, - "east": {"uv": [3, 0, 6, 4], "rotation": 180, "texture": "#4"}, - "south": {"uv": [6, 8, 12, 12], "texture": "#4"}, - "west": {"uv": [3, 0, 6, 4], "texture": "#4"}, - "up": {"uv": [6, 8, 12, 11], "texture": "#4"}, - "down": {"uv": [6, 8, 12, 11], "texture": "#4"} - } - }, - { - "name": "Filter", - "from": [5, 14, -1], - "to": [11, 14.9, 0], - "faces": { - "north": {"uv": [6, 8, 12, 9], "texture": "#4"}, - "east": {"uv": [2, 0, 3, 1], "rotation": 180, "texture": "#4"}, - "south": {"uv": [6, 8, 12, 9], "texture": "#4"}, - "west": {"uv": [2, 0, 3, 1], "texture": "#4"}, - "up": {"uv": [6, 8, 12, 9], "texture": "#4"}, - "down": {"uv": [6, 8, 12, 9], "texture": "#4"} - } - } - ], - "display": { - "ground": { - "translation": [0, 3, 2], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.6, -1, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 0, -7], - "scale": [0.625, 0.625, 0.625] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/horizontal_belt.json b/src/main/resources/assets/create/models/block/funnel/horizontal_belt.json deleted file mode 100644 index 5ae900fb7..000000000 --- a/src/main/resources/assets/create/models/block/funnel/horizontal_belt.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/extractor", - "particle": "create:block/belt_funnel", - "belt_funnel": "create:block/belt_funnel", - "brass_casing": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Bottom", - "from": [3, -4.1, -1], - "to": [13, -3.1, 5], - "faces": { - "north": {"uv": [0, 11, 10, 12], "texture": "#belt_funnel"}, - "east": {"uv": [10, 11, 16, 12], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [0, 11, 10, 12], "texture": "#belt_funnel"}, - "west": {"uv": [10, 11, 16, 12], "texture": "#belt_funnel"}, - "up": {"uv": [10, 0, 16, 13], "rotation": 90, "texture": "#belt_funnel"}, - "down": {"uv": [10, 1, 16, 11], "rotation": 270, "texture": "#belt_funnel"} - } - }, - { - "name": "Top", - "from": [3, 7, -1], - "to": [13, 8, 5], - "faces": { - "north": {"uv": [0, 0, 10, 1], "texture": "#belt_funnel"}, - "east": {"uv": [10, 0, 16, 1], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [0, 0, 10, 1], "texture": "#belt_funnel"}, - "west": {"uv": [10, 0, 16, 1], "texture": "#belt_funnel"}, - "up": {"uv": [10, 1, 16, 11], "rotation": 90, "texture": "#belt_funnel"}, - "down": {"uv": [10, 0, 16, 13], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Side", - "from": [3, -3.1, -1], - "to": [4, 7, 5], - "faces": { - "north": {"uv": [9, 1, 10, 11.1], "texture": "#belt_funnel"}, - "east": {"uv": [10, 1, 16, 11], "texture": "#belt_funnel"}, - "south": {"uv": [0, 1, 1, 11.1], "texture": "#belt_funnel"}, - "west": {"uv": [10, 1, 16, 11], "texture": "#belt_funnel"} - } - }, - { - "name": "Center", - "from": [4, -3.1, -1], - "to": [12, 7, 4], - "faces": { - "north": {"uv": [4, 3, 12, 13.1], "texture": "#brass_casing"}, - "east": {"uv": [9, 3, 10, 9], "rotation": 90, "texture": "#belt_funnel"}, - "south": {"uv": [1, 1, 9, 11.1], "texture": "#belt_funnel"}, - "west": {"uv": [0, 2, 1, 8], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Top", - "from": [5, 8, 0], - "to": [11, 9, 5], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 0]}, - "faces": { - "north": {"uv": [6, 8, 12, 9], "texture": "#2"}, - "east": {"uv": [11, 1, 16, 2], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [6, 9, 12, 10], "texture": "#2"}, - "west": {"uv": [11, 3, 16, 4], "texture": "#belt_funnel"}, - "up": {"uv": [6, 10, 12, 15], "texture": "#2"}, - "down": {"uv": [1, 8, 9, 13], "texture": "#belt_funnel"} - } - }, - { - "name": "Ramp", - "from": [3.9, -3.1, -7.1], - "to": [12.1, 4, -1], - "rotation": {"angle": 0, "axis": "x", "origin": [8, -4, -1]}, - "faces": { - "north": {"uv": [4, 0, 12.2, 7.1], "rotation": 180, "texture": "#brass_casing"}, - "east": {"uv": [2, 9, 8, 16], "texture": "#brass_casing"}, - "west": {"uv": [8, 9, 14, 16], "texture": "#brass_casing"}, - "up": {"uv": [4, 5, 12.2, 11], "rotation": 180, "texture": "#brass_casing"}, - "down": {"uv": [4, 5, 12.2, 11], "texture": "#brass_casing"} - } - }, - { - "name": "Ramp", - "from": [3.9, 4, -9.1], - "to": [12.1, 7.1, -1], - "rotation": {"angle": 0, "axis": "x", "origin": [8, -4, -1]}, - "faces": { - "north": {"uv": [4, 0, 12.2, 3], "texture": "#brass_casing"}, - "east": {"uv": [4, 0, 12, 3], "texture": "#brass_casing"}, - "west": {"uv": [4, 0, 12, 3], "texture": "#brass_casing"}, - "up": {"uv": [4, 4, 12, 12], "rotation": 180, "texture": "#brass_casing"}, - "down": {"uv": [4, 5, 12.2, 13], "texture": "#brass_casing"} - } - }, - { - "name": "Side", - "from": [12, -3.1, -1], - "to": [13, 7, 5], - "faces": { - "north": {"uv": [0, 1, 1, 11.1], "texture": "#belt_funnel"}, - "east": {"uv": [10, 1, 16, 11], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [9, 1, 10, 11.1], "texture": "#belt_funnel"}, - "west": {"uv": [10, 1, 16, 11], "texture": "#belt_funnel"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [-0.5, 3.25, 2.25], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [-0.5, 3.25, 2.25], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 0, 2.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, 1.75, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 3.5, -4.5], - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/item.json b/src/main/resources/assets/create/models/block/funnel/item.json index 86da5a656..e6d6c804e 100644 --- a/src/main/resources/assets/create/models/block/funnel/item.json +++ b/src/main/resources/assets/create/models/block/funnel/item.json @@ -1,118 +1,208 @@ { "credit": "Made with Blockbench", + "parent": "block/block", "textures": { - "2": "create:block/extractor", - "particle": "create:block/belt_funnel", - "belt_funnel": "create:block/belt_funnel", - "brass_casing": "create:block/brass_casing" + "2": "create:block/brass_funnel_back", + "3": "create:block/brass_funnel", + "4": "create:block/brass_funnel_plating", + "particle": "create:block/brass_block" }, "elements": [ { - "name": "Bottom", - "from": [3, -4.1, -1], - "to": [13, -3.1, 5], + "name": "RightWall", + "from": [0, 10, 0], + "to": [2, 16, 16], "faces": { - "north": {"uv": [0, 11, 10, 12], "texture": "#belt_funnel"}, - "east": {"uv": [10, 11, 16, 12], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [0, 11, 10, 12], "texture": "#belt_funnel"}, - "west": {"uv": [10, 11, 16, 12], "texture": "#belt_funnel"}, - "up": {"uv": [10, 0, 16, 13], "rotation": 90, "texture": "#belt_funnel"}, - "down": {"uv": [10, 1, 16, 11], "rotation": 270, "texture": "#belt_funnel"} + "north": {"uv": [14, 0, 16, 6], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 6], "texture": "#3"}, + "south": {"uv": [0, 0, 2, 6], "texture": "#3"}, + "west": {"uv": [0, 0, 16, 6], "texture": "#3"}, + "up": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#particle"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#particle"} + } + }, + { + "name": "LeftWall", + "from": [14, 10, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 2, 6], "texture": "#3"}, + "east": {"uv": [0, 0, 16, 6], "texture": "#3"}, + "south": {"uv": [14, 0, 16, 6], "texture": "#3"}, + "west": {"uv": [0, 0, 16, 6], "texture": "#3"}, + "up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#particle"}, + "down": {"uv": [14, 0, 16, 16], "texture": "#particle"} } }, { "name": "Top", - "from": [3, 7, -1], - "to": [13, 8, 5], + "from": [2, 10, 14], + "to": [14, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]}, "faces": { - "north": {"uv": [0, 0, 10, 1], "texture": "#belt_funnel"}, - "east": {"uv": [10, 0, 16, 1], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [0, 0, 10, 1], "texture": "#belt_funnel"}, - "west": {"uv": [10, 0, 16, 1], "texture": "#belt_funnel"}, - "up": {"uv": [10, 1, 16, 11], "rotation": 90, "texture": "#belt_funnel"}, - "down": {"uv": [10, 0, 16, 13], "rotation": 90, "texture": "#belt_funnel"} - } - }, - { - "name": "Side", - "from": [3, -3.1, -1], - "to": [4, 7, 5], - "faces": { - "north": {"uv": [9, 1, 10, 11.1], "texture": "#belt_funnel"}, - "east": {"uv": [10, 1, 16, 11], "texture": "#belt_funnel"}, - "south": {"uv": [0, 1, 1, 11.1], "texture": "#belt_funnel"}, - "west": {"uv": [10, 1, 16, 11], "texture": "#belt_funnel"} - } - }, - { - "name": "Center", - "from": [4, -3.1, -1], - "to": [12, 7, 4], - "faces": { - "north": {"uv": [4, 3, 12, 13.1], "texture": "#brass_casing"}, - "east": {"uv": [9, 3, 10, 9], "rotation": 90, "texture": "#belt_funnel"}, - "south": {"uv": [1, 1, 9, 11.1], "texture": "#belt_funnel"}, - "west": {"uv": [0, 2, 1, 8], "rotation": 90, "texture": "#belt_funnel"} + "north": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "south": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#particle"}, + "down": {"uv": [2, 0, 14, 2], "texture": "#particle"} } }, { "name": "Top", - "from": [5, 8, 0], - "to": [11, 9, 5], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 0]}, + "from": [2, 10, 0], + "to": [14, 16, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]}, "faces": { - "north": {"uv": [6, 8, 12, 9], "texture": "#2"}, - "east": {"uv": [11, 1, 16, 2], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [6, 9, 12, 10], "texture": "#2"}, - "west": {"uv": [11, 3, 16, 4], "texture": "#belt_funnel"}, - "up": {"uv": [6, 10, 12, 15], "texture": "#2"}, - "down": {"uv": [1, 8, 9, 13], "texture": "#belt_funnel"} + "north": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "south": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#particle"}, + "down": {"uv": [2, 14, 14, 16], "texture": "#particle"} } }, { - "name": "Side", - "from": [12, -3.1, -1], - "to": [13, 7, 5], + "name": "F4", + "from": [11, 14, 1.5], + "to": [14, 15, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]}, "faces": { - "north": {"uv": [0, 1, 1, 11.1], "texture": "#belt_funnel"}, - "east": {"uv": [10, 1, 16, 11], "rotation": 180, "texture": "#belt_funnel"}, - "south": {"uv": [9, 1, 10, 11.1], "texture": "#belt_funnel"}, - "west": {"uv": [10, 1, 16, 11], "texture": "#belt_funnel"} + "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "F5", + "from": [5, 14, 1.5], + "to": [8, 15, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]}, + "faces": { + "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "F5", + "from": [8, 14, 1.5], + "to": [11, 15, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]}, + "faces": { + "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "F6", + "from": [2, 14, 1.5], + "to": [5, 15, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]}, + "faces": { + "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "BackExtension", + "from": [2, 2, 2], + "to": [14, 6, 14], + "faces": { + "north": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, + "east": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, + "south": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, + "west": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, + "down": {"uv": [9, 0.5, 15, 6.5], "texture": "#2"} + } + }, + { + "name": "MidExtension", + "from": [1, 6, 1], + "to": [15, 10, 15], + "faces": { + "north": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, + "east": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, + "south": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, + "west": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 9, 7, 16], "rotation": 180, "texture": "#2"}, + "down": {"uv": [8.5, 0, 15.5, 7], "texture": "#2"} + } + }, + { + "name": "Back", + "from": [3, -2, 3], + "to": [13, 2, 13], + "faces": { + "north": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, + "east": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, + "south": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, + "west": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, + "down": {"uv": [9.5, 11, 14.5, 16], "texture": "#4"} } } ], "display": { "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [-0.5, 3.25, 2.25], + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], "scale": [0.375, 0.375, 0.375] }, "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [-0.5, 3.25, 2.25], + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], "scale": [0.375, 0.375, 0.375] }, "firstperson_righthand": { - "rotation": [0, -55, 0], + "rotation": [0, 45, 0], "scale": [0.4, 0.4, 0.4] }, "firstperson_lefthand": { - "rotation": [0, -55, 0], + "rotation": [0, 225, 0], "scale": [0.4, 0.4, 0.4] }, "ground": { - "translation": [0, 0, 2.25], + "translation": [0, 3, 0], "scale": [0.25, 0.25, 0.25] }, "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, 1.75, 0], + "rotation": [30, 225, 0], "scale": [0.625, 0.625, 0.625] }, + "head": { + "rotation": [0, 90, 0] + }, "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 3.5, -4.5], "scale": [0.5, 0.5, 0.5] } - } + }, + "groups": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [4, 5, 6, 7] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [8, 9] + }, + { + "name": "DELETABLEEXTENSION", + "origin": [9, -4, 8], + "children": [] + }, + { + "name": "DELETABLEEXTESNIONMID", + "origin": [35, 12, 4], + "children": [] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [10] + } + ] + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/vertical.json b/src/main/resources/assets/create/models/block/funnel/vertical.json deleted file mode 100644 index d5de931ce..000000000 --- a/src/main/resources/assets/create/models/block/funnel/vertical.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/funnel/horizontal", - "textures": { - "particle": "create:block/funnel_vertical", - "package_funnel_horizontal": "create:block/funnel_vertical" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reality_funnel/block_powered.json b/src/main/resources/assets/create/models/block/reality_funnel/block_powered.json deleted file mode 100644 index de55e8ac2..000000000 --- a/src/main/resources/assets/create/models/block/reality_funnel/block_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/reality_funnel/block", - "textures": { - "3": "create:block/funnel_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reality_funnel/item.json b/src/main/resources/assets/create/models/block/reality_funnel/item.json deleted file mode 100644 index df9190407..000000000 --- a/src/main/resources/assets/create/models/block/reality_funnel/item.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/funnel_back", - "3": "create:block/funnel_off", - "4": "create:block/funnel_plating", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "RightWall", - "from": [0, 10, 0], - "to": [2, 16, 16], - "faces": { - "north": {"uv": [14, 0, 16, 6], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 6], "texture": "#3"}, - "south": {"uv": [0, 0, 2, 6], "texture": "#3"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#3"}, - "up": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#particle"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 10, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 2, 6], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 6], "texture": "#3"}, - "south": {"uv": [14, 0, 16, 6], "texture": "#3"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#3"}, - "up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#particle"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#particle"} - } - }, - { - "name": "Top", - "from": [2, 10, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 6], "texture": "#3"}, - "south": {"uv": [2, 0, 14, 6], "texture": "#3"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#particle"}, - "down": {"uv": [2, 0, 14, 2], "texture": "#particle"} - } - }, - { - "name": "Top", - "from": [2, 10, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 6], "texture": "#3"}, - "south": {"uv": [2, 0, 14, 6], "texture": "#3"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#particle"}, - "down": {"uv": [2, 14, 14, 16], "texture": "#particle"} - } - }, - { - "name": "F4", - "from": [11, 14, 1.5], - "to": [14, 15, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]}, - "faces": { - "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F5", - "from": [5, 14, 1.5], - "to": [8, 15, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]}, - "faces": { - "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F5", - "from": [8, 14, 1.5], - "to": [11, 15, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]}, - "faces": { - "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "F6", - "from": [2, 14, 1.5], - "to": [5, 15, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]}, - "faces": { - "up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "BackExtension", - "from": [2, 2, 2], - "to": [14, 6, 14], - "faces": { - "north": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, - "west": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"}, - "down": {"uv": [9, 0.5, 15, 6.5], "texture": "#2"} - } - }, - { - "name": "MidExtension", - "from": [1, 6, 1], - "to": [15, 10, 15], - "faces": { - "north": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, - "south": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, - "west": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 9, 7, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [8.5, 0, 15.5, 7], "texture": "#2"} - } - }, - { - "name": "Back", - "from": [3, -2, 3], - "to": [13, 2, 13], - "faces": { - "north": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, - "east": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, - "south": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, - "west": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, - "down": {"uv": [9.5, 11, 14.5, 16], "texture": "#4"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, - { - "name": "Flap", - "origin": [8, 8, 8], - "children": [4, 5, 6, 7] - } - ] - }, - { - "name": "Extension", - "origin": [9, -4, 8], - "children": [8, 9] - }, - { - "name": "DELETABLEEXTENSION", - "origin": [9, -4, 8], - "children": [] - }, - { - "name": "DELETABLEEXTESNIONMID", - "origin": [35, 12, 4], - "children": [] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [10] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_belt.png b/src/main/resources/assets/create/textures/block/andesite_casing_belt.png index e4f1303ecc8832a74cc18cdcde3e87f51be9a6a9..f8b25b8c73489b4bb973d3576d985cb4ac4473f8 100644 GIT binary patch delta 21 ccmX@jeVTiMC)Xhc2EId#q8eTe8-puY0Zpa`s{jB1 delta 21 dcmX@jeVTiMC)Z&H2EN0L$MaXDYz(eo1prp(2j~C* diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel.png b/src/main/resources/assets/create/textures/block/andesite_funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..9d4f35ea9400acc78876ff998f5d56bc71edebf9 GIT binary patch literal 439 zcmV;o0Z9IdP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940Zd6mK~y+T#Z${l z12GgmnRjN|w9`U|K}1nO5d4GwhAs-O3Vwy4h;Cf>&f^ykr0=Wx0dqDPNE5ZZJ^!r^Hmw;CYS~E|)9J=MtmQ zNay=|2Rcq(C*V;7He125ZOn27cG}%lPcQG-N}5>YIXu_J@NtY-@M7=4b#2&|!tnV6 zX-i_yP*o!N&DNGdlnP002ovPDHLkV1i>(!j%93 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png b/src/main/resources/assets/create/textures/block/andesite_funnel_back.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3c352edbe68de83130676763ea8879a540d606 GIT binary patch literal 978 zcmV;@11Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D17}G@K~z{r?Uv7L z6G0Tm-)`Ep`Pl?hqc$lhRIEru4}##)i>L+hRuB&bJ$SPR|E|_+4|-C2DHds^Qi^V4 z(kAV0^J_P0k~MF#Z<*a@H`%S=#SaW`-t4@YH{aQrU18x~MvsPqa4>ci+-S905DW$l zuTQ$Y2Q{_D>P}<0#jSji1Q7#i5FQM40-xOoAFw!#r!lb24SO6Sym@*{-&B&!@k%Zs z!}ms-)p6ia$Dz2jwKYMc0sO$ndKriBD;oBn@jn64?QI_h#`0xU`2M2(jQYjzIOo~| zoRo?e_?UAg;6-*GK298Vd%1xZ3hn27os z`BjwRc2cp#P+z{DODHTZBkVI@q#X7zK@g0ZKZK=MOL`)ifWq$rghC;s8DLPGs;Z_RFR%Aj(FUz~3UXb8_n-GInT)zH zVfo#%ekV5%iC6-Zs=}-j_#D~T+=k-%3hdO95Dtd{4!^e#1HkYIOb7do8|#9}chl}d0uDq9lzxP9cB04XFa zzF0K1I#DV{?d;yhr((=jPO8jy+a0J@t1JPufj~g-B_vQn53<@wim(K5;=I&97Q>jy zX5iB0G!*kis8lKtkH;;R5}F+=SQPoNRUVjth%Z%Ml9qVTgl)7wUsJwq(t0-W3lN`hy6eB8A5gb4Jp*cBl} zJnx96Y0SD|?_-~oPY9JDi{QivDME;f+&|lY13n?XP#amQBO>mrS4cH4*cBms{SWw2 zjaJUD9`Tg`DL`MlLAKfK->OcQFcZKxbQshJ6`-wivfXZ%C4zR4Pq2%Kn4X?CYG+BM zQWp8}aw70_*nPTJ5WFF4wVL5s{}W6F=;Ck#lf@)(l~d}jIdNJnIQp1~-Jfdh86z4A z%w)67LGX+YDg=HDh`I0)%m$?1&DLM7S04c2518gVB{8pi+5i9m07*qoM6N<$f_v+| A*8l(j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png new file mode 100644 index 0000000000000000000000000000000000000000..dd858ec5ec5d29ed81260db619549e91e56ad2e2 GIT binary patch literal 1403 zcmV->1%&#EP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TN6Im5MaioyA$JNG^3ea)0?rp3iYgE#*tJov<-2`Uz6DVLk1OeRCqg&8W&&eQzd0ykj> z=P))5gWByj_rro2Fuh)G{t+KV!cnR>4(X_QL=*Wmj|DgbfVjuQSBFN2fq=!t&i4;o=KopA}p&_EmTRAc!&4{oC_(YBXyc zdIF50e%Svkw7`FWv>*iOr9s*^rt{oO81gwM45bYV4^#?!gAk;bC;*@dF^!x9#0ig& zk9j@}JWwf|4TOppa%_K{5g{t)fL5!;Ch$6WVHgR4N zwY61Rd9p&mV2~n_2xaqG)=qCK@3+=3y>l%<>IFgLB&^iB-DL*d332ZE+OM?y<1+sM z49vYdNAJD!HpL^VPSmR0p9Xy&KweizO zPoFuAmv~**C`<<*16CR(+S#d5G8y6jdY~4O7{t)@%i;t2xzm7q(ge5z(@Cnw|8wV4 z?wNrCS+|`&1~7*@fzn3DnNO=L5C%>B3wPNEFnFD_$iA%K|MtFXf=i!Vax2nab>A6v zLRCjJ7U6z>ug1O1jmw{2wwui+PlSnBJf?oO=k_4{;JXJ#zv_4M)>k$n1N+X>K!D(H z%`T7$;)TKmUWBSZ1gbL<20PBV?1Xv&{lNSEfIGtYps%ZY-`rznk?z?CAi<`ZAjHsK zym-bxLHxgtct3bOCcmN(vXfKOoqlpsy|(gQuPcG6a|*zA{kXsQ@kLvOoIA&vyLayX zL+zDHnOi^fu0z9|2f!uNJ~Glt3nwRSIy!3b^Q@&zVmc00-K&xnijm(mSUUjjLG6N4 zX@h*GuVc!?LyCq%Dw)-lU>;r{JC|`zcEA)77OUUip{+`d&X2|ESmpW=pN~p^>{23X zsj*2upI52Zrc(KUKKSq&Uj};1_58wIA0G%hqi%q%TMYw#lY)N5VKPW#qfrW3J{2nJ zfIq-{iKxo`N}7;0(&c!1xdsM(VGCWi8qQ2)C>&H#KnA4~VM@hAlp0M^F&C$7I;x~M z=&)@lvjq4D0!b=@L0{NHmoMMG=y-#)ZljBC6 z4qkPqV@cHlFf_;uTj-jwSD_H0%=;hFjH8ycI)KX)&Sm_pmr!pw2@u<@X38xgLNRbB|Ngnv+>0>t+=(z#w@Oo)j6M&HJZ~{mNA^z=!ZT5@h{{p<6^(f%j zhF>V+qCEiTQ1T^Yp+PWcB7OGO0-#?#2m}J0s1W0F2cF#v{e=xi5UR?3$WnIDnFTyj z3(ycU1(iP0ph9q)N~Q@#1Caf!st;3BZ}J)dErKbL3eevc&zGS9zwzY_`!CVO^*N38G`9c%002ov JPDHLkV1h5wkSqWI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png b/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png new file mode 100644 index 0000000000000000000000000000000000000000..4207c9e969d575404dd85d331a9fee30233fbdbb GIT binary patch literal 467 zcmV;^0WAKBP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0cc4?K~y+T#gn~C z13?sp&up^Uo&2o%fem7zog&y+=QXqlSOt6o!9q|(3&kRpVB;GIK82+g0nu7*z8@QNNT*WhO9i%FTT$)LZ!A@d7)ptZ zZR7Pl#NOEz?pseI^WE(w7Rw%nLy1AW!mdEccWVvIiX@Nqdu%-p58P_zH zPM#8_Lz9|bdQWCLrz<-?JuxqEb9u}&4YpNVRyz5v=%M>1W}b#c$rqf=T+?6&hexIb zN_N(1u=-A2Q7D?ppfsduNGFXcHTo3{j4@1V)3A~{H~)PB@C$j(*Y$~()`S26002ov JPDHLkV1l0T#B~4w literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_push.png b/src/main/resources/assets/create/textures/block/andesite_funnel_push.png new file mode 100644 index 0000000000000000000000000000000000000000..e9648ef746a67e5bafb505063ec0539e1764a978 GIT binary patch literal 455 zcmV;&0XY7NP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940bEH$K~y+T#Z${l z12Ggmndv;zsncl-Ek%5wf*|+@{S93dbW`ys6co{otN8}M#f2L;B5vGiakMC{4~%W6 zjlFRqwF|-7cp%)|lXFAvxr8;g8xjeELV)Nl0_Qwo03k%OgW@S4kL)-MW&9!VF1oPo zj1mq8L-cwAtyW9riwjFCcAh)nULGbJB4e89#u9A3HZLEZUNKz>(2rx-mWAeh8wHPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY3P(vqK~#8N?OJPW z6xS6#`+o0w{dQuoLZjeNNU16zp*~TfDrprd{S``-{AeIiTB(YXR+ZWxh(B#qMHNz8 zDkN03ks=zULa1pW2vXDsb`k~58{-mGU;*10cI{nzpZ4^8XZEh|ZpXFp4n=GDq`P!w{Ou5 z*!=S5DnZQ0_+2}9*~07!13ujIYgveey_C3-rmp5F6-y=ZxLxFO8N8OE&Ul0-b9s=_ zV^3|Six-Dz@XR0ugF%W!B6TyMr{^JIzR&BKlkxsgn6>U>di$-nZDD{DKW=}3d>$8d zw1lZ87NmGnjGB3FiUxQNQ8W~yP|!!=ke42Muu1L>27Dq3z~GO?s29+x3y0sL1HXTh zj_ut+$N#*O&K%f9!yms(|9E#hoj>$DD&=N1!wv`oMy_9xm*?^&>THcrEE=R}*his& zm)e@ca@^M1EayPJI4v{aU@6Va%#_dS0|Zelmgtq;eYA1s2lV4TAJGrr>7&JLm1E!Z>8e&H2Hm|56I`I_}JX60@i|la}62*pV1U=5(YS(@|d~-K@`kQ8XMQH zbPQfg(c1P72L={#?PhYUqIq_p^5q4VDl`BnP8E5B=5fAIWE1e1Yq^5C#`k7(X-Xwi zB7La89ZY~AfGgt}nZbnPqa#(e)zP)Ad}I>D$B0mWib&g%i5>Gim2Su9*$ zsX(}kYk(di>xC0)47I3lNfIlKJ-|KeM#AK0tzMxzLQ`Dw)rXXS{3=9l7`uqDG_2dA65`@cX z(2kAk>AhFKNvGb}BI7TwJxRa)&f{dv81|b0UW}Nohc@N$Az9rAATpFn=05HA#!zec zm7XuZKwo+G`?TU~&(oJS{XoW}Uw?_#J-wOMd}B-HUb|4`x*_q2Or9pvIl7U|P-0}9 zCbI<^zL}P_k+BJ8R7vi$+Z%(KpI*Em*(Jtx4vFW_o|1u-8*7*`?1W>}^P7wnD;}Yf z`*%^86CG&xCAPQjjyPpF)&sGyhelFGag@jxyljiBpV}fHY*$Wxw;&8y{n<5=*eFEV zF95anrtX2s0FcIfW}vGp?!~!2&xborUnz&xjrv1ti2;2LzH>%EP0v06D#W z@^j>jh65Z;h(ePEYL9cV!@&j&(yK|GK5^mzUA%fr)+3==CQq~P>Evp)yE8s7Jqjr+ z{Nd%t|BGJ2AU1XK?7wJmC_x_{JuL(0Y8*b&FZ1OqH{{yBgZ*+0S^z~1fX%~sM#6qt z-WufNCTfdwHOXakYfCd3oY3K(TIlqxd_O|)^7b&rL$1n*asrBL3!w)F_wIJ|KF~zZ ze(n(m2G*?TtHL0-f`LK@9$pOqaUYz9gY16LELs#0zo*KDl-F&h?aiFd>N$kUErLFm zmX zz{*u?sEcDg23`PZBPvL`%J<*_I*L+Fn)SeZ)g+{#s!0W%9yC+g9A~JkraXcHztklQ zr3WDOty{O2&rDd+3j>s0L$cT)E(Q_4Ub6DJisNwwg3IJYO{l8^lKgR`jp_@gw@@ z;FtsBPoE6Sc;Z)w7EF)Iu@-2uSkXI?26sKsB_W}A)k=yrMX9r^gE~6fWkh2UnHAJI z?ned*2}m``cI7EolM47KAHOV_&R18HX2~nCqMu8G3U<;vb!QTb#%b*r*3pKquCF*j zFbIhTW^5RYXeNHP%K(jlRCW> z&?UMP^vaoT3wl;0T{aT!!ev?X=XO$BIJSF0Gg#xIlm8o zdtmMGa!6!pDI2t+*KK&)wrzCc#;5@sz7zCLbpW71z`#u?B=Fz@b5zaCm$k_;pqvi? z6?AjH59gu)_4jdcf;E^!HgASSsH&%YpVB;?J~LGxOcI*c5yMB#YVOX(Pjx zA;&b^56?eY*jNr=yk#0CQ@~ zW5s}a8Y;luq<8%Ejh`9d#O=1Wo_parX{8}j0E%fkgRB^-uK~5||8II>061~Ge{Kc? zzG2EY^-D*y+)VBO+zA8nJ+5{+3vy0y#@#N@1jp{mlww$vJ) z0jet1TVgN)NFU?UNLu{Cc-9az0N?{un!F@5ptdC@8o<(Dxx7sVG(bmHORPLMEUa2$ zuy;uR{N)>TAu%QzfG}v;5|gtf0KFyF(;g8Gz(525GY|$XTVnFtzPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0r*KoK~y+Tg;Kk2 z6G0R`Gdo_#W;a=H;z%wih>+;%04W9kK!=1VC?gSmfj^)DIwT4tprNPW7w95UK_Ud+ zc)gBE;>o@^ch(k25c^1X=e76T*HNF|KB+t1HohJuI6VA`IP5}TFABHr>Jw9 z_yuYdu-4+v-D}vry$h2U1@1k3jWkUW$MJvHk8k#HHp?AJ+tbLE+hRCOp=al|IW0jt zI>9i>&|ULjv_ea3ckj`3miI^&*lyvqOT1-%sO<>)<(s7$*D65JN6-q`G zTVODVp`$36A1}xBteMo`8A$29cpW+j8sRKM)C>) zeuQ{)9hLH6YlZWQqa?}qA1O@RH+cX2K1RnG#-j;SW4-LI)V;MGJAy5yDwq^hA)1l7##zZxk_R3?~Giza+c{egifc;3Jf>bf*9S002ovPDHLkV1ksu3M~Kt diff --git a/src/main/resources/assets/create/textures/block/belt_support_side.png b/src/main/resources/assets/create/textures/block/belt_support_side.png deleted file mode 100644 index f3d919354622b107e56ed9446262a7422aa5142c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TLh zwVm}k^mKnD8fYD`_!mV{v7oot2UdW|oM)4zX$*$WY}r)AM!ySAV@X$s9c;$wDqMV_ zv=twh#4F!~|30;JbGD7dx|-ck5(@z4mn}M>X7gii!2vIYg+Li80yP9ul-PtABw<<9 zbU7Lr>swDl35IS(Ui!`=6|4ws*hD4-xQ*p>U5K~|;9`&D>A}!WK8ISUKw$q`)@~Hy4%{m+p5cVKVb9+M)z&&4EBMx zW`FW-DrXkpUr)j*T^WiJ+RGnX}SitO1Va?h(u5$9o}I zu!DC{nttx^Yy7PV2f8)s<@vTK3$3(PWHReqEhRCdoF)<2%yV#WEtyQ`^msRF3JMIk ms>U_I(EP(!uI3cTbN3BqBPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY3I$0-K~#8N?O9uF z9A_0iv+KQhcb#23v7Ne!-BfNGph;XoA^`$XqzWF2C=wE>gm{ahwg{Do2Sh<>+(%Fz zP@AZ#6bTAMeSz@eHtGwdtwICDjv=w*ICgxgo%nvqu4ivEobSy1>ah>)&6d^!Q8|3rJDFp-8NhWKMVGxBwKIeR5I!(J0A$sQ@ zAu2B~r&ugT&CShpFJ|KA8o)BGh7+Uj7hs?pdDSGCquT!ARM=3oo6WMH5 zj(R3fetQ{uCMUfkx6y^CGNb`Grn#TP3DG?9LwI81RQ%Qs?D)#XTv3M}hJ2)nb z2Lq#%Nt#XSbZ_Fmoa^Zvg~MemBwdJM2?qc3*(TH9KO~EX5E>gFk!x$g#N-T3&CF7F z|6Tc=N@tjtJmpP;-G0*3htzO*5z+ zJ$iIaCJOfohstnj9&37Bd$M-7hGXZ@6gAbkb339tc3WK(VOanV^B``}Qvj5JKC?Ju4V6;uRHQm8F6Yk>2l{ zR~G!-V3QB{{1oBfhJl6q{qu_i1BwRPhxr#P1Uxgt0k;sKeI*10MDSNCI9w|R49)U) zx#kKs5CZP;G5`xuqgZ6~OKVoS08kZ=+GoXMf!c(Dye3+QpZh#o&$FfhFp#x_r-}h; z+gvYFdX57ArGpz=fE*Egbys{U7P1TE4bx!&fe_}dOdeLC77n->fcxZfIdK91GR&_A zdA7Rg*;(2fkJ(oWBbBmts8T^ziR}*z0Er!8$q4{IYZva2X6Zs47q1ES;AdFrMqCj3!SaP$A2Mz zKn8XKKr!IXAxee+zIlRfzx8ACUph^d|2#{TS6`<`I?q%0?_ZQTLGj_nfvjF>Ga3nq z$;1DX$qWZOlQ{F2y|*F~lGIcdUqS{HAl$}=-L$uE7v~xgc{kiKp!ww-+h6UjO197n zswfZHRK-Jzp|Pnn9om18BIQ9g_nfnMFn|CT=Hy3hQP>5L47GK%OD*u~YybHa#PR=w zQw<(D_(j&d#=$V-6d@HctMEX?&*ri$pb%$_mia3IARm~RnUBf=1%x@<1F$0ico2f4f^ripV45rtL(1V`&_|;aX?prAUv+|~swh(_t7uYHB!EgX z686(y-uoLpR9!CF=7Xfyntys|LHJv3KLAM0!5zwIY*MH1J^c-N@%3B%GMC}JK|yV) zNT#0r{60BHIgK8Kt{V&JJ8loiyuBj`K23TNK+}OQEt1|!{QyYu(uW^XEK){rAu#aK z)ovCVr_kkAa|OuT(lXdolU&jQU_vpF$ruiO`^^Cf!u>-t4nGR8xSE~TbC;sW`w_5F zO%{UMMcnlA7QC$M&ZyH57#f+P_O1aLU3Z44{nkLiet-hp1JxuXT^ZkD`Jta(1vLfd z4v}z>VzH1!c-%94Ul$rM@1{qo-En)Ak{oBIX6F_RTx#>IdlQjO+jig6g3tXCchxs!8nU6SGN&#!FvF`)XirC3*nb_AXq(OE3RZb9Qde zn%c8_r)UsD=(sgWoote@3}|rQo*JhgVDO^c7O<9TQUS~>DEdO0caN3mSAv(`XV|~P ztf^2L=lNI@kNVx!)bzOq8DD7JE7v07kZ2vsRExtttgzZ@(hV>D@iTv=>c($t>WJ~$ zTbE^g?PtHU@0^F19=^X82#4)m?R35S8ntz{QAf{p>gu~ey+fUx?6k_jT=zf+-`B=L z@rK;f+IdYL;D(g59Q@EugMeTq3IX07P+Tns(4*j4%7?w(A}bELtXsQi8AJ9QOdoq!8#7)?)!)dT4MtANHaU{aP^3VF>^Ytfrq( zRWY9@xFHs_0!mHqb4zfofd45UL_-BwZ9f4hM86!+EGad;^J`)%!#luZw7+5gy8v3` z*v_&cE8taEMp>f<^?lMQzum$^LuGhmf(1}#U*WwO{RGadm1eM$3=WS|LtVA?y8u0W z_;7WNTswXGv>btFUwGbx4^Nhu-lrr8z!wjf}HbXtRiXoeuBbM^o0QC5ft6+ zvQp76aDml+7f?VdsnSsZv^RV1(&%_{Q9}cQ9lSd(_r;>~4Gk}S>$&6f_O&kaH-Eos zVmF9B^&RuQjzRtL?;bNT2b7XtilL#AIf?R32b$QIR_+H3-s^I{4g;#80(AFV-P@(m zSYIpF@KM{psII157VseH*WC|Dr}MO{(h?BLQ8ZKlcT)vc13++qYNo_FqkI3#$Dav$ zM*!#k&^7N1tH6op9y8qx0FiQ6gmnoLP=ZtN3J`b@^x7|;X94g7-nejU%>qyznZe7kF^7hTp2<>DFAxLx8s@y%G!_6@{RYbd3JuJ8vEc>a&OF@~P-tuk3kZ~< ze;Ft^Ft?~BW*;{!R18opv1~3Unl3aDD7`JQP2&QpB?c`oIRbuZ$*G+Hw41^O+%2&* zYZ?QV;2!F_g3}U{{~H+ImRNmVLi(5C0QPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY3Q$QzK~#8N?O9uF z6z3H_v-g|XHDH@KU_)XqX#+TFL29d3O{J)PNR?EoR3cS(kIZc1$PS-)p? z{y8(}KllHP_UjiPH-~TQwE3YJ0eaRTpHEIH6tqrqd4mjtC=&KL=VN!Wv@sQ?cm5To zXf#TRM1qbTJ4XBV?WOD2d+Cu!8u0{89`FT*cI>4+=D^JiJ^kdjC>ZcjMlZ@lKA)GP zo-2~yUWT44$Z>rtLFYdBfND2H=-rPa6bgkXnM~5zvu7xso}^T&in_aRP*c;6MGN5F zQwPoVo?$YICT*@u(%3|XihK@a`Mo|(WB&YnwqxCwWVNee1g&wlhoaJ zQ+{W%Ip(EEMbqGSX6V-Kak_eai1GzXNtJ*PCavI>KHz2`ZxksW4>BWpVE{sdO8};6 z%4le)r{3PrL`A4L5&BF(|2BalfHZS6g~aRKhqD7 zye;>@5-J7T+bssdp#V*0va-NTE@#gW#lj&O`GP^QNbnv8G&W6GfrXIP*tm^NGoyvT&tbE*~HesNsiPqugK9AOmtZ4uYnP|!bjaAOOQBZ9B)icjT2vOv)=9R?5xVeZQ0VFha8fSUohPoYo{7x2%+{9;gK ztGhEfNn4T$`$}nKGFFDF6l9f1e_#Met&2!a0QgzEaEB~wH*Xe2KoJ%Y06_pPEiKyl z^XIj*XU~@B11w|2ABJ|irNjK~`~NXt{_8u=;B0^)_e@SzFbk-17YulzvsL)`FYFJ> zKqdeb1MV84Quyzihv?c{KPCUUqg4Ix6I6Zib=ul-in{;!qRa`(4>t~E^-7!ZSWrwJ z{y#O9<6vhJSN@WFt72g(O=a;FWIzGJZED;^Tk1D*tr3%V!ySW~U(S*K>NZxhg;r5j zG;C9q57`Wjrn9tX$8L&6Lu~E^XYpVF0WQMDk4jO<0w{)B+uLL>@ak)yeh%XJ|H0V} z?%Vwp*1X2SFz0MSsuI@50}(%8$g_aLTrpbauLOX4U~FP0DhHKI%>k7?fSUDeRR#0D z(mNIq;c5>+MgZ_21V;tsCRV^SSs;dNheIJBjf`dKsjq*-37%?4naNn2Cbf$Mu#=2M z{Pef?{y`7bM5WripY+WMFHlXGmR(Sy)+;~x604bjP@Iy+(0t6QV10P-N zW}$Hj9krS(K+%?#!KOOJTUr22Ck?3dAbW02aq`b+i$6yP4%O+wPu$#s?=`q@>mr{LNl z770-z5tay#dnWJdLIdXA^w?^*UmKw*jx*`W>3asQ^$d*9OOH7$zT?bkZC8Ctju=1M zyF&)H+Fp7Q02T%b!@tpVQ2D;`;dRvTaLNjTTo8@kNeh$E5-df<3jo#uL4tO^-K1Bu z3W`3?fi_hYEjci^5IwN#+2_nNCr)ZdjvOHjH@x&x3L~{4r7xv@H88gjJpgTc7p~x?m;ae*yS8Ud zZQis&GzcNIca2jAnUpAZG_`uI2;ivEiA^hrQh*FBJV;C`IoJ201vfDaWD# zPH!QqiU-+Gf|BO&8zT`9NTHPC>o~_f04ga2I)&v}fR`Q`oX>~7C`G>%I2@v=sb2Re z`}t$MutzDC+DhT@7D`07Qr(8_Ts3Xy&BzYgxox*iF&ogpV)_Z|t7hs1H^hP#K&9z@ zN`kO}@ri4kYumZByhiEt4a#Qw>F)FmPK{kOG}1-4Mmy~ zihe$zSyE|w=NBwseR4bPXq@>jfEGE@Sw3t9yqfAbYt*3L&pPC{+x*Z_85$mA0o2=9 zI5(r8z;(6K3^K{U&~0k0ud#lYpob6dt*Mo3M~@zrBk=4C&ztb!@e0%Xlmr2o?_$0S z0615WbAF7qNt(Z(pfDGGDS&wdMR&WbQuK}s0E_)Dpny_Rm7@S?uU@}NBe$n!H8ddD zft$DGzC?Vcq2Z-(IeC!YzSL>{?w=P;WP|vV-#6cDAJBI`bHKzLP)T~(3=IxXOO$Wk z)y%%Ma6e$+R;TlI7*Gurpu5lN-p+-lhB~o^k6J&W`r4>0;C|9CyC0Cv7HMO(B_M1^ z(NF>0O%+%T0KoyOnUds+?)?iNe&9Yiz_^Pv#@$w71MS;t0 ziOp{>D**0~(%rp-azsmQ{EqI7(Xk8{N!CWF)>TWYJu0#r*Z5(-j0GTRDp4RfQE zmIag=nDb)A3&34@x-Fp8SQ8cy44{7*EIBYYt0iV1S1eQvP%W{1p&*(rH4rGhEwNSO z0;(kjEzdcEerd_6OaR(d;R5cKSe7-70ZVWXbzQ+}iOK&J3~x)Up*|)3%Se#@-ZgLy zbAY=gwrYYPx<6=lK?uoYxa7bbzJ0pCSgo4v@UmNCt3?37vRYy*T>#}`)x?11;(-9{ zm literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel_horizontal.png b/src/main/resources/assets/create/textures/block/funnel_horizontal.png deleted file mode 100644 index 90f2019bc7b79b25f4e48cf5aed28a090794795b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~8pJ(a978PpuTI|Yci2GS*!lkkoa?%@o~lYb z^xehiEUsoIR(4F!r-SzhL(Z8sJsx|Q4U8NZ6=k*`G~8J%rKqxCLg)OFU+*UU*eqO| z_?%suF>B4|z_raLbJbn%Jn0pAsVjBq-!nz$)b#4+g2GZyar@wDj5VQ`=NYqk6-Gox zwH^GXDS6=JyQ&kLbT|~#t}T9;wSqyXPwm)@_^U6TPBn9{2t4xrpLR);*`MI%IQ6x= zPaW7LA+*-iLvy8j-K^yW@m0G7Ke1Qr+MOr&Cr_^4Lyev1)@R*}lPjKe2|oF59)B*j zqDMP>R{jJHvtY$E$H_`L^~>d_ge=f1f35bQmO(LMvB#_eok9*EIvfjlt8^&t;ucLK6Tg!IsDX diff --git a/src/main/resources/assets/create/textures/block/funnel_vertical.png b/src/main/resources/assets/create/textures/block/funnel_vertical.png deleted file mode 100644 index 25726f403654383ceffeb90f3fa07c0b0d166e47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940We8KK~y+TrIW!< z!!Qhnovc;2vJJFH+i_=3+&Cg}K|M7h_=I zj^P%oZRtG*X~;clSowpjDnAg<^nDx{4mpSRfVbU;Bp%y!^1D$BjUi`~td=vrK|*eH za#B$P=?DW+L#`o=894a{zd;RTt8lISC2E?ZfvISn$tgw9NGDa|wd(^PdJ3kwp%;Vj9D2tNH!uXHr zNPR!hWMZO%dL{$zAX|98n9=6?g^Okw;>Y+W{&^0Fz5#ZGk+1suF!BHZ002ovPDHLk FV1i84uSoy^ diff --git a/src/main/resources/data/create/recipes/crafting_shaped/logistics/belt_tunnel.json b/src/main/resources/data/create/recipes/crafting_shaped/logistics/belt_tunnel.json deleted file mode 100644 index c428b7c2b..000000000 --- a/src/main/resources/data/create/recipes/crafting_shaped/logistics/belt_tunnel.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "crafting_shaped", - "pattern": [ - "BBB", - "PAP" - ], - "key": { - "A": { - "item": "minecraft:dried_kelp" - }, - "P": { - "tag": "forge:plates/brass" - }, - "B": { - "tag": "forge:ingots/brass" - } - }, - "result": { - "item": "create:belt_tunnel", - "count": 4 - } -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shaped/logistics/extractor.json b/src/main/resources/data/create/recipes/crafting_shaped/logistics/extractor.json deleted file mode 100644 index 793f07cb7..000000000 --- a/src/main/resources/data/create/recipes/crafting_shaped/logistics/extractor.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "S": { - "tag": "forge:plates/brass" - }, - "B": { - "item": "create:electron_tube" - }, - "C": { - "item": "minecraft:dried_kelp" - }, - "I": { - "tag": "minecraft:planks" - } - }, - "result": { - "item": "create:extractor", - "count": 4 - } -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shaped/logistics/funnel.json b/src/main/resources/data/create/recipes/crafting_shaped/logistics/funnel.json deleted file mode 100644 index db043947f..000000000 --- a/src/main/resources/data/create/recipes/crafting_shaped/logistics/funnel.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "crafting_shaped", - "pattern": [ - " B ", - "SCS", - "ICI" - ], - "key": { - "S": { - "tag": "forge:plates/brass" - }, - "B": { - "item": "create:electron_tube" - }, - "C": { - "item": "minecraft:dried_kelp" - }, - "I": { - "tag": "minecraft:planks" - } - }, - "result": { - "item": "create:funnel", - "count": 4 - } -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shaped/logistics/transposer.json b/src/main/resources/data/create/recipes/crafting_shaped/logistics/transposer.json deleted file mode 100644 index 463850124..000000000 --- a/src/main/resources/data/create/recipes/crafting_shaped/logistics/transposer.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "crafting_shaped", - "pattern": [ - "SP" - ], - "key": { - "P": { - "item": "create:funnel" - }, - "S": { - "item": "create:extractor" - } - }, - "result": { - "item": "create:transposer", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shapeless/linked_extractor.json b/src/main/resources/data/create/recipes/crafting_shapeless/linked_extractor.json deleted file mode 100644 index f87471657..000000000 --- a/src/main/resources/data/create/recipes/crafting_shapeless/linked_extractor.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:extractor" - }, - { - "item": "minecraft:redstone_torch" - } - ], - "result": { - "item": "create:linked_extractor", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shapeless/linked_transposer.json b/src/main/resources/data/create/recipes/crafting_shapeless/linked_transposer.json deleted file mode 100644 index 6f652f61d..000000000 --- a/src/main/resources/data/create/recipes/crafting_shapeless/linked_transposer.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:transposer" - }, - { - "item": "minecraft:redstone_torch" - } - ], - "result": { - "item": "create:linked_transposer", - "count": 1 - } -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/crafting_shapeless/transposer.json b/src/main/resources/data/create/recipes/crafting_shapeless/transposer.json deleted file mode 100644 index a2ed2f45f..000000000 --- a/src/main/resources/data/create/recipes/crafting_shapeless/transposer.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:linked_transposer" - } - ], - "result": { - "item": "create:transposer", - "count": 1 - } -} \ No newline at end of file From 596dbbf3c31f319fa50404dc6d88dd4a0b32b9fb Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 8 Jul 2020 11:10:24 +0200 Subject: [PATCH 40/47] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0bc778b47..8e864c398 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Logo

Create
- Patreon - Supported Versions + Patreon + Supported Versions License Discord Curseforge Downloads

@@ -19,7 +19,7 @@ Check out the wiki and in-game Tool-tips for further info on how to use these fe [](https://www.patreon.com/simibubi "Support Us") - Support for Minecraft 1.12: Not planned -- Support for Minecraft 1.15: Porting work is in Progress! +- Support for Minecraft 1.16: Porting efforts will begin soon. - Support for Fabric: Not planned

Find out more about Create on our Project Page

From 279504cccfa41e9afdc3f7becc2f0ea22d21a8a7 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 8 Jul 2020 13:41:55 +0200 Subject: [PATCH 41/47] Tunnel clean-up & QOL - Removed synchronization behaviour of belt tunnels - Belt tunnels can now be placed on non-reinforced belt segments, and will apply the missing casing automatically - Bunch more renames - Small tweaks to the andesite tunnel texture - Mechanical arms can no longer take from belts covered by a tunnel - Belt tunnels can now create a window when directly next to a funnel - Fixed tunnel flaps not being triggered when inserting into a covered belt --- .../java/com/simibubi/create/AllBlocks.java | 16 +-- .../java/com/simibubi/create/AllShapes.java | 6 +- .../com/simibubi/create/AllTileEntities.java | 10 +- .../relays/belt/BeltTileEntity.java | 4 + .../BeltFunnelInteractionHandler.java | 8 +- .../BeltTunnelInteractionHandler.java | 37 +------ .../block/belts/tunnel/BeltTunnelBlock.java | 63 ++++------- .../block/belts/tunnel/BeltTunnelItem.java | 47 ++++++++ .../belts/tunnel/BeltTunnelRenderer.java | 18 --- .../belts/tunnel/BeltTunnelTileEntity.java | 104 +++++++----------- .../block/chute/ChuteTileEntity.java | 12 +- .../AndesiteBeltFunnelBlock.java | 2 +- .../AndesiteChuteFunnelBlock.java | 2 +- .../AndesiteFunnelBlock.java | 4 +- .../BeltFunnelBlock.java | 4 +- .../BeltFunnelGenerator.java | 2 +- .../BrassBeltFunnelBlock.java | 2 +- .../BrassChuteFunnelBlock.java | 2 +- .../BrassFunnelBlock.java | 4 +- .../ChuteFunnelBlock.java | 4 +- .../ChuteFunnelGenerator.java | 2 +- .../FunnelBlock.java} | 34 +++--- .../FunnelFilterSlotPositioning.java | 8 +- .../{realityFunnel => funnel}/FunnelItem.java | 8 +- .../FunnelMovementBehaviour.java | 2 +- .../FunnelRenderer.java} | 10 +- .../FunnelTileEntity.java} | 18 +-- .../HorizontalInteractionFunnelBlock.java | 12 +- .../mechanicalArm/ArmInteractionPoint.java | 16 +-- .../block/redstone/RedstoneLinkBlock.java | 4 +- .../foundation/data/BuilderTransformers.java | 9 +- .../create/textures/block/andesite_tunnel.png | Bin 2738 -> 2735 bytes 32 files changed, 218 insertions(+), 256 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/AndesiteBeltFunnelBlock.java (81%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/AndesiteChuteFunnelBlock.java (81%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/AndesiteFunnelBlock.java (83%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/BeltFunnelBlock.java (96%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/BeltFunnelGenerator.java (96%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/BrassBeltFunnelBlock.java (80%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/BrassChuteFunnelBlock.java (80%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/BrassFunnelBlock.java (94%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/ChuteFunnelBlock.java (87%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/ChuteFunnelGenerator.java (95%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel/RealityFunnelBlock.java => funnel/FunnelBlock.java} (85%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/FunnelFilterSlotPositioning.java (91%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/FunnelItem.java (89%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/FunnelMovementBehaviour.java (95%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel/RealityFunnelRenderer.java => funnel/FunnelRenderer.java} (79%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel/RealityFunnelTileEntity.java => funnel/FunnelTileEntity.java} (91%) rename src/main/java/com/simibubi/create/content/logistics/block/{realityFunnel => funnel}/HorizontalInteractionFunnelBlock.java (89%) diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 4560fb109..67b0fd927 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -93,19 +93,19 @@ import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator; import com.simibubi.create.content.logistics.block.extractor.ExtractorBlock; import com.simibubi.create.content.logistics.block.extractor.LinkedExtractorBlock; import com.simibubi.create.content.logistics.block.extractor.VerticalExtractorGenerator; +import com.simibubi.create.content.logistics.block.funnel.AndesiteBeltFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.AndesiteChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.AndesiteFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelGenerator; +import com.simibubi.create.content.logistics.block.funnel.BrassBeltFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BrassChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BrassFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.ChuteFunnelGenerator; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmItem; import com.simibubi.create.content.logistics.block.packager.PackagerBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.AndesiteBeltFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.AndesiteChuteFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.AndesiteFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelGenerator; -import com.simibubi.create.content.logistics.block.realityFunnel.BrassBeltFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.BrassChuteFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.BrassFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelGenerator; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 53980cc8f..71626ae70 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -28,8 +28,6 @@ public class AllShapes { CASING_11PX = shape(0, 0, 0, 16, 11, 16).forDirectional(), MOTOR_BLOCK = shape(3, 0, 3, 13, 14, 13).forDirectional(), FOUR_VOXEL_POLE = shape(6, 0, 6, 10, 16, 10).forAxis(), SIX_VOXEL_POLE = shape(5, 0, 5, 11, 16, 11).forAxis(), - BELT_FUNNEL = shape(3, -4, 11, 13, 8, 17).forHorizontal(SOUTH), - FUNNEL = shape(1, 1, 13, 15, 15, 17).forDirectional(SOUTH), EXTRACTOR = shape(4, 2, 11, 12, 10, 17).forDirectional(SOUTH) .withVerticalShapes(cuboid(4, 11, 4, 12, 17, 12)), TRANSPOSER = shape(4, 4, -1, 12, 12, 1).add(5, 5, 0, 11, 11, 16) @@ -65,11 +63,11 @@ public class AllShapes { NIXIE_TUBE_CEILING = shape(0, 12, 0, 16, 16, 16).add(9, 1, 5, 15, 16, 11) .add(1, 1, 5, 7, 16, 11) .forHorizontalAxis(), - REALITY_FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) + FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) .add(1, 6, 1, 15, 10, 15) .add(0, 10, 0, 16, 16, 16) .forDirectional(UP), - REALITY_FUNNEL_COLLISION = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) + FUNNEL_COLLISION = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) .add(1, 6, 1, 15, 10, 15) .add(0, 10, 0, 16, 13, 16) .forDirectional(UP), diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 044d4fa25..f7b0b865f 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -81,14 +81,14 @@ import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterRend import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterTileEntity; import com.simibubi.create.content.logistics.block.extractor.ExtractorTileEntity; import com.simibubi.create.content.logistics.block.extractor.LinkedExtractorTileEntity; +import com.simibubi.create.content.logistics.block.funnel.FunnelRenderer; +import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateTileEntity; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateTileEntity; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmRenderer; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; import com.simibubi.create.content.logistics.block.packager.PackagerRenderer; import com.simibubi.create.content.logistics.block.packager.PackagerTileEntity; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelRenderer; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelTileEntity; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverRenderer; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; @@ -227,8 +227,8 @@ public class AllTileEntities { public static final TileEntityEntry DEPOT = register("depot", DepotTileEntity::new, AllBlocks.DEPOT); - public static final TileEntityEntry REALITY_FUNNEL = register("reality_funnel", - RealityFunnelTileEntity::new, AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.BRASS_CHUTE_FUNNEL, + public static final TileEntityEntry FUNNEL = register("funnel", + FunnelTileEntity::new, AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.BRASS_CHUTE_FUNNEL, AllBlocks.ANDESITE_FUNNEL, AllBlocks.ANDESITE_BELT_FUNNEL, AllBlocks.ANDESITE_CHUTE_FUNNEL); public static final TileEntityEntry PACKAGER = register("packager", PackagerTileEntity::new, AllBlocks.PACKAGER); @@ -312,7 +312,7 @@ public class AllTileEntities { bind(LINKED_EXTRACTOR, SmartTileEntityRenderer::new); bind(TRANSPOSER, SmartTileEntityRenderer::new); bind(LINKED_TRANSPOSER, SmartTileEntityRenderer::new); - bind(REALITY_FUNNEL, RealityFunnelRenderer::new); + bind(FUNNEL, FunnelRenderer::new); bind(BELT_TUNNEL, BeltTunnelRenderer::new); bind(MECHANICAL_ARM, ArmRenderer::new); bind(BELT_OBSERVER, BeltObserverRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 929863ac6..8d7b2347e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -21,6 +21,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; +import com.simibubi.create.content.contraptions.relays.belt.transport.BeltTunnelInteractionHandler; import com.simibubi.create.content.contraptions.relays.belt.transport.ItemHandlerBeltSegment; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -432,6 +433,9 @@ public class BeltTileEntity extends KineticTileEntity { transportedStack.insertedAt = index; transportedStack.insertedFrom = side; transportedStack.prevBeltPosition = transportedStack.beltPosition; + + BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true); + nextInventory.addItem(transportedStack); nextBeltController.markDirty(); nextBeltController.sendData(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java index a169ac0ac..7a5b372f4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelTileEntity; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; @@ -45,10 +45,10 @@ public class BeltFunnelInteractionHandler { return true; TileEntity te = world.getTileEntity(funnelPos); - if (!(te instanceof RealityFunnelTileEntity)) + if (!(te instanceof FunnelTileEntity)) return true; - RealityFunnelTileEntity funnelTE = (RealityFunnelTileEntity) te; + FunnelTileEntity funnelTE = (FunnelTileEntity) te; InsertingBehaviour inserting = TileEntityBehaviour.get(funnelTE, InsertingBehaviour.TYPE); FilteringBehaviour filtering = TileEntityBehaviour.get(funnelTE, FilteringBehaviour.TYPE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java index b476533e8..7e6102ef9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -1,8 +1,5 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; -import java.util.List; - -import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; @@ -46,40 +43,18 @@ public class BeltTunnelInteractionHandler { BeltTileEntity belt = beltInventory.belt; BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) .up(); - if (!AllBlocks.BRASS_TUNNEL.has(belt.getWorld() - .getBlockState(pos))) + if (!(belt.getWorld() + .getBlockState(pos) + .getBlock() instanceof BeltTunnelBlock)) return false; TileEntity te = belt.getWorld() .getTileEntity(pos); if (te == null || !(te instanceof BeltTunnelTileEntity)) return false; - Direction flapFacing = movementDirection.getOpposite(); - - BeltTunnelTileEntity tunnel = (BeltTunnelTileEntity) te; - if (!tunnel.flaps.containsKey(flapFacing)) - return false; - if (!tunnel.syncedFlaps.containsKey(flapFacing)) - return false; - ItemStack heldItem = tunnel.syncedFlaps.get(flapFacing); - if (heldItem == null) { - tunnel.syncedFlaps.put(flapFacing, ItemStack.EMPTY); - belt.sendData(); - return false; - } - if (heldItem == ItemStack.EMPTY) { - tunnel.syncedFlaps.put(flapFacing, stack); - return true; - } - - List group = BeltTunnelBlock.getSynchronizedGroup(belt.getWorld(), pos, flapFacing); - for (BeltTunnelTileEntity otherTunnel : group) - if (otherTunnel.syncedFlaps.get(flapFacing) == ItemStack.EMPTY) - return true; - for (BeltTunnelTileEntity otherTunnel : group) - otherTunnel.syncedFlaps.put(flapFacing, null); - - return true; + // TODO: ask TE if item can be inserted + + return false; } public static void flapTunnel(BeltInventory beltInventory, int offset, Direction side, boolean inward) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java index 722a4789b..b5deacd05 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java @@ -1,14 +1,11 @@ package com.simibubi.create.content.logistics.block.belts.tunnel; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; @@ -71,13 +68,20 @@ public class BeltTunnelBlock extends Block implements ITE, @Override public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { + BlockState blockState = worldIn.getBlockState(pos.down()); + if (!isValidPositionForPlacement(state, worldIn, pos)) + return false; + if (!blockState.get(BeltBlock.CASING)) + return false; + return true; + } + + public boolean isValidPositionForPlacement(BlockState state, IWorldReader worldIn, BlockPos pos) { BlockState blockState = worldIn.getBlockState(pos.down()); if (!AllBlocks.BELT.has(blockState)) return false; if (blockState.get(BeltBlock.SLOPE) != Slope.HORIZONTAL) return false; - if (!blockState.get(BeltBlock.CASING)) - return false; return true; } @@ -98,10 +102,12 @@ public class BeltTunnelBlock extends Block implements ITE, @Override public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { + if (facing.getAxis() + .isVertical()) + return state; if (!(worldIn instanceof WrappedWorld)) withTileEntityDo(worldIn, currentPos, BeltTunnelTileEntity::initFlaps); BlockState tunnelState = getTunnelState(worldIn, currentPos); - if (tunnelState.get(HORIZONTAL_AXIS) == state.get(HORIZONTAL_AXIS)) { if (hasWindow(tunnelState) == hasWindow(state)) return state; @@ -121,29 +127,6 @@ public class BeltTunnelBlock extends Block implements ITE, } } - public static List getSynchronizedGroup(World world, BlockPos pos, Direction flapFacing) { - List group = new ArrayList<>(); - Direction searchDirection = flapFacing.rotateY(); - - for (Direction d : Arrays.asList(searchDirection, searchDirection.getOpposite())) { - BlockPos currentPos = pos; - while (true) { - if (!world.isBlockPresent(currentPos)) - break; - TileEntity te = world.getTileEntity(currentPos); - if (te == null || !(te instanceof BeltTunnelTileEntity)) - break; - BeltTunnelTileEntity tunnel = (BeltTunnelTileEntity) te; - if (!tunnel.syncedFlaps.containsKey(flapFacing)) - break; - group.add(tunnel); - currentPos = currentPos.offset(d); - } - } - - return group; - } - private BlockState getTunnelState(IBlockReader reader, BlockPos pos) { BlockState state = getDefaultState(); BlockState belt = reader.getBlockState(pos.down()); @@ -175,7 +158,13 @@ public class BeltTunnelBlock extends Block implements ITE, Direction fw = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); BlockState blockState1 = reader.getBlockState(pos.offset(fw)); BlockState blockState2 = reader.getBlockState(pos.offset(fw.getOpposite())); - if (blockState1.getBlock() instanceof BeltTunnelBlock && blockState2.getBlock() instanceof BeltTunnelBlock) + boolean valid1 = + blockState1.getBlock() instanceof BeltTunnelBlock || blockState1.getBlock() instanceof BeltFunnelBlock + && blockState1.get(BeltFunnelBlock.HORIZONTAL_FACING) == fw.getOpposite(); + boolean valid2 = + blockState2.getBlock() instanceof BeltTunnelBlock || blockState2.getBlock() instanceof BeltFunnelBlock + && blockState2.get(BeltFunnelBlock.HORIZONTAL_FACING) == fw; + if (valid1 && valid2) state = state.with(SHAPE, Shape.WINDOW); } @@ -185,10 +174,6 @@ public class BeltTunnelBlock extends Block implements ITE, @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - // Toggle sync - if (toggleSync(context.getWorld(), context.getPos(), context.getFace())) - return ActionResultType.SUCCESS; - // Toggle windows if (!hasWindow(state)) return IWrenchable.super.onWrenched(state, context); @@ -212,14 +197,6 @@ public class BeltTunnelBlock extends Block implements ITE, return ActionResultType.SUCCESS; } - private boolean toggleSync(World world, BlockPos pos, Direction face) { - TileEntity te = world.getTileEntity(pos); - if (te == null || !(te instanceof BeltTunnelTileEntity)) - return false; - BeltTunnelTileEntity tunnel = (BeltTunnelTileEntity) te; - return tunnel.toggleSyncForFlap(face); - } - @Override public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java new file mode 100644 index 000000000..c083c15bc --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelItem.java @@ -0,0 +1,47 @@ +package com.simibubi.create.content.logistics.block.belts.tunnel; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.world.World; + +public class BeltTunnelItem extends BlockItem { + + public BeltTunnelItem(Block p_i48527_1_, Properties p_i48527_2_) { + super(p_i48527_1_, p_i48527_2_); + } + + @Override + protected boolean canPlace(BlockItemUseContext ctx, BlockState state) { + PlayerEntity playerentity = ctx.getPlayer(); + ISelectionContext iselectioncontext = + playerentity == null ? ISelectionContext.dummy() : ISelectionContext.forEntity(playerentity); + World world = ctx.getWorld(); + BlockPos pos = ctx.getPos(); + return (!this.checkPosition() || AllBlocks.ANDESITE_TUNNEL.get() + .isValidPositionForPlacement(state, world, pos)) && world.canPlace(state, pos, iselectioncontext); + } + + @Override + protected boolean onBlockPlaced(BlockPos pos, World world, PlayerEntity p_195943_3_, ItemStack p_195943_4_, + BlockState state) { + boolean flag = super.onBlockPlaced(pos, world, p_195943_3_, p_195943_4_, state); + if (!world.isRemote) { + BeltTileEntity belt = BeltHelper.getSegmentTE(world, pos.down()); + if (belt != null && belt.casing == CasingType.NONE) + belt.setCasingType(AllBlocks.ANDESITE_TUNNEL.has(state) ? CasingType.ANDESITE : CasingType.BRASS); + } + return flag; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java index d728b837a..e87dbc1da 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java @@ -4,11 +4,9 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.SuperByteBuffer; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; @@ -28,7 +26,6 @@ public class BeltTunnelRenderer extends SafeTileEntityRenderer flaps; - public HashMap syncedFlaps; private LazyOptional cap = LazyOptional.empty(); - private boolean initialize; - private List> flapsToSend; public BeltTunnelTileEntity(TileEntityType type) { super(type); flaps = new HashMap<>(); - syncedFlaps = new HashMap<>(); - initialize = true; flapsToSend = new LinkedList<>(); } - @Override - public LazyOptional getCapability(Capability capability, Direction side) { - - if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (!this.cap.isPresent()) { - if (AllBlocks.BELT.has(world.getBlockState(pos.down()))) { - TileEntity teBelow = world.getTileEntity(pos.down()); - if (teBelow != null) { - T capBelow = teBelow.getCapability(capability, Direction.UP) - .orElse(null); - if (capBelow != null) { - cap = LazyOptional.of(() -> capBelow) - .cast(); - } - } - } - } - return this.cap.cast(); - } - return super.getCapability(capability, side); - } - @Override public void remove() { super.remove(); @@ -76,40 +48,14 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT @Override public CompoundNBT write(CompoundNBT compound) { - CompoundNBT dyedFlapsNBT = new CompoundNBT(); - syncedFlaps.forEach((direction, pair) -> { - dyedFlapsNBT.putBoolean(direction.name(), true); - }); - compound.put("syncedFlaps", dyedFlapsNBT); return super.write(compound); } @Override public void read(CompoundNBT compound) { - if (compound.contains("syncedFlaps")) { - syncedFlaps.clear(); - CompoundNBT dyedFlapsNBT = compound.getCompound("syncedFlaps"); - for (Direction direction : Direction.values()) { - if (dyedFlapsNBT.contains(direction.name())) - syncedFlaps.put(direction, ItemStack.EMPTY); - } - } super.read(compound); } - public boolean toggleSyncForFlap(Direction face) { - if (!flaps.containsKey(face)) - return false; - if (syncedFlaps.containsKey(face)) - syncedFlaps.remove(face); - else - syncedFlaps.put(face, ItemStack.EMPTY); - - markDirty(); - sendData(); - return true; - } - @Override public CompoundNBT writeToClient(CompoundNBT tag) { CompoundNBT writeToClient = super.writeToClient(tag); @@ -138,16 +84,14 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT Direction side = Direction.byIndex(flap.getInt("Flap")); flap(side, flap.getBoolean("FlapInward")); } - } else + } else { initFlaps(); + } } public void initFlaps() { - if (!world.isRemote) { + if (!world.isRemote) sendData(); - } - - initialize = false; flaps.clear(); BlockState tunnelState = getBlockState(); for (Direction direction : Direction.values()) { @@ -168,7 +112,8 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT if (!positive && shape == Shape.T_RIGHT) continue; } - flaps.put(direction, new InterpolatedChasingValue().target(0) + flaps.put(direction, new InterpolatedChasingValue().start(.25f) + .target(0) .withSpeed(.05f)); } } @@ -184,10 +129,15 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT flapsToSend.add(Pair.of(side, inward)); } + @Override + public void initialize() { + super.initialize(); + initFlaps(); + } + @Override public void tick() { - if (initialize) - initFlaps(); + super.tick(); if (!world.isRemote) { if (!flapsToSend.isEmpty()) sendData(); @@ -196,4 +146,28 @@ public class BeltTunnelTileEntity extends SyncedTileEntity implements ITickableT flaps.forEach((d, value) -> value.tick()); } + @Override + public void addBehaviours(List behaviours) {} + + @Override + public LazyOptional getCapability(Capability capability, Direction side) { + if (capability != CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + return super.getCapability(capability, side); + + if (!this.cap.isPresent()) { + if (AllBlocks.BELT.has(world.getBlockState(pos.down()))) { + TileEntity teBelow = world.getTileEntity(pos.down()); + if (teBelow != null) { + T capBelow = teBelow.getCapability(capability, Direction.UP) + .orElse(null); + if (capBelow != null) { + cap = LazyOptional.of(() -> capBelow) + .cast(); + } + } + } + } + return this.cap.cast(); + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index 4d8cfdfc0..d8ed5b570 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -10,9 +10,9 @@ import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock; import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; -import com.simibubi.create.content.logistics.block.realityFunnel.BrassFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelBlock; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BrassFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.ChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.foundation.gui.widgets.InterpolatedValue; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -152,7 +152,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor return false; if (stateBelow.get(BrassFunnelBlock.FACING) != Direction.UP) return false; - ItemStack remainder = RealityFunnelBlock.tryInsert(world, pos.down(), item, simulate); + ItemStack remainder = FunnelBlock.tryInsert(world, pos.down(), item, simulate); if (!simulate) setItem(remainder); return remainder.isEmpty(); @@ -190,7 +190,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor if (AllBlocks.BRASS_FUNNEL.has(stateAbove)) { if (!stateAbove.get(BrassFunnelBlock.POWERED) && stateAbove.get(BrassFunnelBlock.FACING) == Direction.DOWN) { - ItemStack remainder = RealityFunnelBlock.tryInsert(world, pos.up(), item, simulate); + ItemStack remainder = FunnelBlock.tryInsert(world, pos.up(), item, simulate); if (remainder.isEmpty()) { if (!simulate) setItem(remainder); @@ -250,7 +250,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor continue; if (funnelState.get(ChuteFunnelBlock.PUSHING)) continue; - ItemStack remainder = RealityFunnelBlock.tryInsert(world, funnelPos, item.copy(), world.isRemote); + ItemStack remainder = FunnelBlock.tryInsert(world, funnelPos, item.copy(), world.isRemote); if (remainder.getCount() != item.getCount() && !world.isRemote) setItem(remainder); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteBeltFunnelBlock.java similarity index 81% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteBeltFunnelBlock.java index cfb9d5d95..8ce624cd4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteBeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteBeltFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteChuteFunnelBlock.java similarity index 81% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteChuteFunnelBlock.java index a6a6e3f62..80bfc2baf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteChuteFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteChuteFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java similarity index 83% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java index e537e8799..6a128adc6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/AndesiteFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java @@ -1,11 +1,11 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; import net.minecraft.block.BlockState; import net.minecraft.util.Direction; -public class AndesiteFunnelBlock extends RealityFunnelBlock { +public class AndesiteFunnelBlock extends FunnelBlock { public AndesiteFunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java similarity index 96% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java index a71f67a72..52cdc6e72 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; @@ -47,7 +47,7 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { } } - public BeltFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { + public BeltFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { super(parent, p_i48377_1_); setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java similarity index 96% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java index 3c494de97..05fb003b2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassBeltFunnelBlock.java similarity index 80% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassBeltFunnelBlock.java index cf0ae9ef3..17dae6807 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassBeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassBeltFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassChuteFunnelBlock.java similarity index 80% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassChuteFunnelBlock.java index ad584afd2..cba22d4e5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassChuteFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassChuteFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java similarity index 94% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java index c036722bd..42eb7bdd3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BrassFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllBlocks; @@ -12,7 +12,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class BrassFunnelBlock extends RealityFunnelBlock { +public class BrassFunnelBlock extends FunnelBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/ChuteFunnelBlock.java similarity index 87% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/ChuteFunnelBlock.java index 596f94a81..f059f6861 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/ChuteFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllShapes; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; @@ -14,7 +14,7 @@ import net.minecraft.world.IWorldReader; public abstract class ChuteFunnelBlock extends HorizontalInteractionFunnelBlock { - public ChuteFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { + public ChuteFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { super(parent, p_i48377_1_); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/ChuteFunnelGenerator.java similarity index 95% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/ChuteFunnelGenerator.java index fb78f26e4..1bc7fa6c2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/ChuteFunnelGenerator.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java similarity index 85% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index 640f49b02..31684566b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -1,7 +1,8 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import javax.annotation.Nullable; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; @@ -35,9 +36,9 @@ import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public abstract class RealityFunnelBlock extends ProperDirectionalBlock implements ITE { +public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE { - public RealityFunnelBlock(Properties p_i48415_1_) { + public FunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); } @@ -59,13 +60,15 @@ public abstract class RealityFunnelBlock extends ProperDirectionalBlock implemen public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { - if (hit.getFace() == getFunnelFacing(state)) { + ItemStack heldItem = player.getHeldItem(handIn); + boolean shouldntInsertItem = AllBlocks.MECHANICAL_ARM.isIn(heldItem); + + if (hit.getFace() == getFunnelFacing(state) && !shouldntInsertItem) { if (!worldIn.isRemote) withTileEntityDo(worldIn, pos, te -> { - ItemStack heldItem = player.getHeldItem(handIn) - .copy(); - ItemStack remainder = tryInsert(worldIn, pos, heldItem, false); - if (!ItemStack.areItemStacksEqual(remainder, heldItem)) + ItemStack toInsert = heldItem.copy(); + ItemStack remainder = tryInsert(worldIn, pos, toInsert, false); + if (!ItemStack.areItemStacksEqual(remainder, toInsert)) player.setHeldItem(handIn, remainder); }); return ActionResultType.SUCCESS; @@ -119,18 +122,18 @@ public abstract class RealityFunnelBlock extends ProperDirectionalBlock implemen @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.REALITY_FUNNEL.create(); + return AllTileEntities.FUNNEL.create(); } @Override public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { - return AllShapes.REALITY_FUNNEL.get(state.get(FACING)); + return AllShapes.FUNNEL.get(state.get(FACING)); } @Override public VoxelShape getCollisionShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { if (context.getEntity() instanceof ItemEntity) - return AllShapes.REALITY_FUNNEL_COLLISION.get(state.get(FACING)); + return AllShapes.FUNNEL_COLLISION.get(state.get(FACING)); return getShape(state, world, pos, context); } @@ -168,7 +171,7 @@ public abstract class RealityFunnelBlock extends ProperDirectionalBlock implemen Block block = world.getBlockState(pos.offset(state.get(FACING) .getOpposite())) .getBlock(); - return !(block instanceof RealityFunnelBlock) && !(block instanceof HorizontalInteractionFunnelBlock); + return !(block instanceof FunnelBlock) && !(block instanceof HorizontalInteractionFunnelBlock); } @Nullable @@ -195,13 +198,12 @@ public abstract class RealityFunnelBlock extends ProperDirectionalBlock implemen @Nullable public static boolean isFunnel(BlockState state) { - return state.getBlock() instanceof RealityFunnelBlock - || state.getBlock() instanceof HorizontalInteractionFunnelBlock; + return state.getBlock() instanceof FunnelBlock || state.getBlock() instanceof HorizontalInteractionFunnelBlock; } @Override - public Class getTileEntityClass() { - return RealityFunnelTileEntity.class; + public Class getTileEntityClass() { + return FunnelTileEntity.class; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java similarity index 91% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java index 281213b2a..add0d05e1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelFilterSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java @@ -1,8 +1,8 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock.Shape; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.DirectionHelper; @@ -43,7 +43,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { @Override protected void rotate(BlockState state, MatrixStack ms) { - Direction facing = RealityFunnelBlock.getFunnelFacing(state); + Direction facing = FunnelBlock.getFunnelFacing(state); if (!facing.getAxis() .isVertical() @@ -76,7 +76,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided { @Override protected boolean isSideActive(BlockState state, Direction direction) { - Direction facing = RealityFunnelBlock.getFunnelFacing(state); + Direction facing = FunnelBlock.getFunnelFacing(state); if (facing == null) return false; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java similarity index 89% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java index 5a276a35f..adb57c068 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -32,14 +32,14 @@ public class FunnelItem extends BlockItem { BlockState state = super.getStateForPlacement(ctx); if (state == null) return state; - if (!(state.getBlock() instanceof RealityFunnelBlock)) + if (!(state.getBlock() instanceof FunnelBlock)) return state; - Direction direction = state.get(RealityFunnelBlock.FACING); + Direction direction = state.get(FunnelBlock.FACING); if (!direction.getAxis() .isHorizontal()) return state; - RealityFunnelBlock block = (RealityFunnelBlock) getBlock(); + FunnelBlock block = (FunnelBlock) getBlock(); Block beltFunnelBlock = block.getEquivalentBeltFunnel(state) .getBlock(); Block chuteFunnelBlock = block.getEquivalentChuteFunnel(state) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelMovementBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java similarity index 95% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelMovementBehaviour.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java index a4521ec6e..c0cc9deef 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import java.util.List; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java similarity index 79% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java index 49955aeaf..2c49402db 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; @@ -15,14 +15,14 @@ import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class RealityFunnelRenderer extends SmartTileEntityRenderer { +public class FunnelRenderer extends SmartTileEntityRenderer { - public RealityFunnelRenderer(TileEntityRendererDispatcher dispatcher) { + public FunnelRenderer(TileEntityRendererDispatcher dispatcher) { super(dispatcher); } @Override - protected void renderSafe(RealityFunnelTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, + protected void renderSafe(FunnelTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); @@ -34,7 +34,7 @@ public class RealityFunnelRenderer extends SmartTileEntityRenderer tileEntityTypeIn) { + public FunnelTileEntity(TileEntityType tileEntityTypeIn) { super(tileEntityTypeIn); flap = new InterpolatedChasingValue().start(.25f) .target(0) @@ -51,7 +51,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { public Mode determineCurrentMode() { BlockState state = getBlockState(); - if (!RealityFunnelBlock.isFunnel(state)) + if (!FunnelBlock.isFunnel(state)) return Mode.INVALID; if (state.has(BlockStateProperties.POWERED) && state.get(BlockStateProperties.POWERED)) return Mode.PAUSED; @@ -60,7 +60,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { if (state.getBlock() instanceof ChuteFunnelBlock) return Mode.CHUTE_SIDE; - Direction facing = RealityFunnelBlock.getFunnelFacing(state); + Direction facing = FunnelBlock.getFunnelFacing(state); BlockState input = world.getBlockState(pos.offset(facing)); if (AllBlocks.CHUTE.has(input)) @@ -85,7 +85,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { public void tickAsHorizontalChuteFunnel() { if (!getBlockState().get(ChuteFunnelBlock.PUSHING)) return; - BlockPos chutePos = pos.offset(RealityFunnelBlock.getFunnelFacing(getBlockState())); + BlockPos chutePos = pos.offset(FunnelBlock.getFunnelFacing(getBlockState())); TileEntity te = world.getTileEntity(chutePos); if (!(te instanceof ChuteTileEntity)) return; @@ -97,7 +97,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { } public void tickAsVerticalChuteFunnel() { - Direction funnelFacing = RealityFunnelBlock.getFunnelFacing(getBlockState()); + Direction funnelFacing = FunnelBlock.getFunnelFacing(getBlockState()); BlockPos chutePos = pos.offset(funnelFacing); TileEntity te = world.getTileEntity(chutePos); if (!(te instanceof ChuteTileEntity)) @@ -167,7 +167,7 @@ public class RealityFunnelTileEntity extends SmartTileEntity { @Override public void addBehaviours(List behaviours) { Supplier>> direction = - Attachments.toward(() -> RealityFunnelBlock.getFunnelFacing(getBlockState()) + Attachments.toward(() -> FunnelBlock.getFunnelFacing(getBlockState()) .getOpposite()); inserting = new InsertingBehaviour(this, direction); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java similarity index 89% rename from src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java rename to src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java index 0e284bb4d..276a04ee5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java @@ -1,4 +1,4 @@ -package com.simibubi.create.content.logistics.block.realityFunnel; +package com.simibubi.create.content.logistics.block.funnel; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; @@ -28,9 +28,9 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty PUSHING = BooleanProperty.create("pushing"); - private BlockEntry parent; + private BlockEntry parent; - public HorizontalInteractionFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { + public HorizontalInteractionFunnelBlock(BlockEntry parent, Properties p_i48377_1_) { super(p_i48377_1_); this.parent = parent; BlockState defaultState = getDefaultState().with(PUSHING, true); @@ -48,7 +48,7 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.REALITY_FUNNEL.create(); + return AllTileEntities.FUNNEL.create(); } @Override @@ -71,7 +71,7 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i public void onReplaced(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, boolean p_196243_5_) { if (p_196243_1_.hasTileEntity() - && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !RealityFunnelBlock.isFunnel(p_196243_4_) + && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !FunnelBlock.isFunnel(p_196243_4_) || !p_196243_4_.hasTileEntity())) { p_196243_2_.removeTileEntity(p_196243_3_); } @@ -88,7 +88,7 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i BlockPos pos, BlockPos p_196271_6_) { if (!canStillInteract(state, world, pos)) return parent.getDefaultState() - .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + .with(FunnelBlock.FACING, state.get(HORIZONTAL_FACING)); return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java index f9250cf2d..980057350 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -5,7 +5,8 @@ import javax.annotation.Nullable; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; +import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; @@ -69,7 +70,7 @@ public abstract class ArmInteractionPoint { static boolean isInteractable(BlockState state) { return AllBlocks.DEPOT.has(state) || AllBlocks.BELT.has(state) || AllBlocks.CHUTE.has(state) - || state.getBlock() instanceof RealityFunnelBlock; + || state.getBlock() instanceof FunnelBlock; } ArmAngleTarget getTargetAngles(BlockPos armPos) { @@ -121,11 +122,12 @@ public abstract class ArmInteractionPoint { if (AllBlocks.DEPOT.has(state)) point = new Depot(); - if (AllBlocks.BELT.has(state)) + if (AllBlocks.BELT.has(state) && !(world.getBlockState(pos.up()) + .getBlock() instanceof BeltTunnelBlock)) point = new Belt(); if (AllBlocks.CHUTE.has(state)) point = new Chute(); - if (state.getBlock() instanceof RealityFunnelBlock) + if (state.getBlock() instanceof FunnelBlock) point = new Funnel(); if (point != null) { @@ -193,7 +195,7 @@ public abstract class ArmInteractionPoint { @Override Vec3d getInteractionPositionVector() { return VecHelper.getCenterOf(pos) - .add(new Vec3d(RealityFunnelBlock.getFunnelFacing(state) + .add(new Vec3d(FunnelBlock.getFunnelFacing(state) .getDirectionVec()).scale(.5f)); } @@ -209,7 +211,7 @@ public abstract class ArmInteractionPoint { @Override Direction getInteractionDirection() { - return RealityFunnelBlock.getFunnelFacing(state) + return FunnelBlock.getFunnelFacing(state) .getOpposite(); } @@ -226,7 +228,7 @@ public abstract class ArmInteractionPoint { @Override boolean isValid(BlockState state) { - return state.getBlock() instanceof RealityFunnelBlock; + return state.getBlock() instanceof FunnelBlock; } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java index 1a48f106e..bedc6d494 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneLinkBlock.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.logistics.block.redstone; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.block.ProperDirectionalBlock; import com.simibubi.create.foundation.utility.Iterate; @@ -165,7 +165,7 @@ public class RedstoneLinkBlock extends ProperDirectionalBlock implements ITE NonNullUnaryOperator> funnel( + public static NonNullUnaryOperator> funnel( String type, ResourceLocation particleTexture) { return b -> { return b.blockstate((c, p) -> { @@ -95,7 +96,7 @@ public class BuilderTransformers { .rotationY(state.get(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) .build(); })) - .item() + .item(BeltTunnelItem::new) .model((c, p) -> { String id = type + "_tunnel"; p.withExistingParent("item/" + id, p.modLoc("block/belt_tunnel/item")) diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel.png b/src/main/resources/assets/create/textures/block/andesite_tunnel.png index 36f1f6a1400623881837506903e4974469bbe125..6c6c41b10f859dd455a3a91c0af04de3eac7750c 100644 GIT binary patch delta 2676 zcmV-)3XAo!6|WVLR)0iEL_t(|UhSD(Y+P3n$7k2}+H0@9wiDZN;v^-F5;vqxPz3^B zPy`570;xP8iYoEaLPZf0QmeM8pfnO{3j)yx1gew=gj%&gfeN9xRZ1!XNt&vOoiv{& z4NdICpNZF>YkSweoZooo=6btM8t;Z^o&2Tox%cjwd+wR}&wreA#-Sf?f5z+S>5^>J z*40X4DB-stnM`UMjYjo)^C$0?KmX}9y^qCW($>}%(hfz0(6i4!=Y4SYj5If|&O8#S zjFxAvL@o^t%CfrUdOeYxlFOGzrM|veFxtjVcgr7NdPyRYh{WS@*|lreq7CqqXLfju z%NRi7=6C|F$1J`BXuS9nQ4+ViN-&!=P(cH%MtkRB9X>T2?Lh`}8>@ z%+AhAIPAY>(Xe-Be+T1#{jzjON1jjD~!cdGD$FofEe1F$~dX|aDYg%+bt}zHQ;`*9# zKqwSa7UT;XA7^~|(I-@X@Y82ip7`ajRLC{iIfUkdHGA0C4QdEhgr18%^I|vGv+Q`L56Sdq>Z<{m%(YNk+pKLO(W5OOE?GrB zbB{AwgGV^=z`mcX)(~r2B`hTH^zWb23SPL4i_b5#te#>loRi9@tvA3sB zpMmVnRZYBFTQhti^h1w5`Iu)G3|c1_vMt$u^rXJT@<$LBE^MAyQh|k({dV?jryA1q zVd6yRUO9W=vffu$T`}^^%#5s97L#RLzM^#q65~Sp54`vfz0bz0k9_eX`eBVBH-D+4 zC;p?y-ggciQ{mp^?R^KdWqIVcUAqtHwRzxrkJ3Cx45rUyme<9kvLYgD8e>vdRpLuc zh3IcElXqQBADnvql~C)-TKVRd4IzYQx%B6qVC=)#4nrps0A(121j*4g2x!eqnJkty zpabn`F$#SQ_QAmP!TQy8y0g4ImVcHDgX6yRCZ?saer^Y9-?ETCXubbi-s`{l?YtPs zrLP8n&cG}Qpb4>s5XUGo2tpt8GI`;8&k+cQLf7=|U0`ZD<=#K(&Kl(^mC*``mY2!I z+Alb65a{3W{oknp zGLIC0IMV68`SdqFq95i02AD@_`+EERq6o)ej>CqachPNL*{oT0?DSqK>FbdC@e?xf z;X$bxJ|WRdM_qed>c);qPk+a5@y@*?;oiee+I4#iOkcVVO6kRS^;t!EM5^nmGzqr2 zU0;2yRGRC`CGNtudf=d3I`ZaK^@;sl$fd6#K+TPexNqM+X+Qj)#$ZSLA(hi7JLUYj zPMs`$_V3@XVtWURsq(TCX(CIXht% z`Y@)#(H#8nwS)5SQ-dMoZ}0W0eCgM3X>tUSveK*Sb8^fEMV4IpVRmy^k%Z8?X`{qz zYh*=plQgYpRDr6r2D_&}mM2tTOQ|~!Pfn#}#qw$wla*2vE0?NhL>gS;;ksdYz21YV z)Qq;k^i!#{l$Dms$bWchK@S>AORpTg^VRo@q99&Vr_|W?h0pm(5CgH!(lTM%VEmy= zNF=AG-9%k-b01)+h?L6Z;c*!lP07^MgkwWY(lcR+IX2)mjA;7PZUWZ=p^=)I3++Pb z`$bVOJTj!`@wfkZK$9N(d}vQnq=ojhC<0qCK-_sbl}>A>Wq-0@aysp3S0>fY@nJ_% zLTfseQo6D-1QFEF1*$|hLfn_;Q5X9n<&iR_tHoe0{a_65*s(*74D@@%@Qu))R}dkN5js`JYV^g^ z&Z5?`j<x`F{W?SQ_>;xfrMumb(z(8ObL(HL1^`YFVbAF)ye;HZk9W_dohQ-O%8{ zGhIUk*Ppi&gblg2v(~cHqa_3^`B*p%jk^Ax+wZ46NxFUeh5m$G>>rWtz9F~Fj=Auf zkgncQXBbaBCyaq^w*KJI+_~Wwdk=f8-MdeAOVzfoC4ZrBVw5s`VfFPeWJ!=okrVK2 za1%r!gx1(%+han5yg*_++O|_-F3VFJJ?ALc(o`p786(DHWzv^O$+8$pXhtF~BsSmo z9eod82qj3L;wxV4UpZu^E88V2lADr=S9CFL5*V{ff}e z7k6ICB7YwP4}SYW56iPs05e+9K)DPVdh`6K&W@ct( zdOE3zH0@%q)Ga$8F`STSRa{C!vzlxdGj28>e&pdr7j)?3hrrEZK)wce{He$Ng3dz7 zF67v?mc+=8#S9pbPf2XvGFYszqz1dn`a7hneSeS2(CPiY44(LxmdjwGE`e?dr~i^L zK(3P7+NNqfMw`T=p=+1KiWT)aN@A4Mx(CL5=^2_@xFlB0fX3M+u}OC_rKCnB$rs0p zTqUt3!GQLTJ^rT1Ff%!$Wi$){nEbHY2jO*+C8t_Y^ajYcq*n9>u$T^(#0UYrkDTip z)qi|2ob+;+#Pn|wgRGui5>o~^?{8ewpaKJem{$_Zv_%UTz>*d$i4pI3|Md9*InzC; z3}6||SrXH`C4gW_Y;9w;G61pvDX|FP-X8+Nlaeoyc{&SYZ z^ly=a5D1pUDr@G}epUij0d|Fiz%@%^#cc@U7z9gVmIDCsZ>vDgl31~y2JKkB=#tn{ zFhE` zDg6~nl>BHQQCg{rl2(=4ABaC~R7Dk1TPh?}wUHtkr9!A_AqY~`2X+z#%p2npRA2$y z7@})7l&x@%pe7WL5f5obu*x+=OJOf z&+D0!@%~VlweDkj`>nTaVSp1qZhwG$9v5}AgsCMKqd?E?J;E%$D zD&=N1!wv`oMy_9xm*?^&>THcrEE=R}*his&m)e@ca@^M1EayPJI4v{aU@6Va%#_dS z0|Zelmgtq;eYA1s2lV4TAJGrr>7&JLm1E!Z>8e&H2Hm|56I`I_}JX6 z0@i|lbAJsQ0H4tmZxRMLo${Ev0YMbZO&S~5u5=7uOVQf)4hIGnaqVVutfF~#pz`Gf zmMSy=C{7i5gXVF*P-GMEm}|L$xyJWqb7@K?QzCt+za30~Ab>058JWR^>7GO#|cX|89+&>-boBWPfOY8g~MazRm>OeE`%L4{c%ZUyFdx zQ$8{g^AS5mzZ`>Ufbs#wVo}cP0iNmgxM^7|TwbX_xQlCm9wO_76KV{*!bX%2@C2(j zuAut>C5aM;N|=C)ooGE!f^c)#WjJ;Z3>rV#vtI`L0t~qZCfVu(@Zx|!A~E0VcGJXU zk$-%?pj-q~)TVW&AYv#C3=BB>`}-aBe)0Z~=K*pnA ze~H#Ty_wd0V@u^;yHMr2A@PY!o+i>cx_^<(P-0}9CbI<^zL}P_k+BJ8R7vi$+Z%(K zpI*Em*(Jtx4vFW_o|1u-8*7*`?1W>}^P7wnD;}Yf`*%^86CG&xCAPQjjyPpF)&sGy zhelFGag@jxyljiBpV}fHY*$Wxw;&8y{n<5=*eFEVF95anrtX2s0FcIfW}vGp?tjI( zKF^0cOG_AtdmuF8mV0*Y%3p$7){?soJ(&_vIE?hywD)~x8O!XUVUfkFo! zUJU?oADo7R?0(QJS`-k!r^Xz{*u?sEcDg23`PZBPvL` z%J<*_I*L+Fn)SeZ)g+{#s!0W%9yC+g9A~JkraXcHztklQr3WDOty{O2&rDd+3j>s0 zL$cT)EB zmN$1h^j5H(V}bOreJfbeiw5j_|F04fjvP5c1IIoQ8$3R6RL1#p zLv;DlkZczB^!4@0P=6^Yv}LxMG&ek7H3=KUM*~*$um15P`sd)71LIGh49j@pSBDl% zkIJzYXtG$*JCO!=JELv8RI=vOpCAt&z&Z zqVDbq@O(d&kCg4h&%0wjys<7p$ql_AG8+Yir5TU2^1 zRT%q)dVd-!kb+JhSh+!H6qJ+!eDL_0L$=a8e!hLX0f(ofmIwfIYRhBAfO;A#z}=*G z{Pc~V8Q{e2wzi&o;W=rgAyNQ}X*z?f7^$xTwd?}==k*W93 z+_nE#P>Wh7;9Q?8CUCbjzzzn$6c;N12fSk=Lw_+~u`RJB!2qP~XWsiIOFSs;u7$MJ z)_v=H5(TRAfJTK?ORc9PB4xB1v4CU#mRO?#IZJIz3@tVMUy~Zwlli$@VoL#fODva1 z`kv!>@1Gs46?3-48XZV$Yg=N|xoJvIqEMP`%~`g@T zAu%QzfG}v;5|gtf0KFyF(;g8Gz(525GY|$XTVnFtz}zGrct l0p6002ovPDHLkV1i6?3{wCA From 3bcdac608077ce1e9a5f689054b10946d3872869 Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Wed, 8 Jul 2020 18:20:49 +0200 Subject: [PATCH 42/47] Crude basin fluid support - basin can now store fluid - fluid stored in basin will be bundled together with item in a MultiIngredientTypeList supporting both items and fluids --- .../mixer/MechanicalMixerTileEntity.java | 68 ++++----- .../press/MechanicalPressTileEntity.java | 31 ++-- .../fluids/CombinedFluidHandler.java | 135 ++++++++++++++++++ .../contraptions/processing/BasinBlock.java | 27 ++-- .../processing/BasinOperatingTileEntity.java | 76 ++++++---- .../processing/BasinTileEntity.java | 51 +++++-- .../processing/MultiIngredientTypeList.java | 28 ++++ 7 files changed, 306 insertions(+), 110 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/processing/MultiIngredientTypeList.java diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index 45ab3b179..76cf705ef 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.mixer; import java.util.ArrayList; +import java.util.Comparator; import java.util.LinkedList; import java.util.List; @@ -32,7 +33,7 @@ import net.minecraftforge.items.IItemHandler; public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { - private static Object shapelessOrMixingRecipesKey = new Object(); + private static final Object shapelessOrMixingRecipesKey = new Object(); public int runningTicks; public int processingTicks; @@ -47,15 +48,15 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); - CenteredSideValueBoxTransform slot = - new CenteredSideValueBoxTransform((state, direction) -> direction.getAxis().isHorizontal()) { + CenteredSideValueBoxTransform slot = new CenteredSideValueBoxTransform((state, direction) -> direction.getAxis() + .isHorizontal()) { - @Override - protected Vec3d getSouthLocation() { - return super.getSouthLocation().add(0, 4 / 16f, 0); - } + @Override + protected Vec3d getSouthLocation() { + return super.getSouthLocation().add(0, 4 / 16f, 0); + } - }; + }; minIngredients = new ScrollValueBehaviour(Lang.translate("mechanical_mixer.min_ingredients"), this, slot); minIngredients.between(1, 9); minIngredients.withCallback(i -> basinChecker.scheduleUpdate()); @@ -74,7 +75,7 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { offset = num - .5f; } else if (runningTicks <= 20) { offset = 1; - } else if (runningTicks > 20) { + } else { localTick = 40 - runningTicks; float num = (localTick - partialTicks) / 20f; num = ((2 - MathHelper.cos((float) (num * Math.PI))) / 2); @@ -93,9 +94,7 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { if (runningTicks <= 20) { return speed * 2; } - if (runningTicks > 20) { - return speed; - } + return speed; } return speed / 2; } @@ -130,7 +129,7 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { } float speed = Math.abs(getSpeed()); - if (running) { + if (running && world != null) { if (world.isRemote && runningTicks == 20) renderParticles(); @@ -155,52 +154,53 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { } public void renderParticles() { - IItemHandler itemHandler = basinInv.orElse(null); - if (itemHandler != null) { - BasinInventory inv = (BasinInventory) itemHandler; + IItemHandler itemHandler = basinItemInv.orElse(null); + BasinInventory inv = (BasinInventory) itemHandler; - for (int slot = 0; slot < inv.getInputHandler().getSlots(); slot++) { - ItemStack stackInSlot = itemHandler.getStackInSlot(slot); - if (stackInSlot.isEmpty()) - continue; + for (int slot = 0; slot < inv.getInputHandler() + .getSlots(); slot++) { + ItemStack stackInSlot = itemHandler.getStackInSlot(slot); + if (stackInSlot.isEmpty()) + continue; - ItemParticleData data = new ItemParticleData(ParticleTypes.ITEM, stackInSlot); - float angle = world.rand.nextFloat() * 360; - Vec3d offset = new Vec3d(0, 0, 0.25f); - offset = VecHelper.rotate(offset, angle, Axis.Y); - Vec3d target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y).add(0, .25f, 0); + ItemParticleData data = new ItemParticleData(ParticleTypes.ITEM, stackInSlot); + float angle = world.rand.nextFloat() * 360; + Vec3d offset = new Vec3d(0, 0, 0.25f); + offset = VecHelper.rotate(offset, angle, Axis.Y); + Vec3d target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y) + .add(0, .25f, 0); - Vec3d center = offset.add(VecHelper.getCenterOf(pos)); - target = VecHelper.offsetRandomly(target.subtract(offset), world.rand, 1 / 128f); - world.addParticle(data, center.x, center.y - 2, center.z, target.x, target.y, target.z); - } + Vec3d center = offset.add(VecHelper.getCenterOf(pos)); + target = VecHelper.offsetRandomly(target.subtract(offset), world.rand, 1 / 128f); + world.addParticle(data, center.x, center.y - 2, center.z, target.x, target.y, target.z); } } @Override protected boolean matchStaticFilters(IRecipe r) { return (r.getSerializer() == IRecipeSerializer.CRAFTING_SHAPELESS || r.getType() == AllRecipeTypes.MIXING.type) - && !MechanicalPressTileEntity.canCompress(r.getIngredients()); + && !MechanicalPressTileEntity.canCompress(r.getIngredients()); } @Override protected boolean matchBasinRecipe(IRecipe recipe) { if (recipe == null) return false; - if (recipe.getIngredients().size() < minIngredients.getValue()) + if (recipe.getIngredients() + .size() < minIngredients.getValue()) return false; NonNullList ingredients = recipe.getIngredients(); if (!ingredients.stream() - .allMatch(ingredient -> (ingredient.isSimple() || ingredient.getMatchingStacks().length == 1))) + .allMatch(ingredient -> (ingredient.isSimple() || ingredient.getMatchingStacks().length == 1))) return false; List remaining = new ArrayList<>(); - inputs.forEach(stack -> remaining.add(stack.copy())); + inputs.forEachItemStack(stack -> remaining.add(stack.copy())); // sort by leniency List sortedIngredients = new LinkedList<>(ingredients); - sortedIngredients.sort((i1, i2) -> i1.getMatchingStacks().length - i2.getMatchingStacks().length); + sortedIngredients.sort(Comparator.comparingInt(i -> i.getMatchingStacks().length)); Ingredients: for (Ingredient ingredient : sortedIngredients) { for (ItemStack stack : remaining) { if (stack.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index ef4ce6845..e35e23ae7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -39,7 +39,7 @@ import net.minecraftforge.items.wrapper.RecipeWrapper; public class MechanicalPressTileEntity extends BasinOperatingTileEntity { - private static Object compressingRecipesKey = new Object(); + private static final Object compressingRecipesKey = new Object(); public List pressedItems = new ArrayList<>(); public static class PressingInv extends RecipeWrapper { @@ -55,12 +55,12 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { float headOffset; - private Mode(float headOffset) { + Mode(float headOffset) { this.headOffset = headOffset; } } - private static PressingInv pressingInv = new PressingInv(); + private static final PressingInv pressingInv = new PressingInv(); public BeltProcessingBehaviour processingBehaviour; public int runningTicks; @@ -128,10 +128,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { float num = (runningTicks - 1 + partialTicks) / 30f; return MathHelper.clamp(num * num * num, 0, mode.headOffset); } - if (runningTicks >= 40) { - return MathHelper.clamp(((60 - runningTicks) + 1 - partialTicks) / 20f * mode.headOffset, 0, - mode.headOffset); - } + return MathHelper.clamp(((60 - runningTicks) + 1 - partialTicks) / 20f * mode.headOffset, 0, + mode.headOffset); } return 0; } @@ -148,10 +146,6 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { return mode == Mode.WORLD; } - public boolean onBelt() { - return mode == Mode.BELT; - } - public boolean onBasin() { return mode == Mode.BASIN; } @@ -160,7 +154,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { public void tick() { super.tick(); - if (!running) + if (!running || world == null) return; if (runningTicks == 30) { @@ -190,8 +184,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { if (!world.isRemote) { pressedItems.clear(); applyBasinRecipe(); - IItemHandler orElse = basinInv.orElse(null); - if (basinInv.isPresent() && orElse instanceof BasinInventory) { + IItemHandler orElse = basinItemInv.orElse(null); + if (basinItemInv.isPresent() && orElse instanceof BasinInventory) { BasinInventory inv = (BasinInventory) orElse; for (int slot = 0; slot < inv.getInputHandler() @@ -256,7 +250,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } public void makePressingParticleEffect(Vec3d pos, ItemStack stack) { - if (world.isRemote) { + if (world != null && world.isRemote) { for (int i = 0; i < 20; i++) { Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .125f) .mul(1, 0, 1); @@ -267,7 +261,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } public void makeCompactingParticleEffect(Vec3d pos, ItemStack stack) { - if (world.isRemote) { + if (world != null && world.isRemote) { for (int i = 0; i < 20; i++) { Vec3d motion = VecHelper.offsetRandomly(Vec3d.ZERO, world.rand, .175f) .mul(1, 0, 1); @@ -279,9 +273,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { public Optional getRecipe(ItemStack item) { pressingInv.setInventorySlotContents(0, item); - Optional recipe = world.getRecipeManager() + return world.getRecipeManager() .getRecipe(AllRecipeTypes.PRESSING.getType(), pressingInv, world); - return recipe; } public static boolean canCompress(NonNullList ingredients) { @@ -305,7 +298,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { return false; List remaining = new ArrayList<>(); - inputs.forEach(stack -> remaining.add(stack.copy())); + inputs.forEachItemStack(stack -> remaining.add(stack.copy())); Ingredients: for (Ingredient ingredient : ingredients) { for (ItemStack stack : remaining) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java new file mode 100644 index 000000000..8d62457ea --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java @@ -0,0 +1,135 @@ +package com.simibubi.create.content.contraptions.fluids; + +import net.minecraft.fluid.Fluid; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.ListNBT; +import net.minecraft.util.math.MathHelper; +import net.minecraftforge.common.util.NonNullConsumer; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; + +import javax.annotation.Nonnull; +import java.util.Arrays; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class CombinedFluidHandler implements IFluidHandler { + private final int capacity; + private final FluidStack[] tanks; + + public CombinedFluidHandler(int tankNumber, int capacity) { + this.capacity = capacity; + this.tanks = new FluidStack[tankNumber]; + Arrays.fill(tanks, FluidStack.EMPTY); + } + + @Override + public int getTanks() { + return tanks.length; + } + + @Nonnull + @Override + public FluidStack getFluidInTank(int tank) { + if (tank < 0 || tank >= tanks.length) + return FluidStack.EMPTY; + return tanks[tank]; + } + + @Override + public int getTankCapacity(int tank) { + return capacity; + } + + @Override + public boolean isFluidValid(int tank, @Nonnull FluidStack stack) { + return (!stack.isEmpty()) && (tanks[tank].isEmpty() || tanks[tank].isFluidEqual(stack)) + && tanks[tank].getAmount() < capacity; + } + + @Override + public int fill(FluidStack resource, FluidAction action) { + int tankIndex; + int amount = resource.getAmount(); + while ((tankIndex = getFittingFluidSlot(resource)) != -1) { + int newAmount = MathHelper.clamp(amount - capacity - tanks[tankIndex].getAmount(), 0, Integer.MAX_VALUE); + if (action == FluidAction.EXECUTE) + if (tanks[tankIndex].isEmpty()) + tanks[tankIndex] = new FluidStack(resource.getFluid(), amount - newAmount); + else + tanks[tankIndex].grow(amount - newAmount); + amount = newAmount; + if (amount == 0) + return 0; + } + return amount; + } + + @Nonnull + @Override + public FluidStack drain(FluidStack resource, FluidAction action) { + if (resource.isEmpty()) + return FluidStack.EMPTY; + + FluidStack stack = new FluidStack(resource, 0); + + for (int i = 0; i < tanks.length; i++) { + if (tanks[i].isFluidEqual(resource)) { + stack.grow(tanks[i].getAmount()); + if (action == FluidAction.EXECUTE) + tanks[i] = FluidStack.EMPTY; + } + } + + return stack.isEmpty() ? FluidStack.EMPTY : stack; + } + + @Nonnull + @Override + public FluidStack drain(int maxDrain, FluidAction action) { + + FluidStack stack = new FluidStack(tanks[0].getFluid(), 0); + + for (int i = 0; i < tanks.length; i++) { + if (tanks[i].isFluidEqual(stack)) { + int newDrainAmount = MathHelper.clamp(stack.getAmount() + tanks[i].getAmount(), 0, maxDrain); + if (action == FluidAction.EXECUTE) { + tanks[i].shrink(newDrainAmount - stack.getAmount()); + if (tanks[i].isEmpty()) + tanks[i] = FluidStack.EMPTY; + } + stack.setAmount(newDrainAmount); + } + } + + return stack.isEmpty() ? FluidStack.EMPTY : stack; + } + + private int getFittingFluidSlot(FluidStack fluidStack) { + return IntStream.range(0, tanks.length) + .filter(i -> isFluidValid(i, fluidStack)) + .findFirst() + .orElse(-1); + } + + private void setFluid(FluidStack fluid, int tank) { + tanks[tank] = fluid; + } + + public CombinedFluidHandler readFromNBT(ListNBT fluidNBTs) { + for (int i = 0; i < Math.min(tanks.length, fluidNBTs.size()); i++) + setFluid(FluidStack.loadFluidStackFromNBT(fluidNBTs.getCompound(i)), i); + return this; + } + + public ListNBT getListNBT() { + return Arrays.stream(tanks) + .map(fluid -> fluid.writeToNBT(new CompoundNBT())) + .collect(Collectors.toCollection(ListNBT::new)); + } + + public void forEachTank(NonNullConsumer fluidStackConsumer) { + Arrays.stream(tanks) + .forEach(fluidStackConsumer::accept); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java index cd43ee148..bc1c0d703 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java @@ -43,7 +43,7 @@ public class BasinBlock extends Block implements ITE, IWrenchab public TileEntity createTileEntity(BlockState state, IBlockReader world) { return AllTileEntities.BASIN.create(); } - + @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { return ActionResultType.FAIL; @@ -51,8 +51,9 @@ public class BasinBlock extends Block implements ITE, IWrenchab @Override public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.getHeldItem(handIn).isEmpty()) + BlockRayTraceResult hit) { + if (!player.getHeldItem(handIn) + .isEmpty()) return ActionResultType.PASS; try { @@ -63,7 +64,8 @@ public class BasinBlock extends Block implements ITE, IWrenchab inv.setStackInSlot(slot, ItemStack.EMPTY); } te.onEmptied(); - } catch (TileEntityException e) {} + } catch (TileEntityException e) { + } return ActionResultType.SUCCESS; } @@ -79,15 +81,15 @@ public class BasinBlock extends Block implements ITE, IWrenchab return; ItemEntity itemEntity = (ItemEntity) entityIn; withTileEntityDo(worldIn, entityIn.getPosition(), te -> { - ItemStack insertItem = ItemHandlerHelper.insertItem(te.inputInventory, itemEntity.getItem().copy(), false); + ItemStack insertItem = ItemHandlerHelper.insertItem(te.inputItemInventory, itemEntity.getItem() + .copy(), false); if (insertItem.isEmpty()) { itemEntity.remove(); if (!itemEntity.world.isRemote) - AllTriggers - .triggerForNearbyPlayers(AllTriggers.BASIN_THROW, itemEntity.world, - itemEntity.getPosition(), 3); + AllTriggers.triggerForNearbyPlayers(AllTriggers.BASIN_THROW, itemEntity.world, + itemEntity.getPosition(), 3); return; } @@ -107,8 +109,8 @@ public class BasinBlock extends Block implements ITE, IWrenchab } withTileEntityDo(worldIn, pos, te -> { - ItemHelper.dropContents(worldIn, pos, te.inputInventory); - ItemHelper.dropContents(worldIn, pos, te.outputInventory); + ItemHelper.dropContents(worldIn, pos, te.inputItemInventory); + ItemHelper.dropContents(worldIn, pos, te.outputItemInventory); }); worldIn.removeTileEntity(pos); } @@ -121,8 +123,9 @@ public class BasinBlock extends Block implements ITE, IWrenchab @Override public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { try { - return ItemHelper.calcRedstoneFromInventory(getTileEntity(worldIn, pos).inputInventory); - } catch (TileEntityException e) {} + return ItemHelper.calcRedstoneFromInventory(getTileEntity(worldIn, pos).inputItemInventory); + } catch (TileEntityException e) { + } return 0; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java index 121b3e6f4..492c3f106 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java @@ -7,6 +7,7 @@ import java.util.stream.Collectors; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.fluids.CombinedFluidHandler; import com.simibubi.create.content.contraptions.processing.BasinTileEntity.BasinInventory; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.SimpleTrigger; @@ -22,6 +23,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.NonNullList; import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -32,8 +35,9 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { public DeferralBehaviour basinChecker; public boolean basinRemoved; protected IRecipe lastRecipe; - protected LazyOptional basinInv = LazyOptional.empty(); - protected List inputs; + protected LazyOptional basinItemInv = LazyOptional.empty(); + protected LazyOptional basinFluidInv = LazyOptional.empty(); + protected MultiIngredientTypeList inputs; public BasinOperatingTileEntity(TileEntityType typeIn) { super(typeIn); @@ -55,17 +59,19 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { } public void gatherInputs() { - if (!basinInv.isPresent()) - return; - BasinInventory inv = (BasinInventory) basinInv.orElse(null); - inputs = new ArrayList<>(); - IItemHandlerModifiable inputHandler = inv.getInputHandler(); - for (int slot = 0; slot < inputHandler.getSlots(); ++slot) { - ItemStack itemstack = inputHandler.extractItem(slot, inputHandler.getSlotLimit(slot), true); - if (!itemstack.isEmpty()) { - inputs.add(itemstack); + inputs = new MultiIngredientTypeList(); + + basinItemInv.ifPresent(inv -> { + IItemHandlerModifiable inputHandler = ((BasinInventory) inv).getInputHandler(); + for (int slot = 0; slot < inputHandler.getSlots(); ++slot) { + ItemStack itemstack = inputHandler.extractItem(slot, inputHandler.getSlotLimit(slot), true); + if (!itemstack.isEmpty()) { + inputs.add(itemstack); + } } - } + }); + + basinFluidInv.ifPresent(iFluidHandler -> ((CombinedFluidHandler) iFluidHandler).forEachTank(inputs::add)); } @Override @@ -91,12 +97,16 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { Optional basinTe = getBasin(); if (!basinTe.isPresent()) return true; - if (!basinInv.isPresent()) - basinInv = basinTe.get().getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); - if (!basinInv.isPresent()) + if (!basinItemInv.isPresent()) + basinItemInv = basinTe.get() + .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); + if (!basinFluidInv.isPresent()) + basinFluidInv = basinTe.get() + .getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); + if (!basinFluidInv.isPresent() || !basinItemInv.isPresent()) return true; - if (world.isRemote) + if (world == null || world.isRemote) return true; gatherInputs(); @@ -112,8 +122,7 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { protected abstract boolean isRunning(); - public void startProcessingBasin() { - } + public void startProcessingBasin() {} public boolean continueWithPreviousRecipe() { return true; @@ -122,12 +131,10 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { public void applyBasinRecipe() { if (lastRecipe == null) return; - if (!basinInv.isPresent()) + if (!basinItemInv.isPresent() || !basinFluidInv.isPresent()) return; - BasinInventory inv = (BasinInventory) basinInv.orElse(null); - if (inv == null) - return; + BasinInventory inv = (BasinInventory) basinItemInv.orElse(null); IItemHandlerModifiable inputs = inv.getInputHandler(); IItemHandlerModifiable outputs = inv.getOutputHandler(); @@ -142,25 +149,29 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { continue; ItemStack extracted = inputs.extractItem(slot, 1, false); if ((lastRecipe instanceof ProcessingRecipe) - && ((ProcessingRecipe) lastRecipe).getRollableIngredients().get(i).remains()) { + && ((ProcessingRecipe) lastRecipe).getRollableIngredients() + .get(i) + .remains()) { catalysts.add(extracted.copy()); } else if (extracted.hasContainerItem()) { - containers.add(extracted.getContainerItem().copy()); + containers.add(extracted.getContainerItem() + .copy()); } continue Ingredients; } // something wasn't found return; } - - if (!world.isRemote) { + + if (world != null && !world.isRemote) { SimpleTrigger trigger = AllTriggers.MIXER_MIX; if (AllTileEntities.MECHANICAL_PRESS.is(this)) trigger = AllTriggers.PRESS_COMPACT; AllTriggers.triggerForNearbyPlayers(trigger, world, pos, 4); } - ItemHandlerHelper.insertItemStacked(outputs, lastRecipe.getRecipeOutput().copy(), false); + ItemHandlerHelper.insertItemStacked(outputs, lastRecipe.getRecipeOutput() + .copy(), false); containers.forEach(stack -> ItemHandlerHelper.insertItemStacked(outputs, stack, false)); catalysts.forEach(c -> ItemHandlerHelper.insertItemStacked(outputs, c, false)); @@ -176,9 +187,12 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { protected List> getMatchingRecipes() { List> list = RecipeFinder.get(getRecipeCacheKey(), world, this::matchStaticFilters); - return list.stream().filter(this::matchBasinRecipe) - .sorted((r1, r2) -> -r1.getIngredients().size() + r2.getIngredients().size()) - .collect(Collectors.toList()); + return list.stream() + .filter(this::matchBasinRecipe) + .sorted((r1, r2) -> -r1.getIngredients() + .size() + r2.getIngredients() + .size()) + .collect(Collectors.toList()); } protected void basinRemoved() { @@ -186,6 +200,8 @@ public abstract class BasinOperatingTileEntity extends KineticTileEntity { } protected Optional getBasin() { + if (world == null) + return Optional.empty(); TileEntity basinTE = world.getTileEntity(pos.down(2)); if (!(basinTE instanceof BasinTileEntity)) return Optional.empty(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 7632d8a11..78f4d7b95 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.processing; import java.util.List; import java.util.Optional; +import com.simibubi.create.content.contraptions.fluids.CombinedFluidHandler; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; @@ -15,6 +16,7 @@ import net.minecraft.tileentity.TileEntityType; import net.minecraft.util.Direction; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemHandlerHelper; @@ -22,11 +24,13 @@ import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import net.minecraftforge.items.wrapper.RecipeWrapper; +import javax.annotation.Nonnull; + public class BasinTileEntity extends SmartTileEntity implements ITickableTileEntity { public boolean contentsChanged; - protected ItemStackHandler outputInventory = new ItemStackHandler(9) { + protected ItemStackHandler outputItemInventory = new ItemStackHandler(9) { protected void onContentsChanged(int slot) { sendData(); markDirty(); @@ -35,18 +39,19 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt public class BasinInputInventory extends RecipeWrapper { public BasinInputInventory() { - super(inputInventory); + super(inputItemInventory); } } - protected ItemStackHandler inputInventory = new ItemStackHandler(9) { + protected ItemStackHandler inputItemInventory = new ItemStackHandler(9) { protected void onContentsChanged(int slot) { contentsChanged = true; sendData(); markDirty(); - }; + } - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + @Nonnull + public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { for (int i = 0; i < getSlots(); i++) { ItemStack stackInSlot = getStackInSlot(i); if (ItemHandlerHelper.canItemStacksStack(stack, stackInSlot)) @@ -54,7 +59,7 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt return stack; } return super.insertItem(slot, stack, simulate); - }; + } }; public static class BasinInventory extends CombinedInvWrapper { @@ -62,6 +67,7 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt super(input, output); } + @Nonnull @Override public ItemStack extractItem(int slot, int amount, boolean simulate) { if (isInput(slot)) @@ -69,8 +75,9 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt return super.extractItem(slot, amount, simulate); } + @Nonnull @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { if (!isInput(slot)) return stack; return super.insertItem(slot, stack, simulate); @@ -91,7 +98,11 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt } protected LazyOptional inventory = - LazyOptional.of(() -> new BasinInventory(inputInventory, outputInventory)); + LazyOptional.of(() -> new BasinInventory(inputItemInventory, outputItemInventory)); + + protected LazyOptional fluidInventory = + LazyOptional.of(() -> new CombinedFluidHandler(9, 1000)); + public BasinInputInventory recipeInventory; public BasinTileEntity(TileEntityType type) { @@ -99,24 +110,28 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt contentsChanged = true; recipeInventory = new BasinInputInventory(); } - + @Override public void addBehaviours(List behaviours) { behaviours.add(new DirectBeltInputBehaviour(this)); } - + @Override public void read(CompoundNBT compound) { super.read(compound); - inputInventory.deserializeNBT(compound.getCompound("InputItems")); - outputInventory.deserializeNBT(compound.getCompound("OutputItems")); + inputItemInventory.deserializeNBT(compound.getCompound("InputItems")); + outputItemInventory.deserializeNBT(compound.getCompound("OutputItems")); + if (compound.hasUniqueId("fluids")) + fluidInventory + .ifPresent(combinedFluidHandler -> combinedFluidHandler.readFromNBT(compound.getList("fluids", 10))); } @Override public CompoundNBT write(CompoundNBT compound) { super.write(compound); - compound.put("InputItems", inputInventory.serializeNBT()); - compound.put("OutputItems", outputInventory.serializeNBT()); + compound.put("InputItems", inputItemInventory.serializeNBT()); + compound.put("OutputItems", outputItemInventory.serializeNBT()); + fluidInventory.ifPresent(combinedFuidHandler -> compound.put("fluids", combinedFuidHandler.getListNBT())); return compound; } @@ -128,13 +143,17 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt public void remove() { onEmptied(); inventory.invalidate(); + fluidInventory.invalidate(); super.remove(); } + @Nonnull @Override - public LazyOptional getCapability(Capability cap, Direction side) { + public LazyOptional getCapability(@Nonnull Capability cap, Direction side) { if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return inventory.cast(); + if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) + return fluidInventory.cast(); return super.getCapability(cap, side); } @@ -147,6 +166,8 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt } private Optional getOperator() { + if (world == null) + return Optional.empty(); TileEntity te = world.getTileEntity(pos.up(2)); if (te instanceof BasinOperatingTileEntity) return Optional.of((BasinOperatingTileEntity) te); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/MultiIngredientTypeList.java b/src/main/java/com/simibubi/create/content/contraptions/processing/MultiIngredientTypeList.java new file mode 100644 index 000000000..1206bc283 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/MultiIngredientTypeList.java @@ -0,0 +1,28 @@ +package com.simibubi.create.content.contraptions.processing; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +import java.util.ArrayList; +import java.util.function.Consumer; + +public class MultiIngredientTypeList { + private final ArrayList itemIngredients = new ArrayList<>(); + private final ArrayList fluidIngredients = new ArrayList<>(); + + public void add(ItemStack itemstack) { + itemIngredients.add(itemstack); + } + + public void add(FluidStack fluidStack) { + fluidIngredients.add(fluidStack); + } + + public void forEachItemStack(Consumer itemStackConsumer) { + itemIngredients.forEach(itemStackConsumer); + } + + public void forEachFluidStack(Consumer fluidStackConsumer) { + fluidIngredients.forEach(fluidStackConsumer); + } +} From 8d056d082a8c0977dffbc8f379127f3f4b0b89eb Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 8 Jul 2020 22:24:33 +0200 Subject: [PATCH 43/47] Brass Tunnel connectivity and filtering - Brass tunnels now visually connect for upcoming splitter functionality - Added a tileentity behaviour that allows separate filtering for each face - Added filtering to brass tunnels --- src/generated/resources/.cache/cache | 32 +-- .../models/block/andesite_tunnel/cross.json | 1 + .../block/andesite_tunnel/fullshade.json | 1 + .../block/andesite_tunnel/halfshade.json | 1 + .../block/andesite_tunnel/straight.json | 1 + .../models/block/andesite_tunnel/t_left.json | 1 + .../models/block/andesite_tunnel/t_right.json | 1 + .../models/block/andesite_tunnel/window.json | 1 + .../models/block/brass_tunnel/cross.json | 1 + .../models/block/brass_tunnel/fullshade.json | 1 + .../models/block/brass_tunnel/halfshade.json | 1 + .../models/block/brass_tunnel/straight.json | 1 + .../models/block/brass_tunnel/t_left.json | 1 + .../models/block/brass_tunnel/t_right.json | 1 + .../models/block/brass_tunnel/window.json | 1 + .../create/models/item/andesite_tunnel.json | 1 + .../create/models/item/brass_tunnel.json | 1 + .../com/simibubi/create/AllBlockPartials.java | 1 - .../java/com/simibubi/create/AllBlocks.java | 7 +- .../com/simibubi/create/AllSpriteShifts.java | 1 + .../com/simibubi/create/AllTileEntities.java | 16 +- .../BeltTunnelInteractionHandler.java | 12 +- .../block/belts/tunnel/BeltTunnelBlock.java | 35 +-- .../belts/tunnel/BeltTunnelRenderer.java | 5 +- .../belts/tunnel/BeltTunnelTileEntity.java | 41 +++- .../block/belts/tunnel/BrassTunnelBlock.java | 42 ++++ .../belts/tunnel/BrassTunnelCTBehaviour.java | 56 +++++ .../belts/tunnel/BrassTunnelFilterSlot.java | 15 ++ .../belts/tunnel/BrassTunnelTileEntity.java | 201 ++++++++++++++++++ .../logistics/block/funnel/FunnelBlock.java | 3 +- .../connected/ConnectedTextureBehaviour.java | 4 +- .../foundation/data/BuilderTransformers.java | 2 + .../filtering/FilteringBehaviour.java | 9 + .../behaviour/filtering/FilteringHandler.java | 9 +- .../filtering/FilteringRenderer.java | 17 +- .../filtering/SidedFilteringBehaviour.java | 150 +++++++++++++ .../create/foundation/utility/NBTHelper.java | 7 +- .../models/block/belt_tunnel/cross.json | 21 +- .../models/block/belt_tunnel/fullshade.json | 13 +- .../models/block/belt_tunnel/halfshade.json | 11 +- .../models/block/belt_tunnel/indicator.json | 22 -- .../create/models/block/belt_tunnel/item.json | 13 +- .../models/block/belt_tunnel/straight.json | 15 +- .../models/block/belt_tunnel/t_left.json | 17 +- .../models/block/belt_tunnel/t_right.json | 17 +- .../models/block/belt_tunnel/window.json | 11 +- .../create/textures/block/andesite_tunnel.png | Bin 2735 -> 2571 bytes .../textures/block/andesite_tunnel_top.png | Bin 0 -> 297 bytes .../create/textures/block/brass_tunnel.png | Bin 2747 -> 2547 bytes .../textures/block/brass_tunnel_top.png | Bin 0 -> 560 bytes .../block/brass_tunnel_top_connected.png | Bin 0 -> 1050 bytes 51 files changed, 676 insertions(+), 145 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelFilterSlot.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java create mode 100644 src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java delete mode 100644 src/main/resources/assets/create/models/block/belt_tunnel/indicator.json create mode 100644 src/main/resources/assets/create/textures/block/andesite_tunnel_top.png create mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel_top.png create mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 8e657704f..91511dbdb 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -395,13 +395,13 @@ a033fbac3129bba9211c6c4a0e16c905643afa39 assets\create\models\block\andesite_cob 0ed983628e8868f77301bea1111570d3631f24fb assets\create\models\block\andesite_cobblestone_wall_side.json 9febbf6fb88e726a89573c3788bd8348ba805b6d assets\create\models\block\andesite_funnel.json b1d0bb538fc8285b7d3fd77a977d78a104b83b62 assets\create\models\block\andesite_pillar.json -cb644bda777d361ddf1255644641086d82df8480 assets\create\models\block\andesite_tunnel\cross.json -99e33c403e907dc3febdb6a0a8b183fe454c2448 assets\create\models\block\andesite_tunnel\fullshade.json -c1d4392677fe3871fd6948f29bdf427abc9910ed assets\create\models\block\andesite_tunnel\halfshade.json -8e5c47a028ec674048c208e380152bb4f817a406 assets\create\models\block\andesite_tunnel\straight.json -a814c9aaa2cd44c8035124cd8f87ea4ad368701e assets\create\models\block\andesite_tunnel\t_left.json -64f63d63b7682c4237bf04faf51f68b3d0122de9 assets\create\models\block\andesite_tunnel\t_right.json -b121b55494785695b03bf7971fb0cc77503d857f assets\create\models\block\andesite_tunnel\window.json +01ad35140f53b2c7d3c36ce148629351ab91412b assets\create\models\block\andesite_tunnel\cross.json +cdfd39b052f0f606abfd34d9330d536d7f0f1281 assets\create\models\block\andesite_tunnel\fullshade.json +4425b48e65cc855cee37abd6c7ec1356c703e87c assets\create\models\block\andesite_tunnel\halfshade.json +1ee32dacef1840d526579ac93560f85869053e6d assets\create\models\block\andesite_tunnel\straight.json +4cf6628da4d000ef84497781853f8df31ac91d93 assets\create\models\block\andesite_tunnel\t_left.json +fc94e50b17588232db29f917e90f9659e36ec967 assets\create\models\block\andesite_tunnel\t_right.json +1405be1d4ca1aeced9a287f0d1fca5ba3cc722d2 assets\create\models\block\andesite_tunnel\window.json e8bfb63e0a4426f9d95cd111640169b218dead1b assets\create\models\block\belt_observer\detect.json a2e63810eceb028484b193ddf4315e1811950dc8 assets\create\models\block\belt_observer\detect_belt.json 034c308d46def892e6638ac0b3374849a6a88a26 assets\create\models\block\belt_observer\detect_belt_powered.json @@ -440,13 +440,13 @@ ee79efc65b05d953784b00e573d37602629eb9e8 assets\create\models\block\brass_belt_f 7edf6b5c95f61071d8a9243a63e786765d6104a3 assets\create\models\block\brass_chute_funnel_push_powered.json 6c617fc504cb2259263d24fc56c4735e455aac6d assets\create\models\block\brass_funnel.json 2f152b82291b7fc994191b1ffb8ec6d65aec748b assets\create\models\block\brass_funnel_powered.json -5544ab512bdfe6acb9b14f8e6576ffcca097f18f assets\create\models\block\brass_tunnel\cross.json -fd2fec2a7699b54516c79d3e554c4fc10c331be1 assets\create\models\block\brass_tunnel\fullshade.json -816aa7593ce220dd7c0dab9eef48eef13be289e3 assets\create\models\block\brass_tunnel\halfshade.json -e65fac8652f201891b25067b922efdd2d9309cc7 assets\create\models\block\brass_tunnel\straight.json -7a85b21c40c659c93c2c41f5edd2227e4ee56614 assets\create\models\block\brass_tunnel\t_left.json -881d97c0b7ee57695dea157bfeeaad212c98766a assets\create\models\block\brass_tunnel\t_right.json -fddfb12eae701af4b84b6e9c1a4cdaceb848fb43 assets\create\models\block\brass_tunnel\window.json +eed69194b5b53e285d39bf2d794e67300497bf6f assets\create\models\block\brass_tunnel\cross.json +06efb094dd1ca296614d2a15c74d2aca63503b97 assets\create\models\block\brass_tunnel\fullshade.json +da066edd238414610a14fd092f7e06705d36fd9e assets\create\models\block\brass_tunnel\halfshade.json +77fc3e676e25d84d88dc2b452b2263b366a408f6 assets\create\models\block\brass_tunnel\straight.json +11bfe6b44bbf5f5af88295317f20a91dbf6ebfcd assets\create\models\block\brass_tunnel\t_left.json +fb1a38ee7e4a58711f2f2d90edc13c8a5aedd31c assets\create\models\block\brass_tunnel\t_right.json +67d96d75e9c2b3d9e0c781c514efb85486fce0ad assets\create\models\block\brass_tunnel\window.json 028a07b49c05fe8a93f1d8c229d81e73d887c2df assets\create\models\block\chiseled_dark_scoria.json b1f9ee4867373dd8f976625bab744a1c72c7fd16 assets\create\models\block\chiseled_dolomite.json cd7751090cf3d55296b8e415d0af9b6f18d69770 assets\create\models\block\chiseled_gabbro.json @@ -991,7 +991,7 @@ b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets\create\models\item\andesite_cobb 4856d13a72ec0af9f10226b4a4bf0567eb580b9a assets\create\models\item\andesite_cobblestone_wall.json 0a9f5f6d552813029474dbbfa31e8443ed91adcd assets\create\models\item\andesite_funnel.json 75b8b00c2418b9660d35a7fabd0774925cf1c02f assets\create\models\item\andesite_pillar.json -c259e28f971a736af10b1fd7393118d5d31c51b2 assets\create\models\item\andesite_tunnel.json +5889a1d445c576dc23cef8ab42c76f1d6cc4bfd3 assets\create\models\item\andesite_tunnel.json bf1fc6bdf7fca6f1958a2d3e96202c1cecb50669 assets\create\models\item\basin.json 1da382e7e58eaa9788f5b1d92221ccac573e068f assets\create\models\item\belt_connector.json 695a69d5854e2eb134b55d855bd2b7b18808a01d assets\create\models\item\belt_observer.json @@ -1004,7 +1004,7 @@ ab045c951352806c3f632dda7b71573f93f60ac4 assets\create\models\item\brass_funnel. 1786bdffa2ab5a07c88d2797db3d7b54461323c4 assets\create\models\item\brass_ingot.json a37be4a0ec9bf6c381527403c57ced4f81abd67c assets\create\models\item\brass_nugget.json 14ea6ee4db6e7e76446e331a70b6b6bec31e8eb7 assets\create\models\item\brass_sheet.json -2c71c36d0b987d5a5e07da4f23f3eaa88f806edf assets\create\models\item\brass_tunnel.json +7b231b9401ff151fa6b0e1361b64774b3a2051cf assets\create\models\item\brass_tunnel.json 3e232a103f7f916fc11edb4d541ca99fe7b44181 assets\create\models\item\cart_assembler.json 99d64b76b3baa84c3bd4b96ccd3376ca12425950 assets\create\models\item\chiseled_dark_scoria.json 83d3571eacde52568786802b268f24c6578c1e5d assets\create\models\item\chiseled_dolomite.json diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json index 358403aca..c36f22472 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/cross", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json index b1656f6c8..ea791f982 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/fullshade.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/fullshade", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json index c679c0a88..9729bac79 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/halfshade.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/halfshade", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json index 53fc1627a..6b6d059ef 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/straight", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json index 12beb7306..fabcf7ce3 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/t_left", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json index a5b30e322..b785de8e9 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/t_right", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json index a2cef9213..bb22e06ca 100644 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json +++ b/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/window", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json b/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json index ddd59b92b..e69d8638e 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/cross", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json b/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json index 40d276e2b..62ebfc72e 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/fullshade.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/fullshade", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json b/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json index 60b51a330..73f30d68c 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/halfshade.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/halfshade", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json b/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json index dd6fd9f1f..c9453afcf 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/straight", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json index 38ff1c45c..6aaa5a249 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/t_left", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json index 39ffb1a04..3747c79b2 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/t_right", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json b/src/generated/resources/assets/create/models/block/brass_tunnel/window.json index b01232551..de9a58ab9 100644 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json +++ b/src/generated/resources/assets/create/models/block/brass_tunnel/window.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/window", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_tunnel.json b/src/generated/resources/assets/create/models/item/andesite_tunnel.json index 602fd4968..36f34ac32 100644 --- a/src/generated/resources/assets/create/models/item/andesite_tunnel.json +++ b/src/generated/resources/assets/create/models/item/andesite_tunnel.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/item", "textures": { "0": "create:block/andesite_tunnel", + "1": "create:block/andesite_tunnel_top", "particle": "block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_tunnel.json b/src/generated/resources/assets/create/models/item/brass_tunnel.json index faa128867..567f8dd77 100644 --- a/src/generated/resources/assets/create/models/item/brass_tunnel.json +++ b/src/generated/resources/assets/create/models/item/brass_tunnel.json @@ -2,6 +2,7 @@ "parent": "create:block/belt_tunnel/item", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index b2ad31f85..b2ccfbad5 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -60,7 +60,6 @@ public class AllBlockPartials { ANALOG_LEVER_INDICATOR = get("analog_lever/indicator"), BELT_FUNNEL_FLAP = get("belt_funnel/flap"), BELT_TUNNEL_FLAP = get("belt_tunnel/flap"), - BELT_TUNNEL_INDICATOR = get("belt_tunnel/indicator"), FLEXPEATER_INDICATOR = get("diodes/indicator"), FLYWHEEL = get("flywheel/wheel"), FLYWHEEL_UPPER_ROTATING = get("flywheel/upper_rotating_connector"), diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 67b0fd927..564009be0 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -77,6 +77,8 @@ import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; +import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; +import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelCTBehaviour; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; import com.simibubi.create.content.logistics.block.chute.ChuteItem; @@ -749,9 +751,10 @@ public class AllBlocks { .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) .register(); - public static final BlockEntry BRASS_TUNNEL = - REGISTRATE.block("brass_tunnel", BeltTunnelBlock::new) + public static final BlockEntry BRASS_TUNNEL = + REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) + .onRegister(connectedTextures(new BrassTunnelCTBehaviour())) .register(); public static final BlockEntry REDSTONE_CONTACT = diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index 6ff0d05fe..beeb4fa4e 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -47,6 +47,7 @@ public class AllSpriteShifts { CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky"); public static final CTSpriteShiftEntry + BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"), FLUID_TANK = getCT(CTType.OMNIDIRECTIONAL, "fluid_tank"); public static final SpriteShiftEntry diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index f7b0b865f..5e67ace79 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -72,6 +72,7 @@ import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverRe import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelRenderer; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; +import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; import com.simibubi.create.content.logistics.block.chute.ChuteRenderer; import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; import com.simibubi.create.content.logistics.block.depot.DepotRenderer; @@ -157,8 +158,10 @@ public class AllTileEntities { public static final TileEntityEntry BELT = register("belt", BeltTileEntity::new, AllBlocks.BELT); public static final TileEntityEntry CHUTE = register("chute", ChuteTileEntity::new, AllBlocks.CHUTE); - public static final TileEntityEntry BELT_TUNNEL = - register("belt_tunnel", BeltTunnelTileEntity::new, AllBlocks.ANDESITE_TUNNEL, AllBlocks.BRASS_TUNNEL); + public static final TileEntityEntry ANDESITE_TUNNEL = + register("andesite_tunnel", BeltTunnelTileEntity::new, AllBlocks.ANDESITE_TUNNEL); + public static final TileEntityEntry BRASS_TUNNEL = + register("brass_tunnel", BrassTunnelTileEntity::new, AllBlocks.BRASS_TUNNEL); public static final TileEntityEntry MECHANICAL_ARM = register("mechanical_arm", ArmTileEntity::new, AllBlocks.MECHANICAL_ARM); public static final TileEntityEntry MECHANICAL_PISTON = register("mechanical_piston", @@ -227,9 +230,9 @@ public class AllTileEntities { public static final TileEntityEntry DEPOT = register("depot", DepotTileEntity::new, AllBlocks.DEPOT); - public static final TileEntityEntry FUNNEL = register("funnel", - FunnelTileEntity::new, AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.BRASS_CHUTE_FUNNEL, - AllBlocks.ANDESITE_FUNNEL, AllBlocks.ANDESITE_BELT_FUNNEL, AllBlocks.ANDESITE_CHUTE_FUNNEL); + public static final TileEntityEntry FUNNEL = register("funnel", FunnelTileEntity::new, + AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.BRASS_CHUTE_FUNNEL, AllBlocks.ANDESITE_FUNNEL, + AllBlocks.ANDESITE_BELT_FUNNEL, AllBlocks.ANDESITE_CHUTE_FUNNEL); public static final TileEntityEntry PACKAGER = register("packager", PackagerTileEntity::new, AllBlocks.PACKAGER); @@ -313,7 +316,8 @@ public class AllTileEntities { bind(TRANSPOSER, SmartTileEntityRenderer::new); bind(LINKED_TRANSPOSER, SmartTileEntityRenderer::new); bind(FUNNEL, FunnelRenderer::new); - bind(BELT_TUNNEL, BeltTunnelRenderer::new); + bind(ANDESITE_TUNNEL, BeltTunnelRenderer::new); + bind(BRASS_TUNNEL, BeltTunnelRenderer::new); bind(MECHANICAL_ARM, ArmRenderer::new); bind(BELT_OBSERVER, BeltObserverRenderer::new); bind(ADJUSTABLE_REPEATER, AdjustableRepeaterRenderer::new); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java index 7e6102ef9..4fa3cca53 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -6,6 +6,8 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; +import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; +import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -45,16 +47,14 @@ public class BeltTunnelInteractionHandler { .up(); if (!(belt.getWorld() .getBlockState(pos) - .getBlock() instanceof BeltTunnelBlock)) + .getBlock() instanceof BrassTunnelBlock)) return false; TileEntity te = belt.getWorld() .getTileEntity(pos); - if (te == null || !(te instanceof BeltTunnelTileEntity)) + if (te == null || !(te instanceof BrassTunnelTileEntity)) return false; - - // TODO: ask TE if item can be inserted - - return false; + BrassTunnelTileEntity tunnel = (BrassTunnelTileEntity) te; + return !tunnel.canInsert(movementDirection.getOpposite(), stack); } public static void flapTunnel(BeltInventory beltInventory, int offset, Direction side, boolean inward) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java index b5deacd05..f3ef9e2a6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java @@ -63,7 +63,7 @@ public class BeltTunnelBlock extends Block implements ITE, @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.BELT_TUNNEL.create(); + return AllTileEntities.ANDESITE_TUNNEL.create(); } @Override @@ -75,7 +75,7 @@ public class BeltTunnelBlock extends Block implements ITE, return false; return true; } - + public boolean isValidPositionForPlacement(BlockState state, IWorldReader worldIn, BlockPos pos) { BlockState blockState = worldIn.getBlockState(pos.down()); if (!AllBlocks.BELT.has(blockState)) @@ -99,14 +99,20 @@ public class BeltTunnelBlock extends Block implements ITE, return getTunnelState(context.getWorld(), context.getPos()); } + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) { + if (!(world instanceof WrappedWorld) && !world.isRemote()) + withTileEntityDo(world, pos, BeltTunnelTileEntity::updateTunnelConnections); + } + @Override public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { if (facing.getAxis() .isVertical()) return state; - if (!(worldIn instanceof WrappedWorld)) - withTileEntityDo(worldIn, currentPos, BeltTunnelTileEntity::initFlaps); + if (!(worldIn instanceof WrappedWorld) && !worldIn.isRemote()) + withTileEntityDo(worldIn, currentPos, BeltTunnelTileEntity::updateTunnelConnections); BlockState tunnelState = getTunnelState(worldIn, currentPos); if (tunnelState.get(HORIZONTAL_AXIS) == state.get(HORIZONTAL_AXIS)) { if (hasWindow(tunnelState) == hasWindow(state)) @@ -123,7 +129,7 @@ public class BeltTunnelBlock extends Block implements ITE, world.setBlockState(pos, newTunnel, 3); TileEntity te = world.getTileEntity(pos); if (te != null && (te instanceof BeltTunnelTileEntity)) - ((BeltTunnelTileEntity) te).initFlaps(); + ((BeltTunnelTileEntity) te).updateTunnelConnections(); } } @@ -158,13 +164,14 @@ public class BeltTunnelBlock extends Block implements ITE, Direction fw = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); BlockState blockState1 = reader.getBlockState(pos.offset(fw)); BlockState blockState2 = reader.getBlockState(pos.offset(fw.getOpposite())); - boolean valid1 = - blockState1.getBlock() instanceof BeltTunnelBlock || blockState1.getBlock() instanceof BeltFunnelBlock - && blockState1.get(BeltFunnelBlock.HORIZONTAL_FACING) == fw.getOpposite(); - boolean valid2 = - blockState2.getBlock() instanceof BeltTunnelBlock || blockState2.getBlock() instanceof BeltFunnelBlock - && blockState2.get(BeltFunnelBlock.HORIZONTAL_FACING) == fw; - if (valid1 && valid2) + boolean funnel1 = blockState1.getBlock() instanceof BeltFunnelBlock + && blockState1.get(BeltFunnelBlock.HORIZONTAL_FACING) == fw.getOpposite(); + boolean funnel2 = blockState2.getBlock() instanceof BeltFunnelBlock + && blockState2.get(BeltFunnelBlock.HORIZONTAL_FACING) == fw; + boolean valid1 = blockState1.getBlock() instanceof BeltTunnelBlock || funnel1; + boolean valid2 = blockState2.getBlock() instanceof BeltTunnelBlock || funnel2; + + if (valid1 && valid2 && !(funnel1 && funnel2)) state = state.with(SHAPE, Shape.WINDOW); } @@ -173,10 +180,10 @@ public class BeltTunnelBlock extends Block implements ITE, @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + if (!hasWindow(state)) + return ActionResultType.PASS; // Toggle windows - if (!hasWindow(state)) - return IWrenchable.super.onWrenched(state, context); Shape next = state.get(SHAPE); switch (state.get(SHAPE)) { case FULLSHADE: diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java index e87dbc1da..8a7b11b11 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelRenderer.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.logistics.block.belts.tunnel; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; +import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; import com.simibubi.create.foundation.utility.SuperByteBuffer; import net.minecraft.client.renderer.IRenderTypeBuffer; @@ -16,7 +16,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -public class BeltTunnelRenderer extends SafeTileEntityRenderer { +public class BeltTunnelRenderer extends SmartTileEntityRenderer { public BeltTunnelRenderer(TileEntityRendererDispatcher dispatcher) { super(dispatcher); @@ -25,6 +25,7 @@ public class BeltTunnelRenderer extends SafeTileEntityRenderer flaps; - private LazyOptional cap = LazyOptional.empty(); - private List> flapsToSend; + protected LazyOptional cap = LazyOptional.empty(); + protected List> flapsToSend; public BeltTunnelTileEntity(TileEntityType type) { super(type); @@ -48,11 +52,29 @@ public class BeltTunnelTileEntity extends SmartTileEntity { @Override public CompoundNBT write(CompoundNBT compound) { + ListNBT flapsNBT = new ListNBT(); + for (Direction direction : flaps.keySet()) + flapsNBT.add(IntNBT.of(direction.getIndex())); + compound.put("Flaps", flapsNBT); return super.write(compound); } @Override public void read(CompoundNBT compound) { + Set newFlaps = new HashSet<>(6); + ListNBT flapsNBT = compound.getList("Flaps", NBT.TAG_INT); + for (INBT inbt : flapsNBT) + if (inbt instanceof IntNBT) + newFlaps.add(Direction.byIndex(((IntNBT) inbt).getInt())); + + for (Direction d : Iterate.directions) + if (!newFlaps.contains(d)) + flaps.remove(d); + else if (!flaps.containsKey(d)) + flaps.put(d, new InterpolatedChasingValue().start(.25f) + .target(0) + .withSpeed(.05f)); + super.read(compound); } @@ -68,7 +90,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity { flap.putBoolean("FlapInward", pair.getValue()); flapsNBT.add(flap); } - writeToClient.put("Flaps", flapsNBT); + writeToClient.put("TriggerFlaps", flapsNBT); flapsToSend.clear(); } return writeToClient; @@ -77,21 +99,17 @@ public class BeltTunnelTileEntity extends SmartTileEntity { @Override public void readClientUpdate(CompoundNBT tag) { super.readClientUpdate(tag); - if (tag.contains("Flaps")) { - ListNBT flapsNBT = tag.getList("Flaps", NBT.TAG_COMPOUND); + if (tag.contains("TriggerFlaps")) { + ListNBT flapsNBT = tag.getList("TriggerFlaps", NBT.TAG_COMPOUND); for (INBT inbt : flapsNBT) { CompoundNBT flap = (CompoundNBT) inbt; Direction side = Direction.byIndex(flap.getInt("Flap")); flap(side, flap.getBoolean("FlapInward")); } - } else { - initFlaps(); } } - public void initFlaps() { - if (!world.isRemote) - sendData(); + public void updateTunnelConnections() { flaps.clear(); BlockState tunnelState = getBlockState(); for (Direction direction : Direction.values()) { @@ -116,6 +134,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity { .target(0) .withSpeed(.05f)); } + sendData(); } public void flap(Direction side, boolean inward) { @@ -132,7 +151,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity { @Override public void initialize() { super.initialize(); - initFlaps(); +// updateTunnelConnections(); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java new file mode 100644 index 000000000..034f2f73f --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelBlock.java @@ -0,0 +1,42 @@ +package com.simibubi.create.content.logistics.block.belts.tunnel; + +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; + +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.World; + +public class BrassTunnelBlock extends BeltTunnelBlock { + + public BrassTunnelBlock(Properties properties) { + super(properties); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.BRASS_TUNNEL.create(); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState facingState, IWorld worldIn, + BlockPos currentPos, BlockPos facingPos) { + return super.updatePostPlacement(state, facing, facingState, worldIn, currentPos, facingPos); + } + + @Override + public void onReplaced(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, + boolean p_196243_5_) { + if (p_196243_1_.hasTileEntity() + && (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasTileEntity())) { + TileEntityBehaviour.destroy(p_196243_2_, p_196243_3_, FilteringBehaviour.TYPE); + p_196243_2_.removeTileEntity(p_196243_3_); + } + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java new file mode 100644 index 000000000..34b36e171 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java @@ -0,0 +1,56 @@ +package com.simibubi.create.content.logistics.block.belts.tunnel; + +import com.simibubi.create.AllSpriteShifts; +import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; +import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; + +import net.minecraft.block.BlockState; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ILightReader; + +public class BrassTunnelCTBehaviour extends ConnectedTextureBehaviour { + + @Override + public CTSpriteShiftEntry get(BlockState state, Direction direction) { + return direction == Direction.UP ? AllSpriteShifts.BRASS_TUNNEL_TOP : null; + } + + @Override + public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos, + Direction face) { + int yDiff = otherPos.getY() - pos.getY(); + int zDiff = otherPos.getZ() - pos.getZ(); + if (yDiff != 0) + return false; + + TileEntity te = reader.getTileEntity(pos); + if (!(te instanceof BrassTunnelTileEntity)) + return false; + BrassTunnelTileEntity tunnelTE = (BrassTunnelTileEntity) te; + boolean leftSide = zDiff > 0; + return tunnelTE.isConnected(leftSide); + } + + @Override + public CTContext buildContext(ILightReader reader, BlockPos pos, BlockState state, Direction face) { + return super.buildContext(reader, pos, state, face); + } + + @Override + protected boolean reverseUVs(BlockState state, Direction face) { + return super.reverseUVs(state, face); + } + + @Override + protected boolean reverseUVsHorizontally(BlockState state, Direction face) { + return super.reverseUVsHorizontally(state, face); + } + + @Override + protected boolean reverseUVsVertically(BlockState state, Direction face) { + return super.reverseUVsVertically(state, face); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelFilterSlot.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelFilterSlot.java new file mode 100644 index 000000000..874747623 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelFilterSlot.java @@ -0,0 +1,15 @@ +package com.simibubi.create.content.logistics.block.belts.tunnel; + +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.util.math.Vec3d; + +public class BrassTunnelFilterSlot extends ValueBoxTransform.Sided { + + @Override + protected Vec3d getSouthLocation() { + return VecHelper.voxelSpace(8, 12, 15.5f); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java new file mode 100644 index 000000000..e5bda8728 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -0,0 +1,201 @@ +package com.simibubi.create.content.logistics.block.belts.tunnel; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Nullable; + +import org.apache.commons.lang3.tuple.Pair; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilteringBehaviour; +import com.simibubi.create.foundation.utility.NBTHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.NBTUtil; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Direction.AxisDirection; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.common.util.Constants.NBT; + +public class BrassTunnelTileEntity extends BeltTunnelTileEntity { + + SidedFilteringBehaviour filtering; + + boolean connectedLeft; + boolean connectedRight; + + ItemStack stackToDistribute; + float distributionProgress; + List> distributionTargets; + int distributionDistanceLeft; + int distributionDistanceRight; + + public BrassTunnelTileEntity(TileEntityType type) { + super(type); + distributionTargets = new ArrayList<>(); + stackToDistribute = ItemStack.EMPTY; + } + + @Override + public void initialize() { + if (filtering == null) { + filtering = createSidedFilter(); + putBehaviour(filtering); + } + super.initialize(); + } + + public boolean canInsert(Direction side, ItemStack stack) { + if (filtering != null && !filtering.test(side, stack)) + return false; + if (!connectedLeft && !connectedRight) + return true; + if (!stackToDistribute.isEmpty()) + return false; + return true; + } + + @Override + public void addBehavioursDeferred(List behaviours) { + super.addBehavioursDeferred(behaviours); + filtering = createSidedFilter(); + behaviours.add(filtering); + } + + protected SidedFilteringBehaviour createSidedFilter() { + return new SidedFilteringBehaviour(this, new BrassTunnelFilterSlot(), this::makeFilter, + this::isValidFaceForFilter); + } + + private FilteringBehaviour makeFilter(Direction side, FilteringBehaviour filter) { + return filter; + } + + private boolean isValidFaceForFilter(Direction side) { + return flaps.containsKey(side); + } + + @Override + public CompoundNBT write(CompoundNBT compound) { + compound.putBoolean("ConnectedLeft", connectedLeft); + compound.putBoolean("ConnectedRight", connectedRight); + + compound.put("StackToDistribute", stackToDistribute.serializeNBT()); + compound.putFloat("DistributionProgress", distributionProgress); + compound.putInt("DistanceLeft", distributionDistanceLeft); + compound.putInt("DistanceRight", distributionDistanceRight); + compound.put("Targets", NBTHelper.writeCompoundList(distributionTargets, pair -> { + CompoundNBT nbt = new CompoundNBT(); + nbt.put("Pos", NBTUtil.writeBlockPos(pair.getKey())); + nbt.putInt("Face", pair.getValue() + .getIndex()); + return nbt; + })); + + return super.write(compound); + } + + @Override + public void read(CompoundNBT compound) { + connectedLeft = compound.getBoolean("ConnectedLeft"); + connectedRight = compound.getBoolean("ConnectedRight"); + + stackToDistribute = ItemStack.read(compound.getCompound("StackToDistribute")); + distributionProgress = compound.getFloat("DistributionProgress"); + distributionDistanceLeft = compound.getInt("DistanceLeft"); + distributionDistanceRight = compound.getInt("DistanceRight"); + distributionTargets = NBTHelper.readCompoundList(compound.getList("Targets", NBT.TAG_COMPOUND), nbt -> { + BlockPos pos = NBTUtil.readBlockPos(nbt.getCompound("Pos")); + Direction face = Direction.byIndex(nbt.getInt("Face")); + return Pair.of(pos, face); + }); + + super.read(compound); + } + + @Override + public void readClientUpdate(CompoundNBT tag) { + boolean wasConnectedLeft = connectedLeft; + boolean wasConnectedRight = connectedRight; + super.readClientUpdate(tag); + if (wasConnectedLeft != connectedLeft || wasConnectedRight != connectedRight) { + requestModelDataUpdate(); + if (hasWorld()) + world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16); + } + filtering.updateFilterPresence(); + } + + public boolean isConnected(boolean leftSide) { + return leftSide ? connectedLeft : connectedRight; + } + + @Override + public void updateTunnelConnections() { + super.updateTunnelConnections(); + boolean connectivityChanged = false; + boolean nowConnectedLeft = determineIfConnected(true); + boolean nowConnectedRight = determineIfConnected(false); + + if (connectedLeft != nowConnectedLeft) { + connectedLeft = nowConnectedLeft; + connectivityChanged = true; + BrassTunnelTileEntity adjacent = getAdjacent(true); + if (adjacent != null && !world.isRemote) + adjacent.updateTunnelConnections(); + } + if (connectedRight != nowConnectedRight) { + connectedRight = nowConnectedRight; + connectivityChanged = true; + BrassTunnelTileEntity adjacent = getAdjacent(false); + if (adjacent != null && !world.isRemote) + adjacent.updateTunnelConnections(); + } + + if (filtering != null) + filtering.updateFilterPresence(); + if (connectivityChanged) + sendData(); + } + + protected boolean determineIfConnected(boolean leftSide) { + if (flaps.isEmpty()) + return false; + BrassTunnelTileEntity adjacentTunnelTE = getAdjacent(leftSide); + return adjacentTunnelTE != null && !adjacentTunnelTE.flaps.isEmpty(); + } + + @Nullable + protected BrassTunnelTileEntity getAdjacent(boolean leftSide) { + if (!hasWorld()) + return null; + + BlockState blockState = getBlockState(); + if (!AllBlocks.BRASS_TUNNEL.has(blockState)) + return null; + + Axis axis = blockState.get(BrassTunnelBlock.HORIZONTAL_AXIS); + Direction baseDirection = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); + Direction direction = leftSide ? baseDirection.rotateYCCW() : baseDirection.rotateY(); + + BlockPos adjacentPos = pos.offset(direction); + BlockState adjacentBlockState = world.getBlockState(adjacentPos); + if (!AllBlocks.BRASS_TUNNEL.has(adjacentBlockState)) + return null; + if (adjacentBlockState.get(BrassTunnelBlock.HORIZONTAL_AXIS) != axis) + return null; + TileEntity adjacentTE = world.getTileEntity(adjacentPos); + if (!(adjacentTE instanceof BrassTunnelTileEntity)) + return null; + return (BrassTunnelTileEntity) adjacentTE; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index 31684566b..f9df8a5c0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -62,7 +62,7 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< ItemStack heldItem = player.getHeldItem(handIn); boolean shouldntInsertItem = AllBlocks.MECHANICAL_ARM.isIn(heldItem); - + if (hit.getFace() == getFunnelFacing(state) && !shouldntInsertItem) { if (!worldIn.isRemote) withTileEntityDo(worldIn, pos, te -> { @@ -188,6 +188,7 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< boolean p_196243_5_) { if (p_196243_1_.hasTileEntity() && (p_196243_1_.getBlock() != p_196243_4_.getBlock() && !isFunnel(p_196243_4_) || !p_196243_4_.hasTileEntity())) { + TileEntityBehaviour.destroy(p_196243_2_, p_196243_3_, FilteringBehaviour.TYPE); p_196243_2_.removeTileEntity(p_196243_3_); } } diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java index 2f7045fd5..ffea6e247 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java @@ -11,7 +11,7 @@ import net.minecraft.world.ILightReader; public abstract class ConnectedTextureBehaviour { - class CTContext { + public class CTContext { boolean up, down, left, right; boolean topLeft, topRight, bottomLeft, bottomRight; } @@ -47,7 +47,7 @@ public abstract class ConnectedTextureBehaviour { return state.getBlock() == other.getBlock(); } - CTContext buildContext(ILightReader reader, BlockPos pos, BlockState state, Direction face) { + public CTContext buildContext(ILightReader reader, BlockPos pos, BlockState state, Direction face) { CTContext context = new CTContext(); CTSpriteShiftEntry textureEntry = get(state, face); diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 04288cb73..ad37336ba 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -92,6 +92,7 @@ public class BuilderTransformers { .modelFile(p.models() .withExistingParent(id + "/" + shapeName, p.modLoc("block/belt_tunnel/" + shapeName)) .texture("0", p.modLoc(id)) + .texture("1", p.modLoc(id + "_top")) .texture("particle", particleTexture)) .rotationY(state.get(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) .build(); @@ -101,6 +102,7 @@ public class BuilderTransformers { String id = type + "_tunnel"; p.withExistingParent("item/" + id, p.modLoc("block/belt_tunnel/item")) .texture("0", p.modLoc("block/" + id)) + .texture("1", p.modLoc("block/" + id + "_top")) .texture("particle", particleTexture); }) .build(); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java index 1abae30c6..9dbffb81a 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java @@ -15,6 +15,7 @@ import net.minecraft.block.BlockState; import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -125,6 +126,10 @@ public class FilteringBehaviour extends TileEntityBehaviour { scrollableValue = count; } + public void setFilter(Direction face, ItemStack stack) { + setFilter(stack); + } + public void setFilter(ItemStack stack) { filter = stack.copy(); callback.accept(filter); @@ -146,6 +151,10 @@ public class FilteringBehaviour extends TileEntityBehaviour { super.destroy(); } + public ItemStack getFilter(Direction side) { + return getFilter(); + } + public ItemStack getFilter() { return filter.copy(); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java index 1128431b9..c911e8680 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java @@ -43,12 +43,17 @@ public class FilteringHandler { FilteringBehaviour behaviour = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); if (behaviour == null) return; - if (!behaviour.isActive()) - return; BlockRayTraceResult ray = RaycastHelper.rayTraceRange(world, player, 10); if (ray == null) return; + if (behaviour instanceof SidedFilteringBehaviour) { + behaviour = ((SidedFilteringBehaviour) behaviour).get(ray.getFace()); + if (behaviour == null) + return; + } + if (!behaviour.isActive()) + return; if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) ((Sided) behaviour.slotPositioning).fromSide(ray.getFace()); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index fdafeb1d3..790e06234 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -40,12 +40,17 @@ public class FilteringRenderer { BlockState state = world.getBlockState(pos); FilteringBehaviour behaviour = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); + if (mc.player.isSneaking()) + return; if (behaviour == null) return; + if (behaviour instanceof SidedFilteringBehaviour) { + behaviour = ((SidedFilteringBehaviour) behaviour).get(result.getFace()); + if (behaviour == null) + return; + } if (!behaviour.isActive()) return; - if (mc.player.isSneaking()) - return; if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) ((Sided) behaviour.slotPositioning).fromSide(result.getFace()); if (!behaviour.slotPositioning.shouldRender(state)) @@ -86,7 +91,7 @@ public class FilteringRenderer { if (!behaviour.isActive()) return; if (behaviour.getFilter() - .isEmpty()) + .isEmpty() && !(behaviour instanceof SidedFilteringBehaviour)) return; ValueBoxTransform slotPositioning = behaviour.slotPositioning; @@ -96,13 +101,17 @@ public class FilteringRenderer { ValueBoxTransform.Sided sided = (ValueBoxTransform.Sided) slotPositioning; Direction side = sided.getSide(); for (Direction d : Iterate.directions) { + ItemStack filter = behaviour.getFilter(d); + if (filter.isEmpty()) + continue; + sided.fromSide(d); if (!slotPositioning.shouldRender(blockState)) continue; ms.push(); slotPositioning.transform(blockState, ms); - ValueBoxRenderer.renderItemIntoValueBox(behaviour.getFilter(), ms, buffer, light, overlay); + ValueBoxRenderer.renderItemIntoValueBox(filter, ms, buffer, light, overlay); ms.pop(); } sided.fromSide(side); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java new file mode 100644 index 000000000..7dc6bf4e3 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java @@ -0,0 +1,150 @@ +package com.simibubi.create.foundation.tileEntity.behaviour.filtering; + +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.Map; +import java.util.Set; +import java.util.function.BiFunction; +import java.util.function.Predicate; + +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.NBTHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraftforge.common.util.Constants.NBT; + +public class SidedFilteringBehaviour extends FilteringBehaviour { + + Map sidedFilters; + private BiFunction filterFactory; + private Predicate validDirections; + + public SidedFilteringBehaviour(SmartTileEntity te, ValueBoxTransform.Sided sidedSlot, + BiFunction filterFactory, + Predicate validDirections) { + super(te, sidedSlot); + this.filterFactory = filterFactory; + this.validDirections = validDirections; + sidedFilters = new IdentityHashMap<>(); + updateFilterPresence(); + } + + @Override + public void initialize() { + super.initialize(); + } + + public FilteringBehaviour get(Direction side) { + return sidedFilters.get(side); + } + + public void updateFilterPresence() { + Set valid = new HashSet<>(); + for (Direction d : Iterate.directions) + if (validDirections.test(d)) + valid.add(d); + for (Direction d : Iterate.directions) + if (valid.contains(d)) { + if (!sidedFilters.containsKey(d)) + sidedFilters.put(d, filterFactory.apply(d, new FilteringBehaviour(tileEntity, slotPositioning))); + } else if (sidedFilters.containsKey(d)) + removeFilter(d); + } + + @Override + public void writeNBT(CompoundNBT nbt) { + nbt.put("Filters", NBTHelper.writeCompoundList(sidedFilters.entrySet(), entry -> { + CompoundNBT compound = new CompoundNBT(); + compound.putInt("Side", entry.getKey() + .getIndex()); + entry.getValue() + .writeNBT(compound); + return compound; + })); + super.writeNBT(nbt); + } + + @Override + public void readNBT(CompoundNBT nbt) { + NBTHelper.iterateCompoundList(nbt.getList("Filters", NBT.TAG_COMPOUND), compound -> { + Direction face = Direction.byIndex(compound.getInt("Side")); + if (sidedFilters.containsKey(face)) + sidedFilters.get(face) + .readNBT(compound); + }); + super.readNBT(nbt); + } + + @Override + public CompoundNBT writeToClient(CompoundNBT nbt) { + nbt.put("Filters", NBTHelper.writeCompoundList(sidedFilters.entrySet(), entry -> { + CompoundNBT compound = new CompoundNBT(); + compound.putInt("Side", entry.getKey() + .getIndex()); + entry.getValue() + .writeToClient(compound); + return compound; + })); + return super.writeToClient(nbt); + } + + @Override + public void tick() { + super.tick(); + sidedFilters.values() + .forEach(FilteringBehaviour::tick); + } + + @Override + public void setFilter(Direction side, ItemStack stack) { + if (!sidedFilters.containsKey(side)) + return; + sidedFilters.get(side) + .setFilter(stack); + } + + @Override + public ItemStack getFilter(Direction side) { + if (!sidedFilters.containsKey(side)) + return ItemStack.EMPTY; + return sidedFilters.get(side) + .getFilter(); + } + + public boolean test(Direction side, ItemStack stack) { + if (!sidedFilters.containsKey(side)) + return true; + return sidedFilters.get(side) + .test(stack); + } + + @Override + public void destroy() { + sidedFilters.values() + .forEach(FilteringBehaviour::destroy); + super.destroy(); + } + + public void removeFilter(Direction side) { + if (!sidedFilters.containsKey(side)) + return; + sidedFilters.remove(side) + .destroy(); + } + + public boolean testHit(Direction direction, Vec3d hit) { + ValueBoxTransform.Sided sidedPositioning = (Sided) slotPositioning; + BlockState state = tileEntity.getBlockState(); + Vec3d localHit = hit.subtract(new Vec3d(tileEntity.getPos())); + return sidedPositioning.fromSide(direction) + .testHit(state, localHit); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java index 6a08a3c62..cdb413a78 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java @@ -2,6 +2,7 @@ package com.simibubi.create.foundation.utility; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; import java.util.function.Function; import net.minecraft.item.ItemStack; @@ -28,7 +29,7 @@ public class NBTHelper { nbt.putString(key, enumConstant.name()); } - public static ListNBT writeCompoundList(List list, Function serializer) { + public static ListNBT writeCompoundList(Iterable list, Function serializer) { ListNBT listNBT = new ListNBT(); list.forEach(t -> listNBT.add(serializer.apply(t))); return listNBT; @@ -40,6 +41,10 @@ public class NBTHelper { return list; } + public static void iterateCompoundList(ListNBT listNBT, Consumer consumer) { + listNBT.forEach(inbt -> consumer.accept((CompoundNBT) inbt)); + } + public static ListNBT writeItemList(List stacks) { return writeCompoundList(stacks, ItemStack::serializeNBT); } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json index ebc0f82f0..8e83eda53 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 6], "texture": "#0"}, "south": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 6], "texture": "#0"}, - "up": {"uv": [0.5, 3.5, 3.5, 4], "rotation": 180, "texture": "#0"}, + "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.75, 4, 3.5, 4.5], "texture": "#0"} } }, @@ -26,8 +27,8 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { - "up": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, + "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} } }, { @@ -40,7 +41,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 0.5, 4], "texture": "#0"} + "up": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -53,7 +54,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 0.5, 4], "texture": "#0"} + "up": {"uv": [14, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -66,7 +67,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [3.5, 3.5, 4, 4], "texture": "#0"} + "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#1"} } }, { @@ -79,7 +80,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [3.5, 3.5, 4, 4], "texture": "#0"} + "up": {"uv": [0, 14, 2, 16], "rotation": 180, "texture": "#1"} } }, { @@ -138,7 +139,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -150,7 +151,7 @@ "faces": { "north": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [0.5, 3.5, 3.5, 4], "texture": "#0"}, + "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "texture": "#0"} } }, @@ -162,7 +163,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json b/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json index 4b5217f11..ac691ace7 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/fullshade.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [12, 8.25, 16, 13], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -25,8 +26,8 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { - "up": {"uv": [8.5, 0.25, 11.5, 3.25], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "up": {"uv": [12.5, 0.25, 15.5, 3.25], "rotation": 180, "texture": "#0"}, + "down": {"uv": [12.5, 0.25, 15.5, 3.25], "rotation": 180, "texture": "#0"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [12, 8.25, 16, 13], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 0, 4, 0.5], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -74,7 +75,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -86,7 +87,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json b/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json index bc5fe4c68..80896ef75 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/halfshade.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [8, 3.5, 12, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -26,7 +27,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { "up": {"uv": [8.5, 0.25, 11.5, 3.25], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "down": {"uv": [8.5, 0.25, 11.5, 3.25], "rotation": 270, "texture": "#0"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [8, 3.5, 12, 8.25], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 0, 4, 0.5], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -74,7 +75,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -86,7 +87,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json b/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json deleted file mode 100644 index 0b0a2e788..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/indicator.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/brass_tunnel", - "particle": "create:block/brass_tunnel" - }, - "elements": [ - { - "from": [6, 10, 16], - "to": [10, 14, 17], - "faces": { - "north": {"uv": [4.75, 0, 5.75, 1], "texture": "#0"}, - "east": {"uv": [5.5, 0, 5.75, 1], "texture": "#0"}, - "south": {"uv": [4.75, 0, 5.75, 1], "texture": "#0"}, - "west": {"uv": [4.75, 0, 5, 1], "texture": "#0"}, - "up": {"uv": [4.75, 0, 5, 1], "rotation": 270, "texture": "#0"}, - "down": {"uv": [4.75, 0, 5, 1], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/item.json b/src/main/resources/assets/create/models/block/belt_tunnel/item.json index fdde3f3a9..9ff7c583a 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/item.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/item.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -25,8 +26,8 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { - "up": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, + "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 0, 4, 0.5], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -74,7 +75,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -86,7 +87,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } }, diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json index 2de43a1e2..ad748b321 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json @@ -3,7 +3,8 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", - "particle": "create:block/brass_tunnel" + "1": "create:block/brass_tunnel_top", + "particle": "create:block/brass_tunnel_top" }, "elements": [ { @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -25,8 +26,8 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { - "up": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, + "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 0, 4, 0.5], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -74,7 +75,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -86,7 +87,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json index b2c3f760f..09187e938 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -25,8 +26,8 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { - "up": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, + "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 0.5, 4], "texture": "#0"} + "up": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -52,7 +53,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [3.5, 3.5, 4, 4], "texture": "#0"} + "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#1"} } }, { @@ -99,7 +100,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -111,7 +112,7 @@ "faces": { "north": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [0.5, 3.5, 3.5, 4], "texture": "#0"}, + "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "texture": "#0"} } }, @@ -123,7 +124,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json index 15d6fdcbd..070464014 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "texture": "#0"} + "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -25,8 +26,8 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, "faces": { - "up": {"uv": [0.5, 0.5, 3.5, 3.5], "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 90, "texture": "#0"} + "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, + "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#1"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [7.5, 3.5, 8, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 0.5, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 2, 16], "rotation": 180, "texture": "#1"} } }, { @@ -52,7 +53,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [4, 3.5, 4.5, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [3.5, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [14, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -99,7 +100,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 90, "texture": "#0"} } }, @@ -111,7 +112,7 @@ "faces": { "north": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "south": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0.5, 3.5, 3.5, 4], "rotation": 180, "texture": "#0"}, + "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 180, "texture": "#0"} } }, @@ -123,7 +124,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 90, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/window.json b/src/main/resources/assets/create/models/block/belt_tunnel/window.json index 38de43720..3fd4275f9 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/window.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/window.json @@ -3,6 +3,7 @@ "parent": "block/block", "textures": { "0": "create:block/brass_tunnel", + "1": "create:block/brass_tunnel_top", "particle": "create:block/brass_tunnel" }, "elements": [ @@ -16,7 +17,7 @@ "east": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, "south": {"uv": [12, 3.5, 16, 8.25], "texture": "#0"}, "west": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, - "up": {"uv": [0, 3.5, 4, 4], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} } }, { @@ -26,7 +27,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, "faces": { "up": {"uv": [8.5, 0.25, 11.5, 3.25], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0.5, 0.5, 3.5, 3.5], "rotation": 270, "texture": "#0"} + "down": {"uv": [8.5, 0.25, 11.5, 3.25], "rotation": 270, "texture": "#0"} } }, { @@ -39,7 +40,7 @@ "east": {"uv": [0, 4, 0.5, 8.75], "texture": "#0"}, "south": {"uv": [12, 3.5, 16, 8.25], "texture": "#0"}, "west": {"uv": [3.5, 4, 4, 8.75], "texture": "#0"}, - "up": {"uv": [0, 0, 4, 0.5], "rotation": 180, "texture": "#0"} + "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} } }, { @@ -74,7 +75,7 @@ "faces": { "east": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, "west": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "up": {"uv": [3.5, 0.5, 4, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 5.5, 3.5, 6], "rotation": 270, "texture": "#0"} } }, @@ -86,7 +87,7 @@ "faces": { "east": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, "west": {"uv": [0.5, 6, 3.5, 8], "texture": "#0"}, - "up": {"uv": [0, 0.5, 0.5, 3.5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, "down": {"uv": [0.5, 4, 3.5, 4.5], "rotation": 270, "texture": "#0"} } } diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel.png b/src/main/resources/assets/create/textures/block/andesite_tunnel.png index 6c6c41b10f859dd455a3a91c0af04de3eac7750c..398c50661caf5f02504bb1e1f67cdd0560716f39 100644 GIT binary patch delta 2512 zcmV;>2`~1q6^j&*ReuSfNkl6+Zjk^}f7LY{!Y6lr)OnG;M+!Bj67T zAfZYi6;+5NmDhklO~RB z(on~a-|_BxZLjy`;eN++*0bZW13O!swf#xQcjnIh=5b#4-hbnDXqrZLaOlt>Ef5G$ zC={a3&Q6EkT{W<+fcExw&Fl42G#aIjj*hYw@Us_>YBd2L&80JX&mz+EDN4@~1!|P| z!-O%wkDq(K9d6toX;`poF7Y;6cY@tw~d%yhfGQMpOa5x+l2?2@S zL_C2;d*ooNqjxw#2OAn45WctyjQkqEmv%LVsV?L$N`Ew9eT$0Z0C)&QnP7R1TZ(B zwdC7YKz}};=MZqYTzXG=NKOw?em>1^s^ECNt5mv4z}K3=8xTY_AnU6kfU`9vAxDPNd zu74uYFt_{fy{}??$1~48Q?#H_J614jvg^`SzKKjNM&N^iw!O_Xtd^pHWMa8?{dzwu zQuvpzd_;5or|A04DLyxEX0~k!(Ut>Wqt<=*abjDE|Hx~9=W{dOcu@Meln4RuuDe^f8iP;} z4}m~Y;0j;v1!S^0b^mz^_8= ztHV_=5Q_@UHA8(pAC)9Kd@Ph=e1B*%F|8l1oPeg2DQ@N5jQjonrZ?WYNDG+-BCnHN zP6sOh8=D6X>>=llb{=PZt`Xqh^@HED0`xA%A20T6Z@=)ZWqc=Tua08 z==fFo3cyfSMUH;_1_; zsq4ar9E06m=UMu$_S21le*RdDIdkR=3obeblPhow2tSw0lgI6*>Dk39EemXjVz%5ZxmMYM2xv>*a9V*pWQ|4Gj%! z`L=!gi!D3=0)@$f0>?bZFDxb9++2>e4WL*Gm-G7qD)xzdUJtvg#Gn=57{f=89;J&D z;~HZ4)8ISh06-i=Fen^~@Qt%dqtap?$1xzu2Y?H@of;<>0e|X*J{1D!L-I*y7He~G zRgXSSJkQ9VnJcy6L*M@%FKA%FYlHEM^GjBO@CK{pth89^p+yKt@{w?er_^}0vCQW+ zN~?AI&G7^ck5ALkSX@oBGb+61XmB*86r+)*1kV81%%6-e?i+r6>Vk&3`^42D3LgGO z8t$7&r7O1fhtCR=h=)#|RDN1ti8xoyRDovOH>|1Ih)P8)G!1 zD=`}K&{!fzTS7=e1@fwp*#F>n`983MksoM1%p8GO8NdrCue?)HzT;P~yrLoD8DS;? zP>y+fEDAtg5RU=mpOD7z0?b||Yl*ewJAU!amOIhTNeOoQezQvjkg zqk^myY3u{c{r_)1D*&1}{)glLvjU)bqX&3Z(gO;G1 zITkqCmh)UQ?3Uz;A+S~+U{?WlOLA3T6@~}cDT&=N{}-?WNow#e&v-WtcAaF2_nj%q zWY0gjTz>{nONUq6bY<;ACOe*AXpvA61!TU>J?zOq*nC`keD`>#1I0oK4f4l#rYta)~rin z{I`mMtZpueu?HyYx9+TGfd?2-QWDeKss%g%Q-7MVB!+m0_4{s2(6ymS_5e(SmL)Mh zTL&_S5CX=M zSWRSc?#E1kSpcg-gurb}V$}%5F<>l-Ne%!I|1t|$mc*)kHz?ckvP)v?K>@Z(V(XzE zfJs&?Eg=Dztq&OcfT~x3U96jRK)KjdfZlFcY$`x+H!L<4ptll(SsGu|wY6}9<2L!5=2ZUO+K!FOOxK&Cj0!f;xiJdf` zCJjyO#Gi@RpKE*9zMS89=jM95P8#oqXr26}@wxZznS1V;`G3!xbHFJVe z)YjEXVkqIaAel^R8;wTwdh;jmmOuaLHNB6;V$#;u7SawygwV6kKj(dL_KY+)ug*LY zsf?Cqu0$>k4a%~*<$67loRZ6zN2R{LS}@wiO?S&5UwTO*k%+|OaoM$N*P;#ZlV^5# zjLR57Bqv8DIe+1dUg@Nw+W)p6J^55Yj2+Ij`eG9UAH$$)RyRm#MO11W8(LN^_xtoY zBh1duN;vGlX3?;BW`76cfBv&~Nt1IB;};rXCJD{EFAVA=ZL;PGKIBwqx1=YND*R?J zW_X^bk`HWr*k}UFkX>)=k&Z*}sszU`1j0~^7{{|r@PB;QfO?jR$7@=2K&~+eGUEE0 zaX=^(QWoS38y{zU`Ozm-e(=+0Ri60euT;o2+2iMnFkU2~1z!s7xE~&w^E`PVNJ|68 z!2pE_0UJM)aJ>h%ZVa8en2@cFO(8^oya5OsrEGG+dt#1z;;*c%LB;yvDU5^np?|(c z2pYF*cz;Y=jL^~F=f@U~%63A&2r~&_9)Mzid#(wG4?pOV-u{!y2*5|+DVPBRO!7gH zfkEK?pbqp049XU9e1u)7PM|?@slJBAXF>|q*AHOn-&KfAFPhYv<*P5 zOAfH{3xzOVzFg6E703bqll2?4GVtW1lCnK)v<@sUXO%25dLezw<4(q!wspHZ>rHh!U? zIe&o3*ozUeJ+MTGuuK)0Y^NI1 z^kL#e=UzE`;j-RWS6wmk%*>3eSQe9ITfU-o2omE$`VYML553REtB-u~Bl=;DA%8ci zqbL5O$KH1i9aG`nJb#v!3xngn^d_dIv3_m`YTvSuK4`uFTi)xx`R%+I z$fd6afX=`y37`qFg%HOmG6+H+^D=qide0FEhCCPJEDwWX+iI$hi z#N@R0;k{SW2Y7w^_U)OwIposUB>45O-lr5d;B}}%M>Zv1$(XQL2qrr#q<;hl9Zrm7 zt`<%}Bg3QG+I=?esrawF`oRC*|HP>m|JE)7mdMZV>3-@%`Va z0Wyyie>l?Vz4`PvKB6Dy0tT2zY5RKn{h|oRV2;Cvpm))2UfHZ!b?o$BDe3Ew`tcJo z@!>(K89pJ=OGjOMT2&BjMh|PTF;Q3rt_S4od08clB9Cc|@w~sx%3< zxLsd;tW=uo$|df?wtC>8TsrdRRrQJeT*#%bAwbQIjJR*#K50Mvp2lED`yrLnCp+c* zxlWxdefIC)uVQ-#i>dOm5@{k!$1A0-HZJw9t*wc=wn}QMs-&v2Tz_I!5&6WbTJ38w zYx*#z!qFW3@U?^T?^A;zT`0;21S-!`eAl+SdoO#x@n`t zYindhbCWc!XjFl!vWC}_Jz;+Ne~0E&eAer+F<;l zOGqTArrktca&sSGsECxx<>7G|7){C4)P!S0Owu!9i8(glHH>Kb({2LS0-=$bnG5Yg z>H9@dFg!A(=kd4yc|emM`+R6mQly3Uv?u~wF+kjTIh9UprhjF!U~)R`XjdlH&hcSK zQ9^4vl~TI0G6WIS&jqSPH$vYpiUJtW+PXAgY z!82V$1=pXq6NC-9wzJl<)1xH>EcsYC42`<}p4;!IJxRKK`-T35TG<7kdwTtlhg$c1zW^uYV<>Z(@`(d|~zVFl0%PNs$xq zY;Y4qA%xc0V%uXvgSJly{esRy z$S&mAwU)%lj>QZZkWWc$-ZEIMu%rgN%KAH`tABlu%FyZkz6_rDmzK+5qAr1M38(*( zFhH)7+S;aSJw}_vqoHe;#EKR5IZ9%b)Vc@8eCZjQTDT-u%z(z(C9z3&GNq(OCCL}Z zid-eJCBcC9jy?XS$S^ZGqh&M<0hs)-+Xvxwk|n2FQ1k}Kx1?6|2C$e8mc$4FypNpg z8-LY&Fr4&qm&EjM5reFrT@q6UIPY&<)1U$af|yql%d|xc7{HPiEQt~Cc>nbI0Xfq> zs0?5k%vloCyCr~NNo;LnwK4#)|0%Ex<}8Wn-y#M}83(aoN$gzrux9_!p>cl|ApUcf z#Pn~GgAfRo#42m%)_zt3RsnW}gupdRVs6C<;ur)=VwM8{@o%d@&XQQMp9bw%zUY$J zQZPVXC9$PY51=(qTS$Ox?}OkoQ1k}K7fWUzuvpwSK&HKAaoYfy_LjwM17zA;7Pk$M jX>VEFHbADmMIrJ(-*@?=cnkmU00000NkvXXu0mjf!pAvA diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png new file mode 100644 index 0000000000000000000000000000000000000000..272c1cf07e8493f4cd55e162991563fe0dffdd25 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFHN9Xk<}oFd%F6$taD0e0swHXZOi}w literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel.png b/src/main/resources/assets/create/textures/block/brass_tunnel.png index 2631e8c8d0c1aded9f8039b8f4d3626b51e8972b..acc1814cdf82f5952f76053e6e06db7267b297cb 100644 GIT binary patch delta 2488 zcmV;p2}kz374s92ReuSHNkllDvSB z;Gq&Ph{8)-2_ashszpMgLOf7V8hGFV)CbfORY*t(M1+J&kx)X_7fM@2AgCQf;@`wc zZ0y8;ySC%;{txFnGj~0n9oxyyBG*5kbUi;zEvyVCs!U&E|B$78odK|=&5sW$#wU^Bn?e1 z(DC+^Tr2$H!gJL9se@G(p!j1GY3q(Vj&wAw;d>rBjZF(y;1yXm(?~dgQ{(xbZtdx| z0~(HllNsu1ZPQRtiDxp4Ih?M6;x|OYluATh3+kNwx_<~zuPM;7FGb@E53DN_5TS4S ze#K0aY-uoSH-NvqlB3MhifciglV2AffNA7a1T-q2ckdWRUx@&RR^~bFgyKg+L28Ip zTLJE&&dINf1*qZ`g_64ffSLk8bF#rYTMO{B`2sCxtE~X{PzTugbrAqoP$-x$uN8W> zNI}2fx__z$TYwyWevLblmvcK5Us-@#L7kKDS%6}(C{w_{LE|3=rE-ZDmX_#HGH%^* zhpy|^*;**RvH-V&Iw#+=0KL7v+SRL9H7`MsfM<9%SHziisdv!$>HGgOUVZyYrSNKi zBF`)>SFZw!9}EO!q}>YYoP5u5K)vwB`L7uWRDS?0Rk28nofWsuZ%{H8rTepKB@o9P z4fMUA{CSPwweme%K)vASx!KiufDX0quQWa!3Q$n<%Q=>>w*5_%YD`dq*K;Ro<$q!< zV5{I+fY-i#(wJXd^{T<(#zs{rtggW=&0#7P4c@qH9pAG6KYrzuF*Bc|XFmHmb~5J2 z^?$6np6hy6jtEl~np1H$Q9u3hy}#1ImMHlH8f_(C`_Xq!u2CSH!|u*J4_RvFSv7?F zk+83F4(KaIep!HK(^>lJGhdJoUmv+Eb$MI3>GzxODV56f^rw%=`MV!{Kph8Tl+Bjc z@CR;=OTBVf!2gpk0`wd|Q>C5?Y_c3)vVVWE&drx972o~vLyE@&G(BfF;G>U6Su{Vz zqA__6C|PQi*;JQ#OA4S7ssZ_Yxx()s8keo=-O0sDdlU-AGPUkA-@6_k-^U8j^^G^> zIVb+}%NONn=gU{{vEkb@goMJ_#4JrtXQ+R8T*~n6N$MXNr}a?EEWk-JRTMgjc1k~WQBvq+xdF7z#};0x}m{6Y;`x{qYj-P zeCLveZ8VN3&z(9Z1zT+=Uj#tMpfIv2SWB^_0G*FD(&5Ka;y4N%Y0WNVq>&gUSW2n9 zI(uLp5E5LUW{w`_XW3V#P{=R$VSj?okyTLq&9<|f@qy#dzF@rbi;LR%^XCc04kzD- zIgK3>)=XJ91OC;FiN*?ZAE8z(91@jd5kype7A;SHpT?c@RbGniD8$5WE9m2q4~3+l z<4_*JdOW|hT;VwR53`-!h!0@2ogG(j^5w6-VlE>Xsg48tWCS6?z(|?~*?%Nq85qGM z9j%mE%t}I`%$>4ZfZC3hSu|LS+_R;gAOfC&*a~R8g5tZ4yuED3-waN^uWVgMc%;G{ zD`Uh_4j*Wto+mq{e5UJ=+>7y!3Zss}RGq^*tRUOj5?c$u3s&N@Mjb!{OD;>UlYj2@ zKT%89mo#-mdE+-%rF{Oozkjx#T!oYGOrdQCX<`3xKV2WaMty^QG;r%W4d1yzW0Ql_ zH_$5ub)(}0{9GS9#T)WW@8C6gfgQ4)W#^~!b`t`@N)&>;I`}uq8Gw%s&w6v%nJscc z@z;YJ-xmzBb7E7DMFYINg(%SwoZ9vs<*4Z>ZzhgW_mLA8qZ$|i zI8rz~<@8_)_Kw4$HYZl&1UtlnHbK4lKBXWmAia2#*V+LNEpJjLbDMIxaeA>1789z=Ku0?UiRS}UP*YGi1E(N`l$+7kM9OF9!}AoE~^*6G6ev{0qDR+ zksRUx1%#3+90kA~x^<6c=9a4x5)gLc-kdxaZ&*!8IQhL7&(ZI%4I4lE+s6i0gN84D z*?4bYBHR6y=YI{<0rlj|W@vJHMZA2^@gAN_`N~Ko;^q&D5(*bN3gl2!=V)x={xHoi z$sM<PU5DGm8b0d#C$+amr2|{Z*M9J=rwqIR0szX4u%ST& zr~vN?;2xgIQLqaMDB%>G0s>pX*S`M}3&1aU>(a<03!pMG6H~fmR{*A5harO&!Dr&N}da`1&Yy;STlpeh^DMzH#(hJ#2nVr`;NHRAsIct?05HvJ zO{wh&0f1UlYTI4_XG-i*Q))ZL0#r&2zXIcb0jfsd`u~8cl$dqCZDHTcAtCZG{~=<> zj%a z)-iF{Vow0;xNET|fOXup*b~4y?po{#U>$cUi2euT$eh~%jQOzu0000b)YVlHU|IBG#^t5!{= zsC`J4RH{@WReeJ!NmZq&4^`8OKptE1P$i%!5>lJCC@(F2AwhX*nnW}-#l|Vv*aqWE zY_N^J*mymAo9X$^%s(E+>+5bxZ1Y*aXLkNMGv`0||BUwQ7k?i&hi~h&`JosAde$JH zPfjTmv`%t)gA9Wx681UgV|TK&F%_nF{uQQZG)jp?f{q5)eo@dQmC z@CAl;?4>>Cz|9Oj{p7bO81PX>FUmwdpO>SaE0W({hMp_PaeXR5=RWv=YBxma-H#&_ z3WX?{Ow!r2XMZT2o}^T&in_aRP*c;6MGN5FQwPoVo?$YICT*@u(%3|XihK@a`Mo|( zWB&YnwqxCwWVNee1g&wlhoaJQ+{W%Ie+G*NJZ1&cV_6;?Qyz#eTeb} zOG%Z04<@bPmOkKSAa4{Y9uG1jd0_xTgG&IWY07A5sHfiE&qN3pF0{(rVv(7)Ebj4x zZ&1@uUZ<}eIzf#Gj?;HudXv6;_!K?;%Rkc(kGw7Sz!EA2+uJP$!l3|7X0o!tOfF~7 z5XHhF8GreLL9s~i9tJcvO;~}2kk;6^jZHJ8?ccwDNhS*Sii86=H4ilJ)Sjr@q~X{x zn5O31It>GpxF0oqqWKtKe4m4d^yV!+TWf0t{nU;`oG9xns105!@*zBspLl?wpt zlX3g3eB7fpVW6mq*5T(qkJgKY(lCM*2V)7 zKVQhRfWllcTIR0=fO=qTVkRmFl}pV5l|6u(^=wrI^S;tM77*cT4?so$@E`<71?47I zz%*GPhHQsJAs>y5W$CG}f5Qo$YJW$W$yl2vwTlF>lZ-|D^tbo^K@ZhLrP{oo^xCnX z@3|-ZEwWTxQ`0U90G=?71JTV8y*t54=~TsJ7Fl!{{Ni7#!Fb8M&4gV1&39{Toc z{W5Q71i|M?F9K-Z_0?I@Tc{rZDW3cALrTN~1Q!AWA6@Kbp>YWvwVEqH(SMef!KOOJ zTUr22Ck?3dAbW02aq`b+i$6yP4%O+wPu$#s?=`q@>mr{LNl770-z5tay#dnWJdLIdXA z^w?^*UmKw*jx*`W>3asQ^?wYE&r6RvEWYE+X>C`1N{$#m+Pgyrw%T5L5danj3B$k9 zbWr)e@!@sU@Nmisf?N=d-bo9S&=M>~#R~w|0YQRxzTKo(vkHnn&Ve>n6)ib1w-7zB z>)GebGbc`JM~)mJ3^%;=QVJurA>~QlHYXVXK~Oyu z+gS*6zTG79`Pk%?L*u0{rF}Ipw-7x5ZF?84;H8)UnQ6PWXH9M1v_UioA+&dmQwN(Q zECU+cwz<~n2N=94w*@R^H>m*T6%>6b&AZ1!^b5gD?=$S*5!O^Vz;!;>#G_$T4K+X3 zDC5gbTjW|S5*DpPnSW|=$ioVY-A%gTr9XK5?^M(DJxv`kUVH1jjBozp5B8li@Y2Kg zmjdCit+S0TcVD8`j#g^FewjLZuTalm2NydnGBDTO-_G~7a!|Y?_q23ek_WgU+gT2N zXs1Cyuo8tJX9sMq<^$-l;hD>az1<=&6#ZN%Mehp+IXJN?$A6*$PH!QqiU-+Gf|BO& z8zT`9NTHPC>o~_f04ga2I)&v}fR`Q`oX>~7C`G>%I2@v=sb2Re`}t$MutzDC+DhT@ z7D`07Qr(8_Ts3Xy&BzYgxox*iF&ogpV)_Z|t7hs1H^hP#K&9z@N`kO}@ri4kYumZB zyhiEt4a#Qw>3{C@4Ni?+G&Ishw?;eZYR{)~KLGzzK8S`2u-JYAP>Oy&pjlFBdgm7` zV105s?P#3&E`Sy}(pf%i1-zQ-IBV3P-p@MZx7+;CP#GE?V*%9LS2#DLpTKps(hM@m zz|d`Ktgo?tm!O9a@2#noYe$bBl_T)%3(uSI;qeO7`+t-K0hsS%z6$_2SCDgljI~Lc zzn`Em7kw#!c?3mwyR1_5jtc;b{Vt$@Qc{(p0BEmXzeyvvr)D)YAlQMMx8=S>e5Rq{ zrEfWTklw!3Y5wk?7fob?_>cRCT)wx&9Yiz_^Pv#@$w71MS;t0iOp{>D**0~ z(%rp-azsmQ{EqI7(Xk8{N!CWF)>TWYJu z0)JFXED{P*JTlt~a1C>_T4MJ3iiLYKhlYrr%hQxzA_nj^%z3eDEC8_j4VDFz8kqB9 z#S6e)dAcp2)L0W15DcJy87w(4H>)LPA6G0?3{Wkxe4!wkE;SG+y)Cg-;{vKB1})Dy zf_`bqsZ0RcRpA2emROcGjR8w=4|QF^X?lst{}l{xORS+jCH>1tkp12@a1C>SyCt@2 zf*`s-Xm>#f$z-_Xz#P7Py1!Vhn(gqiTVkt40Kl?ZVk=z$M diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top.png new file mode 100644 index 0000000000000000000000000000000000000000..508d6c0aad096da7e3ef2f65bf6ceb627bd0a343 GIT binary patch literal 560 zcmV-00?+-4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0mVr~K~y+TMUqW! z+b|G?#XnJ%>e>hb1O;+{F1qNVx9Syov95E7F0<*T`EgvkQYlfS`i-a{1Wi5--^{$3 zvHJe)^TTtv{n%Dj6~?SJcU3#NrkHcC8m|jD{u!?i-j=s7pT0V)hmgQAM$RxLqqqSx z=hfl;kGng7u(eUJf8Iab|9XObJP(gA{iP4TkADGSoSViDA;2V$qyx!ET5fOlu))JP z#hB8PV@_S?h7jYNh>N^cGK_!G*Y+}uJPgxRjIFQPan5byoHfO`IUuyIjf7ERF;-=r zu^6LL%BOQUok#4*(G+d;TAg%h&P&G7)-@ZdF_%j9Vnr*palV->Y)R~GVLAN+snDIJCwL8bx#0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T>{QRBwduGD#AAhm`rn-3}4}zdtxhUctBvxK^X4hJ zfmd~BLf!~1d_LR$;mH#O#anA8xkXTmSoc0qHci*Go$J=ff{sjx_2)15U;cB5^`n#W z;O+8sS-n2`7ol3USr(U71(G~GJ_=>6k6L{oqcl-eY>6lElD;hBqg&s+KE*n6xvGhx zTf4?}lZh>>hKR7MEms&S>spn0n(#EOV}Xs0 zDwV(kMo{Y-yUIjeY^OYm>>W_(Bry`^CUFyoE^=s$3A@f6pH#;uV$O%JcmyB2_knVV zk7$~SHrP%(uK@sLJ6^r3o>|FFKUI~PjP<+BwI;e%hRS{$oJ zN%073-TQ!3^&!4@0MXQ-3kjTZ6J)QHR!cYM(@EpoyCK1EGB`Y{hCR@~9xqeTxpi5! z))@LsO|&c|p{507!fMlb>NCWn!TMsJ`TD@m;l&mM%C10|?PLr%f(b+Htk@Lm4nu59 zT?U6d9>Th>57yx*hj?kS0Q*>bs;V{$qSRO(1_{mSvY(1`crwt+s1La6Jzmi2imgvs zXuxt=yEQ#>SsE94N~HwdM=#{@i{13vBBKfjo)f_k-|tMqWCyUP4&E%WPBUz15Og=` z*4MLTi2v-yz4^}VS@HSxkM4ZDyT>QO?#|v2-}k`AmaMzhkwI$XVv}J+4RL`wZr@gr}I;X<_rs=;!t%#?Y*=2>jYu z5CZ@3t8eyh-Nyv_@~j2S@t$wR$Sk?_>D~K#4;1`AyANLc{o9W}|HM_tUC6`dAAdc6 z_UF?pyAKdRz;(x~48OAb0Kv!N*Py(z`vB4?hHF$$-xM|$-)C_7^Ihrk_}&3@$@AUQ zf4L9%zVLh>i#tUjx_Egt7BY9)S;n_X+tS UIBKG-9RL6T07*qoM6N<$g5ReO4gdfE literal 0 HcmV?d00001 From 26112ddc93de53c2c77a078bc42cbbd0a5448ae6 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 9 Jul 2020 01:28:14 +0200 Subject: [PATCH 44/47] Fix build issues - Not sure why but this seems to have worked --- .../structureMovement/StructureTransform.java | 36 ++++---- .../contraptions/relays/belt/BeltBlock.java | 86 +++++++------------ .../relays/belt/BeltGenerator.java | 38 ++++---- .../contraptions/relays/belt/BeltHelper.java | 11 ++- .../contraptions/relays/belt/BeltPart.java | 14 +++ .../relays/belt/BeltRenderer.java | 13 ++- .../contraptions/relays/belt/BeltShapes.java | 58 ++++++------- .../contraptions/relays/belt/BeltSlope.java | 14 +++ .../relays/belt/BeltTileEntity.java | 25 +++--- .../relays/belt/item/BeltConnectorItem.java | 30 +++---- .../relays/belt/transport/BeltInventory.java | 4 +- .../belt/transport/BeltMovementHandler.java | 20 ++--- .../BeltTunnelInteractionHandler.java | 4 +- .../belts/observer/BeltObserverBlock.java | 10 +-- .../block/belts/tunnel/BeltTunnelBlock.java | 4 +- .../belts/tunnel/BrassTunnelTileEntity.java | 78 ++++++++++++++++- .../schematics/block/LaunchedItem.java | 4 +- .../block/SchematicannonTileEntity.java | 12 +-- 18 files changed, 265 insertions(+), 196 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java index 2a2c2cd38..a152542f7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java @@ -9,7 +9,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.foundation.utility.DirectionHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -195,25 +195,25 @@ public class StructureTransform { protected BlockState transformBelt(BlockState state, boolean halfTurn) { Direction initialDirection = state.get(BeltBlock.HORIZONTAL_FACING); - boolean diagonal = state.get(BeltBlock.SLOPE) == Slope.DOWNWARD || state.get(BeltBlock.SLOPE) == Slope.UPWARD; + boolean diagonal = state.get(BeltBlock.SLOPE) == BeltSlope.DOWNWARD || state.get(BeltBlock.SLOPE) == BeltSlope.UPWARD; if (!diagonal) { for (int i = 0; i < rotation.ordinal(); i++) { Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - Slope slope = state.get(BeltBlock.SLOPE); - boolean vertical = slope == Slope.VERTICAL; - boolean horizontal = slope == Slope.HORIZONTAL; - boolean sideways = slope == Slope.SIDEWAYS; + BeltSlope slope = state.get(BeltBlock.SLOPE); + boolean vertical = slope == BeltSlope.VERTICAL; + boolean horizontal = slope == BeltSlope.HORIZONTAL; + boolean sideways = slope == BeltSlope.SIDEWAYS; Direction newDirection = direction.getOpposite(); - Slope newSlope = Slope.VERTICAL; + BeltSlope newSlope = BeltSlope.VERTICAL; if (vertical) { if (direction.getAxis() == rotationAxis) { newDirection = direction.rotateYCCW(); - newSlope = Slope.SIDEWAYS; + newSlope = BeltSlope.SIDEWAYS; } else { - newSlope = Slope.HORIZONTAL; + newSlope = BeltSlope.HORIZONTAL; newDirection = direction; if (direction.getAxis() == Axis.Z) newDirection = direction.getOpposite(); @@ -223,7 +223,7 @@ public class StructureTransform { if (sideways) { newDirection = direction; if (direction.getAxis() == rotationAxis) - newSlope = Slope.HORIZONTAL; + newSlope = BeltSlope.HORIZONTAL; else newDirection = direction.rotateYCCW(); } @@ -231,7 +231,7 @@ public class StructureTransform { if (horizontal) { newDirection = direction; if (direction.getAxis() == rotationAxis) - newSlope = Slope.SIDEWAYS; + newSlope = BeltSlope.SIDEWAYS; } state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); @@ -242,14 +242,14 @@ public class StructureTransform { for (int i = 0; i < rotation.ordinal(); i++) { Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); Direction newDirection = direction.getOpposite(); - Slope slope = state.get(BeltBlock.SLOPE); - boolean upward = slope == Slope.UPWARD; - boolean downward = slope == Slope.DOWNWARD; + BeltSlope slope = state.get(BeltBlock.SLOPE); + boolean upward = slope == BeltSlope.UPWARD; + boolean downward = slope == BeltSlope.DOWNWARD; // Rotate diagonal if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ downward ^ direction.getAxis() == Axis.Z) { - state = state.with(BeltBlock.SLOPE, upward ? Slope.DOWNWARD : Slope.UPWARD); + state = state.with(BeltBlock.SLOPE, upward ? BeltSlope.DOWNWARD : BeltSlope.UPWARD); } else { state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); } @@ -258,12 +258,12 @@ public class StructureTransform { } else if (halfTurn) { Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); Direction newDirection = direction.getOpposite(); - Slope slope = state.get(BeltBlock.SLOPE); - boolean vertical = slope == Slope.VERTICAL; + BeltSlope slope = state.get(BeltBlock.SLOPE); + boolean vertical = slope == BeltSlope.VERTICAL; if (diagonal) { state = state.with(BeltBlock.SLOPE, - slope == Slope.UPWARD ? Slope.DOWNWARD : slope == Slope.DOWNWARD ? Slope.UPWARD : slope); + slope == BeltSlope.UPWARD ? BeltSlope.DOWNWARD : slope == BeltSlope.DOWNWARD ? BeltSlope.UPWARD : slope); } else if (vertical) { state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index ceb92d25e..200fa5989 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -19,7 +19,6 @@ import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.Block; import net.minecraft.block.BlockRenderType; @@ -48,7 +47,6 @@ import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.Hand; -import net.minecraft.util.IStringSerializable; import net.minecraft.util.NonNullList; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; @@ -71,14 +69,14 @@ import net.minecraftforge.items.IItemHandler; public class BeltBlock extends HorizontalKineticBlock implements ITE, ISpecialBlockItemRequirement { - public static final IProperty SLOPE = EnumProperty.create("slope", Slope.class); - public static final IProperty PART = EnumProperty.create("part", Part.class); + public static final IProperty SLOPE = EnumProperty.create("slope", BeltSlope.class); + public static final IProperty PART = EnumProperty.create("part", BeltPart.class); public static final BooleanProperty CASING = BooleanProperty.create("casing"); public BeltBlock(Properties properties) { super(properties); - setDefaultState(getDefaultState().with(SLOPE, Slope.HORIZONTAL) - .with(PART, Part.START) + setDefaultState(getDefaultState().with(SLOPE, BeltSlope.HORIZONTAL) + .with(PART, BeltPart.START) .with(CASING, false)); } @@ -100,7 +98,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE getBeltChain(World world, BlockPos controllerPos) { List positions = new LinkedList<>(); @@ -567,18 +547,18 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE required = new ArrayList<>(); - if (state.get(PART) != Part.MIDDLE) + if (state.get(PART) != BeltPart.MIDDLE) required.add(AllBlocks.SHAFT.asStack()); - if (state.get(PART) == Part.START) + if (state.get(PART) == BeltPart.START) required.add(AllItems.BELT_CONNECTOR.asStack()); if (required.isEmpty()) return ItemRequirement.NONE; @@ -630,15 +610,15 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, BlockState state) { Boolean casing = state.get(BeltBlock.CASING); - BeltBlock.Part part = state.get(BeltBlock.PART); + BeltPart part = state.get(BeltBlock.PART); Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - Slope slope = state.get(BeltBlock.SLOPE); - boolean downward = slope == Slope.DOWNWARD; - boolean diagonal = slope == Slope.UPWARD || downward; - boolean vertical = slope == Slope.VERTICAL; - boolean pulley = part == Part.PULLEY; - boolean sideways = slope == Slope.SIDEWAYS; + BeltSlope slope = state.get(BeltBlock.SLOPE); + boolean downward = slope == BeltSlope.DOWNWARD; + boolean diagonal = slope == BeltSlope.UPWARD || downward; + boolean vertical = slope == BeltSlope.VERTICAL; + boolean pulley = part == BeltPart.PULLEY; + boolean sideways = slope == BeltSlope.SIDEWAYS; boolean negative = direction.getAxisDirection() == AxisDirection.NEGATIVE; if (!casing && pulley) - part = Part.MIDDLE; + part = BeltPart.MIDDLE; - if ((vertical && negative || casing && downward || sideways && negative) && part != Part.MIDDLE && !pulley) - part = part == Part.END ? Part.START : Part.END; + if ((vertical && negative || casing && downward || sideways && negative) && part != BeltPart.MIDDLE && !pulley) + part = part == BeltPart.END ? BeltPart.START : BeltPart.END; if (!casing && vertical) - slope = Slope.HORIZONTAL; + slope = BeltSlope.HORIZONTAL; if (casing && vertical) - slope = Slope.SIDEWAYS; + slope = BeltSlope.SIDEWAYS; String path = "block/" + (casing ? "belt_casing/" : "belt/"); String slopeName = slope.getName(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java index 226f2b026..90d18bd81 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.contraptions.relays.belt; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.tileentity.TileEntity; @@ -42,16 +41,16 @@ public class BeltHelper { public static BlockPos getPositionForOffset(BeltTileEntity controller, int offset) { BlockPos pos = controller.getPos(); Vec3i vec = controller.getBeltFacing().getDirectionVec(); - Slope slope = controller.getBlockState().get(BeltBlock.SLOPE); - int verticality = slope == Slope.DOWNWARD ? -1 : slope == Slope.UPWARD ? 1 : 0; + BeltSlope slope = controller.getBlockState().get(BeltBlock.SLOPE); + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; return pos.add(offset * vec.getX(), MathHelper.clamp(offset, 0, controller.beltLength - 1) * verticality, offset * vec.getZ()); } public static Vec3d getVectorForOffset(BeltTileEntity controller, float offset) { - Slope slope = controller.getBlockState().get(BeltBlock.SLOPE); - int verticality = slope == Slope.DOWNWARD ? -1 : slope == Slope.UPWARD ? 1 : 0; + BeltSlope slope = controller.getBlockState().get(BeltBlock.SLOPE); + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; float verticalMovement = verticality; if (offset < .5) verticalMovement = 0; @@ -60,7 +59,7 @@ public class BeltHelper { Vec3d vec = VecHelper.getCenterOf(controller.getPos()); Vec3d horizontalMovement = new Vec3d(controller.getBeltFacing().getDirectionVec()).scale(offset - .5f); - if (slope == Slope.VERTICAL) + if (slope == BeltSlope.VERTICAL) horizontalMovement = Vec3d.ZERO; vec = vec.add(horizontalMovement).add(0, verticalMovement, 0); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java new file mode 100644 index 000000000..df539fa25 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java @@ -0,0 +1,14 @@ +package com.simibubi.create.content.contraptions.relays.belt; + +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.util.IStringSerializable; + +public enum BeltPart implements IStringSerializable { + START, MIDDLE, END, PULLEY; + + @Override + public String getName() { + return Lang.asId(name()); + } +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java index cde3ec183..fc42ce225 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java @@ -12,7 +12,6 @@ import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -63,7 +62,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { .getAxisDirection() .getOffset(); Direction facing = renderedState.get(BeltBlock.HORIZONTAL_FACING); - if (facing.getAxis() == Axis.X && renderedState.get(BeltBlock.SLOPE) != Slope.SIDEWAYS) + if (facing.getAxis() == Axis.X && renderedState.get(BeltBlock.SLOPE) != BeltSlope.SIDEWAYS) speed = -speed; int textureIndex = (int) ((speed * time / 36) % 16); if (textureIndex < 0) @@ -85,7 +84,7 @@ public class BeltRenderer extends SafeTileEntityRenderer { MatrixStack modelTransform = new MatrixStack(); Direction dir = blockState.get(BeltBlock.HORIZONTAL_FACING) .rotateY(); - if (blockState.get(BeltBlock.SLOPE) == Slope.SIDEWAYS) + if (blockState.get(BeltBlock.SLOPE) == BeltSlope.SIDEWAYS) dir = Direction.UP; MatrixStacker msr = MatrixStacker.of(modelTransform); @@ -120,9 +119,9 @@ public class BeltRenderer extends SafeTileEntityRenderer { Vec3d beltStartOffset = new Vec3d(directionVec).scale(-.5) .add(.5, 13 / 16f + .125f, .5); ms.translate(beltStartOffset.x, beltStartOffset.y, beltStartOffset.z); - Slope slope = te.getBlockState() + BeltSlope slope = te.getBlockState() .get(BeltBlock.SLOPE); - int verticality = slope == Slope.DOWNWARD ? -1 : slope == Slope.UPWARD ? 1 : 0; + int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; boolean slopeAlongX = te.getBeltFacing() .getAxis() == Axis.X; @@ -145,8 +144,8 @@ public class BeltRenderer extends SafeTileEntityRenderer { verticalMovement = verticalMovement * (Math.min(offset, te.beltLength - .5f) - .5f); Vec3d offsetVec = new Vec3d(directionVec).scale(offset) .add(0, verticalMovement, 0); - boolean onSlope = slope != Slope.HORIZONTAL && MathHelper.clamp(offset, .5f, te.beltLength - .5f) == offset; - boolean tiltForward = (slope == Slope.DOWNWARD ^ te.getBeltFacing() + boolean onSlope = slope != BeltSlope.HORIZONTAL && MathHelper.clamp(offset, .5f, te.beltLength - .5f) == offset; + boolean tiltForward = (slope == BeltSlope.DOWNWARD ^ te.getBeltFacing() .getAxisDirection() == AxisDirection.POSITIVE) == (te.getBeltFacing() .getAxis() == Axis.Z); float slopeAngle = onSlope ? tiltForward ? -45 : 45 : 0; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java index 49005ee9f..07658e8da 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java @@ -6,8 +6,6 @@ import java.util.HashMap; import java.util.Map; import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.foundation.utility.VoxelShaper; import net.minecraft.block.BlockState; @@ -178,41 +176,41 @@ public class BeltShapes { private static VoxelShape getBeltShape(BlockState state) { Direction facing = state.get(BeltBlock.HORIZONTAL_FACING); Axis axis = facing.getAxis(); - Part part = state.get(BeltBlock.PART); - Slope slope = state.get(BeltBlock.SLOPE); + BeltPart part = state.get(BeltBlock.PART); + BeltSlope slope = state.get(BeltBlock.SLOPE); //vertical - if (slope == Slope.VERTICAL) { - if (part == Part.MIDDLE || part == Part.PULLEY) + if (slope == BeltSlope.VERTICAL) { + if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) return VERTICAL_FULL.get(axis); //vertical ending - return (part == Part.START ? VERTICAL_START : VERTICAL_END).get(facing); + return (part == BeltPart.START ? VERTICAL_START : VERTICAL_END).get(facing); } //flat part - if (slope == Slope.HORIZONTAL) { - if (part == Part.MIDDLE || part == Part.PULLEY) + if (slope == BeltSlope.HORIZONTAL) { + if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) return FLAT_FULL.get(axis); //flat ending - return (part == Part.START ? FLAT_START : FLAT_END).get(facing); + return (part == BeltPart.START ? FLAT_START : FLAT_END).get(facing); } //sideways part - if (slope == Slope.SIDEWAYS) { - if (part == Part.MIDDLE || part == Part.PULLEY) + if (slope == BeltSlope.SIDEWAYS) { + if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) return SIDE_FULL.get(axis); //flat ending - return (part == Part.START ? SIDE_START : SIDE_END).get(facing); + return (part == BeltPart.START ? SIDE_START : SIDE_END).get(facing); } //slope - if (part == Part.MIDDLE || part == Part.PULLEY) - return (slope == Slope.DOWNWARD ? SLOPE_DESC : SLOPE_ASC).get(facing); + if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) + return (slope == BeltSlope.DOWNWARD ? SLOPE_DESC : SLOPE_ASC).get(facing); //sloped ending - if (part == Part.START) - return (slope == Slope.DOWNWARD ? SLOPE_DESC_START : SLOPE_ASC_START).get(facing); - if (part == Part.END) - return (slope == Slope.DOWNWARD ? SLOPE_DESC_END : SLOPE_ASC_END).get(facing); + if (part == BeltPart.START) + return (slope == BeltSlope.DOWNWARD ? SLOPE_DESC_START : SLOPE_ASC_START).get(facing); + if (part == BeltPart.END) + return (slope == BeltSlope.DOWNWARD ? SLOPE_DESC_END : SLOPE_ASC_END).get(facing); //bad state return VoxelShapes.empty(); @@ -223,25 +221,25 @@ public class BeltShapes { return VoxelShapes.empty(); Direction facing = state.get(BeltBlock.HORIZONTAL_FACING); - Part part = state.get(BeltBlock.PART); - Slope slope = state.get(BeltBlock.SLOPE); + BeltPart part = state.get(BeltBlock.PART); + BeltSlope slope = state.get(BeltBlock.SLOPE); - if (slope == Slope.VERTICAL) + if (slope == BeltSlope.VERTICAL) return VoxelShapes.empty(); - if (slope == Slope.SIDEWAYS) + if (slope == BeltSlope.SIDEWAYS) return VoxelShapes.empty(); - if (slope == Slope.HORIZONTAL) { + if (slope == BeltSlope.HORIZONTAL) { return AllShapes.CASING_11PX.get(Direction.UP); } - if (part == Part.MIDDLE || part == Part.PULLEY) - return PARTIAL_CASING.get(slope == Slope.UPWARD ? facing : facing.getOpposite()); + if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) + return PARTIAL_CASING.get(slope == BeltSlope.UPWARD ? facing : facing.getOpposite()); - if (part == Part.START) - return slope == Slope.UPWARD ? AllShapes.CASING_11PX.get(Direction.UP) : PARTIAL_CASING.get(facing.getOpposite()); - if (part == Part.END) - return slope == Slope.DOWNWARD ? AllShapes.CASING_11PX.get(Direction.UP) : PARTIAL_CASING.get(facing); + if (part == BeltPart.START) + return slope == BeltSlope.UPWARD ? AllShapes.CASING_11PX.get(Direction.UP) : PARTIAL_CASING.get(facing.getOpposite()); + if (part == BeltPart.END) + return slope == BeltSlope.DOWNWARD ? AllShapes.CASING_11PX.get(Direction.UP) : PARTIAL_CASING.get(facing); //something went wrong return VoxelShapes.fullCube(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java new file mode 100644 index 000000000..8f934e10f --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java @@ -0,0 +1,14 @@ +package com.simibubi.create.content.contraptions.relays.belt; + +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.util.IStringSerializable; + +public enum BeltSlope implements IStringSerializable { + HORIZONTAL, UPWARD, DOWNWARD, VERTICAL, SIDEWAYS; + + @Override + public String getName() { + return Lang.asId(name()); + } +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index 8d7b2347e..fbade212a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -1,10 +1,7 @@ package com.simibubi.create.content.contraptions.relays.belt; -import static com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part.END; -import static com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part.MIDDLE; -import static com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope.DOWNWARD; -import static com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope.HORIZONTAL; -import static com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope.UPWARD; +import static com.simibubi.create.content.contraptions.relays.belt.BeltPart.MIDDLE; +import static com.simibubi.create.content.contraptions.relays.belt.BeltSlope.HORIZONTAL; import static net.minecraft.util.Direction.AxisDirection.NEGATIVE; import static net.minecraft.util.Direction.AxisDirection.POSITIVE; @@ -16,8 +13,6 @@ import java.util.function.Function; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; @@ -286,7 +281,7 @@ public class BeltTileEntity extends KineticTileEntity { public boolean hasPulley() { if (!AllBlocks.BELT.has(getBlockState())) return false; - return getBlockState().get(BeltBlock.PART) != Part.MIDDLE; + return getBlockState().get(BeltBlock.PART) != BeltPart.MIDDLE; } protected boolean isLastBelt() { @@ -294,16 +289,16 @@ public class BeltTileEntity extends KineticTileEntity { return false; Direction direction = getBeltFacing(); - if (getBlockState().get(BeltBlock.SLOPE) == Slope.VERTICAL) + if (getBlockState().get(BeltBlock.SLOPE) == BeltSlope.VERTICAL) return false; - Part part = getBlockState().get(BeltBlock.PART); + BeltPart part = getBlockState().get(BeltBlock.PART); if (part == MIDDLE) return false; boolean movingPositively = (getSpeed() > 0 == (direction.getAxisDirection() .getOffset() == 1)) ^ direction.getAxis() == Axis.X; - return part == Part.START ^ movingPositively; + return part == BeltPart.START ^ movingPositively; } public Vec3i getMovementDirection(boolean firstHalf) { @@ -320,8 +315,8 @@ public class BeltTileEntity extends KineticTileEntity { final BlockState blockState = getBlockState(); final Direction beltFacing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); - final Slope slope = blockState.get(BeltBlock.SLOPE); - final Part part = blockState.get(BeltBlock.PART); + final BeltSlope slope = blockState.get(BeltBlock.SLOPE); + final BeltPart part = blockState.get(BeltBlock.PART); final Axis axis = beltFacing.getAxis(); Direction movementFacing = Direction.getFacingFromAxis(axis == Axis.X ? NEGATIVE : POSITIVE, axis); @@ -330,9 +325,9 @@ public class BeltTileEntity extends KineticTileEntity { movementFacing = movementFacing.getOpposite(); Vec3i movement = movementFacing.getDirectionVec(); - boolean slopeBeforeHalf = (part == END) == (beltFacing.getAxisDirection() == POSITIVE); + boolean slopeBeforeHalf = (part == BeltPart.END) == (beltFacing.getAxisDirection() == POSITIVE); boolean onSlope = notHorizontal && (part == MIDDLE || slopeBeforeHalf == firstHalf || ignoreHalves); - boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? UPWARD : DOWNWARD); + boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? BeltSlope.UPWARD : BeltSlope.DOWNWARD); if (!onSlope) return movement; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java index e9aa45bbb..9f51af84f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java @@ -9,8 +9,8 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.relays.belt.BeltPart; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.config.AllConfigs; @@ -118,7 +118,7 @@ public class BeltConnectorItem extends BlockItem { public static void createBelts(World world, BlockPos start, BlockPos end) { - BeltBlock.Slope slope = getSlopeBetween(start, end); + BeltSlope slope = getSlopeBetween(start, end); Direction facing = getFacingFromTo(start, end); BlockPos diff = end.subtract(start); @@ -130,13 +130,13 @@ public class BeltConnectorItem extends BlockItem { BlockState beltBlock = AllBlocks.BELT.getDefaultState(); for (BlockPos pos : beltsToCreate) { - BeltBlock.Part part = pos.equals(start) ? Part.START : pos.equals(end) ? Part.END : Part.MIDDLE; + BeltPart part = pos.equals(start) ? BeltPart.START : pos.equals(end) ? BeltPart.END : BeltPart.MIDDLE; BlockState shaftState = world.getBlockState(pos); boolean pulley = ShaftBlock.isShaft(shaftState); - if (part == Part.MIDDLE && pulley) - part = Part.PULLEY; + if (part == BeltPart.MIDDLE && pulley) + part = BeltPart.PULLEY; if (pulley && shaftState.get(ShaftBlock.AXIS) == Axis.Y) - slope = Slope.SIDEWAYS; + slope = BeltSlope.SIDEWAYS; world.setBlockState(pos, beltBlock.with(BeltBlock.SLOPE, slope) .with(BeltBlock.PART, part) .with(BeltBlock.HORIZONTAL_FACING, facing), 3); @@ -157,18 +157,18 @@ public class BeltConnectorItem extends BlockItem { return Direction.getFacingFromAxis(axisDirection, beltAxis); } - private static Slope getSlopeBetween(BlockPos start, BlockPos end) { + private static BeltSlope getSlopeBetween(BlockPos start, BlockPos end) { BlockPos diff = end.subtract(start); if (diff.getY() != 0) { if (diff.getZ() != 0 || diff.getX() != 0) - return diff.getY() > 0 ? Slope.UPWARD : Slope.DOWNWARD; - return Slope.VERTICAL; + return diff.getY() > 0 ? BeltSlope.UPWARD : BeltSlope.DOWNWARD; + return BeltSlope.VERTICAL; } - return Slope.HORIZONTAL; + return BeltSlope.HORIZONTAL; } - private static List getBeltChainBetween(BlockPos start, BlockPos end, Slope slope, Direction direction) { + private static List getBeltChainBetween(BlockPos start, BlockPos end, BeltSlope slope, Direction direction) { List positions = new LinkedList<>(); int limit = 1000; BlockPos current = start; @@ -176,14 +176,14 @@ public class BeltConnectorItem extends BlockItem { do { positions.add(current); - if (slope == Slope.VERTICAL) { + if (slope == BeltSlope.VERTICAL) { current = current.up(direction.getAxisDirection() == AxisDirection.POSITIVE ? 1 : -1); continue; } current = current.offset(direction); - if (slope != Slope.HORIZONTAL) - current = current.up(slope == Slope.UPWARD ? 1 : -1); + if (slope != BeltSlope.HORIZONTAL) + current = current.up(slope == BeltSlope.UPWARD ? 1 : -1); } while (!current.equals(end) && limit-- > 0); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index 17e843956..2efb20fdf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -11,9 +11,9 @@ import java.util.function.Function; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; @@ -73,7 +73,7 @@ public class BeltInventory { float beltSpeed = belt.getDirectionAwareBeltMovementSpeed(); Direction movementFacing = belt.getMovementFacing(); boolean horizontal = belt.getBlockState() - .get(BeltBlock.SLOPE) == Slope.HORIZONTAL; + .get(BeltBlock.SLOPE) == BeltSlope.HORIZONTAL; float spacing = 1; World world = belt.getWorld(); boolean onClient = world.isRemote; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java index e41aa44ee..cbea2b1dc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java @@ -9,9 +9,9 @@ import java.util.List; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.contraptions.relays.belt.BeltPart; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; @@ -84,7 +84,7 @@ public class BeltMovementHandler { } // Too slow - boolean notHorizontal = beltTe.getBlockState().get(BeltBlock.SLOPE) != Slope.HORIZONTAL; + boolean notHorizontal = beltTe.getBlockState().get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL; if (Math.abs(beltTe.getSpeed()) < 1) return; @@ -99,7 +99,7 @@ public class BeltMovementHandler { } final Direction beltFacing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); - final Slope slope = blockState.get(BeltBlock.SLOPE); + final BeltSlope slope = blockState.get(BeltBlock.SLOPE); final Axis axis = beltFacing.getAxis(); float movementSpeed = beltTe.getBeltMovementSpeed(); final Direction movementDirection = Direction.getFacingFromAxis(axis == Axis.X ? NEGATIVE : POSITIVE, axis); @@ -112,14 +112,14 @@ public class BeltMovementHandler { if (Math.abs(diffCenter) > 48 / 64f) return; - Part part = blockState.get(BeltBlock.PART); + BeltPart part = blockState.get(BeltBlock.PART); float top = 13 / 16f; - boolean onSlope = notHorizontal && (part == Part.MIDDLE || part == Part.PULLEY - || part == (slope == Slope.UPWARD ? Part.END : Part.START) && entityIn.getY() - pos.getY() < top - || part == (slope == Slope.UPWARD ? Part.START : Part.END) && entityIn.getY() - pos.getY() > top); + boolean onSlope = notHorizontal && (part == BeltPart.MIDDLE || part == BeltPart.PULLEY + || part == (slope == BeltSlope.UPWARD ? BeltPart.END : BeltPart.START) && entityIn.getY() - pos.getY() < top + || part == (slope == BeltSlope.UPWARD ? BeltPart.START : BeltPart.END) && entityIn.getY() - pos.getY() > top); - boolean movingDown = onSlope && slope == (movementFacing == beltFacing ? Slope.DOWNWARD : Slope.UPWARD); - boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? Slope.UPWARD : Slope.DOWNWARD); + boolean movingDown = onSlope && slope == (movementFacing == beltFacing ? BeltSlope.DOWNWARD : BeltSlope.UPWARD); + boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? BeltSlope.UPWARD : BeltSlope.DOWNWARD); if (beltFacing.getAxis() == Axis.Z) { boolean b = movingDown; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java index 4fa3cca53..533cfcd25 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.relays.belt.transport; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; @@ -60,7 +60,7 @@ public class BeltTunnelInteractionHandler { public static void flapTunnel(BeltInventory beltInventory, int offset, Direction side, boolean inward) { BeltTileEntity belt = beltInventory.belt; if (belt.getBlockState() - .get(BeltBlock.SLOPE) != Slope.HORIZONTAL) + .get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL) return; BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) .up(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java index 3ca73f773..99949c701 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/observer/BeltObserverBlock.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.logistics.block.belts.observer; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.relays.belt.BeltPart; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -77,9 +77,9 @@ public class BeltObserverBlock extends HorizontalBlock if (!AllBlocks.BELT.has(blockState)) return false; - if (blockState.get(BeltBlock.SLOPE) != Slope.HORIZONTAL) + if (blockState.get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL) return false; - if (blockState.get(BeltBlock.PART) != Part.MIDDLE) + if (blockState.get(BeltBlock.PART) != BeltPart.MIDDLE) return false; if (blockState.get(BeltBlock.HORIZONTAL_FACING).getAxis() == direction.getAxis()) return false; @@ -99,7 +99,7 @@ public class BeltObserverBlock extends HorizontalBlock BlockState blockState = context.getWorld().getBlockState(context.getPos().offset(face)); if (AllBlocks.BELT.has(blockState) && blockState.get(BlockStateProperties.HORIZONTAL_FACING).getAxis() != face.getAxis() - && blockState.get(BeltBlock.SLOPE) == Slope.HORIZONTAL) + && blockState.get(BeltBlock.SLOPE) == BeltSlope.HORIZONTAL) if (preferredFacing == null) preferredFacing = face; else { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java index f3ef9e2a6..b25c6d32b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java @@ -3,7 +3,7 @@ package com.simibubi.create.content.logistics.block.belts.tunnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.foundation.block.ITE; @@ -80,7 +80,7 @@ public class BeltTunnelBlock extends Block implements ITE, BlockState blockState = worldIn.getBlockState(pos.down()); if (!AllBlocks.BELT.has(blockState)) return false; - if (blockState.get(BeltBlock.SLOPE) != Slope.HORIZONTAL) + if (blockState.get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL) return false; return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index e5bda8728..ada0f6279 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -8,9 +8,13 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; +import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilteringBehaviour; +import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.block.BlockState; @@ -44,6 +48,21 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { stackToDistribute = ItemStack.EMPTY; } +// @Override +// public void tick() { +// super.tick(); +// +// if (stackToDistribute.isEmpty()) +// return; +// if (distributionProgress == -1) { +// distributionTargets.clear(); +// for (Pair pair : gatherValidOutputs()) { +// +// } +// } +// +// } + @Override public void initialize() { if (filtering == null) { @@ -52,7 +71,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { } super.initialize(); } - + public boolean canInsert(Direction side, ItemStack stack) { if (filtering != null && !filtering.test(side, stack)) return false; @@ -62,7 +81,60 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { return false; return true; } - + + public boolean onItemInserted(ItemStack stack) { + if (!connectedLeft && !connectedRight) + return false; + stackToDistribute = stack.copy(); + sendData(); + markDirty(); + return true; + } + + private List> gatherValidOutputs() { + List> validOutputs = new ArrayList<>(); + addValidOutputsOf(this, validOutputs); + for (boolean left : Iterate.trueAndFalse) { + BrassTunnelTileEntity adjacent = this; + while (adjacent != null) { + if (!world.isAreaLoaded(adjacent.getPos(), 1)) + return null; + adjacent = adjacent.getAdjacent(left); + if (adjacent != null) + addValidOutputsOf(adjacent, validOutputs); + } + } + return validOutputs; + } + + private void addValidOutputsOf(BrassTunnelTileEntity tunnelTE, + List> validOutputs) { + BeltTileEntity below = BeltHelper.getSegmentTE(world, tunnelTE.pos.down()); + if (below == null) + return; + if (below.getSpeed() != 0) { + Direction direction = below.getMovementFacing(); + if (tunnelTE.flaps.containsKey(direction)) + validOutputs.add(Pair.of(tunnelTE, direction)); + } + + BlockState blockState = getBlockState(); + if (!AllBlocks.BRASS_TUNNEL.has(blockState)) + return; + for (boolean left : Iterate.trueAndFalse) { + Axis axis = blockState.get(BrassTunnelBlock.HORIZONTAL_AXIS); + Direction baseDirection = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); + Direction direction = left ? baseDirection.rotateYCCW() : baseDirection.rotateY(); + if (tunnelTE.flaps.containsKey(direction)) { + DirectBeltInputBehaviour inputBehaviour = TileEntityBehaviour.get(world, tunnelTE.pos.down() + .offset(direction), DirectBeltInputBehaviour.TYPE); + if (inputBehaviour.canInsertFromSide(direction)) + validOutputs.add(Pair.of(tunnelTE, direction)); + } + } + + } + @Override public void addBehavioursDeferred(List behaviours) { super.addBehavioursDeferred(behaviours); @@ -185,9 +257,9 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { Axis axis = blockState.get(BrassTunnelBlock.HORIZONTAL_AXIS); Direction baseDirection = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); Direction direction = leftSide ? baseDirection.rotateYCCW() : baseDirection.rotateY(); - BlockPos adjacentPos = pos.offset(direction); BlockState adjacentBlockState = world.getBlockState(adjacentPos); + if (!AllBlocks.BRASS_TUNNEL.has(adjacentBlockState)) return null; if (adjacentBlockState.get(BrassTunnelBlock.HORIZONTAL_AXIS) != axis) diff --git a/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java b/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java index a685417fc..c106c0046 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java @@ -4,7 +4,7 @@ import java.util.Optional; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; +import com.simibubi.create.content.contraptions.relays.belt.BeltPart; import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; @@ -172,7 +172,7 @@ public abstract class LaunchedItem { @Override void place(World world) { // todo place belt - boolean isStart = state.get(BeltBlock.PART) == Part.START; + boolean isStart = state.get(BeltBlock.PART) == BeltPart.START; BlockPos offset = BeltBlock.nextSegmentPosition(state, BlockPos.ZERO, isStart); int i = length - 1; Axis axis = state.get(BeltBlock.HORIZONTAL_FACING).rotateY().getAxis(); diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java index e8c11e98b..c28ad8bc9 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java @@ -7,9 +7,9 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Part; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.contraptions.relays.belt.BeltPart; +import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; @@ -481,10 +481,10 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC // is highest belt? boolean isLastSegment = false; Direction facing = blockState.get(BeltBlock.HORIZONTAL_FACING); - Slope slope = blockState.get(BeltBlock.SLOPE); + BeltSlope slope = blockState.get(BeltBlock.SLOPE); boolean positive = facing.getAxisDirection() == AxisDirection.POSITIVE; - boolean start = blockState.get(BeltBlock.PART) == Part.START; - boolean end = blockState.get(BeltBlock.PART) == Part.END; + boolean start = blockState.get(BeltBlock.PART) == BeltPart.START; + boolean end = blockState.get(BeltBlock.PART) == BeltPart.END; switch (slope) { case DOWNWARD: @@ -499,7 +499,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC isLastSegment = positive && end || !positive && start; } if (!isLastSegment) - blockState = (blockState.get(BeltBlock.PART) == Part.MIDDLE) ? Blocks.AIR.getDefaultState() + blockState = (blockState.get(BeltBlock.PART) == BeltPart.MIDDLE) ? Blocks.AIR.getDefaultState() : AllBlocks.SHAFT.getDefaultState() .with(ShaftBlock.AXIS, facing.rotateY() .getAxis()); From 16e08a0693e216f8f91ef2a3a64b07bdc5a41f0b Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 9 Jul 2020 21:55:14 +0200 Subject: [PATCH 45/47] Distribu-tunnel - Fixed dynamic Mechanical Arm parts not being lit correctly - Fixed Mechanical Arm not always initializing interaction points on the client - Belt tunnels now create side-openings for belt-like blocks such as the depot - Belt tunnels no longer create flaps when there is a belt funnel connected to that side - Brass tunnels can now distribute items among their output sides and other connected tunnels, taking into account their sided filtering --- .../contraptions/relays/belt/BeltBlock.java | 31 +-- .../relays/belt/BeltTileEntity.java | 22 +- .../BeltTunnelInteractionHandler.java | 41 ++- .../block/belts/tunnel/BeltTunnelBlock.java | 23 +- .../belts/tunnel/BeltTunnelTileEntity.java | 7 + .../belts/tunnel/BrassTunnelItemHandler.java | 59 ++++ .../belts/tunnel/BrassTunnelTileEntity.java | 262 +++++++++++++++--- .../block/mechanicalArm/ArmRenderer.java | 12 +- .../block/mechanicalArm/ArmTileEntity.java | 27 +- 9 files changed, 393 insertions(+), 91 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 200fa5989..5fc571d61 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -57,6 +57,7 @@ import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import net.minecraft.world.WorldType; @@ -212,11 +213,6 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE getBeltChain(World world, BlockPos controllerPos) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java index fbade212a..dc6ae7376 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java @@ -19,6 +19,7 @@ import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMoveme import com.simibubi.create.content.contraptions.relays.belt.transport.BeltTunnelInteractionHandler; import com.simibubi.create.content.contraptions.relays.belt.transport.ItemHandlerBeltSegment; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; @@ -79,7 +80,6 @@ public class BeltTileEntity extends KineticTileEntity { public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); behaviours.add(new DirectBeltInputBehaviour(this) - .onlyInsertWhen(d -> getSpeed() != 0 && getMovementFacing() != d.getOpposite()) .setInsertionHandler(this::tryInsertingFromSide)); behaviours.add(new TransportedItemStackHandlerBehaviour(this, this::applyToAllItems) .withStackPlacement(this::getWorldPositionOf)); @@ -397,13 +397,31 @@ public class BeltTileEntity extends KineticTileEntity { BeltTileEntity nextBeltController = getControllerTE(); ItemStack inserted = transportedStack.stack; ItemStack empty = ItemStack.EMPTY; - + if (nextBeltController == null) return inserted; BeltInventory nextInventory = nextBeltController.getInventory(); + + TileEntity teAbove = world.getTileEntity(pos.up()); + if (teAbove instanceof BrassTunnelTileEntity) { + BrassTunnelTileEntity tunnelTE = (BrassTunnelTileEntity) teAbove; + if (tunnelTE.hasDistributionBehaviour()) { + if (!tunnelTE.getStackToDistribute().isEmpty()) + return inserted; + if (!tunnelTE.testFlapFilter(side.getOpposite(), inserted)) + return inserted; + if (!simulate) { + BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true); + tunnelTE.setStackToDistribute(inserted); + } + return empty; + } + } if (getSpeed() == 0) return inserted; + if (getMovementFacing() == side.getOpposite()) + return inserted; if (!nextInventory.canInsertAtFromSide(index, side)) return inserted; if (simulate) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java index 533cfcd25..b916628dc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java @@ -28,13 +28,35 @@ public class BeltTunnelInteractionHandler { upcomingSegment = -1; if (currentSegment != upcomingSegment) { if (stuckAtTunnel(beltInventory, upcomingSegment, current.stack, movementFacing)) { - current.beltPosition = currentSegment + (beltInventory.beltMovementPositive ? .99f : -.01f); + current.beltPosition = currentSegment + (beltInventory.beltMovementPositive ? .99f : .01f); return true; } - if (!beltInventory.belt.getWorld().isRemote) { + boolean onServer = !beltInventory.belt.getWorld().isRemote; + boolean removed = false; + BeltTunnelTileEntity nextTunnel = getTunnelOnSegement(beltInventory, upcomingSegment); + if (nextTunnel instanceof BrassTunnelTileEntity) { + BrassTunnelTileEntity brassTunnel = (BrassTunnelTileEntity) nextTunnel; + if (brassTunnel.hasDistributionBehaviour()) { + if (!brassTunnel.getStackToDistribute() + .isEmpty()) + return true; + if (onServer) { + brassTunnel.setStackToDistribute(current.stack); + current.stack = ItemStack.EMPTY; + beltInventory.belt.sendData(); + beltInventory.belt.markDirty(); + } + removed = true; + } + } + + if (onServer) { flapTunnel(beltInventory, currentSegment, movementFacing, false); flapTunnel(beltInventory, upcomingSegment, movementFacing.getOpposite(), true); } + + if (removed) + return true; } return false; @@ -58,21 +80,28 @@ public class BeltTunnelInteractionHandler { } public static void flapTunnel(BeltInventory beltInventory, int offset, Direction side, boolean inward) { + BeltTunnelTileEntity te = getTunnelOnSegement(beltInventory, offset); + if (te == null) + return; + te.flap(side, inward ^ side.getAxis() == Axis.Z); + } + + protected static BeltTunnelTileEntity getTunnelOnSegement(BeltInventory beltInventory, int offset) { BeltTileEntity belt = beltInventory.belt; if (belt.getBlockState() .get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL) - return; + return null; BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) .up(); if (!(belt.getWorld() .getBlockState(pos) .getBlock() instanceof BeltTunnelBlock)) - return; + return null; TileEntity te = belt.getWorld() .getTileEntity(pos); if (te == null || !(te instanceof BeltTunnelTileEntity)) - return; - ((BeltTunnelTileEntity) te).flap(side, inward ^ side.getAxis() == Axis.Z); + return null; + return ((BeltTunnelTileEntity) te); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java index b25c6d32b..b9690831c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelBlock.java @@ -7,6 +7,8 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; @@ -122,7 +124,7 @@ public class BeltTunnelBlock extends Block implements ITE, return tunnelState; } - public void updateTunnel(World world, BlockPos pos) { + public void updateTunnel(IWorld world, BlockPos pos) { BlockState tunnel = world.getBlockState(pos); BlockState newTunnel = getTunnelState(world, pos); if (tunnel != newTunnel) { @@ -144,14 +146,8 @@ public class BeltTunnelBlock extends Block implements ITE, // T and Cross Direction left = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis) .rotateY(); - BlockState leftState = reader.getBlockState(pos.offset(left) - .down()); - boolean onLeft = AllBlocks.BELT.has(leftState) && leftState.get(BeltBlock.HORIZONTAL_FACING) - .getAxis() != axis; - BlockState rightState = reader.getBlockState(pos.offset(left.getOpposite()) - .down()); - boolean onRight = AllBlocks.BELT.has(rightState) && rightState.get(BeltBlock.HORIZONTAL_FACING) - .getAxis() != axis; + boolean onLeft = hasValidOutput(reader, pos.down(), left); + boolean onRight = hasValidOutput(reader, pos.down(), left.getOpposite()); if (onLeft && onRight) state = state.with(SHAPE, Shape.CROSS); @@ -178,6 +174,15 @@ public class BeltTunnelBlock extends Block implements ITE, return state; } + private boolean hasValidOutput(IBlockReader world, BlockPos pos, Direction side) { + BlockState blockState = world.getBlockState(pos.offset(side)); + if (AllBlocks.BELT.has(blockState)) + return blockState.get(BeltBlock.HORIZONTAL_FACING).getAxis() == side.getAxis(); + DirectBeltInputBehaviour behaviour = + TileEntityBehaviour.get(world, pos.offset(side), DirectBeltInputBehaviour.TYPE); + return behaviour != null && behaviour.canInsertFromSide(side); + } + @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { if (!hasWindow(state)) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java index cc59e8eff..123476662 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; @@ -130,6 +131,12 @@ public class BeltTunnelTileEntity extends SmartTileEntity { if (!positive && shape == Shape.T_RIGHT) continue; } + + BlockState funnelState = world.getBlockState(getPos().offset(direction)); + if (funnelState.getBlock() instanceof BeltFunnelBlock) + if (funnelState.get(BeltFunnelBlock.HORIZONTAL_FACING) == direction.getOpposite()) + continue; + flaps.put(direction, new InterpolatedChasingValue().start(.25f) .target(0) .withSpeed(.05f)); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java new file mode 100644 index 000000000..b103dd5ae --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelItemHandler.java @@ -0,0 +1,59 @@ +package com.simibubi.create.content.logistics.block.belts.tunnel; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.IItemHandler; + +public class BrassTunnelItemHandler implements IItemHandler { + + private BrassTunnelTileEntity te; + + public BrassTunnelItemHandler(BrassTunnelTileEntity te) { + this.te = te; + } + + @Override + public int getSlots() { + return 1; + } + + @Override + public ItemStack getStackInSlot(int slot) { + return te.stackToDistribute; + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + if (!te.hasDistributionBehaviour()) { + LazyOptional beltCapability = te.getBeltCapability(); + if (!beltCapability.isPresent()) + return stack; + return beltCapability.orElse(null).insertItem(slot, stack, simulate); + } + + if (!te.stackToDistribute.isEmpty()) + return stack; + if (!simulate) + te.setStackToDistribute(stack); + return ItemStack.EMPTY; + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + LazyOptional beltCapability = te.getBeltCapability(); + if (!beltCapability.isPresent()) + return ItemStack.EMPTY; + return beltCapability.orElse(null).extractItem(slot, amount, simulate); + } + + @Override + public int getSlotLimit(int slot) { + return te.stackToDistribute.isEmpty() ? 64 : te.stackToDistribute.getMaxStackSize(); + } + + @Override + public boolean isItemValid(int slot, ItemStack stack) { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index ada0f6279..97b70ce99 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.tuple.Pair; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; @@ -17,7 +18,9 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilter import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.NBTUtil; @@ -27,7 +30,12 @@ import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; public class BrassTunnelTileEntity extends BeltTunnelTileEntity { @@ -42,26 +50,170 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { int distributionDistanceLeft; int distributionDistanceRight; + private LazyOptional beltCapability; + private LazyOptional tunnelCapability; + public BrassTunnelTileEntity(TileEntityType type) { super(type); distributionTargets = new ArrayList<>(); stackToDistribute = ItemStack.EMPTY; + beltCapability = LazyOptional.empty(); + tunnelCapability = LazyOptional.of(() -> new BrassTunnelItemHandler(this)); } -// @Override -// public void tick() { -// super.tick(); -// -// if (stackToDistribute.isEmpty()) -// return; -// if (distributionProgress == -1) { -// distributionTargets.clear(); -// for (Pair pair : gatherValidOutputs()) { -// -// } -// } -// -// } + @Override + public void tick() { + super.tick(); + BeltTileEntity beltBelow = BeltHelper.getSegmentTE(world, pos.down()); + + if (beltBelow == null || beltBelow.getSpeed() == 0) + return; + if (stackToDistribute.isEmpty()) + return; + if (world.isRemote) + return; + + if (distributionProgress == -1) { + distributionTargets.clear(); + distributionDistanceLeft = 0; + distributionDistanceRight = 0; + for (Pair pair : gatherValidOutputs()) { + BrassTunnelTileEntity tunnel = pair.getKey(); + Direction output = pair.getValue(); + if (!insertIntoTunnel(tunnel, output, stackToDistribute, true).isEmpty()) + continue; + distributionTargets.add(Pair.of(tunnel.pos, output)); + int distance = tunnel.pos.getX() + tunnel.pos.getZ() - pos.getX() - pos.getZ(); + if (distance < 0) + distributionDistanceLeft = Math.max(distributionDistanceLeft, -distance); + else + distributionDistanceRight = Math.max(distributionDistanceRight, distance); + } + + if (distributionTargets.isEmpty()) + return; + + distributionProgress = 0; + sendData(); + return; + } + + // TODO this is instant for now + if (distributionProgress == 0) { + List> validTargets = new ArrayList<>(); + for (Pair pair : distributionTargets) { + BlockPos tunnelPos = pair.getKey(); + Direction output = pair.getValue(); + TileEntity te = world.getTileEntity(tunnelPos); + if (!(te instanceof BrassTunnelTileEntity)) + continue; + validTargets.add(Pair.of((BrassTunnelTileEntity) te, output)); + } + + if (validTargets.size() == 0) { + distributionProgress = -1; + sendData(); + return; + } + + int stackSizeBefore = stackToDistribute.getCount(); + int stackSizeForOutput = stackSizeBefore / validTargets.size(); + int remainder = stackSizeBefore % validTargets.size(); + + for (Pair pair : validTargets) { + BrassTunnelTileEntity tunnel = pair.getKey(); + Direction side = pair.getValue(); + int stackSize = stackSizeForOutput + (remainder > 0 ? 1 : 0); + ItemStack toOutput = stackToDistribute.copy() + .split(stackSize); + if (!insertIntoTunnel(tunnel, side, toOutput, false).isEmpty()) + continue; + stackToDistribute.shrink(stackSize); + remainder--; + } + + distributionProgress = -1; + markDirty(); + sendData(); + return; + } + + } + + public void setStackToDistribute(ItemStack stack) { + stackToDistribute = stack; + distributionProgress = -1; + sendData(); + markDirty(); + } + + public ItemStack getStackToDistribute() { + return stackToDistribute; + } + + protected ItemStack insertIntoTunnel(BrassTunnelTileEntity tunnel, Direction side, ItemStack stack, + boolean simulate) { + if (stack.isEmpty()) + return stack; + if (!tunnel.testFlapFilter(side, stack)) + return stack; + + BeltTileEntity below = BeltHelper.getSegmentTE(world, tunnel.pos.down()); + if (below == null) + return stack; + BlockPos offset = tunnel.getPos() + .down() + .offset(side); + DirectBeltInputBehaviour sideOutput = TileEntityBehaviour.get(world, offset, DirectBeltInputBehaviour.TYPE); + if (sideOutput != null) { + ItemStack result = sideOutput.handleInsertion(stack, side, simulate); + if (result.isEmpty() && !simulate) + tunnel.flap(side, true); + return result; + } + + Direction movementFacing = below.getMovementFacing(); + if (side == movementFacing) + if (!Block.hasSolidSide(world.getBlockState(offset), world, offset, side.getOpposite())) { + BeltTileEntity controllerTE = below.getControllerTE(); + if (controllerTE == null) + return stack; + + if (!simulate) { + tunnel.flap(side, true); + ItemStack ejected = stack; + float beltMovementSpeed = below.getDirectionAwareBeltMovementSpeed(); + float movementSpeed = Math.max(Math.abs(beltMovementSpeed), 1 / 8f); + int additionalOffset = beltMovementSpeed > 0 ? 1 : 0; + Vec3d outPos = BeltHelper.getVectorForOffset(controllerTE, below.index + additionalOffset); + Vec3d outMotion = new Vec3d(side.getDirectionVec()).scale(movementSpeed) + .add(0, 1 / 8f, 0); + outPos.add(outMotion.normalize()); + ItemEntity entity = new ItemEntity(world, outPos.x, outPos.y + 6 / 16f, outPos.z, ejected); + entity.setMotion(outMotion); + entity.setDefaultPickupDelay(); + entity.velocityChanged = true; + world.addEntity(entity); + } + + return ItemStack.EMPTY; + } + + return stack; + } + + public boolean testFlapFilter(Direction side, ItemStack stack) { + if (filtering == null) + return false; + if (filtering.get(side) == null) { + FilteringBehaviour adjacentFilter = + TileEntityBehaviour.get(world, pos.offset(side), FilteringBehaviour.TYPE); + if (adjacentFilter == null) + return true; + return adjacentFilter.test(stack); + } + return filtering.test(side, stack); + } @Override public void initialize() { @@ -75,20 +227,26 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { public boolean canInsert(Direction side, ItemStack stack) { if (filtering != null && !filtering.test(side, stack)) return false; - if (!connectedLeft && !connectedRight) + if (!hasDistributionBehaviour()) return true; if (!stackToDistribute.isEmpty()) return false; return true; } - public boolean onItemInserted(ItemStack stack) { - if (!connectedLeft && !connectedRight) + public boolean hasDistributionBehaviour() { + if (flaps.isEmpty()) return false; - stackToDistribute = stack.copy(); - sendData(); - markDirty(); - return true; + if (connectedLeft || connectedRight) + return true; + BlockState blockState = getBlockState(); + if (!AllBlocks.BRASS_TUNNEL.has(blockState)) + return false; + Axis axis = blockState.get(BrassTunnelBlock.HORIZONTAL_AXIS); + for (Direction direction : flaps.keySet()) + if (direction.getAxis() != axis) + return true; + return false; } private List> gatherValidOutputs() { @@ -112,27 +270,41 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { BeltTileEntity below = BeltHelper.getSegmentTE(world, tunnelTE.pos.down()); if (below == null) return; - if (below.getSpeed() != 0) { - Direction direction = below.getMovementFacing(); - if (tunnelTE.flaps.containsKey(direction)) - validOutputs.add(Pair.of(tunnelTE, direction)); - } - + Direction movementFacing = below.getMovementFacing(); BlockState blockState = getBlockState(); if (!AllBlocks.BRASS_TUNNEL.has(blockState)) return; - for (boolean left : Iterate.trueAndFalse) { - Axis axis = blockState.get(BrassTunnelBlock.HORIZONTAL_AXIS); - Direction baseDirection = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - Direction direction = left ? baseDirection.rotateYCCW() : baseDirection.rotateY(); - if (tunnelTE.flaps.containsKey(direction)) { - DirectBeltInputBehaviour inputBehaviour = TileEntityBehaviour.get(world, tunnelTE.pos.down() - .offset(direction), DirectBeltInputBehaviour.TYPE); + + for (Direction direction : Iterate.horizontalDirections) { + if (direction == movementFacing && below.getSpeed() == 0) + continue; + if (tunnelTE.flaps.containsKey(direction) || tunnelTE.hasValidOutputFunnel(direction)) { + BlockPos offset = tunnelTE.pos.down() + .offset(direction); + DirectBeltInputBehaviour inputBehaviour = + TileEntityBehaviour.get(world, offset, DirectBeltInputBehaviour.TYPE); + if (inputBehaviour == null) { + if (direction == movementFacing) + if (!Block.hasSolidSide(world.getBlockState(offset), world, offset, direction.getOpposite())) + validOutputs.add(Pair.of(tunnelTE, direction)); + continue; + } if (inputBehaviour.canInsertFromSide(direction)) validOutputs.add(Pair.of(tunnelTE, direction)); + continue; } } + } + protected boolean hasValidOutputFunnel(Direction side) { + BlockState funnelState = world.getBlockState(getPos().offset(side)); + if (!(funnelState.getBlock() instanceof BeltFunnelBlock)) + return false; + if (funnelState.has(BeltFunnelBlock.POWERED) && funnelState.get(BeltFunnelBlock.POWERED)) + return false; + if (funnelState.get(BeltFunnelBlock.HORIZONTAL_FACING) != side.getOpposite()) + return false; + return !funnelState.get(BeltFunnelBlock.PUSHING); } @Override @@ -270,4 +442,26 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity { return (BrassTunnelTileEntity) adjacentTE; } + @Override + public void remove() { + tunnelCapability.invalidate(); + super.remove(); + } + + @Override + public LazyOptional getCapability(Capability capability, Direction side) { + if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + return tunnelCapability.cast(); + return super.getCapability(capability, side); + } + + public LazyOptional getBeltCapability() { + if (!beltCapability.isPresent()) { + TileEntity tileEntity = world.getTileEntity(pos.down()); + if (tileEntity != null) + beltCapability = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); + } + return beltCapability; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java index e9fc9ad50..c7e03a2cf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java @@ -37,12 +37,12 @@ public class ArmRenderer extends KineticTileEntityRenderer { ms.push(); - SuperByteBuffer base = AllBlockPartials.ARM_BASE.renderOn(blockState); - SuperByteBuffer lowerBody = AllBlockPartials.ARM_LOWER_BODY.renderOn(blockState); - SuperByteBuffer upperBody = AllBlockPartials.ARM_UPPER_BODY.renderOn(blockState); - SuperByteBuffer head = AllBlockPartials.ARM_HEAD.renderOn(blockState); - SuperByteBuffer claw = AllBlockPartials.ARM_CLAW_BASE.renderOn(blockState); - SuperByteBuffer clawGrip = AllBlockPartials.ARM_CLAW_GRIP.renderOn(blockState); + SuperByteBuffer base = AllBlockPartials.ARM_BASE.renderOn(blockState).light(light); + SuperByteBuffer lowerBody = AllBlockPartials.ARM_LOWER_BODY.renderOn(blockState).light(light); + SuperByteBuffer upperBody = AllBlockPartials.ARM_UPPER_BODY.renderOn(blockState).light(light); + SuperByteBuffer head = AllBlockPartials.ARM_HEAD.renderOn(blockState).light(light); + SuperByteBuffer claw = AllBlockPartials.ARM_CLAW_BASE.renderOn(blockState).light(light); + SuperByteBuffer clawGrip = AllBlockPartials.ARM_CLAW_GRIP.renderOn(blockState).light(light); msr.centre(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 88a0b9c88..849406f4f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -186,12 +186,12 @@ public class ArmTileEntity extends KineticTileEntity { protected void collectItem() { ArmInteractionPoint armInteractionPoint = getTargetedInteractionPoint(); - if (armInteractionPoint != null) + if (armInteractionPoint != null) for (int i = 0; i < armInteractionPoint.getSlotCount(world); i++) { int amountExtracted = getDistributableAmount(armInteractionPoint, i); if (amountExtracted == 0) continue; - + heldItem = armInteractionPoint.extract(world, i, amountExtracted, false); phase = Phase.SEARCH_OUTPUTS; chasedPointProgress = 0; @@ -200,7 +200,7 @@ public class ArmTileEntity extends KineticTileEntity { markDirty(); return; } - + phase = Phase.SEARCH_INPUTS; chasedPointProgress = 0; chasedPointIndex = -1; @@ -218,7 +218,7 @@ public class ArmTileEntity extends KineticTileEntity { } protected void initInteractionPoints() { - if (interactionPointTag == null) + if (!updateInteractionPoints || interactionPointTag == null) return; inputs.clear(); outputs.clear(); @@ -231,9 +231,9 @@ public class ArmTileEntity extends KineticTileEntity { if (point.mode == Mode.TAKE) inputs.add(point); } - interactionPointTag = null; - markDirty(); + updateInteractionPoints = false; sendData(); + markDirty(); } @Override @@ -249,7 +249,7 @@ public class ArmTileEntity extends KineticTileEntity { .forEach(pointsNBT::add); NBTHelper.writeEnum(compound, "Phase", phase); - compound.put("InterationPoints", pointsNBT); + compound.put("InteractionPoints", pointsNBT); compound.put("HeldItem", heldItem.serializeNBT()); compound.putInt("TargetPointIndex", chasedPointIndex); compound.putFloat("MovementProgress", chasedPointProgress); @@ -259,8 +259,6 @@ public class ArmTileEntity extends KineticTileEntity { @Override public CompoundNBT writeToClient(CompoundNBT compound) { super.writeToClient(compound); - if (interactionPointTag != null) - compound.put("InitialInterationPoints", interactionPointTag); return compound; } @@ -271,19 +269,19 @@ public class ArmTileEntity extends KineticTileEntity { phase = NBTHelper.readEnum(compound, "Phase", Phase.class); chasedPointIndex = compound.getInt("TargetPointIndex"); chasedPointProgress = compound.getFloat("MovementProgress"); - - if (!hasWorld() || !world.isRemote || updateInteractionPoints) - interactionPointTag = compound.getList("InterationPoints", NBT.TAG_COMPOUND); - updateInteractionPoints = false; + interactionPointTag = compound.getList("InteractionPoints", NBT.TAG_COMPOUND); } @Override public void readClientUpdate(CompoundNBT tag) { int previousIndex = chasedPointIndex; Phase previousPhase = phase; + ListNBT interactionPointTagBefore = interactionPointTag; super.readClientUpdate(tag); + if (interactionPointTagBefore == null || interactionPointTagBefore.size() != interactionPointTag.size()) + updateInteractionPoints = true; if (previousIndex != chasedPointIndex || (previousPhase != phase)) { ArmInteractionPoint previousPoint = null; if (previousPhase == Phase.MOVE_TO_INPUT && previousIndex < inputs.size()) @@ -294,9 +292,6 @@ public class ArmTileEntity extends KineticTileEntity { if (previousPoint != null) previousBaseAngle = previousPoint.getTargetAngles(pos).baseAngle; } - - if (tag.contains("InitialInterationPoints")) - interactionPointTag = tag.getList("InitialInterationPoints", NBT.TAG_COMPOUND); } } From 3902569cbd34352da244f1bf44612fbacde1e284 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 10 Jul 2020 12:49:24 +0200 Subject: [PATCH 46/47] Fix another kinetic loop when removing shafts from a belt segment --- .../create/content/contraptions/relays/belt/BeltBlock.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index a62b2d6db..8116171dc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -299,12 +299,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE Date: Fri, 10 Jul 2020 19:48:04 +0200 Subject: [PATCH 47/47] Logistical enhancements and fixes - Arms can no longer insert into powered brass funnels - Slight ArmInteractionPoint refactor - Arms can now interact with Millstones, Basins, Jukeboxes, Crushing Wheels and the Mechanical Saw - Fixed crash when logging into a world with a running mixer - Arms now start to dance when one of their in or outputs is a running jukebox - Arms can now be mounted on the ceiling - Arms now always prefer the interaction points that were selected first - Fixed belt funnels not updating their blockstate properly when transitioning from other funnel types - Vertical funnels next to the end of a belt will now stall the belt when unable to collect incoming items - Minor model & texture touch ups - Arm no longer cancels player interaction when its empty handed - Fixed chutes not vertically interacting with andesite funnels --- src/generated/resources/.cache/cache | 24 +-- .../create/blockstates/mechanical_arm.json | 6 +- .../resources/assets/create/lang/en_us.json | 4 + .../assets/create/lang/unfinished/de_de.json | 6 +- .../assets/create/lang/unfinished/fr_fr.json | 6 +- .../assets/create/lang/unfinished/it_it.json | 6 +- .../assets/create/lang/unfinished/ja_jp.json | 6 +- .../assets/create/lang/unfinished/ko_kr.json | 6 +- .../assets/create/lang/unfinished/nl_nl.json | 6 +- .../assets/create/lang/unfinished/pt_br.json | 6 +- .../assets/create/lang/unfinished/ru_ru.json | 6 +- .../assets/create/lang/unfinished/zh_cn.json | 6 +- .../create/advancements/mechanical_arm.json | 46 +++++ .../data/create/advancements/musical_arm.json | 46 +++++ .../java/com/simibubi/create/AllBlocks.java | 6 +- .../java/com/simibubi/create/AllShapes.java | 2 + .../mixer/MechanicalMixerTileEntity.java | 11 +- .../fluids/CombinedFluidHandler.java | 12 +- .../block/chute/ChuteTileEntity.java | 10 +- .../block/funnel/AndesiteFunnelBlock.java | 8 +- .../block/funnel/BeltFunnelBlock.java | 15 +- .../block/funnel/BrassFunnelBlock.java | 5 +- .../logistics/block/funnel/FunnelBlock.java | 16 +- .../logistics/block/funnel/FunnelItem.java | 8 +- .../block/funnel/FunnelTileEntity.java | 19 ++ .../HorizontalInteractionFunnelBlock.java | 9 +- .../inventories/CreativeCrateInventory.java | 2 +- .../block/mechanicalArm/ArmAngleTarget.java | 19 +- .../block/mechanicalArm/ArmBlock.java | 33 +++- .../mechanicalArm/ArmInteractionPoint.java | 173 +++++++++++++++--- .../ArmInteractionPointHandler.java | 59 ++++-- .../block/mechanicalArm/ArmItem.java | 9 +- .../block/mechanicalArm/ArmRenderer.java | 30 ++- .../block/mechanicalArm/ArmTileEntity.java | 52 +++++- .../advancement/AllAdvancements.java | 25 ++- .../foundation/advancement/AllTriggers.java | 2 + .../create/lang/default/advancements.json | 4 + .../create/models/block/funnel/block.json | 4 +- .../textures/block/andesite_funnel_back.png | Bin 978 -> 984 bytes .../block/andesite_funnel_plating.png | Bin 1403 -> 1432 bytes .../create/textures/block/andesite_tunnel.png | Bin 2571 -> 2567 bytes .../textures/block/andesite_tunnel_top.png | Bin 297 -> 297 bytes .../textures/block/brass_funnel_back.png | Bin 948 -> 952 bytes .../textures/block/brass_funnel_plating.png | Bin 1580 -> 1564 bytes 44 files changed, 574 insertions(+), 139 deletions(-) create mode 100644 src/generated/resources/data/create/advancements/mechanical_arm.json create mode 100644 src/generated/resources/data/create/advancements/musical_arm.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 91511dbdb..9b2149026 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -179,7 +179,7 @@ b7506b862d13b3f915c60d38bb7a20afc935f70a assets\create\blockstates\limestone_pil 69790737767e06f000c7824749c46664a123160e assets\create\blockstates\linear_chassis.json c793ab3aa6cf09d8d6d4136757629689f0365771 assets\create\blockstates\linked_extractor.json c5422866667331f1d5cf6753c0889747ee02762b assets\create\blockstates\linked_transposer.json -e82e69ae4c7a784ef89fc5d954b2b01946746d48 assets\create\blockstates\mechanical_arm.json +3b3250d6e209403a93d025604a8081087965016e assets\create\blockstates\mechanical_arm.json ddcf4bb281e046fbb1026b8f46a2cf12448598df assets\create\blockstates\mechanical_bearing.json 5586beef2d9183dc34d8e8d2723620c0569592ae assets\create\blockstates\mechanical_crafter.json 044db7d50e19008bae8bf3325eac2ed0eb1ea6d2 assets\create\blockstates\mechanical_drill.json @@ -338,16 +338,16 @@ c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_lim 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json 541831ab0cf2f0222f0b7e42ec6c4b0ae636168d assets\create\lang\en_ud.json -fe44adfde38a1084754fe46b632811f90dcfcd7f assets\create\lang\en_us.json -143b76ed828949330ef0e338fb6709c28561ac2d assets\create\lang\unfinished\de_de.json -95bf7693b162141c2c76617ed4e04bec474e2def assets\create\lang\unfinished\fr_fr.json -b3bf60afc7d0dea72a9d7d01df36d34affd6a296 assets\create\lang\unfinished\it_it.json -ef336e01a8e3ed3f8c2713c66476bcc708e3e3b0 assets\create\lang\unfinished\ja_jp.json -66c84c388e552ee8259eca2ab1009493456fc4d3 assets\create\lang\unfinished\ko_kr.json -66b3140ef158b51208a191e6a90473fba5bb1749 assets\create\lang\unfinished\nl_nl.json -775702e0f3fbdab7ef8b1714e3cff69da56bd500 assets\create\lang\unfinished\pt_br.json -7c4c4e7a00456f893538a6baa35d726a8786bf93 assets\create\lang\unfinished\ru_ru.json -ce16074d9dc5d504f2a91b164258f0059163260b assets\create\lang\unfinished\zh_cn.json +fd57d2d8144286e26033a087a501f45f2df9ea34 assets\create\lang\en_us.json +87c28254c2acb462fe6a994f688a19e31a4c7a9d assets\create\lang\unfinished\de_de.json +6cd93a72126063c634f49db190d4da545e5a6c43 assets\create\lang\unfinished\fr_fr.json +401d0b295988cfa31af1a94f8c50d86eb54cad0d assets\create\lang\unfinished\it_it.json +30f1189e1963d0a87a9505bfdac9b663ff9d09d1 assets\create\lang\unfinished\ja_jp.json +a56d5b51d410821b7993bdbfd1b141e51be11b54 assets\create\lang\unfinished\ko_kr.json +e8a39cb4afc7668f2690bcacda1f06afd9c82579 assets\create\lang\unfinished\nl_nl.json +3876e40fbc9c6e8561cc761949a6fb9565a03fce assets\create\lang\unfinished\pt_br.json +cc2c01ee69a5a394c9d6dc87f77e08f05adf38a7 assets\create\lang\unfinished\ru_ru.json +7a8b2739021d2e1d2b563f2bed3a201bd3f1b00f assets\create\lang\unfinished\zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -1365,10 +1365,12 @@ e4e3c1bd7ecf501b40cffc26d8ad145ab4e89118 data\create\advancements\deployer.json 62f3610188f7dbd3900ab305edc2d06282705a38 data\create\advancements\goggles.json 7e12b7ccb198ef0db7964b8cbef152d8347e333c data\create\advancements\its_alive.json 3d0fc63191ef507a018ef996ebf9406a523f3976 data\create\advancements\lava_wheel.json +90393cdb6b699c9c0fd4dd9400159c3aa6911a6b data\create\advancements\mechanical_arm.json 786c2058805ceca3cd3970cc6e918560b54747f5 data\create\advancements\mechanical_drill.json 41444ae151ce90d2d68dcda0ed3565f98509c594 data\create\advancements\mechanical_saw.json 9c7f0c2484a84ccf42166704475fafcb1f232ce6 data\create\advancements\millstone.json 704c7fc0ed357b1a116ffdc0b6c64fe64e337a5a data\create\advancements\mixer.json +8085b46ca0dd8c511841cabd88e51bff4baceefd data\create\advancements\musical_arm.json a135eec618e448f440d9f42cc7a3e6c63fc45a71 data\create\advancements\overstressed.json 72025d8bf73ab8096c29f12d0c8d9a346f09cd64 data\create\advancements\polished_rose_quartz.json 1e3cd82e36fd4bcd053d652a0eead4458ed7f315 data\create\advancements\press.json diff --git a/src/generated/resources/assets/create/blockstates/mechanical_arm.json b/src/generated/resources/assets/create/blockstates/mechanical_arm.json index c4754cb1a..b283c0432 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_arm.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_arm.json @@ -1,7 +1,11 @@ { "variants": { - "": { + "ceiling=false": { "model": "create:block/mechanical_arm/block" + }, + "ceiling=true": { + "model": "create:block/mechanical_arm/block", + "x": 180 } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 5e18d7883..5b5379ff7 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -457,6 +457,10 @@ "advancement.create.crafter.desc": "Place and power some Mechanical Crafters", "advancement.create.deployer": "Poke, Place, and Attack", "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "Pound It, Bro!", "advancement.create.fist_bump.desc": "Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 0b7f7b251..9a8c82e36 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 777", + "_": "Missing Localizations: 781", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 21baa7d50..4f2fc8b3d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 380", + "_": "Missing Localizations: 384", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index cd54613f7..b91adee26 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 364", + "_": "Missing Localizations: 368", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 4bc000f9d..16000f239 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 359", + "_": "Missing Localizations: 363", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 92d51ddfc..ac39c9e93 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 364", + "_": "Missing Localizations: 368", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 82e15be94..6bbaa48c1 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 714", + "_": "Missing Localizations: 718", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 134623835..d49c96b2a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 784", + "_": "Missing Localizations: 788", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index b3f27dba3..cf9239c4f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 778", + "_": "Missing Localizations: 782", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 0f1a8b8b8..b691687f8 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 40", + "_": "Missing Localizations: 44", "_": "->------------------------] Game Elements [------------------------<-", @@ -458,6 +458,10 @@ "advancement.create.crafter.desc": "放置一些机械合成台并且为其供能", "advancement.create.deployer": "我就指着你了咋地?", "advancement.create.deployer.desc": "放置并且功能一个机械手。这可是你右手的完美复制品", + "advancement.create.mechanical_arm": "UNLOCALIZED: Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "UNLOCALIZED: Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "来碰个拳,哥们~", "advancement.create.fist_bump.desc": "使两个机械臂互相碰拳", "advancement.create.crushing_wheel": "一对大家伙", diff --git a/src/generated/resources/data/create/advancements/mechanical_arm.json b/src/generated/resources/data/create/advancements/mechanical_arm.json new file mode 100644 index 000000000..81ca30467 --- /dev/null +++ b/src/generated/resources/data/create/advancements/mechanical_arm.json @@ -0,0 +1,46 @@ +{ + "parent": "create:brass_casing", + "display": { + "icon": { + "item": "create:mechanical_arm" + }, + "title": { + "translate": "advancement.create.mechanical_arm" + }, + "description": { + "translate": "advancement.create.mechanical_arm.desc" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "minecraft:placed_block", + "conditions": { + "block": "create:mechanical_arm" + } + }, + "1": { + "trigger": "create:kinetic_block", + "conditions": { + "block": "create:mechanical_arm" + } + }, + "2": { + "trigger": "create:mechanical_arm" + } + }, + "requirements": [ + [ + "0" + ], + [ + "1" + ], + [ + "2" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/musical_arm.json b/src/generated/resources/data/create/advancements/musical_arm.json new file mode 100644 index 000000000..05b68bce2 --- /dev/null +++ b/src/generated/resources/data/create/advancements/musical_arm.json @@ -0,0 +1,46 @@ +{ + "parent": "create:mechanical_arm", + "display": { + "icon": { + "item": "minecraft:music_disc_13" + }, + "title": { + "translate": "advancement.create.musical_arm" + }, + "description": { + "translate": "advancement.create.musical_arm.desc" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "0": { + "trigger": "minecraft:placed_block", + "conditions": { + "block": "create:mechanical_arm" + } + }, + "1": { + "trigger": "create:kinetic_block", + "conditions": { + "block": "create:mechanical_arm" + } + }, + "2": { + "trigger": "create:musical_arm" + } + }, + "requirements": [ + [ + "0" + ], + [ + "1" + ], + [ + "2" + ] + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 564009be0..d8a8d0e7a 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -700,7 +700,11 @@ public class AllBlocks { public static final BlockEntry MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .forAllStates(s -> ConfiguredModel.builder() + .modelFile(AssetLookup.partialBaseModel(c, p)) + .rotationX(s.get(ArmBlock.CEILING) ? 180 : 0) + .build())) .transform(StressConfigDefaults.setImpact(8.0)) .item(ArmItem::new) .transform(customItemModel()) diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 71626ae70..bb5329f4d 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -135,6 +135,8 @@ public class AllShapes { .build(), MECHANICAL_ARM = shape(2, 0, 2, 14, 10, 14).add(3, 0, 3, 13, 14, 13) .build(), + MECHANICAL_ARM_CEILING = shape(2, 6, 2, 14, 16, 14).add(3, 2, 3, 13, 16, 13) + .build(), CHUTE = shape(1, 8, 1, 15, 16, 15).add(2, 0, 2, 14, 8, 14) .build(), TANK = shape(1, 0, 1, 15, 16, 15).build(), TANK_TOP = shape(TANK_TOP_LID).add(TANK) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index 76cf705ef..9d89b97d3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -118,10 +118,17 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { return super.write(compound); } + @Override + public void lazyTick() { + super.lazyTick(); + if (world.isRemote && running && !basinItemInv.isPresent()) + updateBasin(); + } + @Override public void tick() { super.tick(); - + if (runningTicks >= 40) { running = false; runningTicks = 0; @@ -156,6 +163,8 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { public void renderParticles() { IItemHandler itemHandler = basinItemInv.orElse(null); BasinInventory inv = (BasinInventory) itemHandler; + if (inv == null) + return; for (int slot = 0; slot < inv.getInputHandler() .getSlots(); slot++) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java index 8d62457ea..d7ae0d73b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/CombinedFluidHandler.java @@ -1,6 +1,11 @@ package com.simibubi.create.content.contraptions.fluids; -import net.minecraft.fluid.Fluid; +import java.util.Arrays; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import javax.annotation.Nonnull; + import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.util.math.MathHelper; @@ -8,11 +13,6 @@ import net.minecraftforge.common.util.NonNullConsumer; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; -import javax.annotation.Nonnull; -import java.util.Arrays; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - public class CombinedFluidHandler implements IFluidHandler { private final int capacity; private final FluidStack[] tanks; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index d8ed5b570..0e65b0f99 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -147,8 +147,8 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor return false; BlockState stateBelow = world.getBlockState(pos.down()); - if (AllBlocks.BRASS_FUNNEL.has(stateBelow)) { - if (stateBelow.get(BrassFunnelBlock.POWERED)) + if (stateBelow.getBlock() instanceof FunnelBlock) { + if (stateBelow.has(BrassFunnelBlock.POWERED) && stateBelow.get(BrassFunnelBlock.POWERED)) return false; if (stateBelow.get(BrassFunnelBlock.FACING) != Direction.UP) return false; @@ -187,9 +187,9 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor private boolean handleUpwardOutput(boolean simulate) { BlockState stateAbove = world.getBlockState(pos.up()); - if (AllBlocks.BRASS_FUNNEL.has(stateAbove)) { - if (!stateAbove.get(BrassFunnelBlock.POWERED) - && stateAbove.get(BrassFunnelBlock.FACING) == Direction.DOWN) { + if (stateAbove.getBlock() instanceof FunnelBlock) { + boolean powered = stateAbove.has(BrassFunnelBlock.POWERED) && stateAbove.get(BrassFunnelBlock.POWERED); + if (!powered && stateAbove.get(BrassFunnelBlock.FACING) == Direction.DOWN) { ItemStack remainder = FunnelBlock.tryInsert(world, pos.up(), item, simulate); if (remainder.isEmpty()) { if (!simulate) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java index 6a128adc6..87a3c1705 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/AndesiteFunnelBlock.java @@ -4,6 +4,8 @@ import com.simibubi.create.AllBlocks; import net.minecraft.block.BlockState; import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; public class AndesiteFunnelBlock extends FunnelBlock { @@ -12,14 +14,14 @@ public class AndesiteFunnelBlock extends FunnelBlock { } @Override - public BlockState getEquivalentBeltFunnel(BlockState state) { + public BlockState getEquivalentBeltFunnel(IBlockReader world, BlockPos pos, BlockState state) { Direction facing = state.get(FACING); return AllBlocks.ANDESITE_BELT_FUNNEL.getDefaultState() .with(BeltFunnelBlock.HORIZONTAL_FACING, facing); } - + @Override - public BlockState getEquivalentChuteFunnel(BlockState state) { + public BlockState getEquivalentChuteFunnel(IBlockReader world, BlockPos pos, BlockState state) { Direction facing = state.get(FACING); return AllBlocks.ANDESITE_CHUTE_FUNNEL.getDefaultState() .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java index 52cdc6e72..c0b721908 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelBlock.java @@ -23,7 +23,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; -import net.minecraft.world.ILightReader; import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; @@ -55,9 +54,12 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext ctx) { BlockState state = super.getStateForPlacement(ctx); - World world = ctx.getWorld(); - BlockPos posBelow = ctx.getPos() - .down(); + return getStateForPosition(ctx.getWorld(), ctx.getPos(), state, ctx.getFace()); + } + + public BlockState getStateForPosition(World world, BlockPos pos, BlockState defaultState, Direction facing) { + BlockState state = defaultState.with(HORIZONTAL_FACING, facing); + BlockPos posBelow = pos.down(); BlockState stateBelow = world.getBlockState(posBelow); if (!AllBlocks.BELT.has(stateBelow)) return state; @@ -68,8 +70,7 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { if (beltTileEntity.getSpeed() == 0) return state; Direction movementFacing = beltTileEntity.getMovementFacing(); - Direction funnelFacing = ctx.getFace(); - return state.with(PUSHING, movementFacing == funnelFacing); + return state.with(PUSHING, movementFacing == facing); } @Override @@ -107,7 +108,7 @@ public abstract class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { return true; } - public static BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { + public static BlockState updateShape(BlockState state, IBlockReader world, BlockPos pos) { state = state.with(SHAPE, Shape.RETRACTED); BlockState neighbour = world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING))); if (canConnectTo(state, neighbour)) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java index 42eb7bdd3..96d4bce9c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BrassFunnelBlock.java @@ -10,6 +10,7 @@ import net.minecraft.state.StateContainer.Builder; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; public class BrassFunnelBlock extends FunnelBlock { @@ -48,7 +49,7 @@ public class BrassFunnelBlock extends FunnelBlock { } @Override - public BlockState getEquivalentBeltFunnel(BlockState state) { + public BlockState getEquivalentBeltFunnel(IBlockReader world, BlockPos pos, BlockState state) { Direction facing = state.get(FACING); return AllBlocks.BRASS_BELT_FUNNEL.getDefaultState() .with(BeltFunnelBlock.HORIZONTAL_FACING, facing) @@ -56,7 +57,7 @@ public class BrassFunnelBlock extends FunnelBlock { } @Override - public BlockState getEquivalentChuteFunnel(BlockState state) { + public BlockState getEquivalentChuteFunnel(IBlockReader world, BlockPos pos, BlockState state) { Direction facing = state.get(FACING); return AllBlocks.BRASS_CHUTE_FUNNEL.getDefaultState() .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java index f9df8a5c0..aa414f12a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelBlock.java @@ -61,8 +61,8 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< BlockRayTraceResult hit) { ItemStack heldItem = player.getHeldItem(handIn); - boolean shouldntInsertItem = AllBlocks.MECHANICAL_ARM.isIn(heldItem); - + boolean shouldntInsertItem = AllBlocks.MECHANICAL_ARM.isIn(heldItem) || !canInsertIntoFunnel(state); + if (hit.getFace() == getFunnelFacing(state) && !shouldntInsertItem) { if (!worldIn.isRemote) withTileEntityDo(worldIn, pos, te -> { @@ -144,17 +144,17 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< if (facing.getAxis() .isHorizontal()) { if (direction == Direction.DOWN) { - BlockState equivalentFunnel = getEquivalentBeltFunnel(state); + BlockState equivalentFunnel = getEquivalentBeltFunnel(null, null, state); if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) - return equivalentFunnel; + return BeltFunnelBlock.updateShape(equivalentFunnel, world, pos); } if (direction == facing) { - BlockState equivalentFunnel = getEquivalentChuteFunnel(state); + BlockState equivalentFunnel = getEquivalentChuteFunnel(null, null, state); if (ChuteFunnelBlock.isOnValidChute(equivalentFunnel, world, pos)) return equivalentFunnel; } if (direction == facing.getOpposite()) { - BlockState equivalentFunnel = getEquivalentChuteFunnel(state); + BlockState equivalentFunnel = getEquivalentChuteFunnel(null, null, state); if (ChuteFunnelBlock.isOnValidChute(equivalentFunnel, world, pos)) return equivalentFunnel; } @@ -162,9 +162,9 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE< return state; } - public abstract BlockState getEquivalentChuteFunnel(BlockState state); + public abstract BlockState getEquivalentChuteFunnel(IBlockReader world, BlockPos pos, BlockState state); - public abstract BlockState getEquivalentBeltFunnel(BlockState state); + public abstract BlockState getEquivalentBeltFunnel(IBlockReader world, BlockPos pos, BlockState state); @Override public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java index adb57c068..9167aa479 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelItem.java @@ -29,6 +29,8 @@ public class FunnelItem extends BlockItem { @Override protected BlockState getStateForPlacement(BlockItemUseContext ctx) { + World world = ctx.getWorld(); + BlockPos pos = ctx.getPos(); BlockState state = super.getStateForPlacement(ctx); if (state == null) return state; @@ -40,9 +42,9 @@ public class FunnelItem extends BlockItem { return state; FunnelBlock block = (FunnelBlock) getBlock(); - Block beltFunnelBlock = block.getEquivalentBeltFunnel(state) + Block beltFunnelBlock = block.getEquivalentBeltFunnel(world, pos, state) .getBlock(); - Block chuteFunnelBlock = block.getEquivalentChuteFunnel(state) + Block chuteFunnelBlock = block.getEquivalentChuteFunnel(world, pos, state) .getBlock(); BlockState equivalentBeltFunnel = beltFunnelBlock.getStateForPlacement(ctx) @@ -52,8 +54,6 @@ public class FunnelItem extends BlockItem { BlockState reversedChuteFunnel = equivalentChuteFunnel.rotate(Rotation.CLOCKWISE_180) .cycle(ChuteFunnelBlock.PUSHING); - World world = ctx.getWorld(); - BlockPos pos = ctx.getPos(); if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, world, pos)) return BeltFunnelBlock.updateShape(equivalentBeltFunnel, world, pos); if (ChuteFunnelBlock.isOnValidChute(equivalentChuteFunnel, world, pos)) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java index 522f94db9..007898fe3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java @@ -34,6 +34,7 @@ public class FunnelTileEntity extends SmartTileEntity { private FilteringBehaviour filtering; private InsertingBehaviour inserting; private ExtractingBehaviour extracting; + private DirectBeltInputBehaviour beltInputBehaviour; int sendFlap; InterpolatedChasingValue flap; @@ -183,6 +184,15 @@ public class FunnelTileEntity extends SmartTileEntity { filtering.onlyActiveWhen(this::supportsFiltering); behaviours.add(filtering); + beltInputBehaviour = new DirectBeltInputBehaviour(this).onlyInsertWhen(this::supportsDirectBeltInput) + .setInsertionHandler(this::handleDirectBeltInput); + behaviours.add(beltInputBehaviour); + } + + private boolean supportsDirectBeltInput(Direction side) { + BlockState blockState = getBlockState(); + return blockState != null && blockState.getBlock() instanceof FunnelBlock + && blockState.get(FunnelBlock.FACING) == Direction.UP; } private boolean supportsFiltering() { @@ -190,6 +200,15 @@ public class FunnelTileEntity extends SmartTileEntity { return blockState != null && blockState.has(BlockStateProperties.POWERED); } + private ItemStack handleDirectBeltInput(TransportedItemStack stack, Direction side, boolean simulate) { + ItemStack inserted = stack.stack; + if (!filtering.test(inserted)) + return inserted; + if (determineCurrentMode() == Mode.PAUSED) + return inserted; + return inserting.insert(inserted, simulate); + } + public void flap(boolean inward) { sendFlap = inward ? 1 : -1; sendData(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java index 276a04ee5..3216e1d8a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/HorizontalInteractionFunnelBlock.java @@ -86,9 +86,12 @@ public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock i @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, BlockPos pos, BlockPos p_196271_6_) { - if (!canStillInteract(state, world, pos)) - return parent.getDefaultState() - .with(FunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + if (!canStillInteract(state, world, pos)) { + BlockState parentState = parent.getDefaultState(); + if (state.has(POWERED) && state.get(POWERED)) + parentState = parentState.with(POWERED, true); + return parentState.with(FunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + } return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateInventory.java b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateInventory.java index ec1b4efca..e8da1b86d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateInventory.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/inventories/CreativeCrateInventory.java @@ -35,7 +35,7 @@ public class CreativeCrateInventory implements IItemHandler { public ItemStack extractItem(int slot, int amount, boolean simulate) { ItemStack filter = te.filter.getFilter().copy(); if (!filter.isEmpty()) - filter.setCount(amount); + filter.setCount(Math.min(filter.getMaxStackSize(), amount)); return filter; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java index fd1b94216..696b987f0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmAngleTarget.java @@ -12,7 +12,7 @@ import net.minecraft.util.math.Vec3d; public class ArmAngleTarget { static ArmAngleTarget NO_TARGET = new ArmAngleTarget(); - + float baseAngle; float lowerArmAngle; float upperArmAngle; @@ -24,10 +24,13 @@ public class ArmAngleTarget { headAngle = -15; } - public ArmAngleTarget(BlockPos armPos, Vec3d pointTarget, Direction clawFacing) { + public ArmAngleTarget(BlockPos armPos, Vec3d pointTarget, Direction clawFacing, boolean ceiling) { +// if (ceiling) +// clawFacing = clawFacing.getOpposite(); + Vec3d target = pointTarget; Vec3d origin = VecHelper.getCenterOf(armPos) - .add(0, 4 / 16f, 0); + .add(0, ceiling ? -4 / 16f : 4 / 16f, 0); Vec3d clawTarget = target; target = target.add(new Vec3d(clawFacing.getOpposite() .getDirectionVec()).scale(.5f)); @@ -37,6 +40,11 @@ public class ArmAngleTarget { .length(); float baseAngle = AngleHelper.deg(MathHelper.atan2(diff.x, diff.z)) + 180; + if (ceiling) { + diff = diff.mul(1, -1, 1); + baseAngle = 180 - baseAngle; + } + float alphaOffset = AngleHelper.deg(MathHelper.atan2(diff.y, horizontalDistance)); float a = 18 / 16f; // lower arm length @@ -61,8 +69,13 @@ public class ArmAngleTarget { headPos = VecHelper.rotate(headPos.add(0, b, 0), beta + 180, Axis.X); headPos = VecHelper.rotate(headPos.add(0, a, 0), alpha - 90, Axis.X); headPos = VecHelper.rotate(headPos, baseAngle, Axis.Y); + headPos = VecHelper.rotate(headPos, ceiling ? 180 : 0, Axis.X); headPos = headPos.add(origin); Vec3d headDiff = clawTarget.subtract(headPos); + + if (ceiling) + headDiff = headDiff.mul(1, -1, 1); + float horizontalHeadDistance = (float) headDiff.mul(1, 0, 1) .length(); float headAngle = diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java index e5f1518d5..7265722c8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmBlock.java @@ -1,17 +1,24 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; +import org.apache.commons.lang3.mutable.MutableBoolean; + import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.KineticBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; import com.simibubi.create.foundation.block.ITE; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.InventoryHelper; +import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemStack; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; @@ -24,8 +31,21 @@ import net.minecraft.world.World; public class ArmBlock extends KineticBlock implements ITE { + public static final BooleanProperty CEILING = BooleanProperty.create("ceiling"); + public ArmBlock(Properties properties) { super(properties); + setDefaultState(getDefaultState().with(CEILING, false)); + } + + @Override + protected void fillStateContainer(Builder p_206840_1_) { + super.fillStateContainer(p_206840_1_.add(CEILING)); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + return getDefaultState().with(CEILING, ctx.getFace() == Direction.DOWN); } @Override @@ -34,9 +54,9 @@ public class ArmBlock extends KineticBlock implements ITE { } @Override - public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, + public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { - return AllShapes.MECHANICAL_ARM; + return state.get(CEILING) ? AllShapes.MECHANICAL_ARM_CEILING : AllShapes.MECHANICAL_ARM; } @Override @@ -70,18 +90,21 @@ public class ArmBlock extends KineticBlock implements ITE { @Override public ActionResultType onUse(BlockState p_225533_1_, World world, BlockPos pos, PlayerEntity player, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - if (world.isRemote) - return ActionResultType.SUCCESS; + MutableBoolean success = new MutableBoolean(false); withTileEntityDo(world, pos, te -> { if (te.heldItem.isEmpty()) return; + success.setTrue(); + if (world.isRemote) + return; player.inventory.placeItemBackInInventory(world, te.heldItem); te.heldItem = ItemStack.EMPTY; te.phase = Phase.SEARCH_INPUTS; te.markDirty(); te.sendData(); }); - return ActionResultType.SUCCESS; + + return success.booleanValue() ? ActionResultType.SUCCESS : ActionResultType.PASS; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java index 980057350..7923b5adf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java @@ -1,12 +1,17 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; +import java.util.function.Supplier; + import javax.annotation.Nullable; +import com.google.common.collect.ImmutableMap; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.saw.SawBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; +import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InsertingBehaviour; @@ -14,9 +19,14 @@ import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.block.BlockState; +import net.minecraft.block.JukeboxBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.NBTUtil; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.JukeboxTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; @@ -43,6 +53,19 @@ public abstract class ArmInteractionPoint { private LazyOptional cachedHandler; private ArmAngleTarget cachedAngles; + private static ImmutableMap> POINTS = + ImmutableMap.>builder() + .put(new Belt(), Belt::new) + .put(new Depot(), Depot::new) + .put(new Saw(), Saw::new) + .put(new Chute(), Chute::new) + .put(new Jukebox(), Jukebox::new) + .put(new Basin(), Basin::new) + .put(new Millstone(), Millstone::new) + .put(new Funnel(), Funnel::new) + .put(new CrushingWheels(), CrushingWheels::new) + .build(); + public ArmInteractionPoint() { cachedHandler = LazyOptional.empty(); } @@ -66,16 +89,19 @@ public abstract class ArmInteractionPoint { return Direction.DOWN; } - abstract boolean isValid(BlockState state); + abstract boolean isValid(IBlockReader reader, BlockPos pos, BlockState state); - static boolean isInteractable(BlockState state) { - return AllBlocks.DEPOT.has(state) || AllBlocks.BELT.has(state) || AllBlocks.CHUTE.has(state) - || state.getBlock() instanceof FunnelBlock; + static boolean isInteractable(IBlockReader reader, BlockPos pos, BlockState state) { + for (ArmInteractionPoint armInteractionPoint : POINTS.keySet()) + if (armInteractionPoint.isValid(reader, pos, state)) + return true; + return false; } - ArmAngleTarget getTargetAngles(BlockPos armPos) { + ArmAngleTarget getTargetAngles(BlockPos armPos, boolean ceiling) { if (cachedAngles == null) - cachedAngles = new ArmAngleTarget(armPos, getInteractionPositionVector(), getInteractionDirection()); + cachedAngles = + new ArmAngleTarget(armPos, getInteractionPositionVector(), getInteractionDirection(), ceiling); return cachedAngles; } @@ -120,15 +146,10 @@ public abstract class ArmInteractionPoint { BlockState state = world.getBlockState(pos); ArmInteractionPoint point = null; - if (AllBlocks.DEPOT.has(state)) - point = new Depot(); - if (AllBlocks.BELT.has(state) && !(world.getBlockState(pos.up()) - .getBlock() instanceof BeltTunnelBlock)) - point = new Belt(); - if (AllBlocks.CHUTE.has(state)) - point = new Chute(); - if (state.getBlock() instanceof FunnelBlock) - point = new Funnel(); + for (ArmInteractionPoint armInteractionPoint : POINTS.keySet()) + if (armInteractionPoint.isValid(world, pos, state)) + point = POINTS.get(armInteractionPoint) + .get(); if (point != null) { point.state = state; @@ -155,6 +176,15 @@ public abstract class ArmInteractionPoint { return interactionPoint; } + static abstract class TopFaceArmInteractionPoint extends ArmInteractionPoint { + + @Override + Vec3d getInteractionPositionVector() { + return new Vec3d(pos).add(.5f, 1, .5f); + } + + } + static class Depot extends ArmInteractionPoint { @Override @@ -163,29 +193,117 @@ public abstract class ArmInteractionPoint { } @Override - boolean isValid(BlockState state) { + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { return AllBlocks.DEPOT.has(state); } } + static class Saw extends Depot { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.MECHANICAL_SAW.has(state) && state.get(SawBlock.RUNNING) + && state.get(SawBlock.FACING) == Direction.UP; + } + + } + + static class Millstone extends ArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.MILLSTONE.has(state); + } + + } + + static class CrushingWheels extends TopFaceArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(state); + } + + } + + static class Basin extends ArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.BASIN.has(state); + } + + } + + static class Jukebox extends TopFaceArmInteractionPoint { + + @Override + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return state.getBlock() instanceof JukeboxBlock; + } + + @Override + int getSlotCount(World world) { + return 1; + } + + @Override + ItemStack insert(World world, ItemStack stack, boolean simulate) { + TileEntity tileEntity = world.getTileEntity(pos); + if (!(tileEntity instanceof JukeboxTileEntity)) + return stack; + if (!(state.getBlock() instanceof JukeboxBlock)) + return stack; + JukeboxBlock jukeboxBlock = (JukeboxBlock) state.getBlock(); + JukeboxTileEntity jukeboxTE = (JukeboxTileEntity) tileEntity; + if (!jukeboxTE.getRecord() + .isEmpty()) + return stack; + ItemStack remainder = stack.copy(); + ItemStack toInsert = remainder.split(1); + if (!simulate && !world.isRemote) { + jukeboxBlock.insertRecord(world, pos, state, toInsert); + world.playEvent((PlayerEntity) null, 1010, pos, Item.getIdFromItem(toInsert.getItem())); + AllTriggers.triggerForNearbyPlayers(AllTriggers.MUSICAL_ARM, world, pos, 10); + } + return remainder; + } + + @Override + ItemStack extract(World world, int slot, int amount, boolean simulate) { + TileEntity tileEntity = world.getTileEntity(pos); + if (!(tileEntity instanceof JukeboxTileEntity)) + return ItemStack.EMPTY; + if (!(state.getBlock() instanceof JukeboxBlock)) + return ItemStack.EMPTY; + JukeboxTileEntity jukeboxTE = (JukeboxTileEntity) tileEntity; + ItemStack itemstack = jukeboxTE.getRecord(); + if (itemstack.isEmpty()) + return ItemStack.EMPTY; + if (!simulate && !world.isRemote) { + world.playEvent(1010, pos, 0); + jukeboxTE.clear(); + world.setBlockState(pos, state.with(JukeboxBlock.HAS_RECORD, false), 2); + } + return itemstack; + } + + } + static class Belt extends Depot { @Override - boolean isValid(BlockState state) { - return AllBlocks.BELT.has(state); + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { + return AllBlocks.BELT.has(state) && !(reader.getBlockState(pos.up()) + .getBlock() instanceof BeltTunnelBlock); } } - static class Chute extends ArmInteractionPoint { + static class Chute extends TopFaceArmInteractionPoint { @Override - Vec3d getInteractionPositionVector() { - return new Vec3d(pos).add(.5f, 1, .5f); - } - - @Override - boolean isValid(BlockState state) { + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { return AllBlocks.CHUTE.has(state); } } @@ -219,6 +337,9 @@ public abstract class ArmInteractionPoint { ItemStack insert(World world, ItemStack stack, boolean simulate) { FilteringBehaviour filtering = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); InsertingBehaviour inserter = TileEntityBehaviour.get(world, pos, InsertingBehaviour.TYPE); + BlockState state = world.getBlockState(pos); + if (state.has(BlockStateProperties.POWERED) && state.get(BlockStateProperties.POWERED)) + return stack; if (inserter == null) return stack; if (filtering != null && !filtering.test(stack)) @@ -227,7 +348,7 @@ public abstract class ArmInteractionPoint { } @Override - boolean isValid(BlockState state) { + boolean isValid(IBlockReader reader, BlockPos pos, BlockState state) { return state.getBlock() instanceof FunnelBlock; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java index 12f61cf53..7a5a181cc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPointHandler.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.logistics.block.mechanicalArm; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; +import java.util.List; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; @@ -30,7 +30,7 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @EventBusSubscriber(value = Dist.CLIENT) public class ArmInteractionPointHandler { - static Map currentSelection = new HashMap<>(); + static List currentSelection = new ArrayList<>(); static ItemStack currentItem; static long lastBlockPos = -1; @@ -44,15 +44,17 @@ public class ArmInteractionPointHandler { if (!world.isRemote) return; - if (!currentSelection.containsKey(pos)) { + ArmInteractionPoint selected = getSelected(pos); + + if (selected == null) { ArmInteractionPoint point = ArmInteractionPoint.createAt(world, pos); if (point == null) return; - currentSelection.put(pos, point); + selected = point; + put(point); } - currentSelection.get(pos) - .cycleMode(); + selected.cycleMode(); event.setCanceled(true); event.setCancellationResult(ActionResultType.SUCCESS); } @@ -64,7 +66,7 @@ public class ArmInteractionPointHandler { if (!event.getWorld().isRemote) return; BlockPos pos = event.getPos(); - if (currentSelection.remove(pos) != null) { + if (remove(pos) != null) { event.setCanceled(true); event.setCancellationResult(ActionResultType.SUCCESS); } @@ -73,7 +75,7 @@ public class ArmInteractionPointHandler { public static void flushSettings(BlockPos pos) { if (currentItem == null) return; - AllPackets.channel.sendToServer(new ArmPlacementPacket(currentSelection.values(), pos)); + AllPackets.channel.sendToServer(new ArmPlacementPacket(currentSelection, pos)); currentSelection.clear(); currentItem = null; } @@ -100,7 +102,7 @@ public class ArmInteractionPointHandler { } private static void checkForWrench(ItemStack heldItem) { - if(!AllItems.WRENCH.isIn(heldItem)) { + if (!AllItems.WRENCH.isIn(heldItem)) { return; } @@ -122,8 +124,8 @@ public class ArmInteractionPointHandler { if (lastBlockPos == -1 || lastBlockPos != pos.toLong()) { currentSelection.clear(); ArmTileEntity arm = (ArmTileEntity) te; - arm.inputs.forEach(point -> currentSelection.put(point.pos, point)); - arm.outputs.forEach(point -> currentSelection.put(point.pos, point)); + arm.inputs.forEach(ArmInteractionPointHandler::put); + arm.outputs.forEach(ArmInteractionPointHandler::put); lastBlockPos = pos.toLong(); } @@ -132,16 +134,14 @@ public class ArmInteractionPointHandler { } } - private static void drawOutlines(Map selection) { + private static void drawOutlines(Collection selection) { World world = Minecraft.getInstance().world; - for (Iterator> iterator = selection.entrySet() - .iterator(); iterator.hasNext();) { - Entry entry = iterator.next(); - BlockPos pos = entry.getKey(); + for (Iterator iterator = selection.iterator(); iterator.hasNext();) { + ArmInteractionPoint point = iterator.next(); + BlockPos pos = point.pos; BlockState state = world.getBlockState(pos); - ArmInteractionPoint point = entry.getValue(); - if (!point.isValid(state)) { + if (!point.isValid(world, pos, state)) { iterator.remove(); continue; } @@ -158,4 +158,23 @@ public class ArmInteractionPointHandler { } } + private static void put(ArmInteractionPoint point) { + currentSelection.add(point); + } + + private static ArmInteractionPoint remove(BlockPos pos) { + ArmInteractionPoint result = getSelected(pos); + if (result != null) + currentSelection.remove(result); + return result; + } + + private static ArmInteractionPoint getSelected(BlockPos pos) { + for (ArmInteractionPoint point : currentSelection) { + if (point.pos.equals(pos)) + return point; + } + return null; + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java index a459fea8c..eff83fadb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmItem.java @@ -22,8 +22,9 @@ public class ArmItem extends BlockItem { @Override public ActionResultType onItemUse(ItemUseContext ctx) { - if (ArmInteractionPoint.isInteractable(ctx.getWorld() - .getBlockState(ctx.getPos()))) + World world = ctx.getWorld(); + BlockPos pos = ctx.getPos(); + if (ArmInteractionPoint.isInteractable(world, pos, world.getBlockState(pos))) return ActionResultType.SUCCESS; return super.onItemUse(ctx); } @@ -37,9 +38,9 @@ public class ArmItem extends BlockItem { } @Override - public boolean canPlayerBreakBlockWhileHolding(BlockState state, World p_195938_2_, BlockPos p_195938_3_, + public boolean canPlayerBreakBlockWhileHolding(BlockState state, World world, BlockPos pos, PlayerEntity p_195938_4_) { - return !ArmInteractionPoint.isInteractable(state); + return !ArmInteractionPoint.isInteractable(world, pos, state); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java index c7e03a2cf..ba13e7bff 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java @@ -5,6 +5,9 @@ import com.mojang.blaze3d.vertex.IVertexBuilder; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.ColorHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.MatrixStacker; import com.simibubi.create.foundation.utility.SuperByteBuffer; @@ -18,6 +21,7 @@ import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; +import net.minecraft.util.math.MathHelper; public class ArmRenderer extends KineticTileEntityRenderer { @@ -35,6 +39,21 @@ public class ArmRenderer extends KineticTileEntityRenderer { MatrixStacker msr = MatrixStacker.of(ms); int color = 0xFFFFFF; + float baseAngle = arm.baseAngle.get(pt); + float lowerArmAngle = arm.lowerArmAngle.get(pt) - 135; + float upperArmAngle = arm.upperArmAngle.get(pt) - 90; + float headAngle = arm.headAngle.get(pt); + + boolean rave = te instanceof ArmTileEntity && ((ArmTileEntity) te).phase == Phase.DANCING; + float renderTick = AnimationTickHolder.getRenderTick() + (te.hashCode() % 64); + if (rave) { + baseAngle = (renderTick * 10) % 360; + lowerArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 4) + 1) / 2, -45, 15); + upperArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 8) + 1) / 4, -45, 95); + headAngle = -lowerArmAngle; + color = ColorHelper.rainbowColor(AnimationTickHolder.ticks * 100); + } + ms.push(); SuperByteBuffer base = AllBlockPartials.ARM_BASE.renderOn(blockState).light(light); @@ -45,24 +64,27 @@ public class ArmRenderer extends KineticTileEntityRenderer { SuperByteBuffer clawGrip = AllBlockPartials.ARM_CLAW_GRIP.renderOn(blockState).light(light); msr.centre(); + + if (blockState.get(ArmBlock.CEILING)) + msr.rotateX(180); ms.translate(0, 4 / 16d, 0); - msr.rotateY(arm.baseAngle.get(pt)); + msr.rotateY(baseAngle); base.renderInto(ms, builder); ms.translate(0, 1 / 16d, -2 / 16d); - msr.rotateX(arm.lowerArmAngle.get(pt) - 135); + msr.rotateX(lowerArmAngle); ms.translate(0, -1 / 16d, 0); lowerBody.color(color) .renderInto(ms, builder); ms.translate(0, 12 / 16d, 12 / 16d); - msr.rotateX(arm.upperArmAngle.get(pt) - 90); + msr.rotateX(upperArmAngle); upperBody.color(color) .renderInto(ms, builder); ms.translate(0, 11 / 16d, -11 / 16d); - msr.rotateX(arm.headAngle.get(pt)); + msr.rotateX(headAngle); head.renderInto(ms, builder); ms.translate(0, 0, -4 / 16d); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index 849406f4f..77be7ffc7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -6,11 +6,15 @@ import java.util.List; import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPoint.Jukebox; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPoint.Mode; +import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.gui.widgets.InterpolatedAngle; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.block.BlockState; +import net.minecraft.block.JukeboxBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.INBT; @@ -43,7 +47,7 @@ public class ArmTileEntity extends KineticTileEntity { boolean updateInteractionPoints; enum Phase { - SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, IDLE + SEARCH_INPUTS, MOVE_TO_INPUT, SEARCH_OUTPUTS, MOVE_TO_OUTPUT, DANCING } public ArmTileEntity(TileEntityType typeIn) { @@ -86,12 +90,34 @@ public class ArmTileEntity extends KineticTileEntity { return; if (chasedPointProgress < .5f) return; - if (phase == Phase.SEARCH_INPUTS) + if (phase == Phase.SEARCH_INPUTS || phase == Phase.DANCING) { + checkForMusic(); searchForItem(); + } if (phase == Phase.SEARCH_OUTPUTS) searchForDestination(); } + private void checkForMusic() { + boolean hasMusic = checkForMusicAmong(inputs) || checkForMusicAmong(outputs); + if (hasMusic != (phase == Phase.DANCING)) { + phase = hasMusic ? Phase.DANCING : Phase.SEARCH_INPUTS; + markDirty(); + sendData(); + } + } + + private boolean checkForMusicAmong(List list) { + for (ArmInteractionPoint armInteractionPoint : list) { + if (!(armInteractionPoint instanceof Jukebox)) + continue; + BlockState state = world.getBlockState(armInteractionPoint.pos); + if (state.has(JukeboxBlock.HAS_RECORD) && state.get(JukeboxBlock.HAS_RECORD)) + return true; + } + return false; + } + private void tickMovementProgress() { chasedPointProgress += Math.min(256, Math.abs(getSpeed())) / 1024f; if (chasedPointProgress > 1) @@ -101,8 +127,8 @@ public class ArmTileEntity extends KineticTileEntity { ArmInteractionPoint targetedInteractionPoint = getTargetedInteractionPoint(); ArmAngleTarget previousTarget = this.previousTarget; - ArmAngleTarget target = - targetedInteractionPoint == null ? ArmAngleTarget.NO_TARGET : targetedInteractionPoint.getTargetAngles(pos); + ArmAngleTarget target = targetedInteractionPoint == null ? ArmAngleTarget.NO_TARGET + : targetedInteractionPoint.getTargetAngles(pos, isOnCeiling()); baseAngle.set(AngleHelper.angleLerp(chasedPointProgress, previousBaseAngle, target == ArmAngleTarget.NO_TARGET ? previousBaseAngle : target.baseAngle)); @@ -116,7 +142,13 @@ public class ArmTileEntity extends KineticTileEntity { lowerArmAngle.set(MathHelper.lerp(progress, previousTarget.lowerArmAngle, target.lowerArmAngle)); upperArmAngle.set(MathHelper.lerp(progress, previousTarget.upperArmAngle, target.upperArmAngle)); - headAngle.set(AngleHelper.angleLerp(progress, previousTarget.headAngle, target.headAngle)); + + headAngle.set(AngleHelper.angleLerp(progress, previousTarget.headAngle % 360, target.headAngle % 360)); + } + + protected boolean isOnCeiling() { + BlockState state = getBlockState(); + return hasWorld() && state != null && state.has(ArmBlock.CEILING) && state.get(ArmBlock.CEILING); } @Nullable @@ -182,6 +214,9 @@ public class ArmTileEntity extends KineticTileEntity { chasedPointIndex = -1; sendData(); markDirty(); + + if (!world.isRemote) + AllTriggers.triggerForNearbyPlayers(AllTriggers.MECHANICAL_ARM, world, pos, 10); } protected void collectItem() { @@ -277,9 +312,9 @@ public class ArmTileEntity extends KineticTileEntity { int previousIndex = chasedPointIndex; Phase previousPhase = phase; ListNBT interactionPointTagBefore = interactionPointTag; - super.readClientUpdate(tag); + boolean ceiling = isOnCeiling(); if (interactionPointTagBefore == null || interactionPointTagBefore.size() != interactionPointTag.size()) updateInteractionPoints = true; if (previousIndex != chasedPointIndex || (previousPhase != phase)) { @@ -288,9 +323,10 @@ public class ArmTileEntity extends KineticTileEntity { previousPoint = inputs.get(previousIndex); if (previousPhase == Phase.MOVE_TO_OUTPUT && previousIndex < outputs.size()) previousPoint = outputs.get(previousIndex); - previousTarget = previousPoint == null ? ArmAngleTarget.NO_TARGET : previousPoint.getTargetAngles(pos); + previousTarget = + previousPoint == null ? ArmAngleTarget.NO_TARGET : previousPoint.getTargetAngles(pos, ceiling); if (previousPoint != null) - previousBaseAngle = previousPoint.getTargetAngles(pos).baseAngle; + previousBaseAngle = previousPoint.getTargetAngles(pos, ceiling).baseAngle; } } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index 8652270a3..87f2f5c3a 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -80,9 +80,9 @@ public class AllAdvancements implements IDataProvider { andesiteExpertLane(t, andesite_casing); - Advancement drill = - kinecticAdvancement("mechanical_drill", AllBlocks.MECHANICAL_DRILL.get(), TaskType.NORMAL).withParent(andesite_casing) - .register(t, id + ":mechanical_drill"); + Advancement drill = kinecticAdvancement("mechanical_drill", AllBlocks.MECHANICAL_DRILL.get(), TaskType.NORMAL) + .withParent(andesite_casing) + .register(t, id + ":mechanical_drill"); Advancement press = advancement("press", AllBlocks.MECHANICAL_PRESS.get(), TaskType.MILESTONE).withParent(andesite_casing) @@ -98,8 +98,9 @@ public class AllAdvancements implements IDataProvider { itemAdvancement("electron_tube", AllItems.ELECTRON_TUBE, TaskType.NORMAL).withParent(rose_quartz) .register(t, id + ":electron_tube"); - Advancement saw = kinecticAdvancement("mechanical_saw", AllBlocks.MECHANICAL_SAW.get(), TaskType.NORMAL).withParent(press) - .register(t, id + ":mechanical_saw"); + Advancement saw = + kinecticAdvancement("mechanical_saw", AllBlocks.MECHANICAL_SAW.get(), TaskType.NORMAL).withParent(press) + .register(t, id + ":mechanical_saw"); Advancement basin = advancement("basin", AllBlocks.BASIN.get(), TaskType.NORMAL).withParent(press) .withCriterion("0", placeBlock(AllBlocks.BASIN.get())) @@ -196,6 +197,20 @@ public class AllAdvancements implements IDataProvider { .withCriterion("0", AllTriggers.GIGA_EXTENDO.instance()) .register(t, id + ":dual_extendo_grip"); + Advancement mechanical_arm = advancement("mechanical_arm", AllBlocks.MECHANICAL_ARM.get(), TaskType.GOAL) + .withCriterion("0", placeBlock(AllBlocks.MECHANICAL_ARM.get())) + .withCriterion("1", isPowered(AllBlocks.MECHANICAL_ARM.get())) + .withCriterion("2", AllTriggers.MECHANICAL_ARM.instance()) + .withParent(brass_casing) + .register(t, id + ":mechanical_arm"); + + Advancement musical_arm = advancement("musical_arm", Items.MUSIC_DISC_13, TaskType.MILESTONE) + .withCriterion("0", placeBlock(AllBlocks.MECHANICAL_ARM.get())) + .withCriterion("1", isPowered(AllBlocks.MECHANICAL_ARM.get())) + .withCriterion("2", AllTriggers.MUSICAL_ARM.instance()) + .withParent(mechanical_arm) + .register(t, id + ":musical_arm"); + Advancement deployer = kinecticAdvancement("deployer", AllBlocks.DEPLOYER.get(), TaskType.GOAL).withParent(brass_casing) .register(t, id + ":deployer"); diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java b/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java index 34599e5fa..fe199f622 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java @@ -33,6 +33,8 @@ public class AllTriggers { UPGRADED_ZAPPER = simple("upgraded_zapper"), EXTENDO = simple("extendo"), GIGA_EXTENDO = simple("giga_extendo"), + MECHANICAL_ARM = simple("mechanical_arm"), + MUSICAL_ARM = simple("musical_arm"), MIXER_MIX = simple("mixer"); private static SimpleTrigger simple(String id) { diff --git a/src/main/resources/assets/create/lang/default/advancements.json b/src/main/resources/assets/create/lang/default/advancements.json index fe016827a..9efbca048 100644 --- a/src/main/resources/assets/create/lang/default/advancements.json +++ b/src/main/resources/assets/create/lang/default/advancements.json @@ -61,6 +61,10 @@ "advancement.create.crafter.desc": "Place and power some Mechanical Crafters", "advancement.create.deployer": "Poke, Place, and Attack", "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself.", + "advancement.create.mechanical_arm": "Mechanical Grab'n'Drop", + "advancement.create.mechanical_arm.desc": "Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch it do all the work for you.", + "advancement.create.musical_arm": "Play me my Theme Tune!", + "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox.", "advancement.create.fist_bump": "Pound It, Bro!", "advancement.create.fist_bump.desc": "Make two Deployers fist-bump.", "advancement.create.crushing_wheel": "A Pair of Giants", diff --git a/src/main/resources/assets/create/models/block/funnel/block.json b/src/main/resources/assets/create/models/block/funnel/block.json index 5ec5f5d4d..c9dab296d 100644 --- a/src/main/resources/assets/create/models/block/funnel/block.json +++ b/src/main/resources/assets/create/models/block/funnel/block.json @@ -121,8 +121,8 @@ }, { "name": "Back", - "from": [3, -2, 3], - "to": [13, 2, 13], + "from": [3.1, -1.9, 3.1], + "to": [12.9, 2, 12.9], "faces": { "north": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, "east": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png b/src/main/resources/assets/create/textures/block/andesite_funnel_back.png index bc3c352edbe68de83130676763ea8879a540d606..0cf5404047e77f8a0de822507dd252147793793e 100644 GIT binary patch delta 925 zcmV;O17iHr2iOOYNq@os01mX6Ma(=grRSD$DniddTmk!-;uvqt$AW*XuRBK7Wb!K2_>1QFj`{EpGiw zT2T?mgUBGz2|T+UI23V+=P}UchCL3bu}FY4-@JGz7vSWBtzwK)iKtjL3hF?P;l6Sm za2!y-*Ak*K4stB&5H$?+k>gau{xkjyQ013nRQTnxzhuLZ`>XadIxgdmbEz%Bq+CWp zj=7Y8QPM6W$A78AZZ9{MqMEs%i@_t|4+DKT4yanGMzQ9;C7qleCm&#t^kI=wYDSb_ zIgJ!WvBYp+xlW{rxTJC*JeBWdw{+T{VKCfg{0-nSzH0sJm>C>*RrIYk&P1D{>$<3n z3s!v@l+{1YqJ!x_>N&F`G)# zwd)DWWpY$1l_(O4SS$;go5)%+@?pC$P=Jb;Dw9qNr&gDEE3~%1-yqP!O*_mBo;a*0MhJtV~b`{)cwOSAi27e8&PrAJaHMPa+PGh*m zt$dLL5d&!u9t?B>pWO%_usDpTF|f@IdmJLXd3sCVRFcf`N-iP8_ePr4ao|zMp}4iR zH9@2S{J_V08HevH8up*@KLOG0Z65~4@?})`{-XVi`o-@!=h_0Cl!_Plm~$oIMRp!O zP8@c7xq%l7?SJQdos`BjwRc2cp#P+z{D zODHTZBkVI@q#X7zK@g0ZKZK=M zOL`)ifWq$rghC;s8DLPGs;Z_RFR%Aj(FUz~3UXb8_kW-FEt!nEFk$)KvVJEw4~bX; zl&Zq46Zjn2*xZKV`U>pSk`NAu0S>>x-T5n)gjPREBT2&)c=qHGY;OI4hT1fm0m7jP zqXuv!m*GM(#p>9nP>^7EXBRr14#Z+HD3wZZJt|ug`nY}MngA&zEWTJYwK`EMM(yn0 z#;0P;R)0>a%y!!ys8*{i0knZYK<_0aP(lx~+DMA91aRWK)IS!(n8{|~(&aQ1^F^ps zDiDvyEtV3R9V=KA`LIPfRihpqe1m(jO@TFWXv&r!kn0seTMAn`V zTX_%ckE$HXDr}UZ@UuPB+eVc=LoD9{oZJaYf@geu+_d(D2=uYo6(K}C?}(;p%(`Lk zW1o~y2$dj<;KT?iLWqjoKihu;J|VtP8(FF&BJQhKNHs6m6(M~65BO1yR?e>;@s$86 zK!0DmLAKfK->OcQFcZKxbQshJ6`-wivfXZ%C4zR4Pq2%Kn4X?CYG+BMQWp8}aw70_ z*nPTJ5WFF4wVL5s{}W6F=;Ck#lf@)(l~d}jIdNJnIQp1~-Jfdh86z4A%w)67LGX+Y tDg=HDh`I0)%m$?1&DLM7S04c2518gVB@i*Md)fd1002ovPDHLkV1fumwHW{a diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png index dd858ec5ec5d29ed81260db619549e91e56ad2e2..2d24fe7312f14926632abab5da6cb63998282328 100644 GIT binary patch delta 1376 zcmV-m1)uu+3YZI!Nq@lr01m+cxRGn^000FoNklB?8Ao1EtEe}ZWM3MRjirN=Y`wI$@;DJg7#1^G$X$dJ!5pf$r zHZO6m<1Cl?j_luMcS_0w6eDB zerW|1I8YPxWP16;08X7$-j4pjV4f9%_XC(G?Sq1MjEV{`00Pkl-G4rqC%azd&=a5y z`eFZrV1akQX(0%wmx9wC9?5epVaW5`FqG0M0-zN3hJPTOUZMa16Ji>f2Z$4HZEbPC z69hmhoDG7;j^x<>x*{S}<^kK=+iZfMn-@BPapv3^2j1@wIXO8L`1S4`8q5xIl+4Y| z(#+i%ip64-NF*qm&oVpyRNii^U3%xc0I3%Ojh(onb*aS+x)WmFgSkIw`j=_m018aJ zJVCF#^nW6y6Y8F*mbl&v`ggRaZ~sOn_Y|5@@Wk7N5tu}e0$^%t%JaU{@1AzB>Fs;> zUB!z$t}_bL!N-6ZyGX06RqF0e@V)`iA}5A06n(MyfIe?8V4V~J*1&X<>al^RS5htvz`C;r|JSR;z>_jPsU(<`hj(mneCPOzXl2r-n0 z4}b6TCW!y132%pBz~omHLU#E1k!C$StX^CBme-Xa0F88QVLKVq$B(~x+(F2}<|t^p zpFCjmaJcDwaI~lu<8i#Q(y9OE2QbWe09s;EINVGNJ3G77XxO}PTbaak9ja6=k=2!= zh-ol80M>za01AUm)L<0w)9(jMgtoKSFMrYEN|g=`q-jg#`fw;j#lP1mleARZq);fR z=yj;LyiTvZ{vIy|{MR*7w(bL{MG4fp5|HcNhS7*gu}Fvpx??oZlcX*yq(Vhah(!5Y zCaH3NSC<+Ow>X}DT?6}lVT)YvHXI%5r+7?70U6YniBoU7i+X#yX)KqfY+q8H-hZIY zT|=2A${PqIsR;0L{`rR=>E?|as@$Y6uYW<`eDyVb|Lu2PVgf`iGk{cCTwJ5|4HbS$ zg-8FCRKG;aE333zs?p=63T>!o`j)*x>$TQ&EU8)mg=)1LRVo!ih@(`iRUXrs6S*er zRVXB=|J65W)TO0QO@OvTs>UL0>VFrc)2;)t-Dou2-V^x8z(7x-w;6_#2Y$bI$IAtJ zZooLaUJAwppiy_MXN7tB(&cALp?=`ytVe-dyX~NdEEq)JMEdmK1wgy|AR3KwqC&cs zHSladQmGV~rpZq?Af!SXe`Nh33mC|7{<{ExcJwQ-8U`J_AdJ?DMSHLiSi#f~T9wE1$AEXyK6qkqwGM&z#JTy?if50@VD zS~wi0#l=N~H~%L*_{5?KDi&ucmz$(aCPUMO87j`s)BM~5H(>_nFg6T>+U+*?!-5$w zy8N=`6Ztfc1vmqMxW~g+hen5ifW^en3&Eh}r zi4;o=KopA}p&_EmTRAc!&4{oC_(YBXycdIF50e%Svkw7`FW zv>*iOr9s*^rt{oO81gwM45bYV4^#?!gAk;bC;*@dF@KGm1H=iBkB@mi3_MUNoDGDE z7jkTWoe?1_=YUqL#U}7Nd0`kB*T1-K!~1(fP9z5dKRtO&lCx=Tq*PfdW~#ojwLI zhdP1MM#q^?t1A!&P5cXY*#|IqowLZktl$6kzJF_iOP^eFE7D$d-x+m6RYx=y;eLOw z#=Xpq%b#Aho6ROqgo#)@rhc~P_8|P=y9Y+U>UZJI=Z6gn9w}!2A7xJHq&&ud93C++${u?%4+*!KRuZ#L!;6c*Z|L{J)NP zKYw^VCcmN(vXfKOoqlpsy|(gQuPcG6a|*zA{kXsQ@kLvOoIA&vyLayXL+zDHnOi^f zu0z9|2f!uNJ~Glt3nwRSIy!3b^Q@&zVmc00-K&xnijm(mSUUjjLG6N4X@h*GuVc!? zLyCq%Dw)-lU>;r{JC|`zcEA)77OUUip?|GPjn0q7=~(6Z5ucArf9z5sYN@eFKA%^q z*QQeWfIj%}8eax_%k})iTpu3@I-_oYu3HTQev^WJ#bGi?W1~?DSw0mi>VQAMdx@yZ z{YsjUHPYpHdbtJ$ePIh-w;Ik&WGEa|Q9uTz6JbilLzEg#QZW~&Y&xo>H|Vf!D1WmA z_y+<>DuO{@*g}^zfK*x9+NFcK3O~id#-CL+uTr_PL*?o#dbzz%b@h|uMx72`b*E!V z)dDay$O~KOny^=)5TVTbAJL4Xmb5y6%M;FJ{H&KyZ#W4M+pT8GEkHhBnr!a@^?Cs` zFj`2F2OLQr_~q$iHy7x+0qgL3X@6J~fROHR0!RlT{_TZr_KW5J0=%5{DB#$JUnt_D zJpkuW@+D-UK`>|{efHJ@pkF-*1Ol9>5aV(Op4|)mg$+g!s>*%HQg+ap1w2v<&=4{O zl|Ip+LU5Z(rU^v@ko~Nx4^vZb@)`gwf+>*-(BBr&3f=$`vN(&1iai4<7CaY3dTatB zp$?qUrH4im$pqd0`Zk*puOkr9HHozGS9zwzY_`!CVO^*N38G`9c%002ovPDHLk FV1jX_i3b1x diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel.png b/src/main/resources/assets/create/textures/block/andesite_tunnel.png index 398c50661caf5f02504bb1e1f67cdd0560716f39..3e3042ec0e8dbb15507527ee4bd74aaf26c35087 100644 GIT binary patch delta 2487 zcmV;o2}t&f6o(X$R)3sHL_t(|UhP_2Y#dh^{`bD?y?LG3juSg+($xwn;-B zJHE%e>$Sb!n}_rLo_{ktp0&l!mUL}@((f~K=6rMcZ|9uf>wnNRjqKpip+j0A5TH;f zMBUxp4!yf(U|Rv5ot>K3>!oNkN?l!D6)WH;FCW$F0zO(uXY`(Bq!&|^ULXq8De;F1 zV}KvN@M6icD&;%*%m$X0mdNR}eVgKop%nq}(qH)8-PGLDMv+)O_gSG*zWp~>fEU^I zq>&rbk(O9DTA`AEsLjQr!rUgf@U@Ycr`3I)37OJ85Xx9tHAhodSXAhDZ> zC(vk*9&C5?k0$6~Q?moY7gvFiU+4GIuI4Z`gxp1m27jz?QI#A3FS4ryiCJJcIma!O z&^tL%bkTG=T{6xHbN|d-o<^qTiZT|@Sn{jl0U~x_&fWr8->3w@N(n~(VkWE37u7ib zEm2+}F!HOS0C+(zm(zPHLp0J_Oi*pn5Vr=fcCp^r+16;82#tK8uvnnfe3}&jEG%X% z`L-31&wuAR1Y9nc-cuQpvm=yWOtYIRI9}`N*IxQdH;c*z5WaSOc#0f_6$&ch`+Z&t z$AX*$TN^{116pD}OTO({pjto{hh;ET!BPTUAq@22wR;aAn-@Zr@;_Ay&<{%>?h5My za{hy7pIxB<{jdaU@ok4dwSX5B@pu}!4~cD7O@C_;EOc;=581BV+Kfv1pBfLiU9hcy zr=EFAt5<96vC*-T*t6<0$0NpI;c`3qwiWRFi_dGHx$kbO50~GlBvR@n_3Ostzy7_O zU*dN19Zx>}WW^Q~$od*EE;6t#-xAx($B4g~nG`iNEN@A1O<(phAAQ)sjE_xlA7EZw zMSr4UZuj4FZ`JsY=U#ZOXhEZPtYFq;&&4Zz6Pa3!zy|{zds}H#Ekyyz#B%N0wLw;- z@Go8dkQN3{(zP2id~V*%Y}*o|EeF0z?fdTK#8!^~=e3V=HUqDcU5 zg4lu}jzPpjAQ&T7MqZG0I20#Jgn)O)U2R;AK`4laK%gjag)jF4GTEHE{~`taJ{D|d z0zMC~=P?HNU5yXG>PL1QNV1OtH!rI8GR5XD(OB`EVSCRx)d=3HB%#aaJojOH5=Re>W?Cm+nGH_*(t`80J$70Os z)2CUGaRG@bpT|Yb$kNd|iq%J{LACXffNFz(6bS|?Sm&cq&`WpjsOPZ~v%-hR_?4Rj z-~aPj`d9z71M;^I##z4do41R5dauX5Djz#XGf-r);yaNDph2`9``Rg5AE9k6&D6ZD zi3P5TRv_oQckgBGBUIomZnYg=%;ag?*074nI*NpR6byK&Q6(N6H*Rg{3 zKbOms$L*%s`CM5G3f%5nTW`Dkl35@ciLq-O{^IA0Ne~~3c@`}cg%;i*IRJu?NN2L@ zLsfE9FCg%H-87S&r>RtqGMNSC4I#=GoD@>t0INai!q2J?SPKY^Twyu1tHoypNajz@ z#(6*e&bwzg>7k?yw?|S$3%5rLqT~R7K~z~em(O#i#m54R*}QT)4~3QCoytWKTG?EV z-4!!~5k|fhP$l{#_)b|E0Puj0j(ybHx{I2cn%MFk`}P-GcmM<+E=t2O&+$vQl5TDx z$Jz!^EQQPYeE}8wL_V*F-Bq4x#W%+A(W6J{!qlXO82%*qyb^>v0ElA<28Ba^5x#L& zX;fOw<2VN71^`^p?bJBA2v8^VsSrRPl21CbT$_Wddh~JPK}P=ELa7BG`tEmlK?4h3 z9gbI>&mMpz0>G+P%UNl$(nE_75Xf;nrN*m`Wj?P_TCLk}OeSb_a+XFW;%b_mQ{lBh z!{aHX7>zU~cm}v;{&akK-|(w{ljk+e-N&ztQ1I~A(s18IDqVFxFNEOY#>Edj!ng=R z5fQCeUB<$DphYCci`~DckjnC?jSeXnY;BIwoUX)Z$U_r}9Bm092^GkzLSp{|-{$+6 z`GNMs%n^u{0laYX^4nGAmncABCIR?hre z9{=X!8Z>DBU)x$h5zh}RjwGM*Sku0&R1!`Ua zc1vnCuKknL?qN^j*>;aet%a+8}1B@lHT}@&30Eqlg0n?ymNsRy2Fff&2BW5g# z4UHr@`={db#aRIHZ&?!KzcmhofUzW27g?VBF%w`Gz^V`-U|AC5qZ$U{7%-N^BnJS9 zf0+d=OJcRY8+_tgTTk$IzT%SDdQgC^lGu8v2cQ*8OGp4_>jTCeE^j|lVe<&q}c;o;8002ovPDHLkV1l?S B#hCyA delta 2491 zcmV;s2}JgX6pIv)R)3&LL_t(|UhP_IY#dh=KKtJFzPwIs$BCVkG>Y9cZGsvj;13EQ zp-LbXRftxV_|wt~_)(-5wNOwRA<=^PQ3*s-ADJ8l{eoj^Jbd}ad+3k&3Q+P+Qk#n6fXcG{vK*m+rb|9}N!tWYk$A~`@pz)lW$>6b6_i`5_3qnER(@@-#FtQ6_wGG>Y+eYJ%fF)(pdXe%+!fXZ z%N&#N(;wJ|wnjHGi!^u+YIdK4iOcYctB_-!UGrRQb&*t6<0$0NpI;j)%|+X{I0`DeAy-hU6(hF9LGBvR@n_3Ostzx=I} zUt%r!j>n&Tyle{!WPJ@77a3TWZ;5T?W5nOoREp~A7Pq9hrZ0P$k3MW*Mn}fD4=^vT zB7e~^xBKtCuVQ@1GtWI!w4hNtRxoR_>(W)eiA*g<;Ddp-z0EYNmZE@UV!3wxdOs^t z_?NGIM05S8==#kmJ~wY>wrvT~mIGg-)_wPJVq1y-$ZLP+b2Hv}>MP6mPL3hTTxkM$p^wJxFz+MLgeOCOEX;5AaRTSgC8i32-At)*| z?^tw`AOskH#CT#n_qvBU0eWvtHV_=5Q_@UHA8(pAC)9Kd@Ph= zd}uN;tskwNfToivZspvJ`~Cl>H{QBP3z-EXuajI(2P*&@n+Fc;A?J>E9%p>65#ZnT zgWt0P^e)C9FZOG1zwoVPd?yaz0b)_KW256-OT+Q#_*MGk<3YX#7_AF#)AlCLsxy73 z$Tik~O?9(9H229liX?j|aO;w4uTX5}GL3YfAZ_4%a*ke5(nSX!_#EF)_%wKq+`}Jm z-%6XAs0!Qg#5uZk@$FUl=1P*liq9c{ni(?U>C>mF>%xZ|gWX-{S^BQ_(~W_C{#cAT zbLI>SGARb_kRrh#1#5g13VP`?J8F5X#H{e)F@ELd zzz_d)j^68?bU^<4;V8>jfBQ~xPw(}(SLI{pXa0i# z)VQsI1+I!#Am9M^BH<8vUBD{u>c z2tSw0lgI6*>DkIDRTubZZlvow*)Q6@8|ydgySf|EkZ8(=jkQTSQ)0k;D}BUe}q?Mm^T63akx zI?ns)cmHvglO9USaC;<0v~YX0AObRfV*pWQ)A^@Qt%d zqtap?$1xzu2Y?H@of;<>0qTT46$0o(@=0eFYjbc_k3LR3&&Z#dE4AQ5-~S#jXkfu> zgYk;n(MF>dpk#LBo)OfYA%;z;qt9AR$@dOQzPt(v?TurkxD!k@s za5SY9qmiZr&j8oVpNuc=8-9I%>Vk&3`^42D3LgGO8t$7&r7OF{HF&gsFSRzMTLP$ad@~V*7|KNA| zKCpt3A80+y9D!IFzzZj@yi-xW<5#b|q9NfKVI~1kj(K}53P4^Ej{)R=pOD7z0?b|| zYl*ewJAU!(UKW8Zm9gXS?)0HQRbf~*v2>;ugG|8G7k0Gc@dhvWaV z0-$-L2Y6M|0}6!&%4XA?Nb@T8+-lkZ63GMwf>Clg7C70K^IS9RmgI^duvQ*mR{?fQ za#ddyh6mUwiQO^(7qA0=Now#e&v-WtcAaF2_nj%qWY0gjTn10%DNs$}7{4wQU{zAH z`hCD{OJdcEI*XE+)$apVEQwV!;Kt^X*h;?-uquhI3lHe(K3QB839Nn}kW}j+SRKg{ zyIP>?6=1idR`m*ym^PNg5CX71WMC}C`5>9rtV?42w~B$RZZ3&`u?HyYx9+TGfd?2- zQWDeKss%g%Q<||PhIohd`)*9owV_G&08E3HB{4o*2QZezb~S|A10eE01x$mMB{BY6 z#lTdCjhL|{HZYXr?4OFy7H0v(zhy~`|5iB=0>+Y9O=NNI$4r1(0INcTz->!n)d<8f zU@VDA4ge7UG7DH@Z(V(XzEfL1ImApw}J4;cG^s#kzrtebT} zx!6>I-fmcIDnM^HEH)LOw;L9l3eejPi%kXS?FI$We*jrif+%2?-f;i`002ovPDHLk FV1fz8t~USx diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png index 272c1cf07e8493f4cd55e162991563fe0dffdd25..606dabda8e30602019e5da3631655f02732ace04 100644 GIT binary patch delta 172 zcmV;d08{^|0;vL!g@3{T01m>R(xC~) zPAu@%Jj9RHX(4Y_IyYmjVcRSCV5z;sG;A}Y++V1uctjIdV4@gmR8t66&h0000)dj4>>b9+FPXe~GxO$s^UdtL6T|m<9FiCq`F{dqL@Je{a5(IGS)4!K zK%w$7*UP_0p|}(MkA>xqtpNf}z?`0ZHJwqmuXBsCCivq33&FRaeNvNp157?}e|SbE z#;G5^`s$I;V|cCJM{M0s7Bph;=u4_lbSruLrE*I6x`T-_@8SC(C2< z0mQK7J}R6Z!)x_ES4@sk1W+Ce$?2cNW?X&|%e5WlS;u;DfN&i3V^}hT5N@wDh?}vU zPGdt$Q5#K6f26kN-A;L#CDIw2q@|OWhjKOudN7YbB7c<*95gXCPKWmFckVo&5;Zk7 zbmmAM4q)qqx-Ja{`ogSaDx0*}t9bN!!8`H5%g;zEKxpXg4PZmy&%^;!P=I7_t z8;Qr`-do|5vjs`rN_dKdLLv1=pvd5x1!3E^H-G0nLIBB4U=lj8FANZ>T3c;jENd!;_iUprs zKRvJ^1^Cx4pG_u{s&BFki%(NgQK4)h@S3_!A@xZDCM!QRMFcjV&&W{#Ma6_@G`dE< zpmktn7`pEfsH&=RduDJYglgxGMcq-NE2p+m@6pY!x7NSdxi!bX(DCPQposPEa1ONX zRlfzOhNgOe*9(%@&$iP0u@7``*FII4@YBoXRrk4Qq5QhjYK+VA>DW^#C(&sjDpj delta 888 zcmV-;1Bd*$2eb!}Nq@rt01m?e$8V@)0009?NklADmJP zW7iK~eO2}K<^j4N5Us7P4iARKFKy6y*l&1v*n9;4ivIyv#hyRl%f%%q`tz3mA{9%q z^K9q{uqc->=zl&N3LuQ^I=Y{=UiKt05 zCK{XkNG*-KozfCZtY&PImQG$C$eAGM#=HQM>D9naV}BE)bZF0h=g#v9QB_q%XO7fh z1GXMe$EE&2Z-CX>oCu~J&&q`zsf4Jktfa-oMJVFPpvbR?Ckro*$snO#W@l&B9a&yp z_U;ProGpUXt;AC#5{alg0!8}Y%n94Jy)o|+0)H%Sf`ib(#BBWmF=(U6OY8O!Js6sH zYcc@b0pOQCAO2_ji|PSE3ATRtIS}Yw4T>I+Ubv4f*TG*6pb#cSiV6UEAS}FdefMBP z3h>u1pG~Dws&2B3#k(mhD^s=*{7lWJh`6ni4L1;_c%WOE|vOjaU-NW*K)Q#uTIswn^hrpcb`r0X1hmK=LnzIBUp_y5C& z+(7v4F4=q(HuMIhK*?s|8lbZ`-f9QZ*^HyDhbqEM=6~V$p9BR1bS%!rg#vRtL&ZM~ z*(?_*r$E!h+$lQ0kZul+#^g+f$X zT1rQoZaK4UfUZ?(s1EZ|y3&EwwQL~*oKaq!+s_enMABnSF}y?sD$nNfV&DsV57B|> zA=+2pMt=>vT4~pgy|kyMg&k?3?G=qwvpvcLNA%M3N90+Th%(u{c(0+)Sx^&(VcVC_ z6^ICWUtgcr(b1u)ji`5|hpHB89KeM%-7i$!KDKRbd zjyY@t?S8gJ-X#V=X|AuP=yO$6UsEB{P+LKDJImcL172Mr?_^0Wu7JgZ0Y6i^PCK{R z1}2kPGPu~8=UkfCPP|@kg@Ok8_y)qOfa{DCb|96?Q6OMf{ny`*x&3`8ds|TH3Ll@p<{E2Y(UGZs z4$FfPz!5L7oIkDo zov3yC?dZDvd22!8Z*IZ0)eHqgCZ(9FeSEGE@MEUAo;l^v1Lk_|m6u(10u+-ec<&)% zke@m`osj}y+}PBJ=*kJ@kTM*3S3m^Z9d&eamL}p0bbV@$hFPDPOSm!~pQFKv8Gjm? zzC-cbi-m`ZfKG`pWkbr#{31%n!rsLJL_khN@X+t)qnKagJeuTZB3eqUx&l@#3kN9@ z3X;Wbg!R#8fVclu4IJJ7qWnWZx%fY{?}$*g0+<(&w`e&3F+Cw?IF8|H27|nU2bL2_ zp2PR~S=Hm-B1Eqn%rYOG@1~QVUVo;y&Rh^VarS3w|Kh4MtAKQxH!disP81^w28-i- z=!LQmJ1V#GPF6@OK%*Uj8&-eDvku1HJqtfEOwnNXx%8hyd-YzB2*S0Nq@rt01m?e$8V@)000HSNklo&# zP_PtOZbdEFdWmno_z&ol#u$x>HfdkIM&qj*eK7S&pX#d*LX19m0g6}%_X6dzQA!JP z&jNcNzuz}=W(Op-0{)VZ{pOsRbH3~E9JCLvv|8jrJdu^(ynld?lBq0Z`4KvRIq2X1 z;-_FRNa1jpy1KeFnLH%KfVPGU^58cN{%hM~Sr+;1ed)WOf2Go*0CluXHoYVfP*8f76`!*1h>%q@jaOzrEX`ui zd?LD`ks%Qw(tmw9CzXx}L5>O^@~mKJx6*ECI{a2)WNemj&| ziwlnPpGs#$lBu*r1d)cY&AyOZO{?lNPLZJ}l=jYR^G*pLqDP8Hn&Tcvv0nR9I&h6(2IwI~dWy(r(hM3hQr#d{5X&VrgS4BNhJCPzfj2L=YT z?(S|)9YiDL7j^-EF=+4rH$i&l8GkA0QzvVAvwG1tV{=09c!zDEvk$e% zT4Df{#@cd%Qp@ahU#CrfH`1#BJ+m`v$9RhHTY#^Y%+xY(KJ zT$j4<^ zMt@Oz`;BIKLg&FjR4_+OfcKzt-&^l}I_f(p0`FgLwbr(h^!e9Qu2BzyH(#u`aK|vv zDv_Et-psCQ(5si_g4{Yk^!AGWZ$LE5O7cYawxH4#-u-06HP*nUbaX;)Hru-id9Ezw)ZH2p{o3{0+O_LMmtSgN z18_e$B~)Bl7T!Z*0G^$wYdFXx6nJ`&D0q)jkPd(deDuYrSjh(1lZ^W@;X5A>%jAbw b&s%>3