From 5abc1e0fe73a89e4671c395cfa1b6826edbefae0 Mon Sep 17 00:00:00 2001 From: JozsefA Date: Fri, 2 Apr 2021 13:38:28 -0700 Subject: [PATCH 01/10] Instanced pulleys first pass --- .../com/simibubi/create/AllBlockPartials.java | 39 +--- .../com/simibubi/create/AllTileEntities.java | 3 +- .../contraptions/base/HalfShaftInstance.java | 2 +- .../base/ShaftlessCogInstance.java | 4 +- .../components/actors/DrillInstance.java | 10 +- .../components/crank/HandCrankInstance.java | 3 +- .../components/fan/FanInstance.java | 9 +- .../components/flywheel/FlyWheelInstance.java | 13 +- .../millstone/MillStoneCogInstance.java | 3 +- .../components/saw/SawInstance.java | 12 +- .../pulley/AbstractPulleyRenderer.java | 4 + .../pulley/PulleyInstance.java | 209 ++++++++++++++++++ .../pulley/PulleyRenderer.java | 24 +- .../pulley/PulleyTileEntity.java | 2 +- .../contraptions/fluids/PumpCogInstance.java | 8 +- .../relays/belt/BeltInstance.java | 3 +- .../relays/encased/SplitShaftInstance.java | 6 +- .../relays/gearbox/GearboxInstance.java | 6 +- .../block/mechanicalArm/ArmInstance.java | 2 +- .../create/foundation/OptionalUtil.java | 24 ++ .../backend/instancing/RenderMaterial.java | 8 +- .../instancing/util/ConditionalInstance.java | 52 +++++ .../instancing/util/InstanceGroup.java | 83 +++++++ .../instancing/util/SelectInstance.java | 59 +++++ 24 files changed, 512 insertions(+), 76 deletions(-) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java create mode 100644 src/main/java/com/simibubi/create/foundation/OptionalUtil.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/InstanceGroup.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/SelectInstance.java diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 95ff6745c..dc24ad0d0 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -16,10 +16,10 @@ import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.A import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.content.contraptions.relays.belt.BeltData; import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.render.backend.MaterialTypes; +import com.simibubi.create.foundation.render.backend.MaterialType; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; -import com.simibubi.create.foundation.render.backend.core.ModelData; +import com.simibubi.create.foundation.render.backend.instancing.RenderMaterial; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -237,20 +237,7 @@ public class AllBlockPartials { return CreateClient.bufferCache.renderDirectionalPartial(this, referenceState, facing, ms); } - public InstancedModel renderOnRotating(InstancedTileRenderer ctx, BlockState referenceState) { - return ctx.getMaterial(KineticRenderMaterials.ROTATING).getModel(this, referenceState); - } - - public InstancedModel renderOnBelt(InstancedTileRenderer ctx, BlockState referenceState) { - return ctx.getMaterial(KineticRenderMaterials.BELTS).getModel(this, referenceState); - } - - public InstancedModel renderOnDirectionalSouthRotating(InstancedTileRenderer dispatcher, BlockState referenceState) { - Direction facing = referenceState.get(FACING); - return renderOnDirectionalSouthRotating(dispatcher, referenceState, facing); - } - - public InstancedModel renderOnDirectionalSouthRotating(InstancedTileRenderer dispatcher, BlockState referenceState, Direction facing) { + public > M getModel(RenderMaterial mat, BlockState referenceState, Direction facing) { Supplier ms = () -> { MatrixStack stack = new MatrixStack(); MatrixStacker.of(stack) @@ -260,25 +247,7 @@ public class AllBlockPartials { .unCentre(); return stack; }; - return dispatcher.getMaterial(KineticRenderMaterials.ROTATING).getModel(this, referenceState, facing, ms); - } - - public InstancedModel renderOnHorizontalModel(InstancedTileRenderer dispatcher, BlockState referenceState) { - Direction facing = referenceState.get(HORIZONTAL_FACING); - return renderOnDirectionalSouthModel(dispatcher, referenceState, facing); - } - - public InstancedModel renderOnDirectionalSouthModel(InstancedTileRenderer dispatcher, BlockState referenceState, Direction facing) { - Supplier ms = () -> { - MatrixStack stack = new MatrixStack(); - MatrixStacker.of(stack) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .unCentre(); - return stack; - }; - return dispatcher.getMaterial(MaterialTypes.TRANSFORMED).getModel(this, referenceState, facing, ms); + return mat.getModel(this, referenceState, facing, ms); } } diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 219269b08..8f2ecaa00 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -61,6 +61,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.gan import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonTileEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyInstance; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; import com.simibubi.create.content.contraptions.components.turntable.TurntableTileEntity; @@ -398,7 +399,7 @@ public class AllTileEntities { public static final TileEntityEntry ROPE_PULLEY = Create.registrate() .tileEntity("rope_pulley", PulleyTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> PulleyInstance::new) .validBlocks(AllBlocks.ROPE_PULLEY) .renderer(() -> PulleyRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java index 8e974deab..4b834f520 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java @@ -15,7 +15,7 @@ public class HalfShaftInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { Direction dir = getShaftDirection(); - return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouthRotating(renderer, blockState, dir); + return AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), blockState, dir); } protected Direction getShaftDirection() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java index 7c9fd17c2..16f85ab32 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java @@ -12,6 +12,6 @@ public class ShaftlessCogInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - return AllBlockPartials.SHAFTLESS_COGWHEEL.renderOnRotating(renderer, tile.getBlockState()); - } + return renderer.getMaterial(KineticRenderMaterials.ROTATING).getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState()); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java index da5a33476..04508390b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java @@ -1,11 +1,16 @@ package com.simibubi.create.content.contraptions.components.actors; +import net.minecraft.block.BlockState; + import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.foundation.render.backend.instancing.*; +import static net.minecraft.state.properties.BlockStateProperties.FACING; + public class DrillInstance extends SingleRotatingInstance { public DrillInstance(InstancedTileRenderer modelManager, KineticTileEntity tile) { @@ -14,6 +19,7 @@ public class DrillInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - return AllBlockPartials.DRILL_HEAD.renderOnDirectionalSouthRotating(renderer, tile.getBlockState()); - } + BlockState referenceState = tile.getBlockState(); + return AllBlockPartials.DRILL_HEAD.getModel(getRotatingMaterial(), referenceState, referenceState.get(FACING)); + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java index 33fb21234..9ca46e198 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.crank; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; +import com.simibubi.create.foundation.render.backend.MaterialTypes; import com.simibubi.create.foundation.render.backend.instancing.*; import com.simibubi.create.foundation.render.backend.core.ModelData; import com.simibubi.create.foundation.utility.AnimationTickHolder; @@ -29,7 +30,7 @@ public class HandCrankInstance extends SingleRotatingInstance implements IDynami return; facing = blockState.get(BlockStateProperties.FACING); - InstancedModel model = renderedHandle.renderOnDirectionalSouthModel(modelManager, blockState, facing.getOpposite()); + InstancedModel model = renderedHandle.getModel(getTransformMaterial(), blockState, facing.getOpposite()); crank = model.createInstance(); rotateCrank(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java index 62ab42d6e..f2165b8d2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.fan; import static net.minecraft.state.properties.BlockStateProperties.FACING; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; @@ -16,14 +17,16 @@ public class FanInstance extends KineticTileInstance { protected final RotatingData shaft; protected final RotatingData fan; final Direction direction; + private final Direction opposite; public FanInstance(InstancedTileRenderer modelManager, EncasedFanTileEntity tile) { super(modelManager, tile); direction = blockState.get(FACING); - shaft = AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouthRotating(modelManager, blockState, direction.getOpposite()).createInstance(); - fan = AllBlockPartials.ENCASED_FAN_INNER.renderOnDirectionalSouthRotating(modelManager, blockState, direction.getOpposite()).createInstance(); + opposite = direction.getOpposite(); + shaft = AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), blockState, opposite).createInstance(); + fan = AllBlockPartials.ENCASED_FAN_INNER.getModel(getRotatingMaterial(), blockState, opposite).createInstance(); setup(shaft); setup(fan, getFanSpeed()); @@ -46,7 +49,7 @@ public class FanInstance extends KineticTileInstance { @Override public void updateLight() { - BlockPos behind = pos.offset(direction.getOpposite()); + BlockPos behind = pos.offset(opposite); relight(behind, shaft); BlockPos inFront = pos.offset(direction); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java index c2975d56c..542fda0a9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java @@ -6,19 +6,25 @@ import java.util.List; import com.google.common.collect.Lists; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; +import com.simibubi.create.foundation.render.backend.MaterialTypes; import com.simibubi.create.foundation.render.backend.instancing.*; import com.simibubi.create.foundation.render.backend.core.ModelData; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.MatrixStacker; + +import net.minecraft.block.BlockState; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.Direction; import net.minecraft.util.Rotation; import net.minecraft.util.math.MathHelper; +import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; + public class FlyWheelInstance extends KineticTileInstance implements IDynamicInstance { protected final Direction facing; @@ -42,11 +48,12 @@ public class FlyWheelInstance extends KineticTileInstance im public FlyWheelInstance(InstancedTileRenderer modelManager, FlywheelTileEntity tile) { super(modelManager, tile); - facing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); + facing = blockState.get(HORIZONTAL_FACING); shaft = setup(shaftModel().createInstance()); - wheel = AllBlockPartials.FLYWHEEL.renderOnHorizontalModel(modelManager, blockState.rotate(Rotation.CLOCKWISE_90)).createInstance(); + BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); + wheel = AllBlockPartials.FLYWHEEL.getModel(getTransformMaterial(), referenceState, referenceState.get(HORIZONTAL_FACING)).createInstance(); connection = FlywheelBlock.getConnection(blockState); if (connection != null) { @@ -152,7 +159,7 @@ public class FlyWheelInstance extends KineticTileInstance im } protected InstancedModel shaftModel() { - return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouthRotating(renderer, blockState, facing.getOpposite()); + return AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), blockState, facing.getOpposite()); } protected void transformConnector(MatrixStacker ms, boolean upper, boolean rotating, float angle, boolean flip) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java index dded6ee67..9e5f5c390 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.components.millstone; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; @@ -15,6 +16,6 @@ public class MillStoneCogInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - return AllBlockPartials.MILLSTONE_COG.renderOnRotating(renderer, tile.getBlockState()); + return getRotatingMaterial().getModel(AllBlockPartials.MILLSTONE_COG, tile.getBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java index 606ffe62b..3c877353f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java @@ -3,12 +3,14 @@ package com.simibubi.create.content.contraptions.components.saw; import static net.minecraft.state.properties.BlockStateProperties.FACING; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; +import net.minecraft.block.BlockState; import net.minecraft.util.Rotation; public class SawInstance extends SingleRotatingInstance { @@ -19,9 +21,11 @@ public class SawInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - if (blockState.get(FACING).getAxis().isHorizontal()) - return AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouthRotating(renderer, blockState.rotate(tile.getWorld(), tile.getPos(), Rotation.CLOCKWISE_180)); - else - return getRotatingMaterial().getModel(shaft()); + if (blockState.get(FACING).getAxis().isHorizontal()) { + BlockState referenceState = blockState.rotate(tile.getWorld(), tile.getPos(), Rotation.CLOCKWISE_180); + return AllBlockPartials.SHAFT_HALF.getModel(getRotatingMaterial(), referenceState, referenceState.get(FACING)); + } else { + return getRotatingMaterial().getModel(shaft()); + } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java index 17d3ca9ce..f707114df 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java @@ -7,6 +7,7 @@ import com.simibubi.create.content.contraptions.base.IRotate; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.render.backend.FastRenderDispatcher; import com.simibubi.create.foundation.utility.AngleHelper; import net.minecraft.block.BlockState; @@ -41,6 +42,9 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { @Override protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + + if (FastRenderDispatcher.available(te.getWorld())) return; + super.renderSafe(te, partialTicks, ms, buffer, light, overlay); float offset = getOffset(te, partialTicks); boolean running = isRunning(te); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java new file mode 100644 index 000000000..e32888ee5 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java @@ -0,0 +1,209 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.pulley; + +import net.minecraft.client.renderer.Vector3f; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.ILightReader; +import net.minecraft.world.LightType; + +import java.util.Arrays; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; +import com.simibubi.create.foundation.render.backend.core.OrientedData; +import com.simibubi.create.foundation.render.backend.instancing.*; +import com.simibubi.create.foundation.render.backend.instancing.util.ConditionalInstance; +import com.simibubi.create.foundation.render.backend.instancing.util.InstanceGroup; +import com.simibubi.create.foundation.render.backend.instancing.util.SelectInstance; +import com.simibubi.create.foundation.render.backend.light.GridAlignedBB; +import com.simibubi.create.foundation.render.backend.light.LightUpdateListener; +import com.simibubi.create.foundation.render.backend.light.LightUpdater; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +public class PulleyInstance extends ShaftInstance implements IDynamicInstance, LightUpdateListener { + + final PulleyTileEntity tile = (PulleyTileEntity) super.tile; + final OrientedData coil; + final SelectInstance magnet; + final InstanceGroup rope; + final ConditionalInstance halfRope; + + private float offset; + private final Direction rotatingAbout; + private final Vector3f rotationAxis; + + private byte[] bLight = new byte[1]; + private byte[] sLight = new byte[1]; + private GridAlignedBB volume; + + public PulleyInstance(InstancedTileRenderer dispatcher, PulleyTileEntity tile) { + super(dispatcher, tile); + + rotatingAbout = Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis); + rotationAxis = rotatingAbout.getUnitVector(); + updateOffset(); + + coil = getCoilModel() + .createInstance() + .setPosition(getInstancePosition()); + + magnet = new SelectInstance<>(this::getMagnetModelIndex); + magnet.addModel(getMagnetModel()) + .addModel(getHalfMagnetModel()); + + rope = new InstanceGroup<>(getRopeModel()); + resizeRope(); + + halfRope = new ConditionalInstance<>(getHalfRopeModel(), this::shouldRenderHalfRope); + + beginFrame(); + } + + @Override + public void beginFrame() { + updateOffset(); + + coil.setRotation(rotationAxis.getDegreesQuaternion(offset * 180)); + magnet.update().get().ifPresent(data -> + data.setPosition(getInstancePosition()) + .nudge(0, -offset, 0) + .setBlockLight(bLight[bLight.length - 1]) + .setSkyLight(sLight[sLight.length - 1]) + ); + + halfRope.check().get().ifPresent(rope -> { + float f = offset % 1; + float halfRopeNudge = f > .75f ? f - 1 : f; + + rope.setPosition(getInstancePosition()) + .nudge(0, -halfRopeNudge, 0) + .setBlockLight(bLight[0]) + .setSkyLight(sLight[0]); + }); + + if (isRunning()) { + resizeRope(); + int size = rope.size(); + for (int i = 0; i < size; i++) { + rope.get(i) + .setPosition(getInstancePosition()) + .nudge(0, -offset + i + 1, 0) + .setBlockLight(bLight[size - i]) + .setSkyLight(sLight[size - i]); + } + } else { + rope.clear(); + } + } + + @Override + public void updateLight() { + super.updateLight(); + relight(pos, coil); + } + + @Override + public void remove() { + super.remove(); + coil.delete(); + magnet.delete(); + rope.clear(); + halfRope.delete(); + } + + protected InstancedModel getRopeModel() { + return getOrientedMaterial().getModel(AllBlocks.ROPE.getDefaultState()); + } + + protected InstancedModel getMagnetModel() { + return getOrientedMaterial().getModel(AllBlocks.PULLEY_MAGNET.getDefaultState()); + } + + protected InstancedModel getHalfMagnetModel() { + return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF_MAGNET, blockState); + } + + protected InstancedModel getCoilModel() { + return AllBlockPartials.ROPE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout); + } + + protected InstancedModel getHalfRopeModel() { + return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF, blockState); + } + + protected float getOffset() { + float partialTicks = AnimationTickHolder.getPartialTicks(); + return PulleyRenderer.getTileOffset(partialTicks, tile); + } + + protected boolean isRunning() { + return tile.running || tile.isVirtual(); + } + + protected void resizeRope() { + if (rope.resize(getNeededRopeCount())) { + + int length = MathHelper.ceil(offset); + volume = GridAlignedBB.from(pos.down(length), pos); + volume.fixMinMax(); + + bLight = Arrays.copyOf(bLight, length + 1); + sLight = Arrays.copyOf(sLight, length + 1); + + initLight(world, volume); + + LightUpdater.getInstance().startListening(volume, this); + } + } + + private void updateOffset() { + offset = getOffset(); + } + + private int getNeededRopeCount() { + return Math.max(0, MathHelper.ceil(offset - 1.25f)); + } + + private boolean shouldRenderHalfRope() { + float f = offset % 1; + return offset > .75f && (f < .25f || f > .75f); + } + + private int getMagnetModelIndex() { + if (isRunning() || offset == 0) { + return offset > .25f ? 0 : 1; + } else { + return -1; + } + } + + @Override + public boolean decreaseFramerateWithDistance() { + return false; + } + + @Override + public boolean onLightUpdate(ILightReader world, LightType type, GridAlignedBB changed) { + changed.intersectAssign(volume); + + initLight(world, changed); + + return false; + } + + private void initLight(ILightReader world, GridAlignedBB changed) { + int top = this.pos.getY(); + BlockPos.Mutable pos = new BlockPos.Mutable(); + changed.forEachContained((x, y, z) -> { + pos.setPos(x, y, z); + byte block = (byte) world.getLightLevel(LightType.BLOCK, pos); + byte sky = (byte) world.getLightLevel(LightType.SKY, pos); + + int i = top - y; + + bLight[i] = block; + sLight[i] = sky; + }); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java index 00d708294..740302722 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java @@ -41,16 +41,7 @@ public class PulleyRenderer extends AbstractPulleyRenderer { @Override protected float getOffset(KineticTileEntity te, float partialTicks) { PulleyTileEntity pulley = (PulleyTileEntity) te; - float offset = pulley.getInterpolatedOffset(partialTicks); - - if (pulley.movedContraption != null) { - AbstractContraptionEntity e = pulley.movedContraption; - PulleyContraption c = (PulleyContraption) pulley.movedContraption.getContraption(); - double entityPos = MathHelper.lerp(partialTicks, e.lastTickPosY, e.getY()); - offset = (float) -(entityPos - c.anchor.getY() - c.initialOffset); - } - - return offset; + return getTileOffset(partialTicks, pulley); } @Override @@ -58,4 +49,17 @@ public class PulleyRenderer extends AbstractPulleyRenderer { return ((PulleyTileEntity) te).running || te.isVirtual(); } + + static float getTileOffset(float partialTicks, PulleyTileEntity tile) { + float offset = tile.getInterpolatedOffset(partialTicks); + + if (tile.movedContraption != null) { + AbstractContraptionEntity e = tile.movedContraption; + PulleyContraption c = (PulleyContraption) tile.movedContraption.getContraption(); + double entityPos = MathHelper.lerp(partialTicks, e.lastTickPosY, e.getY()); + offset = (float) -(entityPos - c.anchor.getY() - c.initialOffset); + } + + return offset; + } } 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 a185e14cc..8b1d8afab 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 @@ -241,6 +241,6 @@ public class PulleyTileEntity extends LinearActuatorTileEntity { @Override public boolean shouldRenderAsTE() { - return true; + return false; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java index 786c5dca8..27ffe2b5c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java @@ -1,12 +1,17 @@ package com.simibubi.create.content.contraptions.fluids; +import net.minecraft.block.BlockState; + import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; +import static net.minecraft.state.properties.BlockStateProperties.FACING; + public class PumpCogInstance extends SingleRotatingInstance { public PumpCogInstance(InstancedTileRenderer modelManager, KineticTileEntity tile) { @@ -15,6 +20,7 @@ public class PumpCogInstance extends SingleRotatingInstance { @Override protected InstancedModel getModel() { - return AllBlockPartials.MECHANICAL_PUMP_COG.renderOnDirectionalSouthRotating(renderer, tile.getBlockState()); + BlockState referenceState = tile.getBlockState(); + return AllBlockPartials.MECHANICAL_PUMP_COG.getModel(getRotatingMaterial(), referenceState, referenceState.get(FACING)); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java index 9983b0899..18eb22b0b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java @@ -6,6 +6,7 @@ import java.util.function.Supplier; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.foundation.block.render.SpriteShiftEntry; @@ -59,7 +60,7 @@ public class BeltInstance extends KineticTileInstance { AllBlockPartials beltPartial = BeltRenderer.getBeltPartial(diagonal, start, end, bottom); SpriteShiftEntry spriteShift = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom); - InstancedModel beltModel = beltPartial.renderOnBelt(modelManager, blockState); + InstancedModel beltModel = modelManager.getMaterial(KineticRenderMaterials.BELTS).getModel(beltPartial, blockState); keys.add(setup(beltModel.createInstance(), bottom, spriteShift)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java index 9a4e50292..c4deb4a5f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java @@ -4,11 +4,13 @@ import java.util.ArrayList; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.IRotate; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.foundation.render.backend.instancing.InstanceData; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; +import com.simibubi.create.foundation.render.backend.instancing.RenderMaterial; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.block.Block; @@ -25,9 +27,11 @@ public class SplitShaftInstance extends KineticTileInstance> rotatingMaterial = getRotatingMaterial(); + for (Direction dir : Iterate.directionsInAxis(getRotationAxis())) { - InstancedModel half = AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouthRotating(modelManager, blockState, dir); + InstancedModel half = AllBlockPartials.SHAFT_HALF.getModel(rotatingMaterial, blockState, dir); float splitSpeed = speed * tile.getRotationSpeedModifier(dir); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java index bfece3f61..8c9469c00 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java @@ -4,11 +4,13 @@ import java.util.EnumMap; import java.util.Map; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticRenderMaterials; import com.simibubi.create.content.contraptions.base.KineticTileInstance; import com.simibubi.create.content.contraptions.base.RotatingData; import com.simibubi.create.foundation.render.backend.instancing.InstanceData; import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; +import com.simibubi.create.foundation.render.backend.instancing.RenderMaterial; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.state.properties.BlockStateProperties; @@ -32,12 +34,14 @@ public class GearboxInstance extends KineticTileInstance { int skyLight = world.getLightLevel(LightType.SKY, pos); updateSourceFacing(); + RenderMaterial> rotatingMaterial = getRotatingMaterial(); + for (Direction direction : Iterate.directions) { final Direction.Axis axis = direction.getAxis(); if (boxAxis == axis) continue; - InstancedModel shaft = AllBlockPartials.SHAFT_HALF.renderOnDirectionalSouthRotating(modelManager, blockState, direction); + InstancedModel shaft = AllBlockPartials.SHAFT_HALF.getModel(rotatingMaterial, blockState, direction); RotatingData key = shaft.createInstance(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java index eaf1afca3..ce716f4e8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInstance.java @@ -170,7 +170,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta @Override protected InstancedModel getModel() { - return AllBlockPartials.ARM_COG.renderOnRotating(renderer, tile.getBlockState()); + return getRotatingMaterial().getModel(AllBlockPartials.ARM_COG, tile.getBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/OptionalUtil.java b/src/main/java/com/simibubi/create/foundation/OptionalUtil.java new file mode 100644 index 000000000..f15ec5969 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/OptionalUtil.java @@ -0,0 +1,24 @@ +package com.simibubi.create.foundation; + +import java.util.Optional; +import java.util.function.Supplier; + +public class OptionalUtil { + + public static Optional thenTry(Optional first, Optional thenTry) { + if (first.isPresent()) { + return first; + } else { + return thenTry; + } + } + + public static Optional thenTryLazy(Supplier> first, Supplier> thenTry) { + Optional one = first.get(); + if (one.isPresent()) { + return one; + } else { + return thenTry.get(); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/RenderMaterial.java b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/RenderMaterial.java index d9557abec..7815a764f 100644 --- a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/RenderMaterial.java +++ b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/RenderMaterial.java @@ -85,13 +85,7 @@ public class RenderMaterial

cache : models.values()) { - for (MODEL model : cache.asMap().values()) { - if (!model.isEmpty()) { - model.render(); - } - } - } + runOnAll(InstancedModel::render); } public void runOnAll(Consumer f) { diff --git a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java new file mode 100644 index 000000000..94b891039 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java @@ -0,0 +1,52 @@ +package com.simibubi.create.foundation.render.backend.instancing.util; + +import java.util.Optional; +import javax.annotation.Nullable; +import com.simibubi.create.foundation.render.backend.instancing.InstanceData; +import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; + +public class ConditionalInstance { + + final InstancedModel model; + Condition condition; + + @Nullable + private D instance; + + public ConditionalInstance(InstancedModel model, Condition condition) { + this.model = model; + this.condition = condition; + + check(); + } + + public ConditionalInstance setCondition(Condition condition) { + this.condition = condition; + return this; + } + + public ConditionalInstance check() { + boolean shouldShow = condition.shouldShow(); + if (shouldShow && instance == null) { + instance = model.createInstance(); + } else if (!shouldShow && instance != null) { + instance.delete(); + instance = null; + } + + return this; + } + + public Optional get() { + return Optional.ofNullable(instance); + } + + public void delete() { + if (instance != null) instance.delete(); + } + + @FunctionalInterface + public interface Condition { + boolean shouldShow(); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/InstanceGroup.java b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/InstanceGroup.java new file mode 100644 index 000000000..15c5871fe --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/InstanceGroup.java @@ -0,0 +1,83 @@ +package com.simibubi.create.foundation.render.backend.instancing.util; + +import net.minecraft.util.NonNullList; + +import java.util.*; +import com.simibubi.create.foundation.render.backend.instancing.InstanceData; +import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; + +public class InstanceGroup extends AbstractCollection { + + final InstancedModel model; + final List backing; + + public InstanceGroup(InstancedModel model) { + this.model = model; + + this.backing = new ArrayList<>(); + } + + public InstanceGroup(InstancedModel model, int size) { + this.model = model; + + this.backing = new ArrayList<>(size); + + for (int i = 0; i < size; i++) { + addInstance(); + } + } + + /** + * + * @param count + * @return True if the number of elements changed. + */ + public boolean resize(int count) { + int size = size(); + if (count == size) return false; + + if (count <= 0) { + clear(); + return size > 0; + } + + if (count > size) { + for (int i = size; i < count; i++) { + addInstance(); + } + } else { + List unnecessary = backing.subList(count, size); + unnecessary.forEach(InstanceData::delete); + unnecessary.clear(); + } + + return true; + } + + public InstanceData addInstance() { + D instance = model.createInstance(); + backing.add(instance); + + return instance; + } + + public D get(int index) { + return backing.get(index); + } + + @Override + public Iterator iterator() { + return backing.iterator(); + } + + @Override + public int size() { + return backing.size(); + } + + @Override + public void clear() { + backing.forEach(InstanceData::delete); + backing.clear(); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/SelectInstance.java b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/SelectInstance.java new file mode 100644 index 000000000..217b7666f --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/SelectInstance.java @@ -0,0 +1,59 @@ +package com.simibubi.create.foundation.render.backend.instancing.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; +import com.simibubi.create.foundation.render.backend.instancing.InstanceData; +import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; + +public class SelectInstance { + + final List> models; + + ModelSelector selector; + + private int last = -1; + @Nullable + private D current; + + public SelectInstance(ModelSelector selector) { + this.models = new ArrayList<>(); + this.selector = selector; + } + + public SelectInstance addModel(InstancedModel model) { + models.add(model); + return this; + } + + public SelectInstance update() { + int i = selector.modelIndexToShow(); + + if (i < 0 || i >= models.size()) { + if (current != null) { + current.delete(); + current = null; + } + } else if (i != last) { + if (current != null) current.delete(); + + current = models.get(i).createInstance(); + } + + last = i; + return this; + } + + public Optional get() { + return Optional.ofNullable(current); + } + + public void delete() { + if (current != null) current.delete(); + } + + public interface ModelSelector { + int modelIndexToShow(); + } +} From eb8e6107431cea14a1ff5466ef369fc24059ceae Mon Sep 17 00:00:00 2001 From: Hanqnero Date: Sun, 4 Apr 2021 22:46:13 +0500 Subject: [PATCH 02/10] Update ru_ru.json Added some missing Ru Localization 102 added in total --- .../assets/create/lang/unfinished/ru_ru.json | 210 +++++++++--------- 1 file changed, 105 insertions(+), 105 deletions(-) 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 8223c1406..faa1e446c 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: 621", + "_": "Missing Localizations: 519", "_": "->------------------------] Game Elements [------------------------<-", @@ -370,13 +370,13 @@ "block.create.sequenced_gearshift": "Последовательный переключатель передач", "block.create.shadow_steel_casing": "Теневой корпус", "block.create.shaft": "Вал", - "block.create.smart_chute": "UNLOCALIZED: Smart Chute", + "block.create.smart_chute": "Умный желоб", "block.create.smart_fluid_pipe": "Умная жидкостная труба", "block.create.speedometer": "Спидометр", "block.create.spout": "Дозатор", "block.create.spruce_window": "Еловое окно", "block.create.spruce_window_pane": "Панель из елового окна", - "block.create.sticker": "UNLOCALIZED: Sticker", + "block.create.sticker": "Блок-липучка", "block.create.sticky_mechanical_piston": "Липкий механический поршень", "block.create.stockpile_switch": "Настраиваемый компаратор", "block.create.stressometer": "Динамометр", @@ -396,7 +396,7 @@ "block.create.weathered_limestone_cobblestone_stairs": "Ступени из известняк-булыжника", "block.create.weathered_limestone_cobblestone_wall": "Стена из известняк-булыжника", "block.create.weathered_limestone_pillar": "Колонна из выветренного известняка", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", + "block.create.weighted_ejector": "Взвешенный подбрасыватель", "block.create.white_sail": "Белый парус", "block.create.white_seat": "Белое сиденье", "block.create.white_valve_handle": "Белый ручной вентиль", @@ -431,7 +431,7 @@ "item.create.builders_tea": "Чай Строителя", "item.create.chest_minecart_contraption": "Сундуко-вагонеточная штуковина", "item.create.chocolate_bucket": "Ведро шоколада", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", + "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", "item.create.chromatic_compound": "Хроматический компаунд", "item.create.cinder_flour": "Незераковая пыль", "item.create.copper_ingot": "Медный слиток", @@ -465,7 +465,7 @@ "item.create.handheld_blockzapper": "Ручная блоковая пушка", "item.create.handheld_worldshaper": "Ручной редактор мира", "item.create.honey_bucket": "Ведро мёда", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", + "item.create.honeyed_apple": "Яблоко в меду", "item.create.integrated_circuit": "Интегральная схема", "item.create.iron_sheet": "Железный лист", "item.create.lapis_sheet": "Лазуритовый лист", @@ -482,7 +482,7 @@ "item.create.schematic_and_quill": "Схематика и перо", "item.create.shadow_steel": "Призрачная сталь", "item.create.super_glue": "Супер-клей", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", + "item.create.sweet_roll": "Сладкий рулет", "item.create.tree_fertilizer": "Удобрение для деревьев", "item.create.vertical_gearbox": "Вертикальная коробка передач", "item.create.wand_of_symmetry": "Жезл симметрии", @@ -690,7 +690,7 @@ "create.recipe.mechanical_crafting": "Механическое создание", "create.recipe.automatic_shaped": "Автоматическая форменная сборка", "create.recipe.block_cutting": "Резка блока", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", + "create.recipe.wood_cutting": "UNLOCALIZED: Резка дерева", "create.recipe.blockzapper_upgrade": "Ручная блоковая пушка", "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", "create.recipe.mystery_conversion": "Хроматический метаморфоз", @@ -829,15 +829,15 @@ "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", "create.gui.goggles.at_current_speed": "На текущей скорости", "create.gui.goggles.pole_length": "Длина поршня", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.goggles.fluid_container": "Информация о жидкостном контейнере:", + "create.gui.goggles.fluid_container.capacity": "Ёмкость: ", + "create.gui.assembly.exception": "Невозможно собрать эту штуковину:", + "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s,%2$s,%3$s] не был в загруженном чанке", + "create.gui.assembly.exception.structureTooLarge": "Штуковина состоит из слишком большого количества Блоков.\nТекущий максимум: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много Удлинителей прикреплено к этому Поршню.\nThe configured maximum is: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Поршню нехватает Удлинителей", + "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусопободных блоков: %1$s\nМинимум из %2$s необходим", "create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.speedometer.title": "Скорость вращения", "create.gui.stressometer.title": "Сетевой момент", @@ -854,19 +854,19 @@ "create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%", "create.gui.sequenced_gearshift.title": "Последовательное переключение передач", "create.gui.sequenced_gearshift.instruction": "Инструкция", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Повернуть на угол", "create.gui.sequenced_gearshift.instruction.turn_angle": "Повернуть", "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Угол", "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Расстояние", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Временная задержка", + "create.gui.sequenced_gearshift.instruction.delay": "Задержка", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Длительность", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Конец", "create.gui.sequenced_gearshift.instruction.end": "Конец", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового Импульса Редстоун Сигнала", + "create.gui.sequenced_gearshift.instruction.await": "Ожидать", "create.gui.sequenced_gearshift.speed": "Скорость, Направление", "create.gui.sequenced_gearshift.speed.forward": "Скорость ввода, вперед", "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперед", @@ -1024,10 +1024,10 @@ "create.item_attributes.added_by.inverted": "не был добавлен %1$s", "create.item_attributes.has_enchant": "зачарован на %1$s", "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", + "create.item_attributes.color": "Покрашено в %1$s", + "create.item_attributes.color.inverted": "Не покрашено в %1$s", + "create.item_attributes.max_enchanted": "Зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted.inverted": "Не зачаровано за максимальный уровень", "create.item_attributes.has_fluid": "содержит %1$s", "create.item_attributes.has_fluid.inverted": "не содержит %1$s", "create.item_attributes.has_name": "имеет нестандартное имя %1$s", @@ -1063,8 +1063,8 @@ "create.gui.attribute_filter.deny_list.description": "Предметы проходят, если они НЕ имеют ни одного из выбранных атрибутов.", "create.gui.attribute_filter.add_reference_item": "Добавить предмет", - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", + "create.tooltip.holdForDescription": "Удерживайте [%1$s] для Сводки", + "create.tooltip.holdForControls": "Удерживайте [%1$s] для Управления", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "Требование к скорости: %1$s", @@ -1088,11 +1088,11 @@ "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов).", "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", + "create.weighted_ejector.target_set": "Цель выбрана", + "create.weighted_ejector.target_not_valid": "Побрасывает до близлежащего блока (Неподходящая Цель)", + "create.weighted_ejector.no_target": "Побрасывает до близлежащего блока (Цель не была Выбрана)", + "create.weighted_ejector.targeting": "Побрасывает до [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Размер Подбрасываемого Стака", "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", @@ -1116,7 +1116,7 @@ "create.tooltip.chute.fans_push_down": "Вентилятор толкает сверху", "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", - "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", + "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", "create.hint.hose_pulley.title": "Безграничное снабжение", "create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.", @@ -1193,8 +1193,8 @@ "block.create.fluid_pipe.tooltip.summary": "Используется для транспортировки _жидкостей_. Требует _Механическую помпу_ для движения _жидкости_.", "block.create.fluid_pipe.tooltip.condition1": "Транспортировка жидкости", "block.create.fluid_pipe.tooltip.behaviour1": "Может соединяться с _жидкостными контейнерами_, такими как _бак_ или _чаша_. Открытые части _трубы_ могут собирать или размещать блоки жидкости в мире. Опасайтесь протечек!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", + "block.create.fluid_pipe.tooltip.condition2": "ПКМ _Ключом_", + "block.create.fluid_pipe.tooltip.behaviour2": "Устанавливает окно на трубе если возможно", "block.create.hose_pulley.tooltip": "HOSE PULLEY", "block.create.hose_pulley.tooltip.summary": "Используется для _размещения_ или _удаления_ больших _жидкостных резервуаров_ в мире.", @@ -1329,8 +1329,8 @@ "block.create.schematicannon.tooltip": "SCHEMATICANNON", "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", + "block.create.schematicannon.tooltip.condition1": "ПКМ", + "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схематики в _пустые_ _схематики_.", @@ -1343,8 +1343,8 @@ "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также воздействию момента и мощности отдельных компонентов.", "item.create.goggles.tooltip.condition2": "При взгляде на датчик", "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или моменте сети, к которой подключён датчик.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", + "item.create.goggles.tooltip.condition3": "При взгляде на жидкостные контейнеры", + "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и сколько в ней хранится _Жидкостей_.", "item.create.wrench.tooltip": "WRENCH", "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", @@ -1381,8 +1381,8 @@ "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", "block.create.adjustable_crate.tooltip.summary": "Этот контейнер для хранения позволяет вручную контролировать его емкость. Он может вместить до 16 стэков любого предмета. Поддерживает компараторы.", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", + "block.create.adjustable_crate.tooltip.condition1": "ПКМ", + "block.create.adjustable_crate.tooltip.behaviour1": "Открывает _Интерфейс_.", "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", "block.create.creative_crate.tooltip.summary": "Этот _контейнер_ для _хранения_ позволяющий _бесконечную_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалу.", @@ -1428,70 +1428,70 @@ "_": "->------------------------] Ponder Content [------------------------<-", - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", + "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для Размышления", + "create.ponder.subject": "Субъект этой сцены", + "create.ponder.pondering": "Размышляем о...", + "create.ponder.identify_mode": "Режим Идентификации включён.\nУбрать паузу: [%1$s]", + "create.ponder.associated": "Связанные статьи", + "create.ponder.close": "Закрыть", + "create.ponder.identify": "Определить", + "create.ponder.next": "Следующая сцена", + "create.ponder.previous": "Предыдущая сцена", + "create.ponder.replay": "Воспроизвести снова", + "create.ponder.think_back": "Подумать о предыдущем", + "create.ponder.slow_text": "Удобное чтение", + "create.ponder.shared.movement_anchors": "С помощью Суперклея или Шасси, более крупные структуры могут быть сдивинуты.", + "create.ponder.shared.rpm32": "32 об./мин.", + "create.ponder.shared.sneak_and": "Красться +", + "create.ponder.shared.storage_on_contraption": "Присоединённые к Штуковине инвентари будут подбирать вещи автоматически", + "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Ключом", + "create.ponder.shared.rpm8": "8 об./мин.", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", + "create.ponder.shared.rpm16": "16 об./мин.", + "create.ponder.tag.kinetic_sources": "Кинетические источники", + "create.ponder.tag.kinetic_sources.description": "Компоненты, генерирующие Силу Вращения", "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", + "create.ponder.tag.contraption_actor.description": "Компоненты, проявляющие особое поведение когда прикреплены к двигающейся штуковине", + "create.ponder.tag.arm_targets": "Цели для Механической Руки", + "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической Руки", + "create.ponder.tag.logistics": "Транспортировка Предметов", + "create.ponder.tag.logistics.description": "Компоненты, помогающие перемещать предметы", + "create.ponder.tag.movement_anchor": "Опоры Движения", + "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикрепленную структуру разными способами", + "create.ponder.tag.creative": "Творческий режим", + "create.ponder.tag.creative.description": "Компоненты обычычно недоступные в Режиме Выживания", + "create.ponder.tag.kinetic_relays": "Кинетические блоки", + "create.ponder.tag.kinetic_relays.description": "Компоненты, помогающие передавать Силу Вращения куда-нибудь", + "create.ponder.tag.windmill_sails": "Паруса для Мельничных Подшипников", + "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Мельницы. Каждый из этих блоков имеет одинаковую эффективность в деле.", + "create.ponder.tag.contraption_assembly": "Приспособления для присоединения блоков", + "create.ponder.tag.contraption_assembly.description": "Инструменты и Компоненты используемые для сборки структур передвигаемых как движущиеся Штуковины", + "create.ponder.tag.decoration": "Эстетика", + "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", + "create.ponder.tag.kinetic_appliances": "Кинетические Приборы", + "create.ponder.tag.kinetic_appliances.description": "Компоненты, использующие Силу Вращения", + "create.ponder.tag.redstone": "Логические Компоненты", + "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструироваением Редстоун Схем", + "create.ponder.tag.fluids": "Жидкостные Манипуляторы", + "create.ponder.tag.fluids.description": "Компоненты, помогающие перещать и использовать Жидкости", - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + "create.ponder.adjustable_pulse_repeater.header": "Управлении сигналами с помощью Регулируемого импульсного повторителя", + "create.ponder.adjustable_pulse_repeater.text_1": "Регулируемые импульсные повторители испускают короткий импульс с задержкой", + "create.ponder.adjustable_pulse_repeater.text_2": "Используя колесо мыши, время зарядки может быть настроено", + "create.ponder.adjustable_pulse_repeater.text_3": "Настраиваемая задержка может достигать 30 минут", - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", + "create.ponder.adjustable_repeater.header": "Управлении сигналами с помощью Регулируемого повторителя", + "create.ponder.adjustable_repeater.text_1": "Регулируемые повторители ведут себя схожим образом с обычными Повторителями", + "create.ponder.adjustable_repeater.text_2": "Они заряжаются за заданное время...", + "create.ponder.adjustable_repeater.text_3": "...и разряжаются за столько же времени", + "create.ponder.adjustable_repeater.text_4": "Используя колесо мыши, время зарядки может быть настроено", + "create.ponder.adjustable_repeater.text_5": "Настраиваемая задержка может достигать 30 минут", - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", + "create.ponder.analog_lever.header": "Управлении сигналами используя Аналоговый Рычаг", + "create.ponder.analog_lever.text_1": "Аналоговый Рычаг создан как компактный и точный источник Редстоун Сигнала", + "create.ponder.analog_lever.text_2": "ПКМ чтобы увеличить силу выходного сигнала", + "create.ponder.analog_lever.text_3": "ПКМ Крадучись чтобы уменьшить силу выходного сигнала снова", "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", @@ -2113,4 +2113,4 @@ "_": "Thank you for translating Create!" -} \ No newline at end of file +} From ab4c0100a4ca461a7e75dd0e5c3f274863b08103 Mon Sep 17 00:00:00 2001 From: Hanqnero Date: Sun, 4 Apr 2021 23:07:58 +0500 Subject: [PATCH 03/10] Fixed misspelling --- .../assets/create/lang/unfinished/ru_ru.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 faa1e446c..4d6e1f04c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -396,7 +396,7 @@ "block.create.weathered_limestone_cobblestone_stairs": "Ступени из известняк-булыжника", "block.create.weathered_limestone_cobblestone_wall": "Стена из известняк-булыжника", "block.create.weathered_limestone_pillar": "Колонна из выветренного известняка", - "block.create.weighted_ejector": "Взвешенный подбрасыватель", + "block.create.weighted_ejector": "Взвешенная катапульта", "block.create.white_sail": "Белый парус", "block.create.white_seat": "Белое сиденье", "block.create.white_valve_handle": "Белый ручной вентиль", @@ -1089,10 +1089,10 @@ "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", "create.weighted_ejector.target_set": "Цель выбрана", - "create.weighted_ejector.target_not_valid": "Побрасывает до близлежащего блока (Неподходящая Цель)", - "create.weighted_ejector.no_target": "Побрасывает до близлежащего блока (Цель не была Выбрана)", - "create.weighted_ejector.targeting": "Побрасывает до [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Размер Подбрасываемого Стака", + "create.weighted_ejector.target_not_valid": "Бросает до близлежащего блока (Неподходящая Цель)", + "create.weighted_ejector.no_target": "Бросает до близлежащего блока (Цель не была Выбрана)", + "create.weighted_ejector.targeting": "Бросает до [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Размер Бросаемого Стака", "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", @@ -1344,7 +1344,7 @@ "item.create.goggles.tooltip.condition2": "При взгляде на датчик", "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или моменте сети, к которой подключён датчик.", "item.create.goggles.tooltip.condition3": "При взгляде на жидкостные контейнеры", - "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и сколько в ней хранится _Жидкостей_.", + "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и о хранящейся в нём хранится _Жидкости_.", "item.create.wrench.tooltip": "WRENCH", "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", @@ -1474,7 +1474,7 @@ "create.ponder.tag.redstone": "Логические Компоненты", "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструироваением Редстоун Схем", "create.ponder.tag.fluids": "Жидкостные Манипуляторы", - "create.ponder.tag.fluids.description": "Компоненты, помогающие перещать и использовать Жидкости", + "create.ponder.tag.fluids.description": "Компоненты, помогающие перемещать и использовать Жидкости", "create.ponder.adjustable_pulse_repeater.header": "Управлении сигналами с помощью Регулируемого импульсного повторителя", "create.ponder.adjustable_pulse_repeater.text_1": "Регулируемые импульсные повторители испускают короткий импульс с задержкой", From 330777045e7c4e0a4c7209b0eb813ec959b80b6c Mon Sep 17 00:00:00 2001 From: Christof Date: Mon, 5 Apr 2021 16:15:00 +0200 Subject: [PATCH 04/10] Update de_de.json Added missing blocks and GUI stuff and fixed typos. Now only - Most advancements - A lot of block summaries/tooltips - All of the pondering - All attributes are missing --- .../resources/assets/create/lang/de_de.json | 260 +++++++++++++++++- 1 file changed, 253 insertions(+), 7 deletions(-) diff --git a/src/main/resources/assets/create/lang/de_de.json b/src/main/resources/assets/create/lang/de_de.json index 4309f1061..4d6f2792b 100644 --- a/src/main/resources/assets/create/lang/de_de.json +++ b/src/main/resources/assets/create/lang/de_de.json @@ -160,6 +160,8 @@ "block.create.gabbro_cobblestone_stairs": "Gabbrobruchstein", "block.create.gabbro_cobblestone_wall": "Gabbrobruchstein", "block.create.gabbro_pillar": "Gabbrosäule", + "block.create.gantry_carriage": "Portalkranwagen", + "block.create.gantry_shaft": "Portalkranachse", "block.create.gearbox": "Getriebe", "block.create.gearshift": "Gangschaltung", "block.create.glass_fluid_pipe": "Glasrohr", @@ -363,7 +365,7 @@ "block.create.scoria_cobblestone_wall": "Schlackenpflastermauer", "block.create.scoria_pillar": "Schlackensäule", "block.create.secondary_linear_chassis": "Sekundäres Schubgerüst", - "block.create.sequenced_gearshift": "Sequenzielles Gangschaltung", + "block.create.sequenced_gearshift": "Sequenzielle Gangschaltung", "block.create.shadow_steel_casing": "Schattengehäuse", "block.create.shaft": "Welle", "block.create.smart_chute": "Schlaue Rinne", @@ -372,7 +374,7 @@ "block.create.spout": "Ausguss", "block.create.spruce_window": "Fichtenfenster", "block.create.spruce_window_pane": "Fichtenfensterscheibe", - "block.create.sticker": "Aufkleber", + "block.create.sticker": "Ankleber", "block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben", "block.create.stockpile_switch": "Vorratssensor", "block.create.stressometer": "Stressometer", @@ -392,6 +394,7 @@ "block.create.weathered_limestone_cobblestone_stairs": "Verwitterte Kalksteinpflastertreppe", "block.create.weathered_limestone_cobblestone_wall": "Verwitterte Limestonepflastermauer", "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", + "block.create.weighted_ejector": "Gewichteter Werfer", "block.create.white_sail": "Weiße Segel", "block.create.white_seat": "Weißer Sitz", "block.create.white_valve_handle": "Weißer Ventilgriff", @@ -404,6 +407,7 @@ "block.create.zinc_ore": "Zinkerz", "entity.create.contraption": "Vorrichtung", + "entity.create.gantry_contraption": "Portalkran Vorrichtung", "entity.create.seat": "Sitz", "entity.create.stationary_contraption": "Stationärer Vorrichtung", "entity.create.super_glue": "Superkleber", @@ -508,7 +512,7 @@ "advancement.create.chute": "Abstürzen", "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", "advancement.create.upward_chute": "Luftentführung", - "advancement.create.upward_chute.desc": "Sieh ein geworfenes Item in eine propellerbetriebene Rinne fliegen.", + "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", "advancement.create.fan": "Mechanischer Luftbändiger", "advancement.create.fan.desc": "Reite den Luftstrom eines eingeschlossenen Propellers.", "advancement.create.extendo_grip": "Boioioing!", @@ -545,6 +549,23 @@ "create.recipe.heat_requirement.none": "Keine Hitze benötigt", "create.recipe.heat_requirement.heated": "Wenig Hitze benötigt", "create.recipe.heat_requirement.superheated": "Viel Hitze benötigt", + "create.recipe.fan_washing": "Sammelwaschen", + "create.recipe.fan_washing.fan": "Propeller hinter fließendem Wasser", + "create.recipe.fan_smoking": "Sammelräuchern", + "create.recipe.fan_smoking.fan": "Propeller hinter Feuer", + "create.recipe.fan_blasting": "Sammelschmelzen", + "create.recipe.fan_blasting.fan": "Propeller hinter Lava", + "create.recipe.automatic_shapeless": "Automatisiertes Formloses Bauen", + "create.recipe.automatic_brewing": "Automatisiertes Brauen", + "create.recipe.packing": "Komprimieren", + "create.recipe.automatic_packing": "Automatisiertes Packen", + "create.recipe.mechanical_crafting": "Mechanisches Bauen", + "create.recipe.automatic_shaped": "Automatisiertes Geformtes Bauen", + "create.recipe.block_cutting": "Schneiden von Blöcken", + "create.recipe.wood_cutting": "Schneiden von Holz", + "create.recipe.mystery_conversion": "Mysteriöse Konvertierung", + "create.recipe.spout_filling": "Befüllung per Ausguss", + "create.recipe.draining": "Gegenstandsablassung", "create.generic.range": "Reichweite", "create.generic.radius": "Radius", @@ -570,6 +591,8 @@ "create.action.discard": "Löschen", "create.keyinfo.toolmenu": "Werkzeugmenü", + "create.keyinfo.scrollup": "Simuliere Mausrad hoch (In der Welt)", + "create.keyinfo.scrolldown": "Simuliere Mausrad runter (In der Welt)", "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", @@ -614,17 +637,46 @@ "create.blockzapper.component.scope": "Fernrohr", "create.blockzapper.componentTier.none": "Nichts", "create.blockzapper.componentTier.brass": "Messing", + "create.blockzapper.componentTier.chromatic": "Chromatisch", "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", "create.blockzapper.empty": "Keine Blöcke übrig!", + "create.gui.terrainzapper.title": "Tragbarer Geländeformer", + "create.gui.terrainzapper.placement": "Platzierung", + "create.gui.terrainzapper.placement.merged": "Zusammengeführt", + "create.gui.terrainzapper.placement.attached": "Angefügt", + "create.gui.terrainzapper.placement.inserted": "Eingefügt", + "create.gui.terrainzapper.brush": "Pinsel", + "create.gui.terrainzapper.brush.cuboid": "Quader", + "create.gui.terrainzapper.brush.sphere": "Kugel", + "create.gui.terrainzapper.brush.cylinder": "Zylinder", + "create.gui.terrainzapper.tool": "Werkzeug", + "create.gui.terrainzapper.tool.fill": "Füllen", + "create.gui.terrainzapper.tool.place": "Platzieren", + "create.gui.terrainzapper.tool.replace": "Ersetzen", + "create.gui.terrainzapper.tool.clear": "Löschen", + "create.gui.terrainzapper.tool.overlay": "Überlagern", + "create.gui.terrainzapper.tool.flatten": "Abflachen", + + "create.terrainzapper.shiftRightClickToSet": "Shift-Rechts-Klick um eine Form auszuwählen", + "create.logistics.filter": "Filter", "create.logistics.recipe_filter": "Rezeptfilter", "create.logistics.fluid_filter": "Flüssigkeitsfilter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", + "create.logistics.filter.apply": "Filter angewendet auf %1$s.", + "create.logistics.filter.apply_click_again": "Filter angewendet auf %1$s, klicke nochmal um Menge zu kopieren.", + "create.logistics.filter.apply_count": "Extraktionsmenge auf Filter angewendet.", + "create.logistics.when_multiple_outputs_available": "Wenn mehrere Ausgaben verfügbar sind", + "create.gui.adjustable_crate.title": "Lagerraum", "create.gui.adjustable_crate.storageSpace": "Lagerraum", + "create.gui.stockpile_switch.title": "Vorratssensor", + "create.gui.stockpile_switch.invert_signal": "Invertiere Signal", + "create.gui.stockpile_switch.move_to_lower_at": "Gehe zu unterer Spur bei %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "Gehe zu oberer Spur bei %1$s%%", "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", @@ -634,6 +686,7 @@ "create.schematicAndQuill.title": "Bauplanname:", "create.schematicAndQuill.fallbackName": "Mein Bauplan", "create.schematicAndQuill.saved": "Gespeichert als %1$s", + "create.schematicAndQuill.convert": "Speichere und lade sofort hoch", "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", "create.schematic.position": "Position", @@ -686,6 +739,9 @@ "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", "create.gui.schematicTable.uploading": "Hochladen...", "create.gui.schematicTable.finished": "Hochgeladen!", + "create.gui.schematicTable.refresh": "Aktualisiere Dateien", + "create.gui.schematicTable.open_folder": "Öffne Ordner", + "create.gui.schematicannon.showOptions": "Zeige Drucker Einstellungen", "create.gui.schematicannon.title": "Bauplankanone", "create.gui.schematicannon.listPrinter": "Materiallistendruck", "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", @@ -705,6 +761,11 @@ "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.slot.gunpowder": "Füge Schwarzpulver hinzu um die Kanone zu betreiben", + "create.gui.schematicannon.slot.listPrinter": "Platziere hier Bücher um eine Checkliste für deinen Bauplan zu drucken", + "create.gui.schematicannon.slot.schematic": "Füge Bauplan hier hinzu. Stelle sicher dass er an einer spezifischen Position bereitgestellt wird.", + "create.materialChecklist": "Material Checkliste", + "create.materialChecklist.blocksNotLoaded": "* Haftungsausschluss *\n\nMaterialliste könnte inakkurat seit da es möglich ist dass releveante Chunks nicht geladen sind.", "create.schematicannon.status.idle": "Aus", "create.schematicannon.status.ready": "Bereit", @@ -724,11 +785,187 @@ "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", + "create.gui.filter.deny_list": "Verweigert-Liste", + "create.gui.filter.deny_list.description": "Gegenstände werden nur weitergegeben wenn sie NICHT mit einem der oben genannten übereinstimmen. Eine leere Verweigert-Liste akzeptiert alles.", + "create.gui.filter.allow_list": "Erlaubt-Liste", + "create.gui.filter.allow_list.description": "Gegenstände werden nur weitergegeben wenn sie mit einem der oben genannten übereinstimmen. Eine leere Erlaubt-Liste lehnt alles ab.", + "create.gui.filter.respect_data": "Respektiere Daten", + "create.gui.filter.respect_data.description": "Gegenstände stimmen nur überein wenn ihre Haltbarkeit, Verzauberungen, und andere Attribute ebenfalls passen.", + "create.gui.filter.ignore_data": "Ignoriere Daten", + "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", + + "create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben", + "create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein", + "create.minecart_coupling.no_loops": "Kupplungen können keine Schleife bilden", + "create.minecart_coupling.removed": "Alle Kupplungen wurden von der Lore entfernt", + "create.minecart_coupling.too_far": "Loren sind zu weit entfernt", + + "create.contraptions.movement_mode": "Bewegungsmodus", + "create.contraptions.movement_mode.move_place": "Platziere immer wenn gestoppt", + "create.contraptions.movement_mode.move_place_returned": "Platziere nur in Ausgangsposition", + "create.contraptions.movement_mode.move_never_place": "Platziere nur wenn Anker zerstört", + "create.contraptions.movement_mode.rotate_place": "Platziere immer wenn gestoppt", + "create.contraptions.movement_mode.rotate_place_returned": "Platziere nur nahe des Ausgangswinkels", + "create.contraptions.movement_mode.rotate_never_place": "Platziere nur wenn Anker zerstört", + "create.contraptions.cart_movement_mode": "Loren-Bewegungsmodus", + "create.contraptions.cart_movement_mode.rotate": "Zeige immer in Bewegungsrichtung", + "create.contraptions.cart_movement_mode.rotate_paused": "Pausiere Akteure beim drehen", + "create.contraptions.cart_movement_mode.rotation_locked": "Sperre Rotation", + "create.contraptions.windmill.rotation_direction": "Rotationsrichtung", + "create.contraptions.clockwork.clock_hands": "Uhrzeiger", + "create.contraptions.clockwork.hour_first": "Stundenzeiger zuerst", + "create.contraptions.clockwork.minute_first": "Minutenzeiger zuerst", + "create.contraptions.clockwork.hour_first_24": "24-Stunden-Zeiger zuerst", + + "create.gui.goggles.generator_stats": "Generator Statistik:", + "create.gui.goggles.kinetic_stats": "Kinetische Statistik:", + "create.gui.goggles.at_current_speed": "bei derzeitiger Geschwindigkeit", + "create.gui.goggles.pole_length": "Stab Länge:", + "create.gui.goggles.fluid_container": "Flüssigkeitstank Info:", + "create.gui.goggles.fluid_container.capacity": "Kapazität:", + + "create.gui.assembly.exception": "Diese Vorrichtung konnte nicht gebaut werden:", + "create.gui.assembly.exception.unmovableBlock": "Unbeweglicher Block (%4$s) bei [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Der Block bei [%1$s,%2$s,%3$s] war nicht in einem geladenen Chunk", + "create.gui.assembly.exception.structureTooLarge": "In dieser Vorrichtung sind zu viele Blöcke enthalten.\nDas konfigurierte Maximum ist: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Es sind zu viele Pleuelverlängerungen an diesen Kolben angebracht.\nDas konfigurierte Maximum ist: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Dem Kolben fehlen ein paar Pleuelverlängerungen", + "create.gui.assembly.exception.not_enough_sails": "Angebrachte Struktur enthält nicht genug segelähnliche Blöcke: %1$s\nEin Minimum von %2$s ist erforderlich", + + "create.gui.gauge.info_header": "Messgerät Information:", + + "create.gui.speedometer.title": "Rotationsgeschwindigkeit", + "create.gui.stressometer.title": "Netzwerkbelastung", + "create.gui.stressometer.capacity": "Verbleibende Kapazität", + "create.gui.stressometer.overstressed": "Überbelastet", + "create.gui.stressometer.no_rotation": "Keine Rotation", + + "create.gui.contraptions.not_fast_enough": "Wie es scheint dreht sich dieses %1$s _nicht_ _schnell_ _genug_.", + "create.gui.contraptions.network_overstressed": "Wie es scheint ist diese Vorrichtung _überbelastet_. Füge mehr Quellen hinzu oder _verlangsame_ die Komponenten mit hoher _Belastungsauswirkung_.", + + "create.gui.sequenced_gearshift.title": "Sequenzielle Gangschaltung", + "create.gui.sequenced_gearshift.instruction": "Befehl", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Drehe um Winkel", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Drehe", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Winkel", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Drehe um Kolben/Seilrolle/Portalkran zu bewegen", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Kolben", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanz", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Timed Delay", + "create.gui.sequenced_gearshift.instruction.delay": "Verzögerung", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Dauer", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Beende", + "create.gui.sequenced_gearshift.instruction.end": "Beende", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Warte auf neues Redstone Signal", + "create.gui.sequenced_gearshift.instruction.await": "Warte", + "create.gui.sequenced_gearshift.speed": "Geschwindigkeit, Richtung", + "create.gui.sequenced_gearshift.speed.forward": "Eingangsgeschwindigkeit, Vorwärts", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doppelte Geschwindigkeit, Vorwärts", + "create.gui.sequenced_gearshift.speed.back": "Eingangsgeschwindigkeit, Umgekehrt", + "create.gui.sequenced_gearshift.speed.back_fast": "Doppelte Geschwindigkeit, Umgekehrt", + "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.holdForDescription": "Halte [%1$s] für eine Zusammenfassung", + "create.tooltip.holdForControls": "Halte [%1$s] für die Steuerung", + "create.tooltip.speedRequirement": "Geschwindigkeitsanforderung: %1$s", + "create.tooltip.speedRequirement.none": "Keine", + "create.tooltip.speedRequirement.medium": "Moderat", + "create.tooltip.speedRequirement.high": "Schnell", + "create.tooltip.stressImpact": "Kinetische Belastungsauswirkung: %1$s", + "create.tooltip.stressImpact.low": "Niedrig", + "create.tooltip.stressImpact.medium": "Moderat", + "create.tooltip.stressImpact.high": "Hoch", + "create.tooltip.stressImpact.overstressed": "Überbelastet", + "create.tooltip.capacityProvided": "Kinetische Belastungskapazität: %1$s", + "create.tooltip.capacityProvided.low": "Niedrig", + "create.tooltip.capacityProvided.medium": "Mittel", + "create.tooltip.capacityProvided.high": "Groß", + "create.tooltip.generationSpeed": "Generiert mit %1$s %2$s", + "create.tooltip.analogStrength": "Analoge Stärke: %1$s/15", + "create.tooltip.chute.header": "Rinnen Information", + "create.tooltip.chute.items_move_down": "Gegenstände bewegen sich nach unten", + "create.tooltip.chute.items_move_up": "Gegenstände bewegen sich nach oben", + "create.tooltip.chute.no_fans_attached": "Keine angeschlossenen Propeller", + "create.tooltip.chute.fans_push_up": "Propeller schieben von unterhalb", + "create.tooltip.chute.fans_push_down": "Propeller schieben von oberhalb", + "create.tooltip.chute.fans_pull_up": "Propeller ziehen von oberhalb", + "create.tooltip.chute.fans_pull_down": "Propeller ziehen von unterhalb", + "create.tooltip.chute.contains": "Enthält: %1$s x%2$s", + + "create.mechanical_arm.extract_from": "Nehme Gegenstände von %1$s", + "create.mechanical_arm.deposit_to": "Lege Gegenstände in %1$s", + "create.mechanical_arm.summary": "Mechanischer Arm hat %1$s Eingabe(n) und %2$s Ausgabe(n).", + "create.mechanical_arm.points_outside_range": "%1$s ausgewählte(r) Interaktionspunkt(e) entfernt aufgrund Reichweitenlimitierungen.", + "create.mechanical_arm.selection_mode.round_robin": "Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "Gezwungener Round Robin", + "create.mechanical_arm.selection_mode.prefer_first": "Bevorzuge erstes Ziel", + + "create.weighted_ejector.target_set": "Ziel ausgewählt", + "create.weighted_ejector.target_not_valid": "Werfe auf angrenzenden Block (Ziel war nicht gültig)", + "create.weighted_ejector.no_target": "Werfe auf angrenzenden Block (Kein Ziel war ausgewählt)", + "create.weighted_ejector.targeting": "Werfe nach [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Geworfene Stapelgröße", + + "create.tunnel.selection_mode.split": "Aufteilung", + "create.tunnel.selection_mode.forced_split": "Gezwungene Aufteilung", + "create.tunnel.selection_mode.round_robin": "Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "Gezwungener Round Robin", + "create.tunnel.selection_mode.prefer_nearest": "Bevorzuge Naheliegensten", + "create.tunnel.selection_mode.randomize": "Zufällig", + "create.tunnel.selection_mode.synchronize": "Synchronisiere Eingaben", + + "create.hint.hose_pulley.title": "Endlose Versorgung", + "create.hint.hose_pulley": "Das angewählte Gewässer wird als unendlich betrachtet.", + "create.hint.mechanical_arm_no_targets.title": "Keine Ziele", + "create.hint.mechanical_arm_no_targets": "Es schein dieser _Mechanische_ _Arm_ hat keine _Ziele_. Wähle Riemen, Depots oder Trichter und andere Blöcke indem du sie _Rechts-Klickst_ während du den _Mechanischen_ _Arm_ in deiner _Hand_ _hälst_.", + "create.hint.empty_bearing.title": "Aktualisiere Lager", + "create.hint.empty_bearing": "_Rechts-Klicke_ das Lager mit einer _leeren_ _Hand_ um die Struktur die du davor gebaut hast _anzubringen_.", + "create.hint.full_deployer.title": "Einsatzgerät Gegenstand Überlauf", + "create.hint.full_deployer": "Es scheint, dieses _Einsatzgerät_ enthält _überflüssige_ _Gegenstände_ die _extrahiert_ werden müssen. Nutze _Trichter_ oder anderes um ihn von seinem Überfluss zu befreien.", + + "create.gui.config.overlay1": "Hi :)", + "create.gui.config.overlay2": "Dies ist ein Beispiel Overlay", + "create.gui.config.overlay3": "Klicke oder ziehe mit deiner Maus", + "create.gui.config.overlay4": "um diese Vorschau zu bewegen", + "create.gui.config.overlay5": "Drücke ESC um diesen Bildschirm zu verlassen", + "create.gui.config.overlay6": "und die neue Position zu speichern", + "create.gui.config.overlay7": "Benutze /create overlay reset", + "create.gui.config.overlay8": "um die Standardposition zurückzusetzen", + + "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", + "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", + "create.gui.attribute_filter.add_attribute": "Füge Attribut zur Liste hinzu", + "create.gui.attribute_filter.add_inverted_attribute": "Füge gegenteiliges Attribut zur Liste hinzu", + "create.gui.attribute_filter.allow_list_disjunctive": "Erlaubt-Liste (Irgendeins)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Gegenstände werden weitergereicht wenn sie irgendeins der ausgewählten Attribute haben.", + "create.gui.attribute_filter.allow_list_conjunctive": "Erlaubt-Liste (Alle)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Gegenstände werden nur weitergereicht wenn sie ALLE der ausgewählten Attribute haben.", + "create.gui.attribute_filter.deny_list": "Verweigert-Liste", + "create.gui.attribute_filter.deny_list.description": "Gegenstände werden nur weitergereicht wenn sie KEINES der ausgewählten Attribute haben.", + "create.gui.attribute_filter.add_reference_item": "Füge Referenz-Gegenstand hinzu", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server Tick ist derzeitig um %s ms verlangsamt :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server Tick ist jetzt um %s ms verlangsamt >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server Tick ist jetzt wieder auf normaler Geschwindigkeit :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: Benutze /killtps stop um den Server Tick wieder auf normale Geschwindigkeit zu bringen", + "create.command.killTPSCommand.status.usage.1": "[Create]: Benutze /killtps start um den Server Tick künstlich zu verlangsamen", + "create.command.killTPSCommand.argument.tickTime": "tickTime", + + "create.subtitle.schematicannon_launch_block": "Bauplankanone schießt", + "create.subtitle.schematicannon_finish": "Bauplankanone endet", + "create.subtitle.slime_added": "Schleim matscht", + "create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert", + "create.subtitle.mechanical_press_item_break": "Metall klonkt", + "create.subtitle.blockzapper_place": "Blöcke zappen an Ort und Stelle", + "create.subtitle.blockzapper_confirm": "Bestätigendes Ding", + "create.subtitle.blockzapper_deny": "Ablehnendes Boop", + "create.subtitle.block_funnel_eat": "Trichter MAMPFT", + "create.subtitle.blaze_munch": "Lohe kaut glücklich", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -926,15 +1163,15 @@ "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": "LAGERRAUM", "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": "Wenn Item in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Items zur Verfügung stellen. In diese Kiste _eingefügte_ Items werden _entsorgt_.", + "block.create.creative_crate.tooltip.condition1": "Wenn Gegenstand in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Gegenstands zur Verfügung stellen. In diese Kiste _eingefügte_ Gegenstände werden _entsorgt_.", "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.", @@ -945,6 +1182,15 @@ "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "Work in progress!", - "_": "Thank you for translating Create!" + "create.tooltip.randomWipDescription0": "Bitte halte dies fern von Kindern", + "create.tooltip.randomWipDescription1": "Ein Babypanda stirbt jedes mal wenn du diesen Gegenstand benutzt. Jedes. Mal.", + "create.tooltip.randomWipDescription2": "Benutzung auf eigene Gefahr.", + "create.tooltip.randomWipDescription3": "Dies ist nicht der Gegenstand den du suchst, *wackelt mit Finger* bitte geht auseinander.", + "create.tooltip.randomWipDescription4": "Dieser Gegenstand wird sich in 10 Sekunden selbst zerstören. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Glaub mir, es ist nutzlos.", + "create.tooltip.randomWipDescription6": "Bei der Verwendung dieses Gegenstands stimmst du hiermit unserem Haftungsausschluss zu und nimmst dessen Bedingungen an.", + "create.tooltip.randomWipDescription7": "Dieser ist nicht für dich. Wie wäre es mit dem?", + "create.tooltip.randomWipDescription8": "Benutze es und bereue deine Entscheidung umgehend.", + "_": "Thank you for translating Create!" } \ No newline at end of file From cbabd943fd23b6644ada358ec1b746ec916b4882 Mon Sep 17 00:00:00 2001 From: Christof Date: Mon, 5 Apr 2021 16:39:03 +0200 Subject: [PATCH 05/10] Typo Whoops --- src/main/resources/assets/create/lang/de_de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/create/lang/de_de.json b/src/main/resources/assets/create/lang/de_de.json index 4d6f2792b..7ed344946 100644 --- a/src/main/resources/assets/create/lang/de_de.json +++ b/src/main/resources/assets/create/lang/de_de.json @@ -409,7 +409,7 @@ "entity.create.contraption": "Vorrichtung", "entity.create.gantry_contraption": "Portalkran Vorrichtung", "entity.create.seat": "Sitz", - "entity.create.stationary_contraption": "Stationärer Vorrichtung", + "entity.create.stationary_contraption": "Stationäre Vorrichtung", "entity.create.super_glue": "Superkleber", "fluid.create.milk": "Milch", From 7a1445f00ac99e8ca075f16d4c798867f78bbb5e Mon Sep 17 00:00:00 2001 From: JozsefA Date: Sat, 3 Apr 2021 18:33:47 -0700 Subject: [PATCH 06/10] Fix nullpointer with starlight --- .../utility/worldWrappers/WrappedChunkProvider.java | 9 +-------- .../utility/worldWrappers/chunk/WrappedChunk.java | 10 +++++----- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java index f6a22d102..f589c16cc 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java @@ -56,14 +56,7 @@ public class WrappedChunkProvider extends AbstractChunkProvider { public WrappedChunk getChunk(int x, int z) { long pos = ChunkPos.asLong(x, z); - WrappedChunk chunk = chunks.get(pos); - - if (chunk == null) { - chunk = new WrappedChunk(world, x, z); - chunks.put(pos, chunk); - } - - return chunk; + return chunks.computeIfAbsent(pos, $ -> new WrappedChunk(world, x, z)); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java index c6904537d..f1c672e6c 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java @@ -71,6 +71,11 @@ public class WrappedChunk implements IChunk { return sections; } + @Override + public ChunkStatus getStatus() { + return ChunkStatus.LIGHT; + } + @Nullable @Override public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { @@ -148,11 +153,6 @@ public class WrappedChunk implements IChunk { return false; } - @Override - public ChunkStatus getStatus() { - return null; - } - @Override public void removeTileEntity(BlockPos p_177425_1_) { From 40bdbc70487fcb8eaf900d146d791cb9ef00442e Mon Sep 17 00:00:00 2001 From: JozsefA Date: Tue, 6 Apr 2021 16:46:24 -0700 Subject: [PATCH 07/10] Instanced rope pulleys --- .../pulley/PulleyInstance.java | 22 ++++++++++++------- .../instancing/util/ConditionalInstance.java | 4 ++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java index e32888ee5..8253ba25d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java @@ -66,13 +66,16 @@ public class PulleyInstance extends ShaftInstance implements IDynamicInstance, L coil.setRotation(rotationAxis.getDegreesQuaternion(offset * 180)); magnet.update().get().ifPresent(data -> - data.setPosition(getInstancePosition()) - .nudge(0, -offset, 0) - .setBlockLight(bLight[bLight.length - 1]) - .setSkyLight(sLight[sLight.length - 1]) + { + int index = Math.max(0, MathHelper.floor(offset)); + data.setPosition(getInstancePosition()) + .nudge(0, -offset, 0) + .setBlockLight(bLight[index]) + .setSkyLight(sLight[index]); + } ); - halfRope.check().get().ifPresent(rope -> { + halfRope.update().get().ifPresent(rope -> { float f = offset % 1; float halfRopeNudge = f > .75f ? f - 1 : f; @@ -82,8 +85,8 @@ public class PulleyInstance extends ShaftInstance implements IDynamicInstance, L .setSkyLight(sLight[0]); }); + resizeRope(); if (isRunning()) { - resizeRope(); int size = rope.size(); for (int i = 0; i < size; i++) { rope.get(i) @@ -142,9 +145,12 @@ public class PulleyInstance extends ShaftInstance implements IDynamicInstance, L } protected void resizeRope() { - if (rope.resize(getNeededRopeCount())) { + int neededRopeCount = getNeededRopeCount(); + rope.resize(neededRopeCount); - int length = MathHelper.ceil(offset); + int length = MathHelper.ceil(offset); + + if (volume == null || bLight.length < length + 1) { volume = GridAlignedBB.from(pos.down(length), pos); volume.fixMinMax(); diff --git a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java index 94b891039..462bc6b38 100644 --- a/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java +++ b/src/main/java/com/simibubi/create/foundation/render/backend/instancing/util/ConditionalInstance.java @@ -17,7 +17,7 @@ public class ConditionalInstance { this.model = model; this.condition = condition; - check(); + update(); } public ConditionalInstance setCondition(Condition condition) { @@ -25,7 +25,7 @@ public class ConditionalInstance { return this; } - public ConditionalInstance check() { + public ConditionalInstance update() { boolean shouldShow = condition.shouldShow(); if (shouldShow && instance == null) { instance = model.createInstance(); From 4b49763e0caac7a38775c97f7190c9f50fc12500 Mon Sep 17 00:00:00 2001 From: JozsefA Date: Tue, 6 Apr 2021 16:52:34 -0700 Subject: [PATCH 08/10] Got a weird crash profiling the slideshow machine - Seems to be a race condition, try/catch should be good enough --- .../components/crafter/CrafterCTBehaviour.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java index fad0ba50c..4776b5b8c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java @@ -31,9 +31,13 @@ public class CrafterCTBehaviour extends ConnectedTextureBehaviour { return false; if (input1.data.isEmpty() || input2.data.isEmpty()) return false; - if (pos.add(input1.data.get(0)) - .equals(otherPos.add(input2.data.get(0)))) - return true; + try { + if (pos.add(input1.data.get(0)) + .equals(otherPos.add(input2.data.get(0)))) + return true; + } catch (IndexOutOfBoundsException e) { + // race condition. data somehow becomes empty between the last 2 if statements + } return false; } From f2b064fa497bd8170c01eaf507e43800488b119d Mon Sep 17 00:00:00 2001 From: JozsefA Date: Tue, 6 Apr 2021 23:17:16 -0700 Subject: [PATCH 09/10] Instanced rope pulleys - The "magnet" texture is broken --- .../com/simibubi/create/AllTileEntities.java | 9 ++-- ...tance.java => AbstractPulleyInstance.java} | 53 +++++++------------ .../pulley/HosePulleyInstance.java | 45 ++++++++++++++++ .../pulley/RopePulleyInstance.java | 49 +++++++++++++++++ 4 files changed, 116 insertions(+), 40 deletions(-) rename src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/{PulleyInstance.java => AbstractPulleyInstance.java} (77%) create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 8f2ecaa00..e090e03a3 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -1,6 +1,5 @@ package com.simibubi.create; -import com.simibubi.create.content.contraptions.base.BackHalfShaftInstance; import com.simibubi.create.content.contraptions.base.HalfShaftInstance; import com.simibubi.create.content.contraptions.base.HorizontalHalfShaftInstance; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; @@ -61,9 +60,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.gan import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.*; import com.simibubi.create.content.contraptions.components.turntable.TurntableTileEntity; import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelTileEntity; import com.simibubi.create.content.contraptions.fluids.PumpCogInstance; @@ -312,7 +309,7 @@ public class AllTileEntities { public static final TileEntityEntry HOSE_PULLEY = Create.registrate() .tileEntity("hose_pulley", HosePulleyTileEntity::new) - .instance(() -> ShaftInstance::new) + .instance(() -> HosePulleyInstance::new) .validBlocks(AllBlocks.HOSE_PULLEY) .renderer(() -> HosePulleyRenderer::new) .register(); @@ -399,7 +396,7 @@ public class AllTileEntities { public static final TileEntityEntry ROPE_PULLEY = Create.registrate() .tileEntity("rope_pulley", PulleyTileEntity::new) - .instance(() -> PulleyInstance::new) + .instance(() -> RopePulleyInstance::new) .validBlocks(AllBlocks.ROPE_PULLEY) .renderer(() -> PulleyRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java similarity index 77% rename from src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java rename to src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java index 8253ba25d..ed449c4a7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java @@ -10,6 +10,7 @@ import net.minecraft.world.LightType; import java.util.Arrays; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; import com.simibubi.create.foundation.render.backend.core.OrientedData; import com.simibubi.create.foundation.render.backend.instancing.*; @@ -21,28 +22,26 @@ import com.simibubi.create.foundation.render.backend.light.LightUpdateListener; import com.simibubi.create.foundation.render.backend.light.LightUpdater; import com.simibubi.create.foundation.utility.AnimationTickHolder; -public class PulleyInstance extends ShaftInstance implements IDynamicInstance, LightUpdateListener { +public abstract class AbstractPulleyInstance extends ShaftInstance implements IDynamicInstance, LightUpdateListener { - final PulleyTileEntity tile = (PulleyTileEntity) super.tile; final OrientedData coil; final SelectInstance magnet; final InstanceGroup rope; final ConditionalInstance halfRope; - private float offset; - private final Direction rotatingAbout; - private final Vector3f rotationAxis; + protected float offset; + protected final Direction rotatingAbout; + protected final Vector3f rotationAxis; private byte[] bLight = new byte[1]; private byte[] sLight = new byte[1]; private GridAlignedBB volume; - public PulleyInstance(InstancedTileRenderer dispatcher, PulleyTileEntity tile) { + public AbstractPulleyInstance(InstancedTileRenderer dispatcher, KineticTileEntity tile) { super(dispatcher, tile); rotatingAbout = Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis); rotationAxis = rotatingAbout.getUnitVector(); - updateOffset(); coil = getCoilModel() .createInstance() @@ -53,17 +52,19 @@ public class PulleyInstance extends ShaftInstance implements IDynamicInstance, L .addModel(getHalfMagnetModel()); rope = new InstanceGroup<>(getRopeModel()); - resizeRope(); - halfRope = new ConditionalInstance<>(getHalfRopeModel(), this::shouldRenderHalfRope); - - beginFrame(); } @Override public void beginFrame() { updateOffset(); + transformModels(); + } + + private void transformModels() { + resizeRope(); + coil.setRotation(rotationAxis.getDegreesQuaternion(offset * 180)); magnet.update().get().ifPresent(data -> { @@ -85,7 +86,6 @@ public class PulleyInstance extends ShaftInstance implements IDynamicInstance, L .setSkyLight(sLight[0]); }); - resizeRope(); if (isRunning()) { int size = rope.size(); for (int i = 0; i < size; i++) { @@ -115,34 +115,19 @@ public class PulleyInstance extends ShaftInstance implements IDynamicInstance, L halfRope.delete(); } - protected InstancedModel getRopeModel() { - return getOrientedMaterial().getModel(AllBlocks.ROPE.getDefaultState()); - } + protected abstract InstancedModel getRopeModel(); - protected InstancedModel getMagnetModel() { - return getOrientedMaterial().getModel(AllBlocks.PULLEY_MAGNET.getDefaultState()); - } + protected abstract InstancedModel getMagnetModel(); - protected InstancedModel getHalfMagnetModel() { - return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF_MAGNET, blockState); - } + protected abstract InstancedModel getHalfMagnetModel(); - protected InstancedModel getCoilModel() { - return AllBlockPartials.ROPE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout); - } + protected abstract InstancedModel getCoilModel(); - protected InstancedModel getHalfRopeModel() { - return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF, blockState); - } + protected abstract InstancedModel getHalfRopeModel(); - protected float getOffset() { - float partialTicks = AnimationTickHolder.getPartialTicks(); - return PulleyRenderer.getTileOffset(partialTicks, tile); - } + protected abstract float getOffset(); - protected boolean isRunning() { - return tile.running || tile.isVirtual(); - } + protected abstract boolean isRunning(); protected void resizeRope() { int neededRopeCount = getNeededRopeCount(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java new file mode 100644 index 000000000..8003596b2 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java @@ -0,0 +1,45 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.pulley; + +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyTileEntity; +import com.simibubi.create.foundation.render.backend.core.OrientedData; +import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; +import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +public class HosePulleyInstance extends AbstractPulleyInstance { + final HosePulleyTileEntity tile = (HosePulleyTileEntity) super.tile; + + public HosePulleyInstance(InstancedTileRenderer dispatcher, HosePulleyTileEntity tile) { + super(dispatcher, tile); + beginFrame(); + } + + protected InstancedModel getRopeModel() { + return getOrientedMaterial().getModel(AllBlockPartials.HOSE, blockState); + } + + protected InstancedModel getMagnetModel() { + return getOrientedMaterial().getModel(AllBlockPartials.HOSE_MAGNET, blockState); + } + + protected InstancedModel getHalfMagnetModel() { + return getOrientedMaterial().getModel(AllBlockPartials.HOSE_HALF_MAGNET, blockState); + } + + protected InstancedModel getCoilModel() { + return AllBlockPartials.HOSE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout); + } + + protected InstancedModel getHalfRopeModel() { + return getOrientedMaterial().getModel(AllBlockPartials.HOSE_HALF, blockState); + } + + protected float getOffset() { + return tile.getInterpolatedOffset(AnimationTickHolder.getPartialTicks()); + } + + protected boolean isRunning() { + return true; + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java new file mode 100644 index 000000000..9bceb011b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java @@ -0,0 +1,49 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.pulley; + +import net.minecraft.world.ILightReader; + +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.foundation.render.backend.core.OrientedData; +import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; +import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; +import com.simibubi.create.foundation.utility.AnimationTickHolder; + +public class RopePulleyInstance extends AbstractPulleyInstance { + final PulleyTileEntity tile = (PulleyTileEntity) super.tile; + + public RopePulleyInstance(InstancedTileRenderer dispatcher, PulleyTileEntity tile) { + super(dispatcher, tile); + beginFrame(); + } + + protected InstancedModel getRopeModel() { + return getOrientedMaterial().getModel(AllBlocks.ROPE.getDefaultState()); + } + + protected InstancedModel getMagnetModel() { + return getOrientedMaterial().getModel(AllBlocks.PULLEY_MAGNET.getDefaultState()); + } + + protected InstancedModel getHalfMagnetModel() { + return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF_MAGNET, blockState); + } + + protected InstancedModel getCoilModel() { + return AllBlockPartials.ROPE_COIL.getModel(getOrientedMaterial(), blockState, rotatingAbout); + } + + protected InstancedModel getHalfRopeModel() { + return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF, blockState); + } + + protected float getOffset() { + float partialTicks = AnimationTickHolder.getPartialTicks(); + return PulleyRenderer.getTileOffset(partialTicks, tile); + } + + protected boolean isRunning() { + return tile.running || tile.isVirtual(); + } +} From ffa19dd354c98a497dc538453462230681923006 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 7 Apr 2021 12:00:00 +0200 Subject: [PATCH 10/10] Update data, move misplaced localization file --- src/generated/resources/.cache/cache | 6 +- .../assets/create/lang/unfinished/de_de.json | 468 ++++++++-------- .../assets/create/lang/unfinished/ru_ru.json | 4 +- .../data/create/advancements/aesthetics.json | 4 +- .../resources/assets/create/lang/ru_ru.json | 515 ++++-------------- 5 files changed, 351 insertions(+), 646 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index fad60244f..b043a3533 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -404,7 +404,7 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json ce0e5405da381a86625b908c569c5dbe347abdba assets/create/lang/en_ud.json 8d7a354696019a15170d7b9a6b463953b05e6c5f assets/create/lang/en_us.json -e150751efd62793b2827e4f5dc52daf83e3f1038 assets/create/lang/unfinished/de_de.json +5d1cfa9bc6e93ddadb4d57e93cff489c5d992dc2 assets/create/lang/unfinished/de_de.json 49c322f52ee8ed82eef3997e7b238621ef88e08d assets/create/lang/unfinished/es_es.json 65d15c4bfe19719b63a26dc723c5c96e45e434b0 assets/create/lang/unfinished/es_mx.json 040fdf75186a23ba97e29bdf29c627134dc9f644 assets/create/lang/unfinished/fr_fr.json @@ -413,7 +413,7 @@ a1cb070af4295e107116858487e22fcb525f9dc6 assets/create/lang/unfinished/it_it.jso 5e2c5d0caa0a7b436e2b87235ae7479ac4635758 assets/create/lang/unfinished/ko_kr.json b00a03074be21b1967bab26b2a7a7bd18fa1d4e5 assets/create/lang/unfinished/nl_nl.json 38935b6594edf97254fc7db528d97d4de4ec4bca assets/create/lang/unfinished/pt_br.json -b97ce7199bbfba9bc5f841ad4fe249b2369536c3 assets/create/lang/unfinished/ru_ru.json +330c69e0b9205851da6cdabfc222185e53416635 assets/create/lang/unfinished/ru_ru.json e03d4064b5f34a84882add2155539ef07937deaf assets/create/lang/unfinished/zh_cn.json 28bd3281204a4d09439fa71e21e250dfb5396c99 assets/create/lang/unfinished/zh_tw.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json @@ -1587,7 +1587,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear 9f9455ccb5fc9e3cbfce73862b46078346a522a5 assets/create/models/item/zinc_nugget.json b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json e76041b7ae829fdd7dc0524f6ca4d2f89fca51bb assets/create/sounds.json -5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json +0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json 187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json 0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json 356f4855a2a6c65be3fb51d7d1aabf2ca6034d42 data/create/advancements/arm_blaze_burner.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 69a550dc6..a2b1c194a 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: 1134", + "_": "Missing Localizations: 908", "_": "->------------------------] Game Elements [------------------------<-", @@ -162,8 +162,8 @@ "block.create.gabbro_cobblestone_stairs": "Gabbrobruchstein", "block.create.gabbro_cobblestone_wall": "Gabbrobruchstein", "block.create.gabbro_pillar": "Gabbrosäule", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", + "block.create.gantry_carriage": "Portalkranwagen", + "block.create.gantry_shaft": "Portalkranachse", "block.create.gearbox": "Getriebe", "block.create.gearshift": "Gangschaltung", "block.create.glass_fluid_pipe": "Glasrohr", @@ -367,7 +367,7 @@ "block.create.scoria_cobblestone_wall": "Schlackenpflastermauer", "block.create.scoria_pillar": "Schlackensäule", "block.create.secondary_linear_chassis": "Sekundäres Schubgerüst", - "block.create.sequenced_gearshift": "Sequenzielles Gangschaltung", + "block.create.sequenced_gearshift": "Sequenzielle Gangschaltung", "block.create.shadow_steel_casing": "Schattengehäuse", "block.create.shaft": "Welle", "block.create.smart_chute": "Schlaue Rinne", @@ -376,7 +376,7 @@ "block.create.spout": "Ausguss", "block.create.spruce_window": "Fichtenfenster", "block.create.spruce_window_pane": "Fichtenfensterscheibe", - "block.create.sticker": "Aufkleber", + "block.create.sticker": "Ankleber", "block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben", "block.create.stockpile_switch": "Vorratssensor", "block.create.stressometer": "Stressometer", @@ -396,7 +396,7 @@ "block.create.weathered_limestone_cobblestone_stairs": "Verwitterte Kalksteinpflastertreppe", "block.create.weathered_limestone_cobblestone_wall": "Verwitterte Limestonepflastermauer", "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", + "block.create.weighted_ejector": "Gewichteter Werfer", "block.create.white_sail": "Weiße Segel", "block.create.white_seat": "Weißer Sitz", "block.create.white_valve_handle": "Weißer Ventilgriff", @@ -409,9 +409,9 @@ "block.create.zinc_ore": "Zinkerz", "entity.create.contraption": "Vorrichtung", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", + "entity.create.gantry_contraption": "Portalkran Vorrichtung", "entity.create.seat": "Sitz", - "entity.create.stationary_contraption": "Stationärer Vorrichtung", + "entity.create.stationary_contraption": "Stationäre Vorrichtung", "entity.create.super_glue": "Superkleber", "fluid.create.milk": "Milch", @@ -514,7 +514,7 @@ "advancement.create.chute": "Abstürzen", "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", "advancement.create.upward_chute": "Luftentführung", - "advancement.create.upward_chute.desc": "Sieh ein geworfenes Item in eine propellerbetriebene Rinne fliegen.", + "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", @@ -674,28 +674,28 @@ "create.recipe.crushing": "Mahlen (Mahlwerk)", "create.recipe.milling": "Mahlen (Mahlstein)", - "create.recipe.fan_washing": "UNLOCALIZED: Bulk Washing", - "create.recipe.fan_washing.fan": "UNLOCALIZED: Fan behind Flowing Water", - "create.recipe.fan_smoking": "UNLOCALIZED: Bulk Smoking", - "create.recipe.fan_smoking.fan": "UNLOCALIZED: Fan behind Fire", - "create.recipe.fan_blasting": "UNLOCALIZED: Bulk Blasting", - "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", + "create.recipe.fan_washing": "Sammelwaschen", + "create.recipe.fan_washing.fan": "Propeller hinter fließendem Wasser", + "create.recipe.fan_smoking": "Sammelräuchern", + "create.recipe.fan_smoking.fan": "Propeller hinter Feuer", + "create.recipe.fan_blasting": "Sammelschmelzen", + "create.recipe.fan_blasting.fan": "Propeller hinter Lava", "create.recipe.pressing": "Mechanische Presse", "create.recipe.mixing": "Mixen", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", - "create.recipe.packing": "UNLOCALIZED: Compacting", - "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", + "create.recipe.automatic_shapeless": "Automatisiertes Formloses Bauen", + "create.recipe.automatic_brewing": "Automatisiertes Brauen", + "create.recipe.packing": "Komprimieren", + "create.recipe.automatic_packing": "Automatisiertes Packen", "create.recipe.sawing": "Sägen", - "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", + "create.recipe.mechanical_crafting": "Mechanisches Bauen", + "create.recipe.automatic_shaped": "Automatisiertes Geformtes Bauen", + "create.recipe.block_cutting": "Schneiden von Blöcken", + "create.recipe.wood_cutting": "Schneiden von Holz", "create.recipe.blockzapper_upgrade": "Blockpistole", "create.recipe.sandpaper_polishing": "Schleifen", - "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", - "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", - "create.recipe.draining": "UNLOCALIZED: Item Draining", + "create.recipe.mystery_conversion": "Mysteriöse Konvertierung", + "create.recipe.spout_filling": "Befüllung per Ausguss", + "create.recipe.draining": "Gegenstandsablassung", "create.recipe.processing.chance": "Chance: %1$s%%", "create.recipe.heat_requirement.none": "Keine Hitze benötigt", "create.recipe.heat_requirement.heated": "Wenig Hitze benötigt", @@ -725,8 +725,8 @@ "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.keyinfo.scrollup": "Simuliere Mausrad hoch (In der Welt)", + "create.keyinfo.scrolldown": "Simuliere Mausrad runter (In der Welt)", "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", @@ -761,24 +761,24 @@ "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.gui.terrainzapper.title": "Tragbarer Geländeformer", + "create.gui.terrainzapper.placement": "Platzierung", + "create.gui.terrainzapper.placement.merged": "Zusammengeführt", + "create.gui.terrainzapper.placement.attached": "Angefügt", + "create.gui.terrainzapper.placement.inserted": "Eingefügt", + "create.gui.terrainzapper.brush": "Pinsel", + "create.gui.terrainzapper.brush.cuboid": "Quader", + "create.gui.terrainzapper.brush.sphere": "Kugel", + "create.gui.terrainzapper.brush.cylinder": "Zylinder", + "create.gui.terrainzapper.tool": "Werkzeug", + "create.gui.terrainzapper.tool.fill": "Füllen", + "create.gui.terrainzapper.tool.place": "Platzieren", + "create.gui.terrainzapper.tool.replace": "Ersetzen", + "create.gui.terrainzapper.tool.clear": "Löschen", + "create.gui.terrainzapper.tool.overlay": "Überlagern", + "create.gui.terrainzapper.tool.flatten": "Abflachen", - "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", + "create.terrainzapper.shiftRightClickToSet": "Shift-Rechts-Klick um eine Form auszuwählen", "create.blockzapper.usingBlock": "Auswahl: %1$s", "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", @@ -789,89 +789,89 @@ "create.blockzapper.component.scope": "Fernrohr", "create.blockzapper.componentTier.none": "Nichts", "create.blockzapper.componentTier.brass": "Messing", - "create.blockzapper.componentTier.chromatic": "UNLOCALIZED: Chromatic", + "create.blockzapper.componentTier.chromatic": "Chromatisch", "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", "create.blockzapper.empty": "Keine Blöcke übrig!", - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", + "create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben", + "create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein", + "create.minecart_coupling.no_loops": "Kupplungen können keine Schleife bilden", + "create.minecart_coupling.removed": "Alle Kupplungen wurden von der Lore entfernt", + "create.minecart_coupling.too_far": "Loren sind zu weit entfernt", - "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.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", + "create.contraptions.movement_mode": "Bewegungsmodus", + "create.contraptions.movement_mode.move_place": "Platziere immer wenn gestoppt", + "create.contraptions.movement_mode.move_place_returned": "Platziere nur in Ausgangsposition", + "create.contraptions.movement_mode.move_never_place": "Platziere nur wenn Anker zerstört", + "create.contraptions.movement_mode.rotate_place": "Platziere immer wenn gestoppt", + "create.contraptions.movement_mode.rotate_place_returned": "Platziere nur nahe des Ausgangswinkels", + "create.contraptions.movement_mode.rotate_never_place": "Platziere nur wenn Anker zerstört", + "create.contraptions.cart_movement_mode": "Loren-Bewegungsmodus", + "create.contraptions.cart_movement_mode.rotate": "Zeige immer in Bewegungsrichtung", + "create.contraptions.cart_movement_mode.rotate_paused": "Pausiere Akteure beim drehen", + "create.contraptions.cart_movement_mode.rotation_locked": "Sperre Rotation", + "create.contraptions.windmill.rotation_direction": "Rotationsrichtung", + "create.contraptions.clockwork.clock_hands": "Uhrzeiger", + "create.contraptions.clockwork.hour_first": "Stundenzeiger zuerst", + "create.contraptions.clockwork.minute_first": "Minutenzeiger zuerst", + "create.contraptions.clockwork.hour_first_24": "24-Stunden-Zeiger zuerst", "create.logistics.filter": "Filter", "create.logistics.recipe_filter": "Rezeptfilter", "create.logistics.fluid_filter": "Flüssigkeitsfilter", "create.logistics.firstFrequency": "Freq. #1", "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", + "create.logistics.filter.apply": "Filter angewendet auf %1$s.", + "create.logistics.filter.apply_click_again": "Filter angewendet auf %1$s, klicke nochmal um Menge zu kopieren.", + "create.logistics.filter.apply_count": "Extraktionsmenge auf Filter angewendet.", - "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.pole_length": "UNLOCALIZED: Pole Length:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "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": "UNLOCALIZED: Adjustable Crate", + "create.gui.goggles.generator_stats": "Generator Statistik:", + "create.gui.goggles.kinetic_stats": "Kinetische Statistik:", + "create.gui.goggles.at_current_speed": "bei derzeitiger Geschwindigkeit", + "create.gui.goggles.pole_length": "Stab Länge:", + "create.gui.goggles.fluid_container": "Flüssigkeitstank Info:", + "create.gui.goggles.fluid_container.capacity": "Kapazität:", + "create.gui.assembly.exception": "Diese Vorrichtung konnte nicht gebaut werden:", + "create.gui.assembly.exception.unmovableBlock": "Unbeweglicher Block (%4$s) bei [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Der Block bei [%1$s,%2$s,%3$s] war nicht in einem geladenen Chunk", + "create.gui.assembly.exception.structureTooLarge": "In dieser Vorrichtung sind zu viele Blöcke enthalten.\nDas konfigurierte Maximum ist: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Es sind zu viele Pleuelverlängerungen an diesen Kolben angebracht.\nDas konfigurierte Maximum ist: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Dem Kolben fehlen ein paar Pleuelverlängerungen", + "create.gui.assembly.exception.not_enough_sails": "Angebrachte Struktur enthält nicht genug segelähnliche Blöcke: %1$s\nEin Minimum von %2$s ist erforderlich", + "create.gui.gauge.info_header": "Messgerät Information:", + "create.gui.speedometer.title": "Rotationsgeschwindigkeit", + "create.gui.stressometer.title": "Netzwerkbelastung", + "create.gui.stressometer.capacity": "Verbleibende Kapazität", + "create.gui.stressometer.overstressed": "Überbelastet", + "create.gui.stressometer.no_rotation": "Keine Rotation", + "create.gui.contraptions.not_fast_enough": "Wie es scheint dreht sich dieses %1$s _nicht_ _schnell_ _genug_.", + "create.gui.contraptions.network_overstressed": "Wie es scheint ist diese Vorrichtung _überbelastet_. Füge mehr Quellen hinzu oder _verlangsame_ die Komponenten mit hoher _Belastungsauswirkung_.", + "create.gui.adjustable_crate.title": "Lagerraum", "create.gui.adjustable_crate.storageSpace": "Lagerraum", "create.gui.stockpile_switch.title": "Vorratssensor", - "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "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.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "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.gui.stockpile_switch.invert_signal": "Invertiere Signal", + "create.gui.stockpile_switch.move_to_lower_at": "Gehe zu unterer Spur bei %1$s%%", + "create.gui.stockpile_switch.move_to_upper_at": "Gehe zu oberer Spur bei %1$s%%", + "create.gui.sequenced_gearshift.title": "Sequenzielle Gangschaltung", + "create.gui.sequenced_gearshift.instruction": "Befehl", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Drehe um Winkel", + "create.gui.sequenced_gearshift.instruction.turn_angle": "Drehe", + "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Winkel", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Drehe um Kolben/Seilrolle/Portalkran zu bewegen", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Kolben", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanz", + "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Timed Delay", + "create.gui.sequenced_gearshift.instruction.delay": "Verzögerung", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Dauer", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Beende", + "create.gui.sequenced_gearshift.instruction.end": "Beende", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Warte auf neues Redstone Signal", + "create.gui.sequenced_gearshift.instruction.await": "Warte", + "create.gui.sequenced_gearshift.speed": "Geschwindigkeit, Richtung", + "create.gui.sequenced_gearshift.speed.forward": "Eingangsgeschwindigkeit, Vorwärts", + "create.gui.sequenced_gearshift.speed.forward_fast": "Doppelte Geschwindigkeit, Vorwärts", + "create.gui.sequenced_gearshift.speed.back": "Eingangsgeschwindigkeit, Umgekehrt", + "create.gui.sequenced_gearshift.speed.back_fast": "Doppelte Geschwindigkeit, Umgekehrt", "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", @@ -879,7 +879,7 @@ "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", "create.schematicAndQuill.title": "Bauplanname:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", + "create.schematicAndQuill.convert": "Speichere und lade sofort hoch", "create.schematicAndQuill.fallbackName": "Mein Bauplan", "create.schematicAndQuill.saved": "Gespeichert als %1$s", @@ -929,8 +929,8 @@ "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", - "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", - "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", + "create.gui.schematicTable.refresh": "Aktualisiere Dateien", + "create.gui.schematicTable.open_folder": "Öffne Ordner", "create.gui.schematicTable.title": "Bauplantisch", "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", @@ -943,16 +943,16 @@ "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", "create.gui.schematicannon.optionEnabled": "Aktiviert", "create.gui.schematicannon.optionDisabled": "Deaktiviert", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", + "create.gui.schematicannon.showOptions": "Zeige Drucker Einstellungen", "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.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", + "create.gui.schematicannon.slot.gunpowder": "Füge Schwarzpulver hinzu um die Kanone zu betreiben", + "create.gui.schematicannon.slot.listPrinter": "Platziere hier Bücher um eine Checkliste für deinen Bauplan zu drucken", + "create.gui.schematicannon.slot.schematic": "Füge Bauplan hier hinzu. Stelle sicher dass er an einer spezifischen Position bereitgestellt wird.", "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.", @@ -978,17 +978,17 @@ "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", + "create.materialChecklist": "Material Checkliste", + "create.materialChecklist.blocksNotLoaded": "* Haftungsausschluss *\n\nMaterialliste könnte inakkurat seit da es möglich ist dass releveante Chunks nicht geladen sind.", - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List 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.gui.filter.deny_list": "Verweigert-Liste", + "create.gui.filter.deny_list.description": "Gegenstände werden nur weitergegeben wenn sie NICHT mit einem der oben genannten übereinstimmen. Eine leere Verweigert-Liste akzeptiert alles.", + "create.gui.filter.allow_list": "Erlaubt-Liste", + "create.gui.filter.allow_list.description": "Gegenstände werden nur weitergegeben wenn sie mit einem der oben genannten übereinstimmen. Eine leere Erlaubt-Liste lehnt alles ab.", + "create.gui.filter.respect_data": "Respektiere Daten", + "create.gui.filter.respect_data.description": "Gegenstände stimmen nur überein wenn ihre Haltbarkeit, Verzauberungen, und andere Attribute ebenfalls passen.", + "create.gui.filter.ignore_data": "Ignoriere Daten", + "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", "create.item_attributes.placeable": "UNLOCALIZED: is placeable", "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", @@ -1051,109 +1051,109 @@ "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %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.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.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.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", + "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", + "create.gui.attribute_filter.add_attribute": "Füge Attribut zur Liste hinzu", + "create.gui.attribute_filter.add_inverted_attribute": "Füge gegenteiliges Attribut zur Liste hinzu", + "create.gui.attribute_filter.allow_list_disjunctive": "Erlaubt-Liste (Irgendeins)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Gegenstände werden weitergereicht wenn sie irgendeins der ausgewählten Attribute haben.", + "create.gui.attribute_filter.allow_list_conjunctive": "Erlaubt-Liste (Alle)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Gegenstände werden nur weitergereicht wenn sie ALLE der ausgewählten Attribute haben.", + "create.gui.attribute_filter.deny_list": "Verweigert-Liste", + "create.gui.attribute_filter.deny_list.description": "Gegenstände werden nur weitergereicht wenn sie KEINES der ausgewählten Attribute haben.", + "create.gui.attribute_filter.add_reference_item": "Füge Referenz-Gegenstand hinzu", - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", + "create.tooltip.holdForDescription": "Halte [%1$s] für eine Zusammenfassung", + "create.tooltip.holdForControls": "Halte [%1$s] für die Steuerung", "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: Kinetic 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: Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", - "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", - "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", - "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", - "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", + "create.tooltip.speedRequirement": "Geschwindigkeitsanforderung: %1$s", + "create.tooltip.speedRequirement.none": "Keine", + "create.tooltip.speedRequirement.medium": "Moderat", + "create.tooltip.speedRequirement.high": "Schnell", + "create.tooltip.stressImpact": "Kinetische Belastungsauswirkung: %1$s", + "create.tooltip.stressImpact.low": "Niedrig", + "create.tooltip.stressImpact.medium": "Moderat", + "create.tooltip.stressImpact.high": "Hoch", + "create.tooltip.stressImpact.overstressed": "Überbelastet", + "create.tooltip.capacityProvided": "Kinetische Belastungskapazität: %1$s", + "create.tooltip.capacityProvided.low": "Niedrig", + "create.tooltip.capacityProvided.medium": "Mittel", + "create.tooltip.capacityProvided.high": "Groß", + "create.tooltip.generationSpeed": "Generiert mit %1$s %2$s", + "create.tooltip.analogStrength": "Analoge Stärke: %1$s/15", - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", + "create.mechanical_arm.extract_from": "Nehme Gegenstände von %1$s", + "create.mechanical_arm.deposit_to": "Lege Gegenstände in %1$s", + "create.mechanical_arm.summary": "Mechanischer Arm hat %1$s Eingabe(n) und %2$s Ausgabe(n).", + "create.mechanical_arm.points_outside_range": "%1$s ausgewählte(r) Interaktionspunkt(e) entfernt aufgrund Reichweitenlimitierungen.", - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", + "create.weighted_ejector.target_set": "Ziel ausgewählt", + "create.weighted_ejector.target_not_valid": "Werfe auf angrenzenden Block (Ziel war nicht gültig)", + "create.weighted_ejector.no_target": "Werfe auf angrenzenden Block (Kein Ziel war ausgewählt)", + "create.weighted_ejector.targeting": "Werfe nach [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Geworfene Stapelgröße", - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", + "create.logistics.when_multiple_outputs_available": "Wenn mehrere Ausgaben verfügbar sind", - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", + "create.mechanical_arm.selection_mode.round_robin": "Round Robin", + "create.mechanical_arm.selection_mode.forced_round_robin": "Gezwungener Round Robin", + "create.mechanical_arm.selection_mode.prefer_first": "Bevorzuge erstes Ziel", - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", + "create.tunnel.selection_mode.split": "Aufteilung", + "create.tunnel.selection_mode.forced_split": "Gezwungene Aufteilung", + "create.tunnel.selection_mode.round_robin": "Round Robin", + "create.tunnel.selection_mode.forced_round_robin": "Gezwungener Round Robin", + "create.tunnel.selection_mode.prefer_nearest": "Bevorzuge Naheliegensten", + "create.tunnel.selection_mode.randomize": "Zufällig", + "create.tunnel.selection_mode.synchronize": "Synchronisiere Eingaben", - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push from Above", - "create.tooltip.chute.fans_pull_up": "UNLOCALIZED: Fans pull from Above", - "create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below", - "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", + "create.tooltip.chute.header": "Rinnen Information", + "create.tooltip.chute.items_move_down": "Gegenstände bewegen sich nach unten", + "create.tooltip.chute.items_move_up": "Gegenstände bewegen sich nach oben", + "create.tooltip.chute.no_fans_attached": "Keine angeschlossenen Propeller", + "create.tooltip.chute.fans_push_up": "Propeller schieben von unterhalb", + "create.tooltip.chute.fans_push_down": "Propeller schieben von oberhalb", + "create.tooltip.chute.fans_pull_up": "Propeller ziehen von oberhalb", + "create.tooltip.chute.fans_pull_down": "Propeller ziehen von unterhalb", + "create.tooltip.chute.contains": "Enthält: %1$s x%2$s", - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", + "create.hint.hose_pulley.title": "Endlose Versorgung", + "create.hint.hose_pulley": "Das angewählte Gewässer wird als unendlich betrachtet.", + "create.hint.mechanical_arm_no_targets.title": "Keine Ziele", + "create.hint.mechanical_arm_no_targets": "Es schein dieser _Mechanische_ _Arm_ hat keine _Ziele_. Wähle Riemen, Depots oder Trichter und andere Blöcke indem du sie _Rechts-Klickst_ während du den _Mechanischen_ _Arm_ in deiner _Hand_ _hälst_.", + "create.hint.empty_bearing.title": "Aktualisiere Lager", + "create.hint.empty_bearing": "_Rechts-Klicke_ das Lager mit einer _leeren_ _Hand_ um die Struktur die du davor gebaut hast _anzubringen_.", + "create.hint.full_deployer.title": "Einsatzgerät Gegenstand Überlauf", + "create.hint.full_deployer": "Es scheint, dieses _Einsatzgerät_ enthält _überflüssige_ _Gegenstände_ die _extrahiert_ werden müssen. Nutze _Trichter_ oder anderes um ihn von seinem Überfluss zu befreien.", - "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.gui.config.overlay1": "Hi :)", + "create.gui.config.overlay2": "Dies ist ein Beispiel Overlay", + "create.gui.config.overlay3": "Klicke oder ziehe mit deiner Maus", + "create.gui.config.overlay4": "um diese Vorschau zu bewegen", + "create.gui.config.overlay5": "Drücke ESC um diesen Bildschirm zu verlassen", + "create.gui.config.overlay6": "und die neue Position zu speichern", + "create.gui.config.overlay7": "Benutze /create overlay reset", + "create.gui.config.overlay8": "um die Standardposition zurückzusetzen", - "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.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server Tick ist derzeitig um %s ms verlangsamt :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server Tick ist jetzt um %s ms verlangsamt >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server Tick ist jetzt wieder auf normaler Geschwindigkeit :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: Benutze /killtps stop um den Server Tick wieder auf normale Geschwindigkeit zu bringen", + "create.command.killTPSCommand.status.usage.1": "[Create]: Benutze /killtps start um den Server Tick künstlich zu verlangsamen", + "create.command.killTPSCommand.argument.tickTime": "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", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze munches happily", + "create.subtitle.schematicannon_launch_block": "Bauplankanone schießt", + "create.subtitle.schematicannon_finish": "Bauplankanone endet", + "create.subtitle.slime_added": "Schleim matscht", + "create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert", + "create.subtitle.mechanical_press_item_break": "Metall klonkt", + "create.subtitle.blockzapper_place": "Blöcke zappen an Ort und Stelle", + "create.subtitle.blockzapper_confirm": "Bestätigendes Ding", + "create.subtitle.blockzapper_deny": "Ablehnendes Boop", + "create.subtitle.block_funnel_eat": "Trichter MAMPFT", + "create.subtitle.blaze_munch": "Lohe kaut glücklich", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1379,15 +1379,15 @@ "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - "block.create.adjustable_crate.tooltip": "adjustable_crate", + "block.create.adjustable_crate.tooltip": "LAGERRAUM", "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.condition1": "UNLOCALIZED: When R-Clicked", "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", "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": "Wenn Item in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Items zur Verfügung stellen. In diese Kiste _eingefügte_ Items werden _entsorgt_.", + "block.create.creative_crate.tooltip.condition1": "Wenn Gegenstand in Filter Slot", + "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Gegenstands zur Verfügung stellen. In diese Kiste _eingefügte_ Gegenstände werden _entsorgt_.", "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", @@ -1415,15 +1415,15 @@ "create.tooltip.wip": "WIP", "create.tooltip.workInProgress": "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.", + "create.tooltip.randomWipDescription0": "Bitte halte dies fern von Kindern", + "create.tooltip.randomWipDescription1": "Ein Babypanda stirbt jedes mal wenn du diesen Gegenstand benutzt. Jedes. Mal.", + "create.tooltip.randomWipDescription2": "Benutzung auf eigene Gefahr.", + "create.tooltip.randomWipDescription3": "Dies ist nicht der Gegenstand den du suchst, *wackelt mit Finger* bitte geht auseinander.", + "create.tooltip.randomWipDescription4": "Dieser Gegenstand wird sich in 10 Sekunden selbst zerstören. 10, 9, 8...", + "create.tooltip.randomWipDescription5": "Glaub mir, es ist nutzlos.", + "create.tooltip.randomWipDescription6": "Bei der Verwendung dieses Gegenstands stimmst du hiermit unserem Haftungsausschluss zu und nimmst dessen Bedingungen an.", + "create.tooltip.randomWipDescription7": "Dieser ist nicht für dich. Wie wäre es mit dem?", + "create.tooltip.randomWipDescription8": "Benutze es und bereue deine Entscheidung umgehend.", "_": "->------------------------] Ponder Content [------------------------<-", 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 4d6e1f04c..7da2f0226 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -690,7 +690,7 @@ "create.recipe.mechanical_crafting": "Механическое создание", "create.recipe.automatic_shaped": "Автоматическая форменная сборка", "create.recipe.block_cutting": "Резка блока", - "create.recipe.wood_cutting": "UNLOCALIZED: Резка дерева", + "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", "create.recipe.blockzapper_upgrade": "Ручная блоковая пушка", "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", "create.recipe.mystery_conversion": "Хроматический метаморфоз", @@ -2113,4 +2113,4 @@ "_": "Thank you for translating Create!" -} +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index 59a86f429..d723cbe38 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:large_cogwheel", - "create:cogwheel" + "create:cogwheel", + "create:large_cogwheel" ] } }, diff --git a/src/main/resources/assets/create/lang/ru_ru.json b/src/main/resources/assets/create/lang/ru_ru.json index d7197e071..6b5b72130 100644 --- a/src/main/resources/assets/create/lang/ru_ru.json +++ b/src/main/resources/assets/create/lang/ru_ru.json @@ -369,11 +369,13 @@ "block.create.sequenced_gearshift": "Последовательный переключатель передач", "block.create.shadow_steel_casing": "Теневой корпус", "block.create.shaft": "Вал", + "block.create.smart_chute": "Умный желоб", "block.create.smart_fluid_pipe": "Умная жидкостная труба", "block.create.speedometer": "Спидометр", "block.create.spout": "Дозатор", "block.create.spruce_window": "Еловое окно", "block.create.spruce_window_pane": "Панель из елового окна", + "block.create.sticker": "Блок-липучка", "block.create.sticky_mechanical_piston": "Липкий механический поршень", "block.create.stockpile_switch": "Настраиваемый компаратор", "block.create.stressometer": "Динамометр", @@ -395,6 +397,7 @@ "block.create.weathered_limestone_cobblestone_stairs": "Ступени из известняк-булыжника", "block.create.weathered_limestone_cobblestone_wall": "Стена из известняк-булыжника", "block.create.weathered_limestone_pillar": "Колонна из выветренного известняка", + "block.create.weighted_ejector": "Взвешенная катапульта", "block.create.white_sail": "Белый парус", "block.create.white_seat": "Белое сиденье", "block.create.white_valve_handle": "Белый ручной вентиль", @@ -430,6 +433,7 @@ "item.create.builders_tea": "Чай Строителя", "item.create.chest_minecart_contraption": "Сундуко-вагонеточная штуковина", "item.create.chocolate_bucket": "Ведро шоколада", + "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", "item.create.chromatic_compound": "Хроматический компаунд", "item.create.cinder_flour": "Незераковая пыль", "item.create.copper_ingot": "Медный слиток", @@ -463,6 +467,7 @@ "item.create.handheld_blockzapper": "Ручная блоковая пушка", "item.create.handheld_worldshaper": "Ручной редактор мира", "item.create.honey_bucket": "Ведро мёда", + "item.create.honeyed_apple": "Яблоко в меду", "item.create.integrated_circuit": "Интегральная схема", "item.create.iron_sheet": "Железный лист", "item.create.lapis_sheet": "Лазуритовый лист", @@ -479,6 +484,7 @@ "item.create.schematic_and_quill": "Схематика и перо", "item.create.shadow_steel": "Призрачная сталь", "item.create.super_glue": "Супер-клей", + "item.create.sweet_roll": "Сладкий рулет", "item.create.tree_fertilizer": "Удобрение для деревьев", "item.create.vertical_gearbox": "Вертикальная коробка передач", "item.create.wand_of_symmetry": "Жезл симметрии", @@ -824,6 +830,15 @@ "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", "create.gui.goggles.at_current_speed": "На текущей скорости", "create.gui.goggles.pole_length": "Длина поршня", + "create.gui.goggles.fluid_container": "Информация о жидкостном контейнере:", + "create.gui.goggles.fluid_container.capacity": "Ёмкость: ", + "create.gui.assembly.exception": "Невозможно собрать эту штуковину:", + "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s,%2$s,%3$s]", + "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s,%2$s,%3$s] не был в загруженном чанке", + "create.gui.assembly.exception.structureTooLarge": "Штуковина состоит из слишком большого количества Блоков.\nТекущий максимум: %1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много Удлинителей прикреплено к этому Поршню.\nThe configured maximum is: %1$s", + "create.gui.assembly.exception.noPistonPoles": "Поршню нехватает Удлинителей", + "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусопободных блоков: %1$s\nМинимум из %2$s необходим", "create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.speedometer.title": "Скорость вращения", "create.gui.stressometer.title": "Сетевой момент", @@ -840,13 +855,18 @@ "create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%", "create.gui.sequenced_gearshift.title": "Последовательное переключение передач", "create.gui.sequenced_gearshift.instruction": "Инструкция", + "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Повернуть на угол", "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.delay.descriptive": "Временная задержка", + "create.gui.sequenced_gearshift.instruction.delay": "Задержка", + "create.gui.sequenced_gearshift.instruction.delay.duration": "Длительность", + "create.gui.sequenced_gearshift.instruction.end.descriptive": "Конец", "create.gui.sequenced_gearshift.instruction.end": "Конец", + "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового Импульса Редстоун Сигнала", + "create.gui.sequenced_gearshift.instruction.await": "Ожидать", "create.gui.sequenced_gearshift.speed": "Скорость, Направление", "create.gui.sequenced_gearshift.speed.forward": "Скорость ввода, вперед", "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперед", @@ -1004,6 +1024,10 @@ "create.item_attributes.added_by.inverted": "не был добавлен %1$s", "create.item_attributes.has_enchant": "зачарован на %1$s", "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", + "create.item_attributes.color": "Покрашено в %1$s", + "create.item_attributes.color.inverted": "Не покрашено в %1$s", + "create.item_attributes.max_enchanted": "Зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted.inverted": "Не зачаровано за максимальный уровень", "create.item_attributes.has_fluid": "содержит %1$s", "create.item_attributes.has_fluid.inverted": "не содержит %1$s", "create.item_attributes.has_name": "имеет нестандартное имя %1$s", @@ -1039,8 +1063,8 @@ "create.gui.attribute_filter.deny_list.description": "Предметы проходят, если они НЕ имеют ни одного из выбранных атрибутов.", "create.gui.attribute_filter.add_reference_item": "Добавить предмет", - "create.tooltip.holdKey": "Удерживайте [%1$s]", - "create.tooltip.holdKeyOrKey": "Удерживайте [%1$s] или [%2$s]", + "create.tooltip.holdForDescription": "Удерживайте [%1$s] для Сводки", + "create.tooltip.holdForControls": "Удерживайте [%1$s] для Управления", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "Требование к скорости: %1$s", @@ -1056,7 +1080,6 @@ "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", @@ -1065,6 +1088,12 @@ "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов).", "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", + "create.weighted_ejector.target_set": "Цель выбрана", + "create.weighted_ejector.target_not_valid": "Бросает до близлежащего блока (Неподходящая Цель)", + "create.weighted_ejector.no_target": "Бросает до близлежащего блока (Цель не была Выбрана)", + "create.weighted_ejector.targeting": "Бросает до [%1$s,%2$s,%3$s]", + "create.weighted_ejector.stack_size": "Размер Бросаемого Стака", + "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", "create.mechanical_arm.selection_mode.round_robin": "По кругу", @@ -1087,15 +1116,12 @@ "create.tooltip.chute.fans_push_down": "Вентилятор толкает сверху", "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", + "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", "create.hint.hose_pulley.title": "Безграничное снабжение", "create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.", "create.hint.mechanical_arm_no_targets.title": "Нет целей", "create.hint.mechanical_arm_no_targets": "Кажется, эта _Механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _Механическую руку_.", - "create.hint.horizontal_funnel.title": "Горизонтальные воронки", - "create.hint.horizontal_funnel": "Невозможно передавать предметы _напрямую_. Попробуйте запустить _механический ремень_ или _депо_ под вашей воронкой, чтобы извлекать предметы из присоеденённого инвентаря.", - "create.hint.upward_funnel.title": "Воронка направленна вверх", - "create.hint.upward_funnel": "Может перемещать только предметы, вставленные _рукой_, _желобами_ с вентиляторами, или брошенные на неё. Попробуйте использовать _желоба_, если вам нужно перемещать предметы по вертикали.", "create.hint.empty_bearing.title": "Обновить подшипник", "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.", "create.hint.full_deployer.title": "Переполнение автономного активатора", @@ -1141,57 +1167,12 @@ "item.create.example_item.tooltip.control1": "When Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", - "block.create.andesite_encased_shaft.tooltip": "ANDESITE ENCASED SHAFT", - "block.create.andesite_encased_shaft.tooltip.summary": "_Креативный предмет_. Установите корпус на вал, находящийся _в мире_ импользуя _Андезитовый корпус_. Блоки корпуса не будут использованы.", - - "block.create.brass_encased_shaft.tooltip": "BRASS ENCASED SHAFT", - "block.create.brass_encased_shaft.tooltip.summary": "_Креативный предмет_. Установите корпус на вал, находящийся _в мире_ импользуя _Латунный корпус_. Блоки корпуса не будут использованы.", - "block.create.wooden_bracket.tooltip": "WOODEN BRACKET", "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя уютное деревянное укрепление.", "block.create.metal_bracket.tooltip": "METAL BRACKET", "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя прочное индустриальное укрепление.", - "block.create.andesite_casing.tooltip": "ANDESITE CASING", - "block.create.andesite_casing.tooltip.summary": "Простой корпус для механизмов с множеством применений. Безопасно для декора. Можно использовать для украшения _Валов_ и _механических ремней_.", - - "block.create.andesite_funnel.tooltip": "ANDESITE FUNNEL", - "block.create.andesite_funnel.tooltip.summary": "Стандартный компонент для транспортировки предметов. Может контролироваться _сигналом редстоуна_.", - "block.create.andesite_funnel.tooltip.condition1": "Стандартное поведение", - "block.create.andesite_funnel.tooltip.behaviour1": "_Открытая сторона_ будет собирать предметы с поверхности блока перед ней и _складывать_ их в контейнер на другой стороне воронки.", - "block.create.andesite_funnel.tooltip.condition2": "Если расположена на ремнях, депо и похожих штуках", - "block.create.andesite_funnel.tooltip.behaviour2": "_Собирает_ или _складывает_ предметы на связанный компонент, из или в _инвентарь за ней_. Если у воронки есть направление, его можно изменить с помощью _Гаечного ключа_.", - "block.create.andesite_funnel.tooltip.condition3": "Если расположена вертикально между двумя инвентарями", - "block.create.andesite_funnel.tooltip.behaviour3": "Будет _транспортировать_ предметы _вниз_, как воронка без буфера.", - - "block.create.andesite_tunnel.tooltip": "ANDESITE TUNNEL", - "block.create.andesite_tunnel.tooltip.summary": "Защитное покрытие для вашего _Конвейера_! _Андезитовые туннели_ могут отделять один предмет от стака, когда еще один механический ремень или депо расположены рядом с соновным ремнём.", - "block.create.andesite_tunnel.tooltip.control1": "Правый клик Гаечным ключом по стороне", - "block.create.andesite_tunnel.tooltip.action1": "_Регулирует оконные ставни_, если на этой стороне туннеля есть окно.", - - "block.create.brass_funnel.tooltip": "BRASS FUNNEL", - "block.create.brass_funnel.tooltip.summary": "Стандартный компонент для транспортировки предметов. Может контролироваться _сигналом редстоуна_. Поставляется в комплекте с _фильтром_.", - "block.create.brass_funnel.tooltip.condition1": "Стандарное поведение", - "block.create.brass_funnel.tooltip.behaviour1": "_Открытая сторона_ будет собирать предметы с поверхности блока перед ней и _складывать_ их в контейнер на другой стороне воронки.", - "block.create.brass_funnel.tooltip.condition2": "Если расположена на ремнях, депо и похожих штуках", - "block.create.brass_funnel.tooltip.behaviour2": "_Собирает_ или _складывает_ предметы на связанный компонент, из или в _инвентарь за ней_. Если у воронки есть направление, его можно изменить с помощью _Гаечного ключа_", - "block.create.brass_funnel.tooltip.condition3": "Если расположена вертикально между двумя инвентарями", - "block.create.brass_funnel.tooltip.behaviour3": "Будет _транспортировать_ предметы _вниз_, как воронка без буфера.", - - "block.create.brass_tunnel.tooltip": "BRASS TUNNEL", - "block.create.brass_tunnel.tooltip.summary": "Красивое покрытие для ваших _Механических ремней_! _Латунные туннели_ так же поставляются с фильтрами и возможностью разделения стаков ваших предметов.", - "block.create.brass_tunnel.tooltip.condition1": "При размещении бок о бок", - "block.create.brass_tunnel.tooltip.behaviour1": "_Латунные туннели_ соединяются с другими, позволяя перенаправить поток предметов с одного _конвейера_ на другой.", - "block.create.brass_tunnel.tooltip.condition2": "Фильтрация", - "block.create.brass_tunnel.tooltip.behaviour2": "_Латунные тунелли_ поставляюстя с фильтрами, для _входа_ и _выхода_. Если _предмет_ не соответствует _фильтру_, он будет перенаправлен на выход соседнего _туннеля_.", - "block.create.brass_tunnel.tooltip.condition3": "Разделение", - "block.create.brass_tunnel.tooltip.behaviour3": "_Латунный туннель_ может быть настроен для смены метода, по которому _предмет_ сортируется по присоеденённым _ремням_.", - "block.create.brass_tunnel.tooltip.control1": "Правый клик Гаечным ключом по стороне", - "block.create.brass_tunnel.tooltip.action1": "_Регулирует оконные ставни_, если на этой стороне туннеля есть окно.", - "block.create.brass_tunnel.tooltip.control2": "Прокрутка с гаечным ключом по верху", - "block.create.brass_tunnel.tooltip.action2": "Меняет метод разделения у присоеденённых _туннелей_.", - "block.create.copper_casing.tooltip": "COPPER CASING", "block.create.copper_casing.tooltip.summary": "Прочный машинный корпус для разнообразного использования. Безопасно для украшения.", "block.create.copper_casing.tooltip.condition1": "При использовании на жидкостной трубе", @@ -1200,40 +1181,20 @@ "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", "block.create.encased_fluid_pipe.tooltip.summary": "_Труба_ в _Медном корпусе_.", - "block.create.copper_valve_handle.tooltip": "COPPER VALVE HANDLE", - "block.create.copper_valve_handle.tooltip.summary": "Точный источник _вращательной силы_, требующий взаимодействия с игроками. Будьте осторожны, чтобы не утомиться!", - "block.create.copper_valve_handle.tooltip.condition1": "При использовании", - "block.create.copper_valve_handle.tooltip.behaviour1": "Обеспечивает _вращательную силу_ для соединённых устройств. _Присядьте_ чтобы изменить направление вращения.", - "block.create.seat.tooltip": "SEAT", "block.create.seat.tooltip.summary": "Присядьте и насладитесь поездкой! Привязывает игроков к собранным _устройствам_. Отлично выглядит как простая мебель! Можно окрасить в разные цвета.", "block.create.seat.tooltip.condition1": "ПКМ по сиденью", "block.create.seat.tooltip.behaviour1": "Сажает игрока на _Сиденье_. Нажмите _кнопку_ _приседания_ чтобы слезть.", - "block.create.chute.tooltip": "CHUTE", - "block.create.chute.tooltip.summary": "_Собирает_ и транспортирует предметы по вертикали и диагонали. Может как брать так класть предметы в _контейнеры_. Вы так же можете взаиодействовать с желобом, разместив сбоку воронку.", - "block.create.chute.tooltip.condition1": "Если соединено с вентилятором", - "block.create.chute.tooltip.behaviour1": "Соеденённые с _вентилятором_ желоба могут двигать _предметы_ вверх, и засасывать их с _конвейера_ и _депо_.", - - "block.create.depot.tooltip": "DEPOT", - "block.create.depot.tooltip.summary": "Полезное место куда вы можете класть свои _предметы_. Обеспечивает точку взаимодействия для некоторых машин", - "block.create.depot.tooltip.condition1": "При правом клике", - "block.create.depot.tooltip.behaviour1": "Размещает или забирает _предмет_ с _Депо_. _Блоки_ и _Устройства_, которые могут взаимодействовать с _конвейером_, так же работают с _Депо_.", - "item.create.blaze_cake.tooltip": "BLAZE CAKE", "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги _Горелки Всполоха_. Зажигает их всех!", - "item.create.empty_blaze_burner.tooltip": "EMPTY BLAZE BURNER", - "item.create.empty_blaze_burner.tooltip.summary": "Маленький железный дом для ваших огненных друзей. Уверен вы найдёте им хорошее применение.", - "item.create.empty_blaze_burner.tooltip.condition1": "При использовани на Всполохе или спавнере Всполохов", - "item.create.empty_blaze_burner.tooltip.behaviour1": "_Захватывает_ Всполоха в горелку", - "block.create.fluid_pipe.tooltip": "FLUID PIPE", "block.create.fluid_pipe.tooltip.summary": "Используется для транспортировки _жидкостей_. Требует _Механическую помпу_ для движения _жидкости_.", "block.create.fluid_pipe.tooltip.condition1": "Транспортировка жидкости", "block.create.fluid_pipe.tooltip.behaviour1": "Может соединяться с _жидкостными контейнерами_, такими как _бак_ или _чаша_. Открытые части _трубы_ могут собирать или размещать блоки жидкости в мире. Опасайтесь протечек!", - "block.create.fluid_pipe.tooltip.control1": "Правый клик с ключом", - "block.create.fluid_pipe.tooltip.action1": "Размещает окно на трубе, если доступно.", + "block.create.fluid_pipe.tooltip.condition2": "ПКМ _Ключом_", + "block.create.fluid_pipe.tooltip.behaviour2": "Устанавливает окно на трубе если возможно", "block.create.hose_pulley.tooltip": "HOSE PULLEY", "block.create.hose_pulley.tooltip.summary": "Используется для _размещения_ или _удаления_ больших _жидкостных резервуаров_ в мире.", @@ -1287,15 +1248,6 @@ "block.create.item_drain.tooltip.condition1": "Транспортировка жидкости", "block.create.item_drain.tooltip.behaviour1": "Когда _предмет с жидкостью_, такой как _ведро_ или _бутылочка_ вставлены с боку, предметный осушитель будет автоматически извлекать жидкость, в свой собственный _бак_. Предмет будет выброшен с противоположной стороны.", - "block.create.mechanical_arm.tooltip": "MECHANICAL ARM", - "block.create.mechanical_arm.tooltip.summary": "Продвинутуе устройство для перемещения _предметов_.", - "block.create.mechanical_arm.tooltip.condition1": "Транспортировка предметов", - "block.create.mechanical_arm.tooltip.behaviour1": "Может брать или размещать предметы в любой открытый инвентарь, такой как _конвейер_, _депо_, _воронка_ и _механический крафтер_.", - "block.create.mechanical_arm.tooltip.control1": "Когда в руке", - "block.create.mechanical_arm.tooltip.action1": "Правый клик на _открытом инвентаре_ установит _точку для сбора_, для _механической руки_. Кликните еще раз чтобы установить _точку для размещения_.", - "block.create.mechanical_arm.tooltip.control2": "Прокрутка с ключом", - "block.create.mechanical_arm.tooltip.action2": "Установит порядок размещения для _предметов_, премещаемых _механической рукой_.", - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", @@ -1377,62 +1329,22 @@ "block.create.schematicannon.tooltip": "SCHEMATICANNON", "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", - "block.create.schematicannon.tooltip.control1": "ПКМ", - "block.create.schematicannon.tooltip.action1": "Открывает _интерфейс_", + "block.create.schematicannon.tooltip.condition1": "ПКМ", + "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", "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": "_Передаёт_ _вращение_ в _4_ _направлениях._ Реверсирует прямые соединения.", - - "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_chain_drive.tooltip": "ENCASED_CHAIN_DRIVE", - "block.create.encased_chain_drive.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в корпусе_. Цепные приводы соединяются, когда расположены рядом друг с другом, без необходимости использовать вал. Их направление не обязательно должно совпадать.", - "block.create.encased_chain_drive.tooltip.condition1": "Когда соединено", - "block.create.encased_chain_drive.tooltip.behaviour1": "Соединённые блоки будут получать _скорость вращения_ и его _направление_ от этого компонента.", - - "block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT", - "block.create.adjustable_chain_gearshift.tooltip.summary": "_Передаёт вращение_ по прямой линии и к смежным _цепным приводам в корпусе_. Полученный _сигнал редстоуна_ будет контролировать, какой размер шестерни взаимодействует с присоединенными цепными приводами.", - "block.create.adjustable_chain_gearshift.tooltip.condition1": "Кнонтроль редстоуном", - "block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Без_ сигнала редстоуна присоединённые приводы будут иметь _такую же_ скорость. При получении _сигнала редстоуна_ максимального уровня, соединённые приводы будут вращаться с удвоенной скоростью. Всё, что между минимальным и максимальным значениями, будет выдавать скорость от 1 до 2 кратной скорости цепного механизма.", - - "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": "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.condition3": "При взгляде на жидкостные контейнеры", + "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и о хранящейся в нём хранится _Жидкости_.", "item.create.wrench.tooltip": "WRENCH", "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", @@ -1441,29 +1353,9 @@ "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": "При вращении", @@ -1472,75 +1364,6 @@ "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": "Когда над чашей", - "block.create.mechanical_press.tooltip.behaviour3": "Начинает _компактировать_ _предметы_ в чаше, когда присутствуют все необходимые ингредиенты.", - - "block.create.basin.tooltip": "BASIN", - "block.create.basin.tooltip.summary": "Удобный _контейнер_ _для_ _предметов_, используемый при обработке _механическим_ _смешивателем_ и _механическим прессом_. Поддерживает компараторы.", - "block.create.basin.tooltip.condition1": "Авто-выход", - "block.create.basin.tooltip.behaviour1": "Когда _открытые инвентари_, такие как конвейер, другие чаши, депо и т.д. находятся _под_ чашей, они будут автоматически принимать любые _жидкости_ и _предметы_, созданные в чаше. Это полезно для автоматизации.", - - "block.create.blaze_burner.tooltip": "BLAZE BURNER", - "block.create.blaze_burner.tooltip.summary": "Блок для нагревания чаши, работающий когда в нём находится прирученый Всполох.", - "block.create.blaze_burner.tooltip.condition1": "Когда расположен под чашей", - "block.create.blaze_burner.tooltip.behaviour1": "Производит _тепло_ для рецептов чаши.", - "block.create.blaze_burner.tooltip.condition2": "Когда топливо используется на Горелке Всполоха", - "block.create.blaze_burner.tooltip.behaviour2": "Увеличивает оставшееся время горения, до времени сжигания этого топлива в печке. Поглощает предмет. Используйте _Торт Всполоха_ для больших температур.", - - "block.create.reinforced_rail.tooltip": "REINFORCED RAIL", - "block.create.reinforced_rail.tooltip.summary": "Рельсы, которые не нуждаются в поддержке.", - - "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_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": "_Начинает_ _приводить_ _в_ _действие_ _маховик_, расположенный _перед_ ним (на расстоянии 1 м). Используйте плавильную печь для более высоких скоростей.", - - "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "Большое металлическое колесо для _удержания_ и _стабилизации_ создаваемой силы с помощью _прикреплённого_ _двигателя_. Маховики _соединяются_ с _двигателями_, если они находятся на расстоянии _1_ _м_ друг от друга и под углом _90°_ друг к другу.", - "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.condition2": "Когда запитан редстоуном", - "block.create.portable_storage_interface.tooltip.behaviour2": "Немедленно _разрывает_ все соединения.", - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", "block.create.portable_fluid_interface.tooltip.summary": "Переносная точка обмена для _перемещения жидкостей_ из или в конструкцию, перемещаемую _поршнем_, _подшипником_, _вагонеткой_ или _лебёдкой_. Два смежных интерфейса должны располагаться _лицом друг_ _к другу_, на расстоянии _1-2 блока друг от друга_.", "block.create.portable_fluid_interface.tooltip.condition1": "При движении", @@ -1548,118 +1371,6 @@ "block.create.portable_fluid_interface.tooltip.condition2": "При получении сигнала редстоуна", "block.create.portable_fluid_interface.tooltip.behaviour2": "Немедленно _разрывает_ текущие соединения.", - "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.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.windmill_bearing.tooltip": "WINDMILL BEARING", - "block.create.windmill_bearing.tooltip.summary": "Нужен для использования _ротационной силы_ от ветра. Присоедините постройку собственного дизайна и смотрите как она крутится!", - "block.create.windmill_bearing.tooltip.condition1": "При клике правой кнопкой мыши", - "block.create.windmill_bearing.tooltip.behaviour1": "Обеспечивает _Ротационную силу_, сгенерированную от вращения присоеденённой структуры. Структура должна иметь _Парус_ или _Шерсть_. Используйте _Шасси_, _Слизь_ или _Супер-клей_ чтобы двигать больше одного блока.", - - "block.create.sail_frame.tooltip": "SAIL FRAME", - "block.create.sail_frame.tooltip.summary": "Полезный строительный блок и источник кинетической энергии, когда используется как часть конструкции на _Подшипнике ветряной мельницы_.", - - "block.create.white_sail.tooltip": "SAIL", - "block.create.white_sail.tooltip.summary": "Полезный строительный блок и источник кинетической энергии, когда используется как часть конструкции на _Подшипнике ветряной мельницы_. Доступен в разных цветах.", - "block.create.white_sail.tooltip.condition1": "При клике правой кнопкой с красителем в руке", - "block.create.white_sail.tooltip.behaviour1": "Меняет цвет паруса.", - - "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.control1": "Когда размещён на рельсах", - "block.create.cart_assembler.tooltip.action1": "_Собирает_ проходящие вагонетки, _если запитан_, и _разбирает_ их, если нет.", - "block.create.cart_assembler.tooltip.control2": "Когда размещён на активированых рельсах", - "block.create.cart_assembler.tooltip.action2": "Собирает и _ускоряет_ вагонетки _если запитан_, разбирает и _держит_ их на месте, если нет.", - "block.create.cart_assembler.tooltip.control3": "Когда размещён на рельсах с датчиком", - "block.create.cart_assembler.tooltip.action3": "_Собирает не собраные_ вагонетки, и _разбирает собраные_.", - "block.create.cart_assembler.tooltip.control4": "Когда размещён на активирущих рельсах", - "block.create.cart_assembler.tooltip.action4": "_Разбирает_ вагонетки если запитан.", - - "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.secondary_linear_chassis.tooltip": "SECONDARY LINEAR CHASSIS", - "block.create.secondary_linear_chassis.tooltip.summary": "Второй тип _Линейного шасси_, которое не соеденяется с другими.", - - "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 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 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 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 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": "Когда ниже нижнего предела", @@ -1668,96 +1379,26 @@ "block.create.content_observer.tooltip": "CONTENT OBSERVER", "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и _конвейеров_, соответствующие настроенному _фильтру_. Если наблюдаемый инвентарь, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _ воронка передает_ соответствующий предмет, этот компонент испускает _импульс_.", - "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.nixie_tube.tooltip.condition2": "С биркой", - "block.create.nixie_tube.tooltip.behaviour2": "Отображает _содержимое_ вашей _бирки_, если несколько газоразрядных индикаторов _подключены_ в _одну линию_.", - - "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.adjustable_crate.tooltip.condition1": "ПКМ", + "block.create.adjustable_crate.tooltip.behaviour1": "Открывает _Интерфейс_.", "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.deployer.tooltip": "DEPLOYER", - "block.create.deployer.tooltip.summary": "_Ударяет_, _использует_ и _активирует_. Эта машина постарается максимально _имитировать_ _игрока_. Может _брать_ и _класть_ _предметы_ в соседний _инвентарь_. Может быть назначен _фильтр_ в виде стака предметов.", - "block.create.deployer.tooltip.condition1": "При вращении", - "block.create.deployer.tooltip.behaviour1": "_Вытягивает_ _руку_ и _активирует_ на _2_ _м_ _впереди_ себя.", - "block.create.deployer.tooltip.condition2": "ПКМ гаечным ключом", - "block.create.deployer.tooltip.behaviour2": "Переключает режим удара. В режиме пробивки автономный активатор попытается использовать свой предмет, чтобы разбить блоки или нанести урон сущностям.", - "block.create.deployer.tooltip.condition3": "Когда установлен фильтр", - "block.create.deployer.tooltip.behaviour3": "Автоматический активатор будет активирован, если только удерживаемый предмет _совпадает_ с предметом в _фильтре_. Не совпадающие предметы не могут быть помещены; Удерживаемые предметы, соответствующие фильтру, не могут быть извлечены.", - - "block.create.brass_casing.tooltip": "BRASS CASING", - "block.create.brass_casing.tooltip.summary": "Прочный корпус машины с различными вариантами применения. Безопасно для декорирования.", - - "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.controller_rail.tooltip": "CONTROLLER RAIL", "block.create.controller_rail.tooltip.summary": "_Все-направленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.", "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на велечину зависящую от _силы сигнала_. Распространая сигнал красного камня на соседние контролирующие рельсы. Питание двух контроллирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", - "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": "Указывает цвет, соответствующий уровню момента. Перенапряженные сети перестанут двигаться. Напряжение можно снять, добавив в сеть дополнительные источники вращения.", - "item.create.sand_paper.tooltip": "SAND PAPER", "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", "item.create.sand_paper.tooltip.condition1": "Когда используется", "item.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.builders_tea.tooltip": "BUILDERS TEA", "item.create.builders_tea.tooltip.summary": "Идеальный напиток для начала дня. _Мотивирует и насыщает_.", @@ -1772,9 +1413,6 @@ "item.create.minecart_coupling.tooltip.condition1": "При использовании на вагонетке", "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определенной дистанции_ при движении.", - "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": "Пожалуйста держите этот предмет подальше от детей!", @@ -1787,6 +1425,73 @@ "create.tooltip.randomWipDescription7": "Этот, возможно, но не для тебя. Как насчет этого?", "create.tooltip.randomWipDescription8": "Используя его, вы немедленно пожалеете о своем решении.", + + "_": "->------------------------] Ponder Content [------------------------<-", + + "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для Размышления", + "create.ponder.subject": "Субъект этой сцены", + "create.ponder.pondering": "Размышляем о...", + "create.ponder.identify_mode": "Режим Идентификации включён.\nУбрать паузу: [%1$s]", + "create.ponder.associated": "Связанные статьи", + "create.ponder.close": "Закрыть", + "create.ponder.identify": "Определить", + "create.ponder.next": "Следующая сцена", + "create.ponder.previous": "Предыдущая сцена", + "create.ponder.replay": "Воспроизвести снова", + "create.ponder.think_back": "Подумать о предыдущем", + "create.ponder.slow_text": "Удобное чтение", + "create.ponder.shared.movement_anchors": "С помощью Суперклея или Шасси, более крупные структуры могут быть сдивинуты.", + "create.ponder.shared.rpm32": "32 об./мин.", + "create.ponder.shared.sneak_and": "Красться +", + "create.ponder.shared.storage_on_contraption": "Присоединённые к Штуковине инвентари будут подбирать вещи автоматически", + "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Ключом", + "create.ponder.shared.rpm8": "8 об./мин.", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", + "create.ponder.shared.rpm16": "16 об./мин.", + "create.ponder.tag.kinetic_sources": "Кинетические источники", + "create.ponder.tag.kinetic_sources.description": "Компоненты, генерирующие Силу Вращения", + "create.ponder.tag.contraption_actor.description": "Компоненты, проявляющие особое поведение когда прикреплены к двигающейся штуковине", + "create.ponder.tag.arm_targets": "Цели для Механической Руки", + "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической Руки", + "create.ponder.tag.logistics": "Транспортировка Предметов", + "create.ponder.tag.logistics.description": "Компоненты, помогающие перемещать предметы", + "create.ponder.tag.movement_anchor": "Опоры Движения", + "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикрепленную структуру разными способами", + "create.ponder.tag.creative": "Творческий режим", + "create.ponder.tag.creative.description": "Компоненты обычычно недоступные в Режиме Выживания", + "create.ponder.tag.kinetic_relays": "Кинетические блоки", + "create.ponder.tag.kinetic_relays.description": "Компоненты, помогающие передавать Силу Вращения куда-нибудь", + "create.ponder.tag.windmill_sails": "Паруса для Мельничных Подшипников", + "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Мельницы. Каждый из этих блоков имеет одинаковую эффективность в деле.", + "create.ponder.tag.contraption_assembly": "Приспособления для присоединения блоков", + "create.ponder.tag.contraption_assembly.description": "Инструменты и Компоненты используемые для сборки структур передвигаемых как движущиеся Штуковины", + "create.ponder.tag.decoration": "Эстетика", + "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", + "create.ponder.tag.kinetic_appliances": "Кинетические Приборы", + "create.ponder.tag.kinetic_appliances.description": "Компоненты, использующие Силу Вращения", + "create.ponder.tag.redstone": "Логические Компоненты", + "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструироваением Редстоун Схем", + "create.ponder.tag.fluids": "Жидкостные Манипуляторы", + "create.ponder.tag.fluids.description": "Компоненты, помогающие перемещать и использовать Жидкости", + + "create.ponder.adjustable_pulse_repeater.header": "Управлении сигналами с помощью Регулируемого импульсного повторителя", + "create.ponder.adjustable_pulse_repeater.text_1": "Регулируемые импульсные повторители испускают короткий импульс с задержкой", + "create.ponder.adjustable_pulse_repeater.text_2": "Используя колесо мыши, время зарядки может быть настроено", + "create.ponder.adjustable_pulse_repeater.text_3": "Настраиваемая задержка может достигать 30 минут", + + "create.ponder.adjustable_repeater.header": "Управлении сигналами с помощью Регулируемого повторителя", + "create.ponder.adjustable_repeater.text_1": "Регулируемые повторители ведут себя схожим образом с обычными Повторителями", + "create.ponder.adjustable_repeater.text_2": "Они заряжаются за заданное время...", + "create.ponder.adjustable_repeater.text_3": "...и разряжаются за столько же времени", + "create.ponder.adjustable_repeater.text_4": "Используя колесо мыши, время зарядки может быть настроено", + "create.ponder.adjustable_repeater.text_5": "Настраиваемая задержка может достигать 30 минут", + + "create.ponder.analog_lever.header": "Управлении сигналами используя Аналоговый Рычаг", + "create.ponder.analog_lever.text_1": "Аналоговый Рычаг создан как компактный и точный источник Редстоун Сигнала", + "create.ponder.analog_lever.text_2": "ПКМ чтобы увеличить силу выходного сигнала", + "create.ponder.analog_lever.text_3": "ПКМ Крадучись чтобы уменьшить силу выходного сигнала снова", + "_": "Thank you for translating Create!" }