From c421f98c18581290f70fc03a7e2a066841a96586 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Tue, 2 Aug 2022 00:18:11 -0700 Subject: [PATCH 01/32] Schematic printing and rendering fixes - Fix printed funnels not having filters; remove funnel survival NBT processor - Fix printed tunnels not having filters - Fix printed deployers not keeping mode - Remove boolean argument from IPartialSafeNBT.writeSafe as it was always false - Fix filters not rendering in schematic renders - Fix incorrect lighting on funnels in schematic renders - Improve rendering of crumbling overlay in ponders - Further improve CameraMixin - Use computeIfAbsent in TorquePropagator - Organize imports --- .../contraptions/TorquePropagator.java | 4 +-- .../crafter/MechanicalCrafterTileEntity.java | 4 +-- .../deployer/DeployerTileEntity.java | 6 ++++ .../chassis/AbstractChassisBlock.java | 2 +- .../curiosities/armor/BackTankUtil.java | 1 - .../belts/tunnel/BeltTunnelTileEntity.java | 13 ++++++-- .../block/depot/EjectorTileEntity.java | 4 +-- .../block/display/DisplayLinkTileEntity.java | 10 +++---- .../block/mechanicalArm/ArmTileEntity.java | 4 +-- .../item/LecternControllerTileEntity.java | 4 +-- .../trains/track/TrackTileEntity.java | 4 +-- .../content/schematics/SchematicWorld.java | 2 +- .../block/SchematicannonTileEntity.java | 2 +- .../schematics/client/SchematicRenderer.java | 19 +++++++----- .../create/foundation/mixin/CameraMixin.java | 21 ++----------- .../create/foundation/ponder/PonderScene.java | 30 +++++++------------ .../ponder/element/WorldSectionElement.java | 18 ++++++----- .../create/foundation/ponder/ui/PonderUI.java | 2 +- .../tileEntity/SmartTileEntity.java | 4 +-- .../filtering/FilteringRenderer.java | 14 +++++---- .../foundation/utility/BlockHelper.java | 1 + .../foundation/utility/IPartialSafeNBT.java | 3 +- .../foundation/utility/NBTProcessors.java | 12 -------- 23 files changed, 86 insertions(+), 98 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java b/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java index a6bf425d5..4d7e336ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java @@ -26,9 +26,7 @@ public class TorquePropagator { public KineticNetwork getOrCreateNetworkFor(KineticTileEntity te) { Long id = te.network; KineticNetwork network; - if (!networks.containsKey(te.getLevel())) - networks.put(te.getLevel(), new HashMap<>()); - Map map = networks.get(te.getLevel()); + Map map = networks.computeIfAbsent(te.getLevel(), $ -> new HashMap<>()); if (id == null) return null; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java index 1028647db..bc6be652a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java @@ -145,8 +145,8 @@ public class MechanicalCrafterTileEntity extends KineticTileEntity { } @Override - public void writeSafe(CompoundTag compound, boolean clientPacket) { - super.writeSafe(compound, clientPacket); + public void writeSafe(CompoundTag compound) { + super.writeSafe(compound); if (input == null) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 78a68da21..1a825f0eb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -403,6 +403,12 @@ public class DeployerTileEntity extends KineticTileEntity { } } + @Override + public void writeSafe(CompoundTag tag) { + NBTHelper.writeEnum(tag, "Mode", mode); + super.writeSafe(tag); + } + private IItemHandlerModifiable createHandler() { return new DeployerItemHandler(this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java index 34f6e27fb..bffbbe404 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java @@ -3,8 +3,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.foundation.block.ITE; import com.simibubi.create.foundation.utility.Iterate; diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java index 7d3041cba..4d1011879 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java @@ -1,7 +1,6 @@ package com.simibubi.create.content.curiosities.armor; import com.simibubi.create.AllEnchantments; -import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTags; import com.simibubi.create.foundation.config.AllConfigs; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java index 3541b7c1d..b0f3f605a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelTileEntity.java @@ -61,8 +61,7 @@ public class BeltTunnelTileEntity extends SmartTileEntity { cap.invalidate(); } - @Override - public void write(CompoundTag compound, boolean clientPacket) { + protected void writeFlapsAndSides(CompoundTag compound) { ListTag flapsNBT = new ListTag(); for (Direction direction : flaps.keySet()) flapsNBT.add(IntTag.valueOf(direction.get3DDataValue())); @@ -72,7 +71,17 @@ public class BeltTunnelTileEntity extends SmartTileEntity { for (Direction direction : sides) sidesNBT.add(IntTag.valueOf(direction.get3DDataValue())); compound.put("Sides", sidesNBT); + } + @Override + public void writeSafe(CompoundTag tag) { + writeFlapsAndSides(tag); + super.writeSafe(tag); + } + + @Override + public void write(CompoundTag compound, boolean clientPacket) { + writeFlapsAndSides(compound); super.write(compound, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java index d9946340c..1ff2704f0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/depot/EjectorTileEntity.java @@ -516,8 +516,8 @@ public class EjectorTileEntity extends KineticTileEntity { } @Override - public void writeSafe(CompoundTag compound, boolean clientPacket) { - super.writeSafe(compound, clientPacket); + public void writeSafe(CompoundTag compound) { + super.writeSafe(compound); compound.putInt("HorizontalDistance", launcher.getHorizontalDistance()); compound.putInt("VerticalDistance", launcher.getVerticalDistance()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java index c06ee51e9..9d9a5f606 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkTileEntity.java @@ -124,15 +124,15 @@ public class DisplayLinkTileEntity extends SmartTileEntity { } @Override - public void writeSafe(CompoundTag tag, boolean clientPacket) { - super.writeSafe(tag, clientPacket); - writeGatheredData(tag, clientPacket); + public void writeSafe(CompoundTag tag) { + super.writeSafe(tag); + writeGatheredData(tag); } @Override protected void write(CompoundTag tag, boolean clientPacket) { super.write(tag, clientPacket); - writeGatheredData(tag, clientPacket); + writeGatheredData(tag); if (clientPacket && activeTarget != null) tag.putString("TargetType", activeTarget.id.toString()); if (clientPacket && sendPulse) { @@ -141,7 +141,7 @@ public class DisplayLinkTileEntity extends SmartTileEntity { } } - private void writeGatheredData(CompoundTag tag, boolean clientPacket) { + private void writeGatheredData(CompoundTag tag) { tag.put("TargetOffset", NbtUtils.writeBlockPos(targetOffset)); tag.putInt("TargetLine", targetLine); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java index c50b791ee..77eefd030 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmTileEntity.java @@ -508,8 +508,8 @@ public class ArmTileEntity extends KineticTileEntity implements ITransformableTE } @Override - public void writeSafe(CompoundTag compound, boolean clientPacket) { - super.writeSafe(compound, clientPacket); + public void writeSafe(CompoundTag compound) { + super.writeSafe(compound); writeInteractionPoints(compound); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java index 0be2f6bbd..d67868a23 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LecternControllerTileEntity.java @@ -49,8 +49,8 @@ public class LecternControllerTileEntity extends SmartTileEntity { } @Override - public void writeSafe(CompoundTag compound, boolean clientPacket) { - super.writeSafe(compound, clientPacket); + public void writeSafe(CompoundTag compound) { + super.writeSafe(compound); compound.put("Controller", controller.save(new CompoundTag())); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackTileEntity.java index 80cae8969..9e164e5bb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackTileEntity.java @@ -159,8 +159,8 @@ public class TrackTileEntity extends SmartTileEntity implements ITransformableTE } @Override - public void writeSafe(CompoundTag tag, boolean clientPacket) { - super.writeSafe(tag, clientPacket); + public void writeSafe(CompoundTag tag) { + super.writeSafe(tag); writeTurns(tag); } diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java b/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java index e503b539a..782378a47 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java @@ -109,7 +109,7 @@ public class SchematicWorld extends WrappedWorld implements ServerLevelAccessor } return tileEntity; } catch (Exception e) { - Create.LOGGER.debug("Could not create TE of block " + blockState + ": " + e); + Create.LOGGER.debug("Could not create TE of block " + blockState, e); } } return null; diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java index d5065cd53..8c3da6d6c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java @@ -738,7 +738,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements MenuPro data = NBTProcessors.process(tile, data, true); } else if (tile instanceof IPartialSafeNBT) { data = new CompoundTag(); - ((IPartialSafeNBT) tile).writeSafe(data, false); + ((IPartialSafeNBT) tile).writeSafe(data); data = NBTProcessors.process(tile, data, true); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java index 5eea3f169..62f0b9c44 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java @@ -95,6 +95,7 @@ public class SchematicRenderer { Random random = objects.random; BlockPos.MutableBlockPos mutableBlockPos = objects.mutableBlockPos; SchematicWorld renderWorld = schematic; + renderWorld.renderMode = true; BoundingBox bounds = renderWorld.getBounds(); ShadeSeparatingVertexConsumer shadeSeparatingWrapper = objects.shadeSeparatingWrapper; @@ -111,16 +112,16 @@ public class SchematicRenderer { BlockPos pos = mutableBlockPos.setWithOffset(localPos, anchor); BlockState state = renderWorld.getBlockState(pos); - poseStack.pushPose(); - poseStack.translate(localPos.getX(), localPos.getY(), localPos.getZ()); - if (state.getRenderShape() == RenderShape.MODEL && ItemBlockRenderTypes.canRenderInLayer(state, layer)) { - BlockEntity tileEntity = renderWorld.getBlockEntity(localPos); - dispatcher.renderBatched(state, pos, renderWorld, poseStack, shadeSeparatingWrapper, true, random, - tileEntity != null ? tileEntity.getModelData() : EmptyModelData.INSTANCE); - } + poseStack.pushPose(); + poseStack.translate(localPos.getX(), localPos.getY(), localPos.getZ()); - poseStack.popPose(); + BlockEntity tileEntity = renderWorld.getBlockEntity(localPos); + dispatcher.renderBatched(state, pos, renderWorld, poseStack, shadeSeparatingWrapper, false, random, + tileEntity != null ? tileEntity.getModelData() : EmptyModelData.INSTANCE); + + poseStack.popPose(); + } } ModelBlockRenderer.clearCache(); ForgeHooksClient.setRenderType(null); @@ -130,6 +131,8 @@ public class SchematicRenderer { builder.appendUnshadedVertices(unshadedBuilder); builder.end(); + renderWorld.renderMode = false; + return new SuperByteBuffer(builder); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java index c36f28309..b9e775431 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java @@ -1,39 +1,22 @@ package com.simibubi.create.foundation.mixin; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.simibubi.create.content.logistics.trains.CameraDistanceModifier; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.Camera; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.BlockGetter; @Mixin(Camera.class) public abstract class CameraMixin { - - @Shadow - private double getMaxZoom(double pStartingDistance) { - throw new AssertionError(); - } - - @Shadow - protected void move(double pDistanceOffset, double pVerticalOffset, double pHorizontalOffset) { - throw new AssertionError(); - } - @ModifyArg( method = "Lnet/minecraft/client/Camera;setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;move(DDD)V", ordinal = 0), + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getMaxZoom(D)D"), index = 0 ) public double modifyCameraOffset(double originalValue) { - return -this.getMaxZoom(4.0D * CameraDistanceModifier.getMultiplier(AnimationTickHolder.getPartialTicks())); + return originalValue * CameraDistanceModifier.getMultiplier(AnimationTickHolder.getPartialTicks()); } - } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java index 061b59b5d..3598a9492 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java @@ -455,6 +455,10 @@ public class PonderScene { return basePlateSize; } + public float getScaleFactor() { + return scaleFactor; + } + public float getYOffset() { return yOffset; } @@ -498,10 +502,10 @@ public class PonderScene { } public PoseStack apply(PoseStack ms) { - return apply(ms, AnimationTickHolder.getPartialTicks(world), false); + return apply(ms, AnimationTickHolder.getPartialTicks(world)); } - public PoseStack apply(PoseStack ms, float pt, boolean overlayCompatible) { + public PoseStack apply(PoseStack ms, float pt) { ms.translate(width / 2, height / 2, 200 + offset); TransformStack.cast(ms) @@ -513,23 +517,11 @@ public class PonderScene { .rotateX(xRotation.getValue(pt)) .rotateY(yRotation.getValue(pt)); + UIRenderHelper.flipForGuiRender(ms); float f = 30 * scaleFactor; - - if (!overlayCompatible) { - UIRenderHelper.flipForGuiRender(ms); - ms.scale(f, f, f); - ms.translate((basePlateSize + basePlateOffsetX) / -2f, -1f + yOffset, - (basePlateSize + basePlateOffsetZ) / -2f); - } else { - // For block breaking overlay; Don't ask - ms.scale(f, f, f); - if (f == 30) - ms.translate(0.525, .2975, .9); - ms.translate((basePlateSize + basePlateOffsetX) / -2f, -yOffset, - (basePlateSize + basePlateOffsetZ) / -2f); - float y = (float) (0.5065 * Math.pow(2.2975, Math.log(1 / scaleFactor) / Math.log(2))) / 30; - ms.scale(y, -y, -y); - } + ms.scale(f, f, f); + ms.translate((basePlateSize + basePlateOffsetX) / -2f, -1f + yOffset, + (basePlateSize + basePlateOffsetZ) / -2f); return ms; } @@ -572,7 +564,7 @@ public class PonderScene { protected void refreshMatrix(float pt) { if (cachedMat != null) return; - cachedMat = apply(new PoseStack(), pt, false).last() + cachedMat = apply(new PoseStack(), pt).last() .pose(); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java index ad2549630..f1afaeb47 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/WorldSectionElement.java @@ -327,23 +327,27 @@ public class WorldSectionElement extends AnimatedSceneElement { BlockPos pos = entry.getKey(); if (!section.test(pos)) continue; + if (overlayMS == null) { overlayMS = new PoseStack(); - world.scene.getTransform() - .apply(overlayMS, pt, true); - transformMS(overlayMS, pt); + overlayMS.last().pose().load(ms.last().pose()); + overlayMS.last().normal().load(ms.last().normal()); + + float scaleFactor = world.scene.getScaleFactor(); + float f = (float) Math.pow(30 * scaleFactor, -1.2); + overlayMS.scale(f, f, f); } - ms.pushPose(); - ms.translate(pos.getX(), pos.getY(), pos.getZ()); VertexConsumer builder = new SheetedDecalTextureGenerator( buffer.getBuffer(ModelBakery.DESTROY_TYPES.get(entry.getValue())), overlayMS.last() .pose(), overlayMS.last() .normal()); + + ms.pushPose(); + ms.translate(pos.getX(), pos.getY(), pos.getZ()); ModelUtil.VANILLA_RENDERER - .renderBatched(world.getBlockState(pos), pos, world, ms, builder, true, new Random(), - EmptyModelData.INSTANCE); + .renderBreakingTexture(world.getBlockState(pos), pos, world, ms, builder, EmptyModelData.INSTANCE); ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java index b0258e403..32554bf02 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java @@ -453,7 +453,7 @@ public class PonderUI extends NavigatableSimiScreen { story.getTransform() .updateScreenParams(width, height, slide); story.getTransform() - .apply(ms, partialTicks, false); + .apply(ms, partialTicks); story.getTransform() .updateSceneRVE(partialTicks); story.renderScene(buffer, ms, partialTicks); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java index 1c91eeda8..817b785d7 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java @@ -90,11 +90,11 @@ public abstract class SmartTileEntity extends CachedRenderBBTileEntity implement } @Override - public void writeSafe(CompoundTag tag, boolean clientPacket) { + public void writeSafe(CompoundTag tag) { super.saveAdditional(tag); forEachBehaviour(tb -> { if (tb.isSafeNBT()) - tb.write(tag, clientPacket); + tb.write(tag, false); }); } diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index 9afef6ce7..934204a36 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -95,11 +95,15 @@ public class FilteringRenderer { if (te == null || te.isRemoved()) return; - Entity cameraEntity = Minecraft.getInstance().cameraEntity; - float max = AllConfigs.CLIENT.filterItemRenderDistance.getF(); - if (!te.isVirtual() && cameraEntity != null && cameraEntity.position() - .distanceToSqr(VecHelper.getCenterOf(te.getBlockPos())) > (max * max)) - return; + if (!te.isVirtual()) { + Entity cameraEntity = Minecraft.getInstance().cameraEntity; + if (cameraEntity != null && te.getLevel() == cameraEntity.getLevel()) { + float max = AllConfigs.CLIENT.filterItemRenderDistance.getF(); + if (cameraEntity.position().distanceToSqr(VecHelper.getCenterOf(te.getBlockPos())) > (max * max)) { + return; + } + } + } FilteringBehaviour behaviour = te.getBehaviour(FilteringBehaviour.TYPE); if (behaviour == null) diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index 4817470f3..9dfdf5614 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -272,6 +272,7 @@ public class BlockHelper { ((KineticTileEntity) tile).warnOfMovement(); tile.load(data); } + System.out.println(""); } try { diff --git a/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java b/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java index 3c4952c1e..c8854bb0b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java +++ b/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java @@ -3,5 +3,6 @@ package com.simibubi.create.foundation.utility; import net.minecraft.nbt.CompoundTag; public interface IPartialSafeNBT { - public void writeSafe(CompoundTag compound, boolean clientPacket); + /** This method always runs on the logical server. */ + public void writeSafe(CompoundTag compound); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java index acb3a6a46..54a447d63 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java +++ b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java @@ -6,14 +6,10 @@ import java.util.function.UnaryOperator; import javax.annotation.Nullable; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.logistics.item.filter.FilterItem; - import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.SpawnerBlockEntity; @@ -58,14 +54,6 @@ public final class NBTProcessors { } return data; }); - addSurvivalProcessor(AllTileEntities.FUNNEL.get(), data -> { - if (data.contains("Filter")) { - ItemStack filter = ItemStack.of(data.getCompound("Filter")); - if (filter.getItem() instanceof FilterItem) - data.remove("Filter"); - } - return data; - }); } public static boolean textComponentHasClickEvent(String json) { From 826e29f0f3aca97f7223c75529498b212bb3c5a8 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Tue, 2 Aug 2022 00:21:56 -0700 Subject: [PATCH 02/32] Do not disable culling - Revert change to disable culling when rendering schematics - Remove println in BlockHelper --- .../create/content/schematics/client/SchematicRenderer.java | 2 +- .../com/simibubi/create/foundation/utility/BlockHelper.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java index 62f0b9c44..142d925ee 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java @@ -117,7 +117,7 @@ public class SchematicRenderer { poseStack.translate(localPos.getX(), localPos.getY(), localPos.getZ()); BlockEntity tileEntity = renderWorld.getBlockEntity(localPos); - dispatcher.renderBatched(state, pos, renderWorld, poseStack, shadeSeparatingWrapper, false, random, + dispatcher.renderBatched(state, pos, renderWorld, poseStack, shadeSeparatingWrapper, true, random, tileEntity != null ? tileEntity.getModelData() : EmptyModelData.INSTANCE); poseStack.popPose(); diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index 9dfdf5614..4817470f3 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -272,7 +272,6 @@ public class BlockHelper { ((KineticTileEntity) tile).warnOfMovement(); tile.load(data); } - System.out.println(""); } try { From b4c0657d8bcbb1e43ce11ec63254b7a33bb8c22f Mon Sep 17 00:00:00 2001 From: nphhpn <55556233+nphhpn@users.noreply.github.com> Date: Wed, 3 Aug 2022 14:32:09 +0700 Subject: [PATCH 03/32] Fix #2539 --- .../contraptions/fluids/actors/HosePulleyFluidHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java index 3d86cc3a6..063a52eae 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java @@ -25,12 +25,14 @@ public class HosePulleyFluidHandler implements IFluidHandler { int diff = resource.getAmount(); int totalAmountAfterFill = diff + internalTank.getFluidAmount(); FluidStack remaining = resource.copy(); + boolean deposited = false; if (predicate.get() && totalAmountAfterFill >= 1000) { if (filler.tryDeposit(resource.getFluid(), rootPosGetter.get(), action.simulate())) { drainer.counterpartActed(); remaining.shrink(1000); diff -= 1000; + deposited = true; } } @@ -41,7 +43,7 @@ public class HosePulleyFluidHandler implements IFluidHandler { return resource.getAmount(); } - return internalTank.fill(remaining, action); + return internalTank.fill(remaining, action) + (deposited ? 1000 : 0); } @Override From 9c8df2ff2742176ff82fb9b6b27f1c9b37110bf5 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Wed, 3 Aug 2022 10:08:00 -0700 Subject: [PATCH 04/32] Registries and components - Abstract all custom registries behind improved CreateRegistry class - Remove usage of ForgeRegistryEntry.delegate and IRegistryDelegate where possible - Replace usage of IForgeRegistryEntry#getRegistryName with RegisteredObjects#getKeyOrThrow where key is expected to be not null - Move all component creation to the Components class - Backport some other miscellaneous changes from 1.19 --- .../java/com/simibubi/create/AllBlocks.java | 6 +- .../create/AllInteractionBehaviours.java | 24 +++- .../create/AllMovementBehaviours.java | 30 +++-- .../com/simibubi/create/AllRecipeTypes.java | 3 +- src/main/java/com/simibubi/create/Create.java | 8 ++ .../com/simibubi/create/CreateClient.java | 11 +- .../jei/category/CreateRecipeCategory.java | 6 +- .../jei/category/ItemDrainCategory.java | 7 +- .../category/MechanicalCraftingCategory.java | 5 +- .../category/SequencedAssemblyCategory.java | 18 +-- .../compat/jei/category/SpoutCategory.java | 7 +- .../compat/tconstruct/SpoutCasting.java | 4 +- .../deployer/DeployerApplicationRecipe.java | 7 +- .../deployer/DeployerTileEntity.java | 6 +- .../steam/PoweredShaftTileEntity.java | 3 +- .../steam/whistle/WhistleTileEntity.java | 5 +- .../IDisplayAssemblyExceptions.java | 4 +- .../glue/SuperGlueSelectionHandler.java | 4 +- .../fluids/FluidBottleItemHook.java | 4 +- .../fluids/actors/FillingRecipe.java | 4 +- .../fluids/particle/FluidParticleData.java | 5 +- .../fluids/potion/PotionFluid.java | 8 +- .../fluids/potion/PotionFluidHandler.java | 22 ++-- .../contraptions/fluids/tank/BoilerData.java | 14 +- .../fluids/tank/BoilerHeaters.java | 22 +++- .../goggles/GoggleConfigScreen.java | 10 +- .../goggles/GoggleOverlayRenderer.java | 8 +- .../goggles/IHaveGoggleInformation.java | 4 +- .../itemAssembly/SequencedAssemblyRecipe.java | 6 +- .../itemAssembly/SequencedRecipe.java | 5 +- .../processing/ProcessingOutput.java | 5 +- .../burner/BlazeBurnerBlockItem.java | 5 +- .../sequencer/InstructionSpeedModifiers.java | 4 +- .../sequencer/SequencedGearshiftScreen.java | 4 +- .../contraptions/relays/belt/BeltSlicer.java | 4 +- .../curiosities/armor/BackTankUtil.java | 6 +- .../armor/CopperBacktankArmorLayer.java | 4 +- .../curiosities/bell/BasicParticleData.java | 4 +- .../curiosities/symmetry/SymmetryHandler.java | 2 +- .../symmetry/SymmetryWandScreen.java | 6 +- .../weapons/BuiltinPotatoProjectileTypes.java | 22 +++- .../curiosities/weapons/PotatoCannonItem.java | 15 +-- .../weapons/PotatoCannonProjectileType.java | 15 ++- .../weapons/PotatoProjectileTypeManager.java | 18 +-- .../curiosities/zapper/ZapperScreen.java | 4 +- .../terrainzapper/WorldshaperScreen.java | 10 +- .../belts/tunnel/BrassTunnelTileEntity.java | 4 +- .../block/chute/ChuteTileEntity.java | 4 +- .../block/display/AllDisplayBehaviours.java | 120 +++++++++++++----- .../block/display/DisplayLinkScreen.java | 6 +- .../AccumulatedItemCountDisplaySource.java | 4 +- .../display/source/BoilerDisplaySource.java | 12 +- .../block/display/source/DisplaySource.java | 11 +- .../source/EnchantPowerDisplaySource.java | 6 +- .../source/FluidAmountDisplaySource.java | 4 +- .../source/FluidListDisplaySource.java | 4 +- .../source/ItemCountDisplaySource.java | 8 +- ....java => ItemThroughputDisplaySource.java} | 5 +- .../source/KineticSpeedDisplaySource.java | 4 +- .../NumericSingleLineDisplaySource.java | 9 +- .../PercentOrProgressBarDisplaySource.java | 6 +- .../source/RedstonePowerDisplaySource.java | 4 +- .../source/ScoreboardDisplaySource.java | 4 +- .../source/SingleLineDisplaySource.java | 6 +- .../source/StationSummaryDisplaySource.java | 12 +- .../source/StopWatchDisplaySource.java | 4 +- .../source/TimeOfDayDisplaySource.java | 6 +- .../source/ValueListDisplaySource.java | 12 +- .../block/redstone/NixieTubeTileEntity.java | 4 +- .../block/redstone/StockpileSwitchScreen.java | 6 +- .../item/LinkedControllerClientHandler.java | 4 +- .../item/filter/AttributeFilterContainer.java | 4 +- .../item/filter/AttributeFilterScreen.java | 16 +-- .../logistics/item/filter/FilterItem.java | 12 +- .../logistics/item/filter/FilterScreen.java | 10 +- .../logistics/item/filter/ItemAttribute.java | 6 +- .../item/filter/attribute/ColorAttribute.java | 3 +- .../filter/attribute/EnchantAttribute.java | 6 +- .../attribute/FluidContentsAttribute.java | 6 +- .../AstralSorceryAmuletAttribute.java | 4 +- .../AstralSorceryAttunementAttribute.java | 8 +- .../AstralSorceryCrystalAttribute.java | 4 +- .../AstralSorceryPerkGemAttribute.java | 4 +- .../content/logistics/trains/IBogeyBlock.java | 3 +- .../trains/entity/CarriageBogey.java | 3 +- .../entity/CarriageContraptionEntity.java | 15 +-- .../logistics/trains/entity/TrainPacket.java | 3 +- .../logistics/trains/entity/TrainStatus.java | 4 +- .../display/FlapDisplayTileEntity.java | 4 +- .../edgePoint/station/StationMarker.java | 6 +- .../edgePoint/station/StationScreen.java | 6 +- .../edgePoint/station/TrainEditPacket.java | 4 +- .../management/schedule/IScheduleInput.java | 4 +- .../trains/management/schedule/Schedule.java | 4 +- .../management/schedule/ScheduleItem.java | 8 +- .../management/schedule/ScheduleRuntime.java | 10 +- .../management/schedule/ScheduleScreen.java | 8 +- .../condition/CargoThresholdCondition.java | 6 +- .../condition/FluidThresholdCondition.java | 6 +- .../condition/ItemThresholdCondition.java | 6 +- .../condition/PlayerPassengerCondition.java | 4 +- .../condition/RedstoneLinkCondition.java | 6 +- .../condition/TimeOfDayCondition.java | 4 +- .../condition/TimedWaitCondition.java | 11 +- .../ChangeThrottleInstruction.java | 7 +- .../destination/ChangeTitleInstruction.java | 4 +- .../destination/DestinationInstruction.java | 4 +- .../destination/TextScheduleInstruction.java | 4 +- .../logistics/trains/track/TrackBlock.java | 6 +- .../schematics/ClientSchematicLoader.java | 8 +- .../content/schematics/MaterialChecklist.java | 21 ++- .../schematics/ServerSchematicLoader.java | 7 +- .../block/SchematicTableScreen.java | 12 +- .../block/SchematicannonScreen.java | 22 ++-- .../client/SchematicEditScreen.java | 12 +- .../client/SchematicPromptScreen.java | 4 +- .../client/ToolSelectionScreen.java | 4 +- .../schematics/client/tools/Tools.java | 4 +- .../item/SchematicAndQuillItem.java | 5 +- .../schematics/item/SchematicItem.java | 4 +- .../simibubi/create/events/ClientEvents.java | 4 +- .../advancement/CreateAdvancement.java | 6 +- .../foundation/block/BlockStressValues.java | 11 +- .../foundation/block/CopperBlockSet.java | 3 +- .../foundation/block/ItemUseOverrides.java | 6 +- .../block/render/CustomBlockModels.java | 53 ++++---- .../command/ClearBufferCacheCommand.java | 4 +- .../foundation/command/CloneCommand.java | 11 +- .../foundation/command/ConfigCommand.java | 10 +- .../foundation/command/CouplingCommand.java | 20 +-- .../command/DumpRailwaysCommand.java | 8 +- .../command/FixLightingCommand.java | 4 +- .../foundation/command/FlySpeedCommand.java | 4 +- .../foundation/command/HighlightCommand.java | 6 +- .../foundation/command/KillTPSCommand.java | 4 +- .../foundation/command/KillTrainCommand.java | 6 +- .../command/OverlayConfigCommand.java | 6 +- .../ReplaceInCommandBlocksCommand.java | 6 +- .../command/SConfigureConfigPacket.java | 31 ++--- .../create/foundation/config/CStress.java | 11 +- .../config/ContraptionMovementSetting.java | 38 +++--- .../config/ui/BaseConfigScreen.java | 16 +-- .../config/ui/ConfigModListScreen.java | 8 +- .../config/ui/ConfigScreenList.java | 4 +- .../config/ui/HintableTextFieldWidget.java | 4 +- .../config/ui/OpenCreateMenuButton.java | 4 +- .../config/ui/SubMenuConfigScreen.java | 14 +- .../config/ui/entries/NumberEntry.java | 7 +- .../config/ui/entries/ValueEntry.java | 12 +- .../foundation/data/BuilderTransformers.java | 3 +- .../foundation/data/CreateRegistrate.java | 29 +++-- .../data/recipe/HauntingRecipeGen.java | 7 +- .../data/recipe/LogStrippingFakeRecipes.java | 3 +- .../MechanicalCraftingRecipeBuilder.java | 8 +- .../recipe/MechanicalCraftingRecipeGen.java | 6 +- .../data/recipe/ProcessingRecipeGen.java | 9 +- .../data/recipe/StandardRecipeGen.java | 8 +- .../create/foundation/fluid/FluidHelper.java | 4 +- .../foundation/fluid/FluidIngredient.java | 3 +- .../foundation/gui/AbstractSimiScreen.java | 4 +- .../foundation/gui/CreateMainMenuScreen.java | 12 +- .../foundation/gui/ModularGuiLineBuilder.java | 6 +- .../gui/element/TextStencilElement.java | 6 +- .../gui/widget/AbstractSimiWidget.java | 4 +- .../create/foundation/gui/widget/Label.java | 8 +- .../foundation/gui/widget/ScrollInput.java | 4 +- .../gui/widget/SelectionScrollInput.java | 10 +- .../foundation/item/ItemDescription.java | 24 ++-- .../create/foundation/item/TooltipHelper.java | 16 +-- .../item/render/CustomItemModels.java | 48 ++++--- .../CustomRenderedItemModelRenderer.java | 31 +++++ .../item/render/CustomRenderedItems.java | 39 +++--- .../item/render/SimpleCustomRenderer.java | 4 +- .../foundation/ponder/PonderTagRegistry.java | 4 +- .../ponder/PonderTooltipHandler.java | 8 +- .../create/foundation/ponder/PonderWorld.java | 4 +- .../ponder/content/DisplayScenes.java | 20 +-- .../ponder/content/RedstoneScenes.java | 4 +- .../ponder/ui/NavigatableSimiScreen.java | 4 +- .../ponder/ui/PonderIndexScreen.java | 3 +- .../ponder/ui/PonderTagIndexScreen.java | 4 +- .../foundation/ponder/ui/PonderTagScreen.java | 10 +- .../create/foundation/ponder/ui/PonderUI.java | 11 +- .../render/TileEntityRenderHelper.java | 4 +- .../tileEntity/behaviour/ValueBox.java | 12 +- .../EdgeInteractionRenderer.java | 4 +- .../filtering/FilteringRenderer.java | 6 +- .../scrollvalue/ScrollValueRenderer.java | 8 +- .../foundation/utility/BlockHelper.java | 3 +- .../create/foundation/utility/Components.java | 34 +++++ .../foundation/utility/CreateRegistry.java | 108 ++++++++++++++++ .../create/foundation/utility/Debug.java | 15 +-- .../foundation/utility/DynamicComponent.java | 5 +- .../foundation/utility/FluidFormatter.java | 5 +- .../create/foundation/utility/Lang.java | 11 +- .../foundation/utility/LangBuilder.java | 10 +- .../foundation/utility/ModelSwapper.java | 4 +- .../foundation/utility/RegisteredObjects.java | 68 ++++++++++ .../foundation/utility/RemapHelper.java | 4 +- 199 files changed, 1171 insertions(+), 822 deletions(-) rename src/main/java/com/simibubi/create/content/logistics/block/display/source/{ItemThoughputDisplaySource.java => ItemThroughputDisplaySource.java} (95%) create mode 100644 src/main/java/com/simibubi/create/foundation/utility/Components.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 2ae37cec3..b4b1c0c4b 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -172,7 +172,7 @@ import com.simibubi.create.content.logistics.block.display.source.FluidListDispl import com.simibubi.create.content.logistics.block.display.source.ItemCountDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemListDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ItemNameDisplaySource; -import com.simibubi.create.content.logistics.block.display.source.ItemThoughputDisplaySource; +import com.simibubi.create.content.logistics.block.display.source.ItemThroughputDisplaySource; import com.simibubi.create.content.logistics.block.display.source.KineticSpeedDisplaySource; import com.simibubi.create.content.logistics.block.display.source.KineticStressDisplaySource; import com.simibubi.create.content.logistics.block.display.source.ObservedTrainNameSource; @@ -1696,7 +1696,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.STONE)) .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) - .onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) + .onRegister(assignDataBehaviour(new ItemThroughputDisplaySource(), "item_throughput")) .register(); public static final BlockEntry BRASS_TUNNEL = @@ -1704,7 +1704,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) .onRegister(assignDataBehaviour(new AccumulatedItemCountDisplaySource(), "accumulate_items")) - .onRegister(assignDataBehaviour(new ItemThoughputDisplaySource(), "item_throughput")) + .onRegister(assignDataBehaviour(new ItemThroughputDisplaySource(), "item_throughput")) .onRegister(connectedTextures(BrassTunnelCTBehaviour::new)) .register(); diff --git a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java index c140a3209..0ce0c7465 100644 --- a/src/main/java/com/simibubi/create/AllInteractionBehaviours.java +++ b/src/main/java/com/simibubi/create/AllInteractionBehaviours.java @@ -1,9 +1,7 @@ package com.simibubi.create; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.jetbrains.annotations.Nullable; @@ -11,20 +9,32 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Mov import com.simibubi.create.content.contraptions.components.structureMovement.interaction.DoorMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.LeverMovingInteraction; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.TrapdoorMovingInteraction; +import com.simibubi.create.foundation.utility.CreateRegistry; import com.tterrag.registrate.util.nullness.NonNullConsumer; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class AllInteractionBehaviours { - private static final Map, MovingInteractionBehaviour> BLOCK_BEHAVIOURS = new HashMap<>(); + private static final CreateRegistry BLOCK_BEHAVIOURS = new CreateRegistry<>(ForgeRegistries.BLOCKS); private static final List GLOBAL_BEHAVIOURS = new ArrayList<>(); + public static void registerBehaviour(ResourceLocation block, MovingInteractionBehaviour provider) { + BLOCK_BEHAVIOURS.register(block, provider); + } + + public static void registerBehaviour(Block block, MovingInteractionBehaviour provider) { + BLOCK_BEHAVIOURS.register(block, provider); + } + + @Deprecated(forRemoval = true) public static void registerBehaviour(IRegistryDelegate block, MovingInteractionBehaviour provider) { - BLOCK_BEHAVIOURS.put(block, provider); + registerBehaviour(block.name(), provider); } public static void registerBehaviourProvider(BehaviourProvider provider) { @@ -33,7 +43,7 @@ public class AllInteractionBehaviours { @Nullable public static MovingInteractionBehaviour getBehaviour(BlockState state) { - MovingInteractionBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock().delegate); + MovingInteractionBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock()); if (behaviour != null) { return behaviour; } @@ -50,11 +60,11 @@ public class AllInteractionBehaviours { public static NonNullConsumer interactionBehaviour( MovingInteractionBehaviour behaviour) { - return b -> registerBehaviour(b.delegate, behaviour); + return b -> registerBehaviour(b, behaviour); } static void registerDefaults() { - registerBehaviour(Blocks.LEVER.delegate, new LeverMovingInteraction()); + registerBehaviour(Blocks.LEVER, new LeverMovingInteraction()); DoorMovingInteraction doorBehaviour = new DoorMovingInteraction(); registerBehaviourProvider(state -> { diff --git a/src/main/java/com/simibubi/create/AllMovementBehaviours.java b/src/main/java/com/simibubi/create/AllMovementBehaviours.java index 3c20d5b2f..843ece1f7 100644 --- a/src/main/java/com/simibubi/create/AllMovementBehaviours.java +++ b/src/main/java/com/simibubi/create/AllMovementBehaviours.java @@ -1,9 +1,7 @@ package com.simibubi.create; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.jetbrains.annotations.Nullable; @@ -12,19 +10,31 @@ import com.simibubi.create.content.contraptions.components.actors.CampfireMoveme import com.simibubi.create.content.contraptions.components.actors.dispenser.DispenserMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.dispenser.DropperMovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; +import com.simibubi.create.foundation.utility.CreateRegistry; import com.tterrag.registrate.util.nullness.NonNullConsumer; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class AllMovementBehaviours { - private static final Map, MovementBehaviour> BLOCK_BEHAVIOURS = new HashMap<>(); + private static final CreateRegistry BLOCK_BEHAVIOURS = new CreateRegistry<>(ForgeRegistries.BLOCKS); private static final List GLOBAL_BEHAVIOURS = new ArrayList<>(); + public static void registerBehaviour(ResourceLocation block, MovementBehaviour behaviour) { + BLOCK_BEHAVIOURS.register(block, behaviour); + } + + public static void registerBehaviour(Block block, MovementBehaviour behaviour) { + BLOCK_BEHAVIOURS.register(block, behaviour); + } + + @Deprecated(forRemoval = true) public static void registerBehaviour(IRegistryDelegate block, MovementBehaviour behaviour) { - BLOCK_BEHAVIOURS.put(block, behaviour); + registerBehaviour(block.name(), behaviour); } public static void registerBehaviourProvider(BehaviourProvider provider) { @@ -33,7 +43,7 @@ public class AllMovementBehaviours { @Nullable public static MovementBehaviour getBehaviour(BlockState state) { - MovementBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock().delegate); + MovementBehaviour behaviour = BLOCK_BEHAVIOURS.get(state.getBlock()); if (behaviour != null) { return behaviour; } @@ -50,16 +60,16 @@ public class AllMovementBehaviours { public static NonNullConsumer movementBehaviour( MovementBehaviour behaviour) { - return b -> registerBehaviour(b.delegate, behaviour); + return b -> registerBehaviour(b, behaviour); } static void registerDefaults() { - registerBehaviour(Blocks.BELL.delegate, new BellMovementBehaviour()); - registerBehaviour(Blocks.CAMPFIRE.delegate, new CampfireMovementBehaviour()); + registerBehaviour(Blocks.BELL, new BellMovementBehaviour()); + registerBehaviour(Blocks.CAMPFIRE, new CampfireMovementBehaviour()); DispenserMovementBehaviour.gatherMovedDispenseItemBehaviours(); - registerBehaviour(Blocks.DISPENSER.delegate, new DispenserMovementBehaviour()); - registerBehaviour(Blocks.DROPPER.delegate, new DropperMovementBehaviour()); + registerBehaviour(Blocks.DISPENSER, new DispenserMovementBehaviour()); + registerBehaviour(Blocks.DROPPER, new DropperMovementBehaviour()); } public interface BehaviourProvider { diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 6b9c33f42..21875a375 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -26,6 +26,7 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSeria import com.simibubi.create.content.curiosities.toolbox.ToolboxDyeingRecipe; import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import net.minecraft.core.Registry; @@ -143,7 +144,7 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { public static boolean shouldIgnoreInAutomation(Recipe recipe) { RecipeSerializer serializer = recipe.getSerializer(); - if (serializer != null && RECIPE_DENY_SET.contains(serializer.getRegistryName())) + if (serializer != null && RECIPE_DENY_SET.contains(RegisteredObjects.getKeyOrThrow(serializer))) return true; return recipe.getId() .getPath() diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 7fda0fa65..56c0b9b1a 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -29,6 +29,7 @@ import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.block.CopperRegistries; import com.simibubi.create.foundation.command.ServerLagger; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.config.ContraptionMovementSetting; import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.LangMerger; import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen; @@ -36,6 +37,7 @@ import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen; import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen; import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.CreateRegistry; import com.simibubi.create.foundation.worldgen.AllWorldFeatures; import com.tterrag.registrate.util.nullness.NonNullSupplier; @@ -43,8 +45,10 @@ import net.minecraft.core.particles.ParticleType; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.Entity; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.ForgeMod; @@ -80,6 +84,8 @@ public class Create { public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator(); public static final GlobalRailwayManager RAILWAYS = new GlobalRailwayManager(); public static final ServerLagger LAGGER = new ServerLagger(); + /** Use the {@link Random} of a local {@link Level} or {@link Entity} or create one */ + @Deprecated public static final Random RANDOM = new Random(); private static final NonNullSupplier REGISTRATE = CreateRegistrate.lazy(ID); @@ -103,6 +109,7 @@ public class Create { AllMovementBehaviours.registerDefaults(); AllInteractionBehaviours.registerDefaults(); AllDisplayBehaviours.registerDefaults(); + ContraptionMovementSetting.registerDefaults(); AllArmInteractionPointTypes.register(); AllWorldFeatures.register(); AllEnchantments.register(); @@ -133,6 +140,7 @@ public class Create { } public static void init(final FMLCommonSetupEvent event) { + CreateRegistry.unwrapAll(); AllPackets.registerPackets(); SchematicInstances.register(); BuiltinPotatoProjectileTypes.register(); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 6f3da1702..3860b9395 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -26,6 +26,7 @@ import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.CreateContexts; import com.simibubi.create.foundation.render.SuperByteBufferCache; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.ModelSwapper; import com.simibubi.create.foundation.utility.ghost.GhostBlocks; import com.simibubi.create.foundation.utility.outliner.Outliner; @@ -33,12 +34,10 @@ import com.simibubi.create.foundation.utility.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.GraphicsStatus; import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.HoverEvent; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.client.gui.ForgeIngameGui; import net.minecraftforge.client.gui.OverlayRegistry; import net.minecraftforge.eventbus.api.IEventBus; @@ -126,16 +125,16 @@ public class CreateClient { if (AllConfigs.CLIENT.ignoreFabulousWarning.get()) return; - MutableComponent text = ComponentUtils.wrapInSquareBrackets(new TextComponent("WARN")) + MutableComponent text = ComponentUtils.wrapInSquareBrackets(Components.literal("WARN")) .withStyle(ChatFormatting.GOLD) - .append(new TextComponent( + .append(Components.literal( " Some of Create's visual features will not be available while Fabulous graphics are enabled!")) .withStyle(style -> style .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/create dismissFabulousWarning")) .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new TextComponent("Click here to disable this warning")))); + Components.literal("Click here to disable this warning")))); - mc.gui.handleChat(ChatType.CHAT, text, mc.player.getUUID()); + mc.player.displayClientMessage(text, false); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java index c0487661b..60adb490b 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java @@ -15,6 +15,7 @@ import com.simibubi.create.AllFluids; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import mezz.jei.api.forge.ForgeTypes; @@ -27,7 +28,6 @@ import mezz.jei.api.registration.IRecipeRegistration; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; @@ -159,12 +159,12 @@ public abstract class CreateRecipeCategory> implements IReci } int amount = mbAmount == -1 ? fluidStack.getAmount() : mbAmount; - Component text = new TextComponent(String.valueOf(amount)).append(Lang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); + Component text = Components.literal(String.valueOf(amount)).append(Lang.translateDirect("generic.unit.millibuckets")).withStyle(ChatFormatting.GOLD); if (tooltip.isEmpty()) tooltip.add(0, text); else { List siblings = tooltip.get(0).getSiblings(); - siblings.add(new TextComponent(" ")); + siblings.add(Components.literal(" ")); siblings.add(text); } }; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java index acbc7d0fe..63f1779c0 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler import com.simibubi.create.content.contraptions.processing.EmptyingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.RegisteredObjects; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes; @@ -68,10 +69,8 @@ public class ItemDrainCategory extends CreateRecipeCategory { continue; Ingredient ingredient = Ingredient.of(stack); - ResourceLocation itemName = stack.getItem() - .getRegistryName(); - ResourceLocation fluidName = extracted.getFluid() - .getRegistryName(); + ResourceLocation itemName = RegisteredObjects.getKeyOrThrow(stack.getItem()); + ResourceLocation fluidName = RegisteredObjects.getKeyOrThrow(extracted.getFluid()); consumer.accept(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java index ff9d62b7a..33e0c5239 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java @@ -11,6 +11,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.Components; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; @@ -23,7 +24,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -183,7 +184,7 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory list = new ArrayList<>(); - TranslatableComponent crash = new TranslatableComponent("jei.tooltip.error.crash"); + MutableComponent crash = Components.translatable("jei.tooltip.error.crash"); list.add(crash.withStyle(ChatFormatting.RED)); return list; } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java index 888818f67..0a2d32836 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java @@ -15,7 +15,9 @@ import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRe import com.simibubi.create.content.contraptions.itemAssembly.SequencedRecipe; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.ingredient.IRecipeSlotsView; @@ -25,8 +27,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; @ParametersAreNonnullByDefault @@ -75,9 +76,8 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory sequencedRecipe) { - return subCategories.computeIfAbsent(sequencedRecipe.getRecipe() - .getSerializer() - .getRegistryName(), + return subCategories.computeIfAbsent(RegisteredObjects.getKeyOrThrow(sequencedRecipe.getRecipe() + .getSerializer()), rl -> sequencedRecipe.getAsAssemblyRecipe() .getJEISubCategory() .get() @@ -100,7 +100,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory sequencedRecipe = sequence.get(i); SequencedAssemblySubCategory subCategory = getSubCategory(sequencedRecipe); int subWidth = subCategory.getWidth(); - TextComponent component = new TextComponent("" + romans[Math.min(i, 6)]); + MutableComponent component = Components.literal("" + romans[Math.min(i, 6)]); font.draw(matrixStack, component, font.width(component) / -2 + subWidth / 2, 2, 0x888888); subCategory.draw(sequencedRecipe, matrixStack, mouseX, mouseY, i); matrixStack.translate(subWidth + margin, 0, 0); @@ -144,7 +144,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory getTooltipStrings(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, double mouseX, double mouseY) { List tooltip = new ArrayList<>(); - TranslatableComponent junk = Lang.translateDirect("recipe.assembly.junk"); + MutableComponent junk = Lang.translateDirect("recipe.assembly.junk"); boolean singleOutput = recipe.getOutputChance() == 1; boolean willRepeat = recipe.getLoops() > 1; diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java index 89badd9e7..5f4f43160 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.utility.RegisteredObjects; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.forge.ForgeTypes; @@ -77,10 +78,8 @@ public class SpoutCategory extends CreateRecipeCategory { return; Ingredient bucket = Ingredient.of(stack); - ResourceLocation itemName = stack.getItem() - .getRegistryName(); - ResourceLocation fluidName = fluidCopy.getFluid() - .getRegistryName(); + ResourceLocation itemName = RegisteredObjects.getKeyOrThrow(stack.getItem()); + ResourceLocation fluidName = RegisteredObjects.getKeyOrThrow(fluidCopy.getFluid()); consumer.accept(new ProcessingRecipeBuilder<>(FillingRecipe::new, Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() + "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath())) diff --git a/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java b/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java index 3cb201388..ccf2a8bac 100644 --- a/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java +++ b/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java @@ -5,6 +5,7 @@ import com.simibubi.create.compat.Mods; import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -40,8 +41,7 @@ public class SpoutCasting extends BlockSpoutingBehaviour { if (handler.getTanks() != 1) return 0; - ResourceLocation registryName = te.getType() - .getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(te.getType()); if (!registryName.equals(TABLE) && !registryName.equals(BASIN)) return 0; if (!handler.isFluidValid(0, availableFluid)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java index 92126100d..4684e4678 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java @@ -12,11 +12,10 @@ import com.simibubi.create.content.contraptions.itemAssembly.IAssemblyRecipe; import com.simibubi.create.content.contraptions.processing.ItemApplicationRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; @@ -59,9 +58,9 @@ public class DeployerApplicationRecipe extends ItemApplicationRecipe implements ItemStack[] matchingStacks = ingredients.get(1) .getItems(); if (matchingStacks.length == 0) - return new TextComponent("Invalid"); + return Components.literal("Invalid"); return Lang.translateDirect("recipe.assembly.deploying_item", - new TranslatableComponent(matchingStacks[0].getDescriptionId()).getString()); + Components.translatable(matchingStacks[0].getDescriptionId()).getString()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java index 1a825f0eb..d9ff4eab0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java @@ -23,6 +23,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.VecHelper; @@ -35,7 +36,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -480,13 +480,13 @@ public class DeployerTileEntity extends KineticTileEntity { if (!heldItem.isEmpty()) Lang.translate("tooltip.deployer.contains", - new TranslatableComponent(heldItem.getDescriptionId()).getString(), heldItem.getCount()) + Components.translatable(heldItem.getDescriptionId()).getString(), heldItem.getCount()) .style(ChatFormatting.GREEN) .forGoggles(tooltip); float stressAtBase = calculateStressApplied(); if (StressImpact.isEnabled() && !Mth.equal(stressAtBase, 0)) { - tooltip.add(Lang.empty()); + tooltip.add(Components.immutableEmpty()); addStressImpactStats(tooltip, stressAtBase); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java index e4bf26365..8efc121fd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/PoweredShaftTileEntity.java @@ -4,6 +4,7 @@ import java.util.List; import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; import com.simibubi.create.foundation.block.BlockStressValues; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; @@ -81,7 +82,7 @@ public class PoweredShaftTileEntity extends GeneratingKineticTileEntity { if (enginePos != null && capacityKey != null) { compound.put("EnginePos", NbtUtils.writeBlockPos(enginePos)); compound.putFloat("EnginePower", engineEfficiency); - compound.putString("EngineType", capacityKey.getRegistryName() + compound.putString("EngineType", RegisteredObjects.getKeyOrThrow(capacityKey) .toString()); } super.write(compound, clientPacket); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java index 0f2a0ecd2..5f53ff643 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/steam/whistle/WhistleTileEntity.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -25,7 +26,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -110,7 +111,7 @@ public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInf String[] pitches = Lang.translateDirect("generic.notes") .getString() .split(";"); - TextComponent textComponent = new TextComponent(spacing); + MutableComponent textComponent = Components.literal(spacing); tooltip.add(textComponent.append(Lang.translateDirect("generic.pitch", pitches[pitch % pitches.length]))); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java index d9477f0c3..0d0cee20a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java @@ -5,11 +5,11 @@ import java.util.List; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public interface IDisplayAssemblyExceptions { @@ -19,7 +19,7 @@ public interface IDisplayAssemblyExceptions { return false; if (!tooltip.isEmpty()) - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() .append(Lang.translateDirect("gui.assembly.exception") diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java index ca772f793..b6ecc76de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueSelectionHandler.java @@ -10,6 +10,7 @@ import com.simibubi.create.AllSpecialTextures; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.RaycastHelper; @@ -18,7 +19,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TextComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.item.ItemStack; @@ -62,7 +62,7 @@ public class SuperGlueSelectionHandler { if (clusterCooldown > 0) { if (clusterCooldown == 25) - player.displayClientMessage(TextComponent.EMPTY, true); + player.displayClientMessage(Components.immutableEmpty(), true); CreateClient.OUTLINER.keep(clusterOutlineSlot); clusterCooldown--; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java index 23e23cc82..01da69d2c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.fluids; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.tags.FluidTags; @@ -43,8 +44,7 @@ public class FluidBottleItemHook extends Item { return; FluidState fluidState = world.getFluidState(blockpos); - if (fluidState.is(FluidTags.WATER) && fluidState.getType() - .getRegistryName() + if (fluidState.is(FluidTags.WATER) && RegisteredObjects.getKeyOrThrow(fluidState.getType()) .getNamespace() .equals(Create.ID)) { event.setCancellationResult(InteractionResult.PASS); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java index 380945f5b..4b1c31c78 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java @@ -11,10 +11,10 @@ import com.simibubi.create.content.contraptions.itemAssembly.IAssemblyRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; @@ -70,7 +70,7 @@ public class FillingRecipe extends ProcessingRecipe implements IA List matchingFluidStacks = fluidIngredients.get(0) .getMatchingFluidStacks(); if (matchingFluidStacks.size() == 0) - return new TextComponent("Invalid"); + return Components.literal("Invalid"); return Lang.translateDirect("recipe.assembly.spout_filling_fluid", matchingFluidStacks.get(0).getDisplayName().getString()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java index 364725b28..1bd73686a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java @@ -6,6 +6,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.AllParticleTypes; import com.simibubi.create.content.contraptions.particle.ICustomParticleData; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.core.particles.ParticleOptions; @@ -15,7 +16,6 @@ import net.minecraft.world.level.material.Fluids; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; public class FluidParticleData implements ParticleOptions, ICustomParticleData { @@ -49,8 +49,7 @@ public class FluidParticleData implements ParticleOptions, ICustomParticleData CODEC = RecordCodecBuilder.create(i -> i diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java index 45059a5d9..d6da04c59 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java @@ -5,12 +5,13 @@ import java.util.List; import com.simibubi.create.AllFluids; import com.simibubi.create.content.contraptions.fluids.VirtualFluid; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.alchemy.Potion; @@ -20,7 +21,6 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; public class PotionFluid extends VirtualFluid { @@ -42,7 +42,7 @@ public class PotionFluid extends VirtualFluid { } public static FluidStack addPotionToFluidStack(FluidStack fs, Potion potion) { - ResourceLocation resourcelocation = ForgeRegistries.POTIONS.getKey(potion); + ResourceLocation resourcelocation = RegisteredObjects.getKeyOrThrow(potion); if (potion == Potions.EMPTY) { fs.removeChildTag("Potion"); return fs; @@ -82,7 +82,7 @@ public class PotionFluid extends VirtualFluid { @Override public Component getDisplayName(FluidStack stack) { - return new TranslatableComponent(getTranslationKey(stack)); + return Components.translatable(getTranslationKey(stack)); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java index febb50e29..db2552e56 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java @@ -8,14 +8,14 @@ import com.google.common.collect.Lists; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.BottleType; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Tuple; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; @@ -105,10 +105,10 @@ public class PotionFluidHandler { List list = PotionUtils.getAllEffects(fs.getOrCreateTag()); List> list1 = Lists.newArrayList(); if (list.isEmpty()) { - tooltip.add((new TranslatableComponent("effect.none")).withStyle(ChatFormatting.GRAY)); + tooltip.add((Components.translatable("effect.none")).withStyle(ChatFormatting.GRAY)); } else { for (MobEffectInstance effectinstance : list) { - TranslatableComponent textcomponent = new TranslatableComponent(effectinstance.getDescriptionId()); + MutableComponent textcomponent = Components.translatable(effectinstance.getDescriptionId()); MobEffect effect = effectinstance.getEffect(); Map map = effect.getAttributeModifiers(); if (!map.isEmpty()) { @@ -125,7 +125,7 @@ public class PotionFluidHandler { if (effectinstance.getAmplifier() > 0) { textcomponent.append(" ") - .append(new TranslatableComponent("potion.potency." + effectinstance.getAmplifier()).getString()); + .append(Components.translatable("potion.potency." + effectinstance.getAmplifier()).getString()); } if (effectinstance.getDuration() > 20) { @@ -140,8 +140,8 @@ public class PotionFluidHandler { } if (!list1.isEmpty()) { - tooltip.add(new TextComponent("")); - tooltip.add((new TranslatableComponent("potion.whenDrank")).withStyle(ChatFormatting.DARK_PURPLE)); + tooltip.add(Components.immutableEmpty()); + tooltip.add((Components.translatable("potion.whenDrank")).withStyle(ChatFormatting.DARK_PURPLE)); for (Tuple tuple : list1) { AttributeModifier attributemodifier2 = tuple.getB(); @@ -155,19 +155,19 @@ public class PotionFluidHandler { } if (d0 > 0.0D) { - tooltip.add((new TranslatableComponent( + tooltip.add((Components.translatable( "attribute.modifier.plus." + attributemodifier2.getOperation() .toValue(), ItemStack.ATTRIBUTE_MODIFIER_FORMAT.format(d1), - new TranslatableComponent(tuple.getA()))) + Components.translatable(tuple.getA()))) .withStyle(ChatFormatting.BLUE)); } else if (d0 < 0.0D) { d1 = d1 * -1.0D; - tooltip.add((new TranslatableComponent( + tooltip.add((Components.translatable( "attribute.modifier.take." + attributemodifier2.getOperation() .toValue(), ItemStack.ATTRIBUTE_MODIFIER_FORMAT.format(d1), - new TranslatableComponent(tuple.getA()))) + Components.translatable(tuple.getA()))) .withStyle(ChatFormatting.RED)); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java index f204dc201..890810f6d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerData.java @@ -17,6 +17,7 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.BlockStressValues; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -29,7 +30,6 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -147,8 +147,8 @@ public class BoilerData { if (!isActive()) return false; - Component indent = new TextComponent(IHaveGoggleInformation.spacing); - Component indent2 = new TextComponent(IHaveGoggleInformation.spacing + " "); + Component indent = Components.literal(IHaveGoggleInformation.spacing); + Component indent2 = Components.literal(IHaveGoggleInformation.spacing + " "); calcMinMaxForSize(boilerSize); @@ -169,7 +169,7 @@ public class BoilerData { double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines) * BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get()); - tooltip.add(Lang.empty()); + tooltip.add(Components.immutableEmpty()); Lang.translate("tooltip.capacityProvided") .style(ChatFormatting.GRAY) @@ -234,12 +234,12 @@ public class BoilerData { } private MutableComponent blockComponent(int level) { - return new TextComponent( + return Components.literal( "" + "\u2588".repeat(minValue) + "\u2592".repeat(level - minValue) + "\u2591".repeat(maxValue - level)); } private MutableComponent barComponent(int level) { - return TextComponent.EMPTY.copy() + return Components.empty() .append(bars(Math.max(0, minValue - 1), ChatFormatting.DARK_GREEN)) .append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GREEN)) .append(bars(Math.max(0, level - minValue), ChatFormatting.DARK_GREEN)) @@ -250,7 +250,7 @@ public class BoilerData { } private MutableComponent bars(int level, ChatFormatting format) { - return new TextComponent(Strings.repeat('|', level)).withStyle(format); + return Components.literal(Strings.repeat('|', level)).withStyle(format); } public boolean evaluate(FluidTankTileEntity controller) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java index a36ab5f30..12bde6e81 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/BoilerHeaters.java @@ -1,9 +1,7 @@ package com.simibubi.create.content.contraptions.fluids.tank; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.jetbrains.annotations.Nullable; @@ -11,19 +9,31 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; +import com.simibubi.create.foundation.utility.CreateRegistry; import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class BoilerHeaters { - private static final Map, Heater> BLOCK_HEATERS = new HashMap<>(); + private static final CreateRegistry BLOCK_HEATERS = new CreateRegistry<>(ForgeRegistries.BLOCKS); private static final List GLOBAL_HEATERS = new ArrayList<>(); + public static void registerHeater(ResourceLocation block, Heater heater) { + BLOCK_HEATERS.register(block, heater); + } + + public static void registerHeater(Block block, Heater heater) { + BLOCK_HEATERS.register(block, heater); + } + + @Deprecated(forRemoval = true) public static void registerHeater(IRegistryDelegate block, Heater heater) { - BLOCK_HEATERS.put(block, heater); + registerHeater(block.name(), heater); } public static void registerHeaterProvider(HeaterProvider provider) { @@ -36,7 +46,7 @@ public class BoilerHeaters { * All other positive values are used as the amount of active heat. */ public static float getActiveHeat(Level level, BlockPos pos, BlockState state) { - Heater heater = BLOCK_HEATERS.get(state.getBlock().delegate); + Heater heater = BLOCK_HEATERS.get(state.getBlock()); if (heater != null) { return heater.getActiveHeat(level, pos, state); } @@ -52,7 +62,7 @@ public class BoilerHeaters { } public static void registerDefaults() { - registerHeater(AllBlocks.BLAZE_BURNER.get().delegate, (level, pos, state) -> { + registerHeater(AllBlocks.BLAZE_BURNER.get(), (level, pos, state) -> { HeatLevel value = state.getValue(BlazeBurnerBlock.HEAT_LEVEL); if (value == HeatLevel.NONE) { return -1; diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java index 36ca4481e..24b6539c1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java @@ -8,12 +8,12 @@ import com.simibubi.create.AllItems; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.AbstractSimiScreen; import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -24,26 +24,26 @@ public class GoggleConfigScreen extends AbstractSimiScreen { private final List tooltip; public GoggleConfigScreen() { - Component componentSpacing = new TextComponent(" "); + Component componentSpacing = Components.literal(" "); tooltip = new ArrayList<>(); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay1"))); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay2") .withStyle(ChatFormatting.GRAY))); - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay3"))); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay4"))); - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay5") .withStyle(ChatFormatting.GRAY))); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay6") .withStyle(ChatFormatting.GRAY))); - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(componentSpacing.plainCopy() .append(Lang.translateDirect("gui.config.overlay7"))); tooltip.add(componentSpacing.plainCopy() diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index 367f6ca2c..66b941eda 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -19,6 +19,7 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.outliner.Outline; @@ -30,7 +31,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.GameType; @@ -100,7 +100,7 @@ public class GoggleOverlayRenderer { if (hasHoveringInformation) { if (!tooltip.isEmpty()) - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); IHaveHoveringInformation hte = (IHaveHoveringInformation) te; hoverAddedInformation = hte.addToTooltip(tooltip, mc.player.isShiftKeyDown()); @@ -143,11 +143,11 @@ public class GoggleOverlayRenderer { if (!pistonFound) return; if (!tooltip.isEmpty()) - tooltip.add(TextComponent.EMPTY); + tooltip.add(Components.immutableEmpty()); tooltip.add(IHaveGoggleInformation.componentSpacing.plainCopy() .append(Lang.translateDirect("gui.goggles.pole_length")) - .append(new TextComponent(" " + poles))); + .append(Components.literal(" " + poles))); } if (tooltip.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java index 0eeaf904f..308db240c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java @@ -3,12 +3,12 @@ package com.simibubi.create.content.contraptions.goggles; import java.util.List; import java.util.Optional; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -27,7 +27,7 @@ public interface IHaveGoggleInformation { * Use Lang.[...].forGoggles(list) */ @Deprecated - Component componentSpacing = new TextComponent(spacing); + Component componentSpacing = Components.literal(spacing); /** * this method will be called when looking at a TileEntity that implemented this diff --git a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java index 1dca38cfe..980d506eb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedAssemblyRecipe.java @@ -12,6 +12,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.processing.ProcessingOutput; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -19,7 +20,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; @@ -239,7 +239,7 @@ public class SequencedAssemblyRecipe implements Recipe { int length = sequencedAssemblyRecipe.sequence.size(); int step = sequencedAssemblyRecipe.getStep(stack); int total = length * sequencedAssemblyRecipe.loops; - toolTip.add(new TextComponent("")); + toolTip.add(Components.immutableEmpty()); toolTip.add(Lang.translateDirect("recipe.sequenced_assembly") .withStyle(ChatFormatting.GRAY)); toolTip.add(Lang.translateDirect("recipe.assembly.progress", step, total) @@ -256,7 +256,7 @@ public class SequencedAssemblyRecipe implements Recipe { toolTip.add(Lang.translateDirect("recipe.assembly.next", textComponent) .withStyle(ChatFormatting.AQUA)); else - toolTip.add(new TextComponent("-> ").append(textComponent) + toolTip.add(Components.literal("-> ").append(textComponent) .withStyle(ChatFormatting.DARK_AQUA)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java index f9acf963e..c16d0d07e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java +++ b/src/main/java/com/simibubi/create/content/contraptions/itemAssembly/SequencedRecipe.java @@ -5,6 +5,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; @@ -35,7 +36,7 @@ public class SequencedRecipe> { @SuppressWarnings("unchecked") ProcessingRecipeSerializer serializer = (ProcessingRecipeSerializer) wrapped.getSerializer(); JsonObject json = new JsonObject(); - json.addProperty("type", ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer) + json.addProperty("type", RegisteredObjects.getKeyOrThrow(serializer) .toString()); serializer.write(json, wrapped); return json; @@ -62,7 +63,7 @@ public class SequencedRecipe> { public void writeToBuffer(FriendlyByteBuf buffer) { @SuppressWarnings("unchecked") ProcessingRecipeSerializer serializer = (ProcessingRecipeSerializer) wrapped.getSerializer(); - buffer.writeResourceLocation(ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer)); + buffer.writeResourceLocation(RegisteredObjects.getKeyOrThrow(serializer)); buffer.writeResourceLocation(wrapped.getId()); serializer.toNetwork(buffer, wrapped); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java index 0d280b60d..d986e74e8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java @@ -9,6 +9,7 @@ import com.google.gson.JsonSyntaxException; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.simibubi.create.Create; import com.simibubi.create.foundation.utility.Pair; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.TagParser; import net.minecraft.network.FriendlyByteBuf; @@ -60,8 +61,8 @@ public class ProcessingOutput { public JsonElement serialize() { JsonObject json = new JsonObject(); - ResourceLocation resourceLocation = compatDatagenOutput == null ? stack.getItem() - .getRegistryName() : compatDatagenOutput.getFirst(); + ResourceLocation resourceLocation = compatDatagenOutput == null ? RegisteredObjects.getKeyOrThrow(stack + .getItem()) : compatDatagenOutput.getFirst(); json.addProperty("item", resourceLocation.toString()); int count = compatDatagenOutput == null ? stack.getCount() : compatDatagenOutput.getSecond(); if (count != 1) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java index e90367af9..277ff6a8d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java @@ -7,6 +7,7 @@ import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.MethodsReturnNonnullByDefault; @@ -71,7 +72,7 @@ public class BlazeBurnerBlockItem extends BlockItem { @Override public String getDescriptionId() { - return hasCapturedBlaze() ? super.getDescriptionId() : "item.create." + getRegistryName().getPath(); + return hasCapturedBlaze() ? super.getDescriptionId() : "item.create." + RegisteredObjects.getKeyOrThrow(this).getPath(); } @Override @@ -99,7 +100,7 @@ public class BlazeBurnerBlockItem extends BlockItem { possibleSpawns.add(spawner.nextSpawnData); } - ResourceLocation blazeId = EntityType.BLAZE.getRegistryName(); + ResourceLocation blazeId = RegisteredObjects.getKeyOrThrow(EntityType.BLAZE); for (SpawnData e : possibleSpawns) { ResourceLocation spawnerEntityId = new ResourceLocation(e.entityToSpawn() .getString("id")); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java index 23bdf2048..93713d075 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java @@ -3,10 +3,10 @@ package com.simibubi.create.content.contraptions.relays.advanced.sequencer; import java.util.ArrayList; import java.util.List; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public enum InstructionSpeedModifiers { @@ -24,7 +24,7 @@ public enum InstructionSpeedModifiers { value = modifier; } private InstructionSpeedModifiers(int modifier, String label) { - this.label = new TextComponent(label); + this.label = Components.literal(label); translationKey = "gui.sequenced_gearshift.speed." + Lang.asId(name()); value = modifier; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java index 087dfa4f9..7f2c86ab4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java @@ -12,12 +12,12 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.core.BlockPos; import net.minecraft.nbt.ListTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; public class SequencedGearshiftScreen extends AbstractSimiScreen { @@ -150,7 +150,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { if (def.hasValueParameter) { String text = def.formatValue(instruction.value); int stringWidth = font.width(text); - label(ms, 90 + (12 - stringWidth / 2), yOffset - 3, new TextComponent(text)); + label(ms, 90 + (12 - stringWidth / 2), yOffset - 3, Components.literal(text)); } if (def.hasSpeedParameter) label(ms, 127, yOffset - 3, instruction.speedModifier.label); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java index 681e16ec7..443cacf40 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlicer.java @@ -13,6 +13,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.Casin import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -22,7 +23,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.chat.TextComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; @@ -473,7 +473,7 @@ public class BeltSlicer { mc.player.displayClientMessage(Lang.translateDirect(feedback.langKey) .withStyle(feedback.formatting), true); else - mc.player.displayClientMessage(new TextComponent(""), true); + mc.player.displayClientMessage(Components.immutableEmpty(), true); if (feedback.bb != null) CreateClient.OUTLINER.chaseAABB("BeltSlicer", feedback.bb) diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java index 4d1011879..ed12b472b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java @@ -4,6 +4,7 @@ import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTags; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; @@ -11,7 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundSetSubtitleTextPacket; import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket; import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket; @@ -70,9 +70,9 @@ public class BackTankUtil { player.connection.send(new ClientboundSetTitlesAnimationPacket(10, 40, 10)); player.connection.send(new ClientboundSetSubtitleTextPacket( - new TextComponent("\u26A0 ").withStyle(depleted ? ChatFormatting.RED : ChatFormatting.GOLD) + Components.literal("\u26A0 ").withStyle(depleted ? ChatFormatting.RED : ChatFormatting.GOLD) .append(component.withStyle(ChatFormatting.GRAY)))); - player.connection.send(new ClientboundSetTitleTextPacket(new TextComponent(""))); + player.connection.send(new ClientboundSetTitleTextPacket(Components.immutableEmpty())); } public static int maxAir(ItemStack backtank) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java index 9ceefaf8e..67dffa2a8 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -10,6 +10,7 @@ import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; @@ -25,7 +26,6 @@ import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.tags.FluidTags; import net.minecraft.util.StringUtil; import net.minecraft.world.entity.LivingEntity; @@ -129,7 +129,7 @@ public class CopperBacktankArmorLayer implements ParticleO @Override public String writeToString() { - return ForgeRegistries.PARTICLE_TYPES.getKey(getType()).toString(); + return RegisteredObjects.getKeyOrThrow(getType()).toString(); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java index 0a30ce607..03ac2b78d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java @@ -124,8 +124,8 @@ public class SymmetryHandler { .tesselateBlock(player.level, model, Blocks.AIR.defaultBlockState(), pos, ms, builder, true, random, Mth.getSeed(pos), OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE); - buffer.endBatch(); ms.popPose(); + buffer.endBatch(); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java index a5c77c3b5..f3d009546 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java @@ -16,10 +16,10 @@ import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; @@ -61,9 +61,9 @@ public class SymmetryWandScreen extends AbstractSimiScreen { int x = guiLeft; int y = guiTop; - labelType = new Label(x + 49, y + 28, TextComponent.EMPTY).colored(0xFFFFFFFF) + labelType = new Label(x + 49, y + 28, Components.immutableEmpty()).colored(0xFFFFFFFF) .withShadow(); - labelAlign = new Label(x + 49, y + 50, TextComponent.EMPTY).colored(0xFFFFFFFF) + labelAlign = new Label(x + 49, y + 50, Components.immutableEmpty()).colored(0xFFFFFFFF) .withShadow(); int state = diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java index 47a16cbac..8603595f5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/BuiltinPotatoProjectileTypes.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.curiosities.weapons; import java.util.UUID; import java.util.function.BiPredicate; import java.util.function.Predicate; +import java.util.function.Supplier; import com.mojang.authlib.GameProfile; import com.mojang.datafixers.util.Pair; @@ -43,7 +44,6 @@ import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.event.entity.EntityTeleportEvent; -import net.minecraftforge.registries.IRegistryDelegate; public class BuiltinPotatoProjectileTypes { @@ -62,7 +62,7 @@ public class BuiltinPotatoProjectileTypes { .velocity(1.25f) .knockback(1.5f) .renderTumbling() - .onBlockHit(plantCrop(Blocks.POTATOES.delegate)) + .onBlockHit(plantCrop(Blocks.POTATOES)) .registerAndAssign(Items.POTATO), BAKED_POTATO = create("baked_potato").damage(5) @@ -79,7 +79,7 @@ public class BuiltinPotatoProjectileTypes { .knockback(0.3f) .renderTowardMotion(140, 1) .soundPitch(1.5f) - .onBlockHit(plantCrop(Blocks.CARROTS.delegate)) + .onBlockHit(plantCrop(Blocks.CARROTS)) .registerAndAssign(Items.CARROT), GOLDEN_CARROT = create("golden_carrot").damage(12) @@ -213,7 +213,7 @@ public class BuiltinPotatoProjectileTypes { .velocity(0.95f) .renderTumbling() .soundPitch(0.9f) - .onBlockHit(placeBlockOnGround(Blocks.MELON.delegate)) + .onBlockHit(placeBlockOnGround(Blocks.MELON)) .registerAndAssign(Blocks.MELON), PUMPKIN_BLOCK = create("pumpkin_block").damage(6) @@ -222,7 +222,7 @@ public class BuiltinPotatoProjectileTypes { .velocity(0.95f) .renderTumbling() .soundPitch(0.9f) - .onBlockHit(placeBlockOnGround(Blocks.PUMPKIN.delegate)) + .onBlockHit(placeBlockOnGround(Blocks.PUMPKIN)) .registerAndAssign(Blocks.PUMPKIN), PUMPKIN_PIE = create("pumpkin_pie").damage(7) @@ -303,7 +303,7 @@ public class BuiltinPotatoProjectileTypes { entity.addEffect(effect); } - private static BiPredicate plantCrop(IRegistryDelegate cropBlock) { + private static BiPredicate plantCrop(Supplier cropBlock) { return (world, ray) -> { if (world.isClientSide()) return true; @@ -328,8 +328,12 @@ public class BuiltinPotatoProjectileTypes { }; } + private static BiPredicate plantCrop(Block cropBlock) { + return plantCrop(cropBlock.delegate); + } + private static BiPredicate placeBlockOnGround( - IRegistryDelegate block) { + Supplier block) { return (world, ray) -> { if (world.isClientSide()) return true; @@ -364,6 +368,10 @@ public class BuiltinPotatoProjectileTypes { }; } + private static BiPredicate placeBlockOnGround(Block block) { + return placeBlockOnGround(block.delegate); + } + private static Predicate chorusTeleport(double teleportDiameter) { return ray -> { Entity entity = ray.getEntity(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java index e87875809..7b132d8d0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.curiosities.zapper.ShootableGadgetItemMethods import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -24,8 +25,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -222,21 +221,21 @@ public class PotatoCannonItem extends ProjectileWeaponItem { String _reload = "potato_cannon.ammo.reload_ticks"; String _knockback = "potato_cannon.ammo.knockback"; - tooltip.add(new TextComponent("")); - tooltip.add(new TranslatableComponent(ammo.getDescriptionId()).append(new TextComponent(":")) + tooltip.add(Components.immutableEmpty()); + tooltip.add(Components.translatable(ammo.getDescriptionId()).append(Components.literal(":")) .withStyle(ChatFormatting.GRAY)); PotatoCannonProjectileType type = PotatoProjectileTypeManager.getTypeForStack(ammo) .get(); - TextComponent spacing = new TextComponent(" "); + MutableComponent spacing = Components.literal(" "); ChatFormatting green = ChatFormatting.GREEN; ChatFormatting darkGreen = ChatFormatting.DARK_GREEN; float damageF = type.getDamage() * additionalDamageMult; - MutableComponent damage = new TextComponent( + MutableComponent damage = Components.literal( damageF == Mth.floor(damageF) ? "" + Mth.floor(damageF) : "" + damageF); - MutableComponent reloadTicks = new TextComponent("" + type.getReloadTicks()); + MutableComponent reloadTicks = Components.literal("" + type.getReloadTicks()); MutableComponent knockback = - new TextComponent("" + (type.getKnockback() + additionalKnockback)); + Components.literal("" + (type.getKnockback() + additionalKnockback)); damage = damage.withStyle(additionalDamageMult > 1 ? green : darkGreen); knockback = knockback.withStyle(additionalKnockback > 0 ? green : darkGreen); diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java index 978c89966..795c56b80 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonProjectileType.java @@ -1,14 +1,16 @@ package com.simibubi.create.content.curiosities.weapons; -import java.util.HashSet; -import java.util.Set; +import java.util.ArrayList; +import java.util.List; import java.util.function.BiPredicate; import java.util.function.Consumer; import java.util.function.Predicate; +import java.util.function.Supplier; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.ResourceLocationException; import net.minecraft.network.FriendlyByteBuf; @@ -19,11 +21,10 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IRegistryDelegate; public class PotatoCannonProjectileType { - private Set> items = new HashSet<>(); + private List> items = new ArrayList<>(); private int reloadTicks = 10; private int damage = 1; @@ -43,7 +44,7 @@ public class PotatoCannonProjectileType { protected PotatoCannonProjectileType() { } - public Set> getItems() { + public List> getItems() { return items; } @@ -148,8 +149,8 @@ public class PotatoCannonProjectileType { public static void toBuffer(PotatoCannonProjectileType type, FriendlyByteBuf buffer) { buffer.writeVarInt(type.items.size()); - for (IRegistryDelegate delegate : type.items) { - buffer.writeResourceLocation(delegate.name()); + for (Supplier delegate : type.items) { + buffer.writeResourceLocation(RegisteredObjects.getKeyOrThrow(delegate.get())); } buffer.writeInt(type.reloadTicks); buffer.writeInt(type.damage); diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java index 6fe7bdb1e..c38d057c3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoProjectileTypeManager.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.curiosities.weapons; import java.util.HashMap; +import java.util.IdentityHashMap; import java.util.Map; import java.util.Optional; import java.util.function.Supplier; @@ -22,13 +23,12 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent.Context; import net.minecraftforge.network.PacketDistributor; -import net.minecraftforge.registries.IRegistryDelegate; public class PotatoProjectileTypeManager { private static final Map BUILTIN_TYPE_MAP = new HashMap<>(); private static final Map CUSTOM_TYPE_MAP = new HashMap<>(); - private static final Map, PotatoCannonProjectileType> ITEM_TO_TYPE_MAP = new HashMap<>(); + private static final Map ITEM_TO_TYPE_MAP = new IdentityHashMap<>(); public static void registerBuiltinType(ResourceLocation id, PotatoCannonProjectileType type) { synchronized (BUILTIN_TYPE_MAP) { @@ -44,14 +44,14 @@ public class PotatoProjectileTypeManager { return CUSTOM_TYPE_MAP.get(id); } - public static PotatoCannonProjectileType getTypeForItem(IRegistryDelegate item) { + public static PotatoCannonProjectileType getTypeForItem(Item item) { return ITEM_TO_TYPE_MAP.get(item); } public static Optional getTypeForStack(ItemStack item) { if (item.isEmpty()) return Optional.empty(); - return Optional.ofNullable(getTypeForItem(item.getItem().delegate)); + return Optional.ofNullable(getTypeForItem(item.getItem())); } public static void clear() { @@ -62,17 +62,17 @@ public class PotatoProjectileTypeManager { public static void fillItemMap() { for (Map.Entry entry : BUILTIN_TYPE_MAP.entrySet()) { PotatoCannonProjectileType type = entry.getValue(); - for (IRegistryDelegate delegate : type.getItems()) { - ITEM_TO_TYPE_MAP.put(delegate, type); + for (Supplier delegate : type.getItems()) { + ITEM_TO_TYPE_MAP.put(delegate.get(), type); } } for (Map.Entry entry : CUSTOM_TYPE_MAP.entrySet()) { PotatoCannonProjectileType type = entry.getValue(); - for (IRegistryDelegate delegate : type.getItems()) { - ITEM_TO_TYPE_MAP.put(delegate, type); + for (Supplier delegate : type.getItems()) { + ITEM_TO_TYPE_MAP.put(delegate.get(), type); } } - ITEM_TO_TYPE_MAP.remove(AllItems.POTATO_CANNON.get().delegate); + ITEM_TO_TYPE_MAP.remove(AllItems.POTATO_CANNON.get()); } public static void toBuffer(FriendlyByteBuf buffer) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java index 6328eaaa7..f7168b1c5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java @@ -10,13 +10,13 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; @@ -44,7 +44,7 @@ public abstract class ZapperScreen extends AbstractSimiScreen { this.background = background; this.zapper = zapper; this.hand = hand; - title = TextComponent.EMPTY; + title = Components.immutableEmpty(); brightColor = 0xFEFEFE; fontColor = AllGuiTextures.FONT_COLOR; diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java index 1028fc319..860f7d274 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.gui.widget.Indicator.State; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; @@ -22,7 +23,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; @@ -82,7 +82,7 @@ public class WorldshaperScreen extends ZapperScreen { int x = guiLeft; int y = guiTop; - brushLabel = new Label(x + 61, y + 25, TextComponent.EMPTY).withShadow(); + brushLabel = new Label(x + 61, y + 25, Components.immutableEmpty()).withShadow(); brushInput = new SelectionScrollInput(x + 56, y + 20, 77, 18).forOptions(brushOptions) .titled(Lang.translateDirect("gui.terrainzapper.brush")) .writingTo(brushLabel) @@ -111,7 +111,7 @@ public class WorldshaperScreen extends ZapperScreen { brushParams.clear(); for (int index = 0; index < 3; index++) { - Label label = new Label(x + 65 + 20 * index, y + 45, TextComponent.EMPTY).withShadow(); + Label label = new Label(x + 65 + 20 * index, y + 45, Components.immutableEmpty()).withShadow(); final int finalIndex = index; ScrollInput input = new ScrollInput(x + 56 + 20 * index, y + 40, 18, 18) @@ -155,10 +155,10 @@ public class WorldshaperScreen extends ZapperScreen { if (currentBrush.hasConnectivityOptions()) { int x1 = x + 7 + 4 * 18; int y1 = y + 79; - followDiagonalsIndicator = new Indicator(x1, y1 - 6, TextComponent.EMPTY); + followDiagonalsIndicator = new Indicator(x1, y1 - 6, Components.immutableEmpty()); followDiagonals = new IconButton(x1, y1, AllIcons.I_FOLLOW_DIAGONAL); x1 += 18; - acrossMaterialsIndicator = new Indicator(x1, y1 - 6, TextComponent.EMPTY); + acrossMaterialsIndicator = new Indicator(x1, y1 - 6, Components.immutableEmpty()); acrossMaterials = new IconButton(x1, y1, AllIcons.I_FOLLOW_MATERIAL); followDiagonals.withCallback(() -> { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java index 6651acef1..a4caf7cb4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelTileEntity.java @@ -26,6 +26,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilter import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -40,7 +41,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; @@ -752,7 +752,7 @@ public class BrassTunnelTileEntity extends BeltTunnelTileEntity implements IHave .withStyle(ChatFormatting.WHITE)); for (ItemStack item : allStacks) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", new TranslatableComponent(item.getDescriptionId()) + .append(Lang.translateDirect("tooltip.brass_tunnel.contains_entry", Components.translatable(item.getDescriptionId()) .getString(), item.getCount())) .withStyle(ChatFormatting.GRAY)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java index b24733582..7f3f4728e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChuteTileEntity.java @@ -25,6 +25,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputB import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -38,7 +39,6 @@ import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.util.Mth; import net.minecraft.world.Containers; import net.minecraft.world.entity.item.ItemEntity; @@ -719,7 +719,7 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor .withStyle(ChatFormatting.YELLOW))); if (!item.isEmpty()) { tooltip.add(componentSpacing.plainCopy() - .append(Lang.translateDirect("tooltip.chute.contains", new TranslatableComponent(item.getDescriptionId()) + .append(Lang.translateDirect("tooltip.chute.contains", Components.translatable(item.getDescriptionId()) .getString(), item.getCount())) .withStyle(ChatFormatting.GREEN)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java b/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java index 2ac88425b..55637bae2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/AllDisplayBehaviours.java @@ -17,6 +17,8 @@ import com.simibubi.create.content.logistics.block.display.source.ScoreboardDisp import com.simibubi.create.content.logistics.block.display.target.DisplayTarget; import com.simibubi.create.content.logistics.block.display.target.LecternDisplayTarget; import com.simibubi.create.content.logistics.block.display.target.SignDisplayTarget; +import com.simibubi.create.foundation.utility.CreateRegistry; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.util.nullness.NonNullConsumer; import net.minecraft.core.BlockPos; @@ -27,17 +29,17 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IRegistryDelegate; public class AllDisplayBehaviours { - public static final Map GATHERER_BEHAVIOURS = new HashMap<>(); - public static final Map, List> SOURCES_BY_BLOCK = new HashMap<>(); - public static final Map>, List> SOURCES_BY_TILE = new HashMap<>(); + private static final CreateRegistry> SOURCES_BY_BLOCK = new CreateRegistry<>(ForgeRegistries.BLOCKS); + private static final CreateRegistry, List> SOURCES_BY_TILE = new CreateRegistry<>(ForgeRegistries.BLOCK_ENTITIES); - public static final Map, DisplayTarget> TARGETS_BY_BLOCK = new HashMap<>(); - public static final Map>, DisplayTarget> TARGETS_BY_TILE = new HashMap<>(); + private static final CreateRegistry TARGETS_BY_BLOCK = new CreateRegistry<>(ForgeRegistries.BLOCKS); + private static final CreateRegistry, DisplayTarget> TARGETS_BY_TILE = new CreateRegistry<>(ForgeRegistries.BLOCK_ENTITIES); public static DisplayBehaviour register(ResourceLocation id, DisplayBehaviour behaviour) { behaviour.id = id; @@ -45,45 +47,95 @@ public class AllDisplayBehaviours { return behaviour; } - public static void assignBlock(DisplayBehaviour behaviour, IRegistryDelegate block) { - if (behaviour instanceof DisplaySource source) - SOURCES_BY_BLOCK.computeIfAbsent(block, r -> new ArrayList<>()) - .add(source); - if (behaviour instanceof DisplayTarget target) - TARGETS_BY_BLOCK.put(block, target); + public static void assignBlock(DisplayBehaviour behaviour, ResourceLocation block) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_BLOCK.get(block); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_BLOCK.register(block, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_BLOCK.register(block, target); + } } + public static void assignTile(DisplayBehaviour behaviour, ResourceLocation teType) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_TILE.get(teType); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_TILE.register(teType, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_TILE.register(teType, target); + } + } + + public static void assignBlock(DisplayBehaviour behaviour, Block block) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_BLOCK.get(block); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_BLOCK.register(block, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_BLOCK.register(block, target); + } + } + + public static void assignTile(DisplayBehaviour behaviour, BlockEntityType teType) { + if (behaviour instanceof DisplaySource source) { + List sources = SOURCES_BY_TILE.get(teType); + if (sources == null) { + sources = new ArrayList<>(); + SOURCES_BY_TILE.register(teType, sources); + } + sources.add(source); + } + if (behaviour instanceof DisplayTarget target) { + TARGETS_BY_TILE.register(teType, target); + } + } + + @Deprecated(forRemoval = true) + public static void assignBlock(DisplayBehaviour behaviour, IRegistryDelegate block) { + assignBlock(behaviour, block.name()); + } + + @Deprecated(forRemoval = true) public static void assignTile(DisplayBehaviour behaviour, IRegistryDelegate> teType) { - if (behaviour instanceof DisplaySource source) - SOURCES_BY_TILE.computeIfAbsent(teType, r -> new ArrayList<>()) - .add(source); - if (behaviour instanceof DisplayTarget target) - TARGETS_BY_TILE.put(teType, target); + assignTile(behaviour, teType.name()); } public static NonNullConsumer assignDataBehaviour(DisplayBehaviour behaviour, String... suffix) { return b -> { - ResourceLocation registryName = b.getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(b); String idSuffix = behaviour instanceof DisplaySource ? "_source" : "_target"; if (suffix.length > 0) idSuffix += "_" + suffix[0]; assignBlock(register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix), - behaviour), b.delegate); + behaviour), registryName); }; } public static > NonNullConsumer assignDataBehaviourTE( DisplayBehaviour behaviour, String... suffix) { return b -> { - ResourceLocation registryName = b.getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(b); String idSuffix = behaviour instanceof DisplaySource ? "_source" : "_target"; if (suffix.length > 0) idSuffix += "_" + suffix[0]; assignTile( register(new ResourceLocation(registryName.getNamespace(), registryName.getPath() + idSuffix), behaviour), - b.delegate); + registryName); }; } @@ -108,7 +160,11 @@ public class AllDisplayBehaviours { // public static List sourcesOf(Block block) { - return SOURCES_BY_BLOCK.getOrDefault(block.delegate, Collections.emptyList()); + List sources = SOURCES_BY_BLOCK.get(block); + if (sources == null) { + return Collections.emptyList(); + } + return sources; } public static List sourcesOf(BlockState state) { @@ -116,7 +172,11 @@ public class AllDisplayBehaviours { } public static List sourcesOf(BlockEntityType tileEntityType) { - return SOURCES_BY_TILE.getOrDefault(tileEntityType.delegate, Collections.emptyList()); + List sources = SOURCES_BY_TILE.get(tileEntityType); + if (sources == null) { + return Collections.emptyList(); + } + return sources; } public static List sourcesOf(BlockEntity tileEntity) { @@ -125,7 +185,7 @@ public class AllDisplayBehaviours { @Nullable public static DisplayTarget targetOf(Block block) { - return TARGETS_BY_BLOCK.get(block.delegate); + return TARGETS_BY_BLOCK.get(block); } @Nullable @@ -135,7 +195,7 @@ public class AllDisplayBehaviours { @Nullable public static DisplayTarget targetOf(BlockEntityType tileEntityType) { - return TARGETS_BY_TILE.get(tileEntityType.delegate); + return TARGETS_BY_TILE.get(tileEntityType); } @Nullable @@ -171,11 +231,11 @@ public class AllDisplayBehaviours { // public static void registerDefaults() { - assignTile(register(Create.asResource("sign_display_target"), new SignDisplayTarget()), BlockEntityType.SIGN.delegate); - assignTile(register(Create.asResource("lectern_display_target"), new LecternDisplayTarget()), BlockEntityType.LECTERN.delegate); - assignBlock(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR.delegate); - assignTile(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK.delegate); - assignTile(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE.delegate); - assignBlock(register(Create.asResource("redstone_power_display_source"), new RedstonePowerDisplaySource()), Blocks.TARGET.delegate); + assignTile(register(Create.asResource("sign_display_target"), new SignDisplayTarget()), BlockEntityType.SIGN); + assignTile(register(Create.asResource("lectern_display_target"), new LecternDisplayTarget()), BlockEntityType.LECTERN); + assignBlock(register(Create.asResource("death_count_display_source"), new DeathCounterDisplaySource()), Blocks.RESPAWN_ANCHOR); + assignTile(register(Create.asResource("scoreboard_display_source"), new ScoreboardDisplaySource()), BlockEntityType.COMMAND_BLOCK); + assignTile(register(Create.asResource("enchant_power_display_source"), new EnchantPowerDisplaySource()), BlockEntityType.ENCHANTING_TABLE); + assignBlock(register(Create.asResource("redstone_power_display_source"), new RedstonePowerDisplaySource()), Blocks.TARGET); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java index 5ad126c0e..443d7f7b5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/DisplayLinkScreen.java @@ -25,6 +25,7 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.ponder.ui.PonderTagScreen; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -35,7 +36,6 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; @@ -137,7 +137,7 @@ public class DisplayLinkScreen extends AbstractSimiScreen { int rows = stats.maxRows(); int startIndex = Math.min(te.targetLine, rows); - targetLineLabel = new Label(x + 65, y + 109, TextComponent.EMPTY).withShadow(); + targetLineLabel = new Label(x + 65, y + 109, Components.immutableEmpty()).withShadow(); targetLineLabel.text = target.getLineOptionText(startIndex); if (rows > 1) { @@ -189,7 +189,7 @@ public class DisplayLinkScreen extends AbstractSimiScreen { if (!sources.isEmpty()) { int startIndex = Math.max(sources.indexOf(te.activeSource), 0); - sourceTypeLabel = new Label(x + 65, y + 30, TextComponent.EMPTY).withShadow(); + sourceTypeLabel = new Label(x + 65, y + 30, Components.immutableEmpty()).withShadow(); sourceTypeLabel.text = sources.get(startIndex) .getName(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java index b72de2b78..623871b58 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/AccumulatedItemCountDisplaySource.java @@ -4,15 +4,15 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.DisplayLinkTileEntity; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class AccumulatedItemCountDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { - return new TextComponent(String.valueOf(context.sourceConfig() + return Components.literal(String.valueOf(context.sourceConfig() .getInt("Collected"))); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java index bb7c37196..d50164f66 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/BoilerDisplaySource.java @@ -11,12 +11,12 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import joptsimple.internal.Strings; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.LecternBlockEntity; @@ -50,7 +50,7 @@ public class BoilerDisplaySource extends DisplaySource { return reduce.orElse(EMPTY_LINE); }); - return List.of(componentList.reduce((comp1, comp2) -> comp1.append(new TextComponent("\n")) + return List.of(componentList.reduce((comp1, comp2) -> comp1.append(Components.literal("\n")) .append(comp2)) .orElse(EMPTY_LINE)); } @@ -128,9 +128,9 @@ public class BoilerDisplaySource extends DisplaySource { int lw = labelWidth(); if (forFlapDisplay) { - size = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("size"))).append(size); - water = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("water"))).append(water); - heat = new TextComponent(Strings.repeat(' ', lw - labelWidthOf("heat"))).append(heat); + size = Components.literal(Strings.repeat(' ', lw - labelWidthOf("size"))).append(size); + water = Components.literal(Strings.repeat(' ', lw - labelWidthOf("water"))).append(water); + heat = Components.literal(Strings.repeat(' ', lw - labelWidthOf("heat"))).append(heat); } return Stream.of(List.of(Lang.translateDirect(label, boiler.getHeatLevelTextComponent())), @@ -150,7 +150,7 @@ public class BoilerDisplaySource extends DisplaySource { private MutableComponent labelOf(String label) { if (label.isBlank()) - return TextComponent.EMPTY.copy(); + return Components.empty(); return Lang.translateDirect("boiler." + label); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java index c779b4a56..5b9877273 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/DisplaySource.java @@ -12,19 +12,18 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayLayout; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public abstract class DisplaySource extends DisplayBehaviour { - public static final List EMPTY = ImmutableList.of(new TextComponent("")); - public static final MutableComponent EMPTY_LINE = new TextComponent(""); - public static final MutableComponent WHITESPACE = new TextComponent(" "); + public static final List EMPTY = ImmutableList.of(Components.empty()); + public static final MutableComponent EMPTY_LINE = Components.empty(); + public static final MutableComponent WHITESPACE = Components.literal(" "); public abstract List provideText(DisplayLinkContext context, DisplayTargetStats stats); @@ -55,7 +54,7 @@ public abstract class DisplaySource extends DisplayBehaviour { } public Component getName() { - return new TranslatableComponent(id.getNamespace() + ".display_source." + getTranslationKey()); + return Components.translatable(id.getNamespace() + ".display_source." + getTranslationKey()); } public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayTileEntity flapDisplay, FlapDisplayLayout layout, int lineIndex) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java index 4ce1e54b1..e42a1d85f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/EnchantPowerDisplaySource.java @@ -4,10 +4,10 @@ import java.util.Random; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentHelper; @@ -23,7 +23,7 @@ public class EnchantPowerDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { if (!(context.getSourceTE() instanceof EnchantmentTableBlockEntity enchantmentTile)) - return ZERO; + return ZERO.copy(); BlockPos pos = context.getSourcePos(); Level level = context.level(); @@ -39,7 +39,7 @@ public class EnchantPowerDisplaySource extends NumericSingleLineDisplaySource { int cost = EnchantmentHelper.getEnchantmentCost(random, 2, (int) enchantPower, stack); - return new TextComponent(String.valueOf(cost)); + return Components.literal(String.valueOf(cost)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java index 55b96be2a..a9ed75db8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidAmountDisplaySource.java @@ -5,10 +5,10 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FluidFormatter; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -38,7 +38,7 @@ public class FluidAmountDisplaySource extends SingleLineDisplaySource { collected += stack.getAmount(); } - return new TextComponent(FluidFormatter.asString(collected, false)); + return Components.literal(FluidFormatter.asString(collected, false)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java index f0ef3d45f..fa8b725c8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/FluidListDisplaySource.java @@ -15,12 +15,12 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.TankManipulationBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FluidFormatter; import com.simibubi.create.foundation.utility.IntAttached; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -63,7 +63,7 @@ public class FluidListDisplaySource extends ValueListDisplaySource { .limit(maxRows) .map(entry -> IntAttached.with( entry.getValue(), - new TranslatableComponent(fluidNames.get(entry.getKey()).getTranslationKey())) + Components.translatable(fluidNames.get(entry.getKey()).getTranslationKey())) ); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java index b74f7827f..599f73ca0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemCountDisplaySource.java @@ -5,9 +5,9 @@ import com.simibubi.create.content.logistics.block.display.target.DisplayTargetS import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.items.IItemHandler; @@ -18,14 +18,14 @@ public class ItemCountDisplaySource extends NumericSingleLineDisplaySource { protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { BlockEntity sourceTE = context.getSourceTE(); if (!(sourceTE instanceof ContentObserverTileEntity cote)) - return ZERO; + return ZERO.copy(); InvManipulationBehaviour invManipulationBehaviour = cote.getBehaviour(InvManipulationBehaviour.TYPE); FilteringBehaviour filteringBehaviour = cote.getBehaviour(FilteringBehaviour.TYPE); IItemHandler handler = invManipulationBehaviour.getInventory(); if (handler == null) - return ZERO; + return ZERO.copy(); int collected = 0; for (int i = 0; i < handler.getSlots(); i++) { @@ -37,7 +37,7 @@ public class ItemCountDisplaySource extends NumericSingleLineDisplaySource { collected += stack.getCount(); } - return new TextComponent(String.valueOf(collected)); + return Components.literal(String.valueOf(collected)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThroughputDisplaySource.java similarity index 95% rename from src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java rename to src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThroughputDisplaySource.java index e4e346aa0..72f9300af 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThoughputDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ItemThroughputDisplaySource.java @@ -12,11 +12,10 @@ import net.minecraft.nbt.FloatTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySource { +public class ItemThroughputDisplaySource extends AccumulatedItemCountDisplaySource { static final int POOL_SIZE = 10; @@ -24,7 +23,7 @@ public class ItemThoughputDisplaySource extends AccumulatedItemCountDisplaySourc protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { CompoundTag conf = context.sourceConfig(); if (conf.contains("Inactive")) - return new TextComponent("0"); + return ZERO.copy(); double interval = 20 * Math.pow(60, conf.getInt("Interval")); double rate = conf.getFloat("Rate") * interval; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java index e04d40a4a..c9c1e7e73 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/KineticSpeedDisplaySource.java @@ -14,8 +14,8 @@ public class KineticSpeedDisplaySource extends NumericSingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { - if (!(context.getSourceTE()instanceof SpeedGaugeTileEntity gaugeTile)) - return ZERO; + if (!(context.getSourceTE() instanceof SpeedGaugeTileEntity gaugeTile)) + return ZERO.copy(); boolean absoluteValue = context.sourceConfig() .getInt("Directional") == 0; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java index 475a63cc8..001d2cd91 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/NumericSingleLineDisplaySource.java @@ -2,18 +2,19 @@ package com.simibubi.create.content.logistics.block.display.source; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; +import com.simibubi.create.foundation.utility.Components; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; public abstract class NumericSingleLineDisplaySource extends SingleLineDisplaySource { - protected static final TextComponent ZERO = new TextComponent("0"); - + protected static final Component ZERO = Components.literal("0"); + @Override protected String getFlapDisplayLayoutName(DisplayLinkContext context) { return "Number"; } - + @Override protected FlapDisplaySection createSectionForValue(DisplayLinkContext context, int size) { return new FlapDisplaySection(size * FlapDisplaySection.MONOSPACE, "numeric", false, false); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java index 3cf68de45..5d1da0b7b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/PercentOrProgressBarDisplaySource.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.SignBlockEntity; @@ -47,11 +47,11 @@ public abstract class PercentOrProgressBarDisplaySource extends NumericSingleLin for (int i = 0; i < emptySpaces; i++) s.append("\u2592"); - return new TextComponent(s.toString()); + return Components.literal(s.toString()); } protected MutableComponent formatNumeric(DisplayLinkContext context, Float currentLevel) { - return new TextComponent(Mth.clamp((int) (currentLevel * 100), 0, 100) + "%"); + return Components.literal(Mth.clamp((int) (currentLevel * 100), 0, 100) + "%"); } @Nullable diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java index 03e0195a8..68ff0e51e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/RedstonePowerDisplaySource.java @@ -2,10 +2,10 @@ package com.simibubi.create.content.logistics.block.display.source; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraftforge.api.distmarker.Dist; @@ -20,7 +20,7 @@ public class RedstonePowerDisplaySource extends PercentOrProgressBarDisplaySourc @Override protected MutableComponent formatNumeric(DisplayLinkContext context, Float currentLevel) { - return new TextComponent(String.valueOf((int) (currentLevel * 15))); + return Components.literal(String.valueOf((int) (currentLevel * 15))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java index cafedbba6..70614052c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ScoreboardDisplaySource.java @@ -5,12 +5,12 @@ import java.util.stream.Stream; import com.google.common.collect.ImmutableList; import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.scores.Objective; @@ -41,7 +41,7 @@ public class ScoreboardDisplaySource extends ValueListDisplaySource { .getPlayerScores(objective) .stream() .limit(maxRows) - .map(score -> IntAttached.with(score.getScore(), new TextComponent(score.getOwner()).copy())) + .map(score -> IntAttached.with(score.getScore(), Components.literal(score.getOwner()).copy())) .sorted(IntAttached.comparator()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java index c557050a0..aaa2a2942 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/SingleLineDisplaySource.java @@ -9,11 +9,11 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -51,7 +51,7 @@ public abstract class SingleLineDisplaySource extends DisplaySource { String label = context.sourceConfig() .getString("Label"); if (!label.isEmpty()) - line = new TextComponent(label + " ").append(line); + line = Components.literal(label + " ").append(line); } return ImmutableList.of(line); @@ -64,7 +64,7 @@ public abstract class SingleLineDisplaySource extends DisplaySource { String label = context.sourceConfig() .getString("Label"); if (!label.isEmpty()) - return ImmutableList.of(ImmutableList.of(new TextComponent(label + " "), provideLine(context, stats))); + return ImmutableList.of(ImmutableList.of(Components.literal(label + " "), provideLine(context, stats))); } return super.provideFlapDisplayText(context, stats); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java index 60c5f2c13..5eba86c04 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StationSummaryDisplaySource.java @@ -16,24 +16,24 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.station import com.simibubi.create.content.logistics.trains.management.edgePoint.station.StationTileEntity; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class StationSummaryDisplaySource extends DisplaySource { - protected static final MutableComponent UNPREDICTABLE = new TextComponent(" ~ "); + protected static final MutableComponent UNPREDICTABLE = Components.literal(" ~ "); protected static final List EMPTY_ENTRY_4 = - ImmutableList.of(WHITESPACE, new TextComponent(" . "), WHITESPACE, WHITESPACE); + ImmutableList.of(WHITESPACE, Components.literal(" . "), WHITESPACE, WHITESPACE); protected static final List EMPTY_ENTRY_5 = - ImmutableList.of(WHITESPACE, new TextComponent(" . "), WHITESPACE, WHITESPACE, WHITESPACE); + ImmutableList.of(WHITESPACE, Components.literal(" . "), WHITESPACE, WHITESPACE, WHITESPACE); @Override public List provideText(DisplayLinkContext context, DisplayTargetStats stats) { @@ -67,7 +67,7 @@ public class StationSummaryDisplaySource extends DisplaySource { min++; sec = 0; } - lines.add(min > 0 ? new TextComponent(String.valueOf(min)) : WHITESPACE); + lines.add(min > 0 ? Components.literal(String.valueOf(min)) : WHITESPACE); lines.add(min > 0 ? Lang.translateDirect("display_source.station_summary.minutes") : Lang.translateDirect("display_source.station_summary.seconds", sec)); } @@ -86,7 +86,7 @@ public class StationSummaryDisplaySource extends DisplaySource { platform = platform.replace(string, ""); platform = platform.replace("*", "?"); - lines.add(new TextComponent(platform.trim())); + lines.add(Components.literal(platform.trim())); list.add(lines); }); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java index 86d42f35d..250a65e5c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/StopWatchDisplaySource.java @@ -4,9 +4,9 @@ import com.simibubi.create.content.contraptions.components.clock.CuckooClockTile import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class StopWatchDisplaySource extends SingleLineDisplaySource { @@ -32,7 +32,7 @@ public class StopWatchDisplaySource extends SingleLineDisplaySource { int minutes = (diff / 60 / 20) % 60; int seconds = (diff / 20) % 60; - MutableComponent component = new TextComponent((hours == 0 ? "" : (hours < 10 ? " " : "") + hours + ":") + MutableComponent component = Components.literal((hours == 0 ? "" : (hours < 10 ? " " : "") + hours + ":") + (minutes < 10 ? hours == 0 ? " " : "0" : "") + minutes + ":" + (seconds < 10 ? "0" : "") + seconds); return component; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java index d71ef7bbf..2564f67ee 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/TimeOfDayDisplaySource.java @@ -6,17 +6,17 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class TimeOfDayDisplaySource extends SingleLineDisplaySource { - public static final MutableComponent EMPTY_TIME = new TextComponent("--:--"); + public static final MutableComponent EMPTY_TIME = Components.literal("--:--"); @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { @@ -49,7 +49,7 @@ public class TimeOfDayDisplaySource extends SingleLineDisplaySource { minutes = Create.RANDOM.nextInt(40) + 60; } - MutableComponent component = new TextComponent( + MutableComponent component = Components.literal( (hours < 10 ? " " : "") + hours + ":" + (minutes < 10 ? "0" : "") + minutes + (c12 ? " " : "")); return c12 ? component.append(suffix) : component; diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java index 193067fad..b33c98caa 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/ValueListDisplaySource.java @@ -15,12 +15,12 @@ import com.simibubi.create.content.logistics.trains.management.display.FlapDispl import com.simibubi.create.content.logistics.trains.management.display.FlapDisplaySection; import com.simibubi.create.content.logistics.trains.management.display.FlapDisplayTileEntity; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.LecternBlockEntity; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -63,7 +63,7 @@ public abstract class ValueListDisplaySource extends DisplaySource { current = atIndex; continue; } - current.append(new TextComponent("\n")) + current.append(Components.literal("\n")) .append(atIndex); if ((i + 1) % ENTRIES_PER_PAGE == 0) { condensed.add(current); @@ -99,7 +99,7 @@ public abstract class ValueListDisplaySource extends DisplaySource { : Arrays.asList(name, shortened.getFirst(), shortened.getSecond()); } - MutableComponent formattedNumber = new TextComponent(String.valueOf(number)).append(WHITESPACE); + MutableComponent formattedNumber = Components.literal(String.valueOf(number)).append(WHITESPACE); return valueFirst() ? Arrays.asList(formattedNumber, name) : Arrays.asList(name, formattedNumber); } @@ -137,14 +137,14 @@ public abstract class ValueListDisplaySource extends DisplaySource { private Couple shorten(int number) { if (number >= 1000000) - return Couple.create(new TextComponent(String.valueOf(number / 1000000)), + return Couple.create(Components.literal(String.valueOf(number / 1000000)), Lang.translateDirect("display_source.value_list.million") .append(WHITESPACE)); if (number >= 1000) - return Couple.create(new TextComponent(String.valueOf(number / 1000)), + return Couple.create(Components.literal(String.valueOf(number / 1000)), Lang.translateDirect("display_source.value_list.thousand") .append(WHITESPACE)); - return Couple.create(new TextComponent(String.valueOf(number)), WHITESPACE); + return Couple.create(Components.literal(String.valueOf(number)), WHITESPACE); } protected boolean shortenNumbers(DisplayLinkContext context) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java index 90729a8c7..28afb42ed 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeTileEntity.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.signal. import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalTileEntity.SignalState; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.DynamicComponent; @@ -16,7 +17,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -82,7 +82,7 @@ public class NixieTubeTileEntity extends SmartTileEntity { public MutableComponent getFullText() { return customText.map(DynamicComponent::get) - .orElse(new TextComponent("" + redstoneStrength)); + .orElse(Components.literal("" + redstoneStrength)); } public void updateRedstoneStrength(int signalStrength) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java index f6b26b01c..c83e45c62 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchScreen.java @@ -10,12 +10,12 @@ import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; public class StockpileSwitchScreen extends AbstractSimiScreen { @@ -57,7 +57,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { .startWithValue(te.getState() ? 1 : 0); offBelow = new ScrollInput(x + 36, y + 40, 102, 18).withRange(0, 100) - .titled(TextComponent.EMPTY.plainCopy()) + .titled(Components.empty()) .calling(state -> { lastModification = 0; offBelow.titled(Lang.translateDirect("gui.stockpile_switch.move_to_upper_at", state)); @@ -69,7 +69,7 @@ public class StockpileSwitchScreen extends AbstractSimiScreen { .setState((int) (te.offWhenBelow * 100)); onAbove = new ScrollInput(x + 36, y + 18, 102, 18).withRange(1, 101) - .titled(TextComponent.EMPTY.plainCopy()) + .titled(Components.empty()) .calling(state -> { lastModification = 0; onAbove.titled(Lang.translateDirect("gui.stockpile_switch.move_to_lower_at", state)); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java index 25ea8591d..e5fb7a377 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.ControlsUtil; import com.simibubi.create.foundation.utility.Lang; @@ -28,7 +29,6 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.client.gui.ForgeIngameGui; @@ -220,7 +220,7 @@ public class LinkedControllerClientHandler { return; poseStack.pushPose(); - Screen tooltipScreen = new Screen(TextComponent.EMPTY) { + Screen tooltipScreen = new Screen(Components.immutableEmpty()) { }; tooltipScreen.init(mc, width1, height1); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java index 2ab82ce70..eed646d68 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterContainer.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.AllContainerTypes; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; @@ -11,7 +12,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ClickType; @@ -52,7 +52,7 @@ public class AttributeFilterContainer extends AbstractFilterContainer { super.init(inv, contentHolder); ItemStack stack = new ItemStack(Items.NAME_TAG); stack.setHoverName( - new TextComponent("Selected Tags").withStyle(ChatFormatting.RESET, ChatFormatting.BLUE)); + Components.literal("Selected Tags").withStyle(ChatFormatting.RESET, ChatFormatting.BLUE)); ghostInventory.setStackInSlot(1, stack); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java index fb5488ccb..924b38941 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java @@ -15,6 +15,7 @@ import com.simibubi.create.foundation.gui.widget.Indicator; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -22,7 +23,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; @@ -86,9 +86,9 @@ public class AttributeFilterScreen extends AbstractFilterScreen selectedAttributes.add(new TextComponent("- ") + menu.selectedAttributes.forEach(at -> selectedAttributes.add(Components.literal("- ") .append(at.getFirst() .format(at.getSecond())) .withStyle(ChatFormatting.GRAY))); @@ -243,7 +243,7 @@ public class AttributeFilterScreen extends AbstractFilterScreen makeSummary = makeSummary(stack); if (makeSummary.isEmpty()) return; - ItemDescription.add(tooltip, new TextComponent(" ")); + ItemDescription.add(tooltip, Components.literal(" ")); ItemDescription.add(tooltip, makeSummary); } } @@ -92,14 +92,14 @@ public class FilterItem extends Item implements MenuProvider { int count = 0; for (int i = 0; i < filterItems.getSlots(); i++) { if (count > 3) { - list.add(new TextComponent("- ...").withStyle(ChatFormatting.DARK_GRAY)); + list.add(Components.literal("- ...").withStyle(ChatFormatting.DARK_GRAY)); break; } ItemStack filterStack = filterItems.getStackInSlot(i); if (filterStack.isEmpty()) continue; - list.add(new TextComponent("- ").append(filterStack.getHoverName()).withStyle(ChatFormatting.GRAY)); + list.add(Components.literal("- ").append(filterStack.getHoverName()).withStyle(ChatFormatting.GRAY)); count++; } @@ -124,10 +124,10 @@ public class FilterItem extends Item implements MenuProvider { ItemAttribute attribute = ItemAttribute.fromNBT(compound); boolean inverted = compound.getBoolean("Inverted"); if (count > 3) { - list.add(new TextComponent("- ...").withStyle(ChatFormatting.DARK_GRAY)); + list.add(Components.literal("- ...").withStyle(ChatFormatting.DARK_GRAY)); break; } - list.add(new TextComponent("- ").append(attribute.format(inverted))); + list.add(Components.literal("- ").append(attribute.format(inverted))); count++; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java index 9bae5a3e6..bdb5b0b0e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/FilterScreen.java @@ -8,11 +8,11 @@ import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.Indicator; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Inventory; public class FilterScreen extends AbstractFilterScreen { @@ -58,8 +58,8 @@ public class FilterScreen extends AbstractFilterScreen { sendOptionUpdate(Option.WHITELIST); }); whitelist.setToolTip(allowN); - blacklistIndicator = new Indicator(x + 18, y + 67, TextComponent.EMPTY); - whitelistIndicator = new Indicator(x + 36, y + 67, TextComponent.EMPTY); + blacklistIndicator = new Indicator(x + 18, y + 67, Components.immutableEmpty()); + whitelistIndicator = new Indicator(x + 36, y + 67, Components.immutableEmpty()); addRenderableWidgets(blacklist, whitelist, blacklistIndicator, whitelistIndicator); respectNBT = new IconButton(x + 60, y + 73, AllIcons.I_RESPECT_NBT); @@ -74,8 +74,8 @@ public class FilterScreen extends AbstractFilterScreen { sendOptionUpdate(Option.IGNORE_DATA); }); ignoreNBT.setToolTip(ignoreDataN); - respectNBTIndicator = new Indicator(x + 60, y + 67, TextComponent.EMPTY); - ignoreNBTIndicator = new Indicator(x + 78, y + 67, TextComponent.EMPTY); + respectNBTIndicator = new Indicator(x + 60, y + 67, Components.immutableEmpty()); + ignoreNBTIndicator = new Indicator(x + 78, y + 67, Components.immutableEmpty()); addRenderableWidgets(respectNBT, ignoreNBT, respectNBTIndicator, ignoreNBTIndicator); handleIndicators(); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java index a5353d6a7..55cef5970 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java @@ -27,7 +27,7 @@ import com.simibubi.create.content.logistics.item.filter.attribute.astralsorcery import com.simibubi.create.foundation.utility.Lang; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -121,7 +121,7 @@ public interface ItemAttribute { } @OnlyIn(value = Dist.CLIENT) - default TranslatableComponent format(boolean inverted) { + default MutableComponent format(boolean inverted) { return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), getTranslationParameters()); } @@ -299,7 +299,7 @@ public interface ItemAttribute { @Override @OnlyIn(value = Dist.CLIENT) - public TranslatableComponent format(boolean inverted) { + public MutableComponent format(boolean inverted) { return Lang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), group.getDisplayName()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java index 7f401883e..d41a6da25 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ColorAttribute.java @@ -9,6 +9,7 @@ import java.util.Set; import java.util.stream.Collectors; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.resources.language.I18n; import net.minecraft.nbt.CompoundTag; @@ -56,7 +57,7 @@ public class ColorAttribute implements ItemAttribute { colors.addAll(getFireworkStarColors(nbt.getCompound("Explosion"))); } - Arrays.stream(DyeColor.values()).filter(c -> stack.getItem().getRegistryName().getPath().startsWith(c.getName() + "_")).forEach(colors::add); + Arrays.stream(DyeColor.values()).filter(c -> RegisteredObjects.getKeyOrThrow(stack.getItem()).getPath().startsWith(c.getName() + "_")).forEach(colors::add); return colors; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java index 3fb1102ab..c68e1e837 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/EnchantAttribute.java @@ -6,9 +6,9 @@ import java.util.stream.Collectors; import javax.annotation.Nullable; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; @@ -43,7 +43,7 @@ public class EnchantAttribute implements ItemAttribute { public Object[] getTranslationParameters() { String parameter = ""; if(enchantment != null) - parameter = new TranslatableComponent(enchantment.getDescriptionId()).getString(); + parameter = Components.translatable(enchantment.getDescriptionId()).getString(); return new Object[] { parameter }; } @@ -51,7 +51,7 @@ public class EnchantAttribute implements ItemAttribute { public void writeNBT(CompoundTag nbt) { if (enchantment == null) return; - ResourceLocation id = ForgeRegistries.ENCHANTMENTS.getKey(enchantment); + ResourceLocation id = enchantment.getRegistryName(); if (id == null) return; nbt.putString("id", id.toString()); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java index 7ba3997e9..866142599 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/FluidContentsAttribute.java @@ -7,9 +7,9 @@ import java.util.stream.Collectors; import javax.annotation.Nullable; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.material.Fluid; @@ -46,7 +46,7 @@ public class FluidContentsAttribute implements ItemAttribute { public Object[] getTranslationParameters() { String parameter = ""; if (fluid != null) - parameter = new TranslatableComponent(fluid.getAttributes().getTranslationKey()).getString(); + parameter = Components.translatable(fluid.getAttributes().getTranslationKey()).getString(); return new Object[] { parameter }; } @@ -54,7 +54,7 @@ public class FluidContentsAttribute implements ItemAttribute { public void writeNBT(CompoundTag nbt) { if (fluid == null) return; - ResourceLocation id = ForgeRegistries.FLUIDS.getKey(fluid); + ResourceLocation id = fluid.getRegistryName(); if (id == null) return; nbt.putString("id", id.toString()); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java index a3891eb43..76f3b351f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAmuletAttribute.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; @@ -56,7 +56,7 @@ public class AstralSorceryAmuletAttribute implements ItemAttribute { Enchantment enchant = ForgeRegistries.ENCHANTMENTS.getValue(ResourceLocation.tryParse(enchName)); if(enchant != null) { - something = new TranslatableComponent(enchant.getDescriptionId()).getString(); + something = Components.translatable(enchant.getDescriptionId()).getString(); } if(enchType == 1) something = "existing " + something; diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java index 6acb2fe4c..ee5a5c1c1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryAttunementAttribute.java @@ -4,9 +4,9 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -24,7 +24,7 @@ public class AstralSorceryAttunementAttribute implements ItemAttribute { // Special handling for shifting stars ResourceLocation itemResource = itemStack.getItem().getRegistryName(); - if(itemResource != null && itemResource.toString().contains("shifting_star_")) { + if (itemResource != null && itemResource.toString().contains("shifting_star_")) { constellation = itemResource.toString().replace("shifting_star_", ""); } @@ -38,7 +38,7 @@ public class AstralSorceryAttunementAttribute implements ItemAttribute { // Special handling for shifting stars ResourceLocation itemResource = itemStack.getItem().getRegistryName(); - if(itemResource != null && itemResource.toString().contains("shifting_star_")) { + if (itemResource != null && itemResource.toString().contains("shifting_star_")) { constellation = itemResource.toString().replace("shifting_star_", ""); } @@ -57,7 +57,7 @@ public class AstralSorceryAttunementAttribute implements ItemAttribute { @Override public Object[] getTranslationParameters() { ResourceLocation constResource = new ResourceLocation(constellationName); - String something = new TranslatableComponent(String.format("%s.constellation.%s", constResource.getNamespace(), constResource.getPath())).getString(); + String something = Components.translatable(String.format("%s.constellation.%s", constResource.getNamespace(), constResource.getPath())).getString(); return new Object[] { something }; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java index 968d3b812..d33a7e6c5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryCrystalAttribute.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -46,7 +46,7 @@ public class AstralSorceryCrystalAttribute implements ItemAttribute { @Override public Object[] getTranslationParameters() { ResourceLocation traitResource = new ResourceLocation(traitName); - String something = new TranslatableComponent(String.format("crystal.property.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); + String something = Components.translatable(String.format("crystal.property.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); return new Object[] { something }; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java index 3875b9086..2e8e476fd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/astralsorcery/AstralSorceryPerkGemAttribute.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.simibubi.create.content.logistics.item.filter.ItemAttribute; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -46,7 +46,7 @@ public class AstralSorceryPerkGemAttribute implements ItemAttribute { @Override public Object[] getTranslationParameters() { ResourceLocation traitResource = new ResourceLocation(traitName); - String something = new TranslatableComponent(String.format("perk.attribute.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); + String something = Components.translatable(String.format("perk.attribute.%s.%s.name", traitResource.getNamespace(), traitResource.getPath())).getString(); return new Object[] { something }; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java index b71df10de..dea2966aa 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/IBogeyBlock.java @@ -13,6 +13,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.trains.entity.BogeyInstance; import com.simibubi.create.content.logistics.trains.entity.CarriageBogey; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; @@ -63,7 +64,7 @@ public interface IBogeyBlock extends IWrenchable { @Override default BlockState getRotatedBlockState(BlockState state, Direction targetedFace) { Block block = state.getBlock(); - int indexOf = BOGEYS.indexOf(block.getRegistryName()); + int indexOf = BOGEYS.indexOf(RegisteredObjects.getKeyOrThrow(block)); if (indexOf == -1) return state; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java index be80158df..c9e2d7220 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageBogey.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.logistics.trains.TrackGraph; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -146,7 +147,7 @@ public class CarriageBogey { public CompoundTag write(DimensionPalette dimensions) { CompoundTag tag = new CompoundTag(); - tag.putString("Type", ((Block) type).getRegistryName() + tag.putString("Type", RegisteredObjects.getKeyOrThrow((Block) type) .toString()); tag.put("Points", points.serializeEach(tp -> tp.write(dimensions))); return tag; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java index b4e0a7fea..5c918cd84 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageContraptionEntity.java @@ -27,6 +27,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.station import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.VecHelper; @@ -37,9 +38,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.KeybindComponent; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; @@ -592,7 +591,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { GlobalStation currentStation = carriage.train.getCurrentStation(); if (currentStation != null && spaceDown) { sendPrompt(player, Lang.translateDirect("train.arrived_at", - new TextComponent(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); + Components.literal(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); return true; } @@ -604,7 +603,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { if (currentStation != null && targetSpeed != 0) { stationMessage = false; sendPrompt(player, Lang.translateDirect("train.departing_from", - new TextComponent(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); + Components.literal(currentStation.name).withStyle(s -> s.withColor(0x704630))), false); } if (currentStation == null) { @@ -617,8 +616,8 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { double f = (nav.distanceToDestination / navDistanceTotal); int progress = (int) (Mth.clamp(1 - ((1 - f) * (1 - f)), 0, 1) * 30); boolean arrived = progress == 0; - TextComponent whiteComponent = new TextComponent(Strings.repeat("|", progress)); - TextComponent greenComponent = new TextComponent(Strings.repeat("|", 30 - progress)); + MutableComponent whiteComponent = Components.literal(Strings.repeat("|", progress)); + MutableComponent greenComponent = Components.literal(Strings.repeat("|", 30 - progress)); int fromColor = 0x00_FFC244; int toColor = 0x00_529915; @@ -684,14 +683,14 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { private void displayApproachStationMessage(Player player, GlobalStation station) { sendPrompt(player, Lang.translateDirect("contraption.controls.approach_station", - new KeybindComponent("key.jump"), station.name), false); + Components.keybind("key.jump"), station.name), false); stationMessage = true; } private void cleanUpApproachStationMessage(Player player) { if (!stationMessage) return; - player.displayClientMessage(new TextComponent(""), true); + player.displayClientMessage(Components.immutableEmpty(), true); stationMessage = false; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java index fc180a458..479b2699e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainPacket.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.logistics.trains.IBogeyBlock; import com.simibubi.create.foundation.networking.SimplePacketBase; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -84,7 +85,7 @@ public class TrainPacket extends SimplePacketBase { continue; } CarriageBogey bogey = carriage.bogeys.get(first); - buffer.writeResourceLocation(((Block) bogey.type).getRegistryName()); + buffer.writeResourceLocation(RegisteredObjects.getKeyOrThrow((Block) bogey.type)); } buffer.writeVarInt(carriage.bogeySpacing); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java index ac30cd36b..79b5bb9db 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/TrainStatus.java @@ -3,11 +3,11 @@ package com.simibubi.create.content.logistics.trains.entity; import java.util.ArrayList; import java.util.List; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; @@ -130,7 +130,7 @@ public class TrainStatus { } public void displayInformation(String key, boolean itsAGoodThing, Object... args) { - queued.add(new TextComponent(" - ").withStyle(ChatFormatting.GRAY) + queued.add(Components.literal(" - ").withStyle(ChatFormatting.GRAY) .append(Lang.translateDirect("train.status." + key, args) .withStyle(st -> st.withColor(itsAGoodThing ? 0xD5ECC2 : 0xFFD3B4)))); if (queued.size() > 3) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java index 37b7abb9a..355419495 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java @@ -8,6 +8,7 @@ import com.google.gson.JsonElement; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.DynamicComponent; import com.simibubi.create.foundation.utility.NBTHelper; @@ -18,7 +19,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; @@ -145,7 +145,7 @@ public class FlapDisplayTileEntity extends KineticTileEntity { FlapDisplaySection flapDisplaySection = sections.get(0); if (rawComponentText == null) { manualLines[lineIndex] = false; - flapDisplaySection.setText(new TextComponent("")); + flapDisplaySection.setText(Components.immutableEmpty()); notifyUpdate(); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java index 42da0c200..97c7e4f57 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationMarker.java @@ -10,6 +10,7 @@ import com.simibubi.create.AllTileEntities; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.management.edgePoint.TrackTargetingBehaviour; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; @@ -19,7 +20,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.saveddata.maps.MapDecoration; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; @@ -40,7 +40,7 @@ public class StationMarker { BlockPos source = NbtUtils.readBlockPos(tag.getCompound("source")); BlockPos target = NbtUtils.readBlockPos(tag.getCompound("target")); Component name = Component.Serializer.fromJson(tag.getString("name")); - if (name == null) name = TextComponent.EMPTY; + if (name == null) name = Components.immutableEmpty(); return new StationMarker(source, target, name); } @@ -54,7 +54,7 @@ public class StationMarker { String name = stationOption.get() .getStation().name; return new StationMarker(pos, TileEntityBehaviour.get(stationOption.get(), TrackTargetingBehaviour.TYPE) - .getPositionForMapMarker(), new TextComponent(name)); + .getPositionForMapMarker(), Components.literal(name)); } public CompoundTag save() { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java index 89da131f3..d646c1d24 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/StationScreen.java @@ -16,6 +16,7 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; @@ -23,7 +24,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; public class StationScreen extends AbstractStationScreen { @@ -58,7 +58,7 @@ public class StationScreen extends AbstractStationScreen { onTextChanged = s -> nameBox.x = nameBoxX(s, nameBox); nameBox = new EditBox(new NoShadowFontWrapper(font), x + 23, y + 4, background.width - 20, 10, - new TextComponent(station.name)); + Components.literal(station.name)); nameBox.setBordered(false); nameBox.setMaxLength(25); nameBox.setTextColor(0x442000); @@ -92,7 +92,7 @@ public class StationScreen extends AbstractStationScreen { addRenderableWidget(dropScheduleButton); onTextChanged = s -> trainNameBox.x = nameBoxX(s, trainNameBox); - trainNameBox = new EditBox(font, x + 23, y + 47, background.width - 75, 10, new TextComponent("")); + trainNameBox = new EditBox(font, x + 23, y + 47, background.width - 75, 10, Components.immutableEmpty()); trainNameBox.setBordered(false); trainNameBox.setMaxLength(35); trainNameBox.setTextColor(0xC6C6C6); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java index cbf3c891b..f89993b53 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/edgePoint/station/TrainEditPacket.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.entity.TrainIconType; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.networking.SimplePacketBase; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; @@ -52,7 +52,7 @@ public class TrainEditPacket extends SimplePacketBase { if (train == null) return; if (!name.isBlank()) - train.name = new TextComponent(name); + train.name = Components.literal(name); train.icon = TrainIconType.byId(iconType); if (sender != null) AllPackets.channel.send(PacketDistributor.ALL.noArg(), new TrainEditReturnPacket(id, name, iconType)); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java index 85c1b0fe8..4858e0974 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/IScheduleInput.java @@ -7,11 +7,11 @@ import javax.annotation.Nullable; import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -32,7 +32,7 @@ public interface IScheduleInput { public default List getTitleAs(String type) { ResourceLocation id = getId(); return ImmutableList - .of(new TranslatableComponent(id.getNamespace() + ".schedule." + type + "." + id.getPath())); + .of(Components.translatable(id.getNamespace() + ".schedule." + type + "." + id.getPath())); } public default ItemStack getSecondLineIcon() { diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java index dfc6b1f94..f27ea2f9c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/Schedule.java @@ -19,6 +19,7 @@ import com.simibubi.create.content.logistics.trains.management.schedule.destinat import com.simibubi.create.content.logistics.trains.management.schedule.destination.ChangeTitleInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.Pair; @@ -26,7 +27,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; public class Schedule { @@ -64,7 +64,7 @@ public class Schedule { return list.stream() .map(Pair::getFirst) .map(rl -> rl.getNamespace() + ".schedule." + langSection + rl.getPath()) - .map(TranslatableComponent::new) + .map(Components::translatable) .toList(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java index 9698773e3..66700cd8e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleItem.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEn import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; @@ -18,7 +19,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -133,8 +133,8 @@ public class ScheduleItem extends Item implements MenuProvider { if (schedule == null || schedule.entries.isEmpty()) return; - MutableComponent caret = new TextComponent("> ").withStyle(ChatFormatting.GRAY); - MutableComponent arrow = new TextComponent("-> ").withStyle(ChatFormatting.GRAY); + MutableComponent caret = Components.literal("> ").withStyle(ChatFormatting.GRAY); + MutableComponent arrow = Components.literal("-> ").withStyle(ChatFormatting.GRAY); List entries = schedule.entries; for (int i = 0; i < entries.size(); i++) { @@ -145,7 +145,7 @@ public class ScheduleItem extends Item implements MenuProvider { ChatFormatting format = current ? ChatFormatting.YELLOW : ChatFormatting.GOLD; MutableComponent prefix = current ? arrow : caret; tooltip.add(prefix.copy() - .append(new TextComponent(destination.getFilter()).withStyle(format))); + .append(Components.literal(destination.getFilter()).withStyle(format))); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java index 476d65322..6df3d0411 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleRuntime.java @@ -17,12 +17,12 @@ import com.simibubi.create.content.logistics.trains.management.schedule.destinat import com.simibubi.create.content.logistics.trains.management.schedule.destination.ChangeTitleInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.DestinationInstruction; import com.simibubi.create.content.logistics.trains.management.schedule.destination.ScheduleInstruction; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -371,7 +371,7 @@ public class ScheduleRuntime { int size = schedule.entries.size(); if (index >= size) { if (!schedule.cyclic) - return new TrainDeparturePrediction(train, time, new TextComponent(" "), destination); + return new TrainDeparturePrediction(train, time, Components.literal(" "), destination); index %= size; } @@ -389,7 +389,7 @@ public class ScheduleRuntime { } } - return new TrainDeparturePrediction(train, time, new TextComponent(text), destination); + return new TrainDeparturePrediction(train, time, Components.literal(text), destination); } public CompoundTag write() { @@ -448,12 +448,12 @@ public class ScheduleRuntime { public MutableComponent getWaitingStatus(Level level) { List> conditions = schedule.entries.get(currentEntry).conditions; if (conditions.isEmpty() || conditionProgress.isEmpty() || conditionContext.isEmpty()) - return TextComponent.EMPTY.copy(); + return Components.empty(); List list = conditions.get(0); int progress = conditionProgress.get(0); if (progress >= list.size()) - return TextComponent.EMPTY.copy(); + return Components.empty(); CompoundTag tag = conditionContext.get(0); ScheduleWaitCondition condition = list.get(progress); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java index f1e8a25d3..8f9589793 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/ScheduleScreen.java @@ -41,6 +41,7 @@ import com.simibubi.create.foundation.gui.widget.Indicator.State; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -55,7 +56,6 @@ import net.minecraft.client.gui.components.Widget; import net.minecraft.client.renderer.Rect2i; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Inventory; @@ -116,7 +116,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen minecraft.player.closeContainer()); addRenderableWidget(confirmButton); - cyclicIndicator = new Indicator(leftPos + 21, topPos + 196, TextComponent.EMPTY); + cyclicIndicator = new Indicator(leftPos + 21, topPos + 196, Components.immutableEmpty()); cyclicIndicator.state = schedule.cyclic ? State.ON : State.OFF; addRenderableWidget(cyclicIndicator); @@ -171,7 +171,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen getSummary() { - return Pair.of(getIcon(), new TextComponent(getOperator().formatted + " " + getThreshold()).append(getUnit())); + return Pair.of(getIcon(), Components.literal(getOperator().formatted + " " + getThreshold()).append(getUnit())); } @Override @@ -119,7 +119,7 @@ public abstract class CargoThresholdCondition extends LazyTickedScheduleConditio builder.addSelectionScrollInput(0, 24, (i, l) -> { i.forOptions(Ops.translatedOptions()) .titled(Lang.translateDirect("schedule.condition.threshold.train_holds")) - .format(state -> new TextComponent(" " + Ops.values()[state].formatted)); + .format(state -> Components.literal(" " + Ops.values()[state].formatted)); }, "Operator"); builder.addIntegerTextInput(29, 41, (e, t) -> { }, "Threshold"); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java index db595a20d..1b8405070 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/FluidThresholdCondition.java @@ -9,6 +9,7 @@ import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.content.logistics.trains.entity.Carriage; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; @@ -16,7 +17,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -31,7 +31,7 @@ public class FluidThresholdCondition extends CargoThresholdCondition { @Override protected Component getUnit() { - return new TextComponent("b"); + return Components.literal("b"); } @Override @@ -135,7 +135,7 @@ public class FluidThresholdCondition extends CargoThresholdCondition { public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { int lastDisplaySnapshot = getLastDisplaySnapshot(tag); if (lastDisplaySnapshot == -1) - return TextComponent.EMPTY.copy(); + return Components.empty(); int offset = getOperator() == Ops.LESS ? -1 : getOperator() == Ops.GREATER ? 1 : 0; return Lang.translateDirect("schedule.condition.threshold.status", lastDisplaySnapshot, Math.max(0, getThreshold() + offset), Lang.translateDirect("schedule.condition.threshold.buckets")); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java index d33b488e2..8b05e24d4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/ItemThresholdCondition.java @@ -8,13 +8,13 @@ import com.simibubi.create.content.logistics.item.filter.FilterItem; import com.simibubi.create.content.logistics.trains.entity.Carriage; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -27,7 +27,7 @@ public class ItemThresholdCondition extends CargoThresholdCondition { @Override protected Component getUnit() { - return new TextComponent(inStacks() ? "\u25A4" : ""); + return Components.literal(inStacks() ? "\u25A4" : ""); } @Override @@ -126,7 +126,7 @@ public class ItemThresholdCondition extends CargoThresholdCondition { public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { int lastDisplaySnapshot = getLastDisplaySnapshot(tag); if (lastDisplaySnapshot == -1) - return TextComponent.EMPTY.copy(); + return Components.empty(); int offset = getOperator() == Ops.LESS ? -1 : getOperator() == Ops.GREATER ? 1 : 0; return Lang.translateDirect("schedule.condition.threshold.status", lastDisplaySnapshot, Math.max(0, getThreshold() + offset), diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java index bc2a90ee0..b94d7c051 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/PlayerPassengerCondition.java @@ -7,6 +7,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -14,7 +15,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -50,7 +50,7 @@ public class PlayerPassengerCondition extends ScheduleWaitCondition { int target = getTarget(); return ImmutableList.of(Lang.translateDirect("schedule.condition.player_count.seated", Lang.translateDirect("schedule.condition.player_count." + (target == 1 ? "summary" : "summary_plural"), - new TextComponent("" + target).withStyle(ChatFormatting.DARK_AQUA)))); + Components.literal("" + target).withStyle(ChatFormatting.DARK_AQUA)))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java index 97e809927..9bb8f4190 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/RedstoneLinkCondition.java @@ -8,6 +8,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -17,7 +18,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -54,13 +54,13 @@ public class RedstoneLinkCondition extends ScheduleWaitCondition { public List getTitleAs(String type) { return ImmutableList.of( Lang.translateDirect("schedule.condition.redstone_link.frequency_" + (lowActivation() ? "unpowered" : "powered")), - new TextComponent(" #1 ").withStyle(ChatFormatting.GRAY) + Components.literal(" #1 ").withStyle(ChatFormatting.GRAY) .append(freq.getFirst() .getStack() .getHoverName() .copy() .withStyle(ChatFormatting.DARK_AQUA)), - new TextComponent(" #2 ").withStyle(ChatFormatting.GRAY) + Components.literal(" #2 ").withStyle(ChatFormatting.GRAY) .append(freq.getSecond() .getStack() .getHoverName() diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java index 1664d7f6d..9d0a10b0a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimeOfDayCondition.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -20,7 +21,6 @@ import net.minecraft.client.gui.GuiComponent; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -82,7 +82,7 @@ public class TimeOfDayCondition extends ScheduleWaitCondition { public List getTitleAs(String type) { return ImmutableList.of(Lang.translateDirect("schedule.condition.time_of_day.scheduled"), getDigitalDisplay(intData("Hour"), intData("Minute"), false).withStyle(ChatFormatting.DARK_AQUA) - .append(new TextComponent(" -> ").withStyle(ChatFormatting.DARK_GRAY)) + .append(Components.literal(" -> ").withStyle(ChatFormatting.DARK_GRAY)) .append(Lang .translatedOptions("schedule.condition.time_of_day.rotation", "every_24", "every_12", "every_6", "every_4", "every_3", "every_2", "every_1", "every_0_45", "every_0_30", "every_0_15") diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java index 8ea96afbc..489d24e51 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/condition/TimedWaitCondition.java @@ -5,14 +5,13 @@ import java.util.List; import com.google.common.collect.ImmutableList; import com.simibubi.create.content.logistics.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; @@ -60,14 +59,14 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { protected Component formatTime(boolean compact) { if (compact) - return new TextComponent(getValue() + getUnit().suffix); - return new TextComponent(getValue() + " ").append(Lang.translateDirect(getUnit().key)); + return Components.literal(getValue() + getUnit().suffix); + return Components.literal(getValue() + " ").append(Lang.translateDirect(getUnit().key)); } @Override public List getTitleAs(String type) { return ImmutableList.of( - new TranslatableComponent(getId().getNamespace() + ".schedule." + type + "." + getId().getPath()), + Components.translatable(getId().getNamespace() + ".schedule." + type + "." + getId().getPath()), Lang.translateDirect("schedule.condition.for_x_time", formatTime(false)) .withStyle(ChatFormatting.DARK_AQUA)); } @@ -117,7 +116,7 @@ public abstract class TimedWaitCondition extends ScheduleWaitCondition { String key = "generic." + (showInMinutes ? num == 1 ? "daytime.minute" : "unit.minutes" : num == 1 ? "daytime.second" : "unit.seconds"); return Lang.translateDirect("schedule.condition." + getId().getPath() + ".status", - new TextComponent(num + " ").append(Lang.translateDirect(key))); + Components.literal(num + " ").append(Lang.translateDirect(key))); } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java index 75fa8801a..36d71f3d3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java @@ -6,12 +6,13 @@ import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -29,8 +30,8 @@ public class ChangeThrottleInstruction extends ScheduleInstruction { return Pair.of(icon(), formatted()); } - private TextComponent formatted() { - return new TextComponent(intData("Value") + "%"); + private MutableComponent formatted() { + return Components.literal(intData("Value") + "%"); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java index 57c1c2f42..92419fc59 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeTitleInstruction.java @@ -4,12 +4,12 @@ import java.util.List; import com.google.common.collect.ImmutableList; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -18,7 +18,7 @@ public class ChangeTitleInstruction extends TextScheduleInstruction { @Override public Pair getSummary() { - return Pair.of(icon(), new TextComponent(getLabelText())); + return Pair.of(icon(), Components.literal(getLabelText())); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java index 400852fbd..d3b15cd41 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/DestinationInstruction.java @@ -7,13 +7,13 @@ import org.apache.commons.lang3.StringUtils; import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -23,7 +23,7 @@ public class DestinationInstruction extends TextScheduleInstruction { @Override public Pair getSummary() { - return Pair.of(AllBlocks.TRACK_STATION.asStack(), new TextComponent(getLabelText())); + return Pair.of(AllBlocks.TRACK_STATION.asStack(), Components.literal(getLabelText())); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java index b93019869..42abcbf11 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/TextScheduleInstruction.java @@ -4,12 +4,12 @@ import java.util.List; import com.google.common.collect.ImmutableList; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -22,7 +22,7 @@ public abstract class TextScheduleInstruction extends ScheduleInstruction { @Override public List getTitleAs(String type) { return ImmutableList.of(Lang.translateDirect("schedule." + type + "." + getId().getPath() + ".summary") - .withStyle(ChatFormatting.GOLD), Lang.translateDirect("generic.in_quotes", new TextComponent(getLabelText()))); + .withStyle(ChatFormatting.GOLD), Lang.translateDirect("generic.in_quotes", Components.literal(getLabelText()))); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java index c4b2acb68..55dd45c59 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/track/TrackBlock.java @@ -45,6 +45,7 @@ import com.simibubi.create.foundation.block.render.DestroyProgressRenderingHandl import com.simibubi.create.foundation.block.render.ReducedDestroyEffects; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.BlockFace; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -58,7 +59,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; @@ -287,12 +287,12 @@ public class TrackBlock extends Block Player player = level.getNearestPlayer(pos.getX(), pos.getY(), pos.getZ(), 10, Predicates.alwaysTrue()); if (player == null) return; - player.displayClientMessage(new TextComponent(" ").append(Lang.translateDirect("portal_track.failed")) + player.displayClientMessage(Components.literal(" ").append(Lang.translateDirect("portal_track.failed")) .withStyle(ChatFormatting.GOLD), false); MutableComponent component = failPos != null ? Lang.translateDirect("portal_track." + fail, failPos.getX(), failPos.getY(), failPos.getZ()) : Lang.translateDirect("portal_track." + fail); - player.displayClientMessage(new TextComponent(" - ").withStyle(ChatFormatting.GRAY) + player.displayClientMessage(Components.literal(" - ").withStyle(ChatFormatting.GRAY) .append(component.withStyle(st -> st.withColor(0xFFD3B4))), false); } diff --git a/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java index 5ed770590..226d1b3b2 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ClientSchematicLoader.java @@ -18,13 +18,13 @@ import com.simibubi.create.Create; import com.simibubi.create.content.schematics.packet.SchematicUploadPacket; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -86,8 +86,8 @@ public class ClientSchematicLoader { if (size > maxSize * 1000) { LocalPlayer player = Minecraft.getInstance().player; if (player != null) { - player.sendMessage(Lang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), player.getUUID()); - player.sendMessage(Lang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB"), player.getUUID()); + player.displayClientMessage(Lang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), false); + player.displayClientMessage(Lang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB"), false); } return false; } @@ -137,7 +137,7 @@ public class ClientSchematicLoader { if (Files.isDirectory(path)) return; - availableSchematics.add(new TextComponent(path.getFileName().toString())); + availableSchematics.add(Components.literal(path.getFileName().toString())); }); } catch (NoSuchFileException e) { // No Schematics created yet diff --git a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java index 8c4fd1ec8..d4462ca78 100644 --- a/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java +++ b/src/main/java/com/simibubi/create/content/schematics/MaterialChecklist.java @@ -7,6 +7,7 @@ import java.util.Locale; import com.google.common.collect.Sets; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; @@ -18,8 +19,6 @@ import net.minecraft.nbt.StringTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -80,7 +79,7 @@ public class MaterialChecklist { MutableComponent textComponent; if (blocksNotLoaded) { - textComponent = new TextComponent("\n" + ChatFormatting.RED); + textComponent = Components.literal("\n" + ChatFormatting.RED); textComponent = textComponent.append(Lang.translateDirect("materialChecklist.blocksNotLoaded")); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); } @@ -95,7 +94,7 @@ public class MaterialChecklist { return name1.compareTo(name2); }); - textComponent = new TextComponent(""); + textComponent = Components.empty(); List completed = new ArrayList<>(); for (Item item : keys) { int amount = getRequiredAmount(item); @@ -109,9 +108,9 @@ public class MaterialChecklist { if (itemsWritten == MAX_ENTRIES_PER_PAGE) { itemsWritten = 0; - textComponent.append(new TextComponent("\n >>>").withStyle(ChatFormatting.BLUE)); + textComponent.append(Components.literal("\n >>>").withStyle(ChatFormatting.BLUE)); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); - textComponent = new TextComponent(""); + textComponent = Components.empty(); } itemsWritten++; @@ -121,9 +120,9 @@ public class MaterialChecklist { for (Item item : completed) { if (itemsWritten == MAX_ENTRIES_PER_PAGE) { itemsWritten = 0; - textComponent.append(new TextComponent("\n >>>").withStyle(ChatFormatting.DARK_GREEN)); + textComponent.append(Components.literal("\n >>>").withStyle(ChatFormatting.DARK_GREEN)); pages.add(StringTag.valueOf(Component.Serializer.toJson(textComponent))); - textComponent = new TextComponent(""); + textComponent = Components.empty(); } itemsWritten++; @@ -155,12 +154,12 @@ public class MaterialChecklist { private Component entry(ItemStack item, int amount, boolean unfinished) { int stacks = amount / 64; int remainder = amount % 64; - MutableComponent tc = new TranslatableComponent(item.getDescriptionId()); + MutableComponent tc = Components.translatable(item.getDescriptionId()); if (!unfinished) tc.append(" \u2714"); tc.withStyle(unfinished ? ChatFormatting.BLUE : ChatFormatting.DARK_GREEN); - return tc.append(new TextComponent("\n" + " x" + amount).withStyle(ChatFormatting.BLACK)) - .append(new TextComponent(" | " + stacks + "\u25A4 +" + remainder + "\n").withStyle(ChatFormatting.GRAY)); + return tc.append(Components.literal("\n" + " x" + amount).withStyle(ChatFormatting.BLACK)) + .append(Components.literal(" | " + stacks + "\u25A4 +" + remainder + "\n").withStyle(ChatFormatting.GRAY)); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java index 96c1c1479..ffee13229 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java @@ -21,13 +21,14 @@ import com.simibubi.create.content.schematics.item.SchematicAndQuillItem; import com.simibubi.create.content.schematics.item.SchematicItem; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CSchematics; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.foundation.utility.Lang; +import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.level.Level; @@ -165,9 +166,9 @@ public class ServerSchematicLoader { if (size > maxFileSize * 1000) { player.sendMessage(Lang.translateDirect("schematics.uploadTooLarge") - .append(new TextComponent(" (" + size / 1000 + " KB).")), player.getUUID()); + .append(Components.literal(" (" + size / 1000 + " KB).")), Util.NIL_UUID); player.sendMessage(Lang.translateDirect("schematics.maxAllowedSize") - .append(new TextComponent(" " + maxFileSize + " KB")), player.getUUID()); + .append(Components.literal(" " + maxFileSize + " KB")), Util.NIL_UUID); return false; } return true; diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java index 525cc369a..055370ab1 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java @@ -20,12 +20,12 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.Util; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; @@ -73,8 +73,8 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen availableSchematics1 = schematicSender.getAvailableSchematics(); Component schematic = availableSchematics1.get(schematicsArea.getState()); - schematicSender.startNewUpload(schematic.getContents()); + schematicSender.startNewUpload(schematic.getString()); } }); @@ -118,7 +118,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen { sendOptionUpdate(Option.PLAY, true); }); - playIndicator = new Indicator(x + 75, y + 79, TextComponent.EMPTY); + playIndicator = new Indicator(x + 75, y + 79, Components.immutableEmpty()); pauseButton = new IconButton(x + 93, y + 86, AllIcons.I_PAUSE); pauseButton.withCallback(() -> { sendOptionUpdate(Option.PAUSE, true); }); - pauseIndicator = new Indicator(x + 93, y + 79, TextComponent.EMPTY); + pauseIndicator = new Indicator(x + 93, y + 79, Components.immutableEmpty()); resetButton = new IconButton(x + 111, y + 86, AllIcons.I_STOP); resetButton.withCallback(() -> { sendOptionUpdate(Option.STOP, true); }); - resetIndicator = new Indicator(x + 111, y + 79, TextComponent.EMPTY); + resetIndicator = new Indicator(x + 111, y + 79, Components.immutableEmpty()); resetIndicator.state = State.RED; addRenderableWidgets(playButton, playIndicator, pauseButton, pauseIndicator, resetButton, resetIndicator); @@ -122,7 +122,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen { @@ -170,7 +170,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen tools, Consumer callback) { - super(new TextComponent("Tool Selection")); + super(Components.literal("Tool Selection")); this.minecraft = Minecraft.getInstance(); this.tools = tools; this.callback = callback; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java index 9b6d9ae28..507f9565d 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/Tools.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; public enum Tools { @@ -31,7 +31,7 @@ public enum Tools { return tool; } - public TranslatableComponent getDisplayName() { + public MutableComponent getDisplayName() { return Lang.translateDirect("schematic.tool." + Lang.asId(name())); } diff --git a/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java b/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java index e773b1322..fe5160009 100644 --- a/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/item/SchematicAndQuillItem.java @@ -5,6 +5,7 @@ import java.util.Iterator; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; import com.simibubi.create.foundation.utility.NBTHelper; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -26,9 +27,9 @@ public class SchematicAndQuillItem extends Item { } public static void replaceStructureVoidWithAir(CompoundTag nbt) { - String air = Blocks.AIR.getRegistryName() + String air = RegisteredObjects.getKeyOrThrow(Blocks.AIR) .toString(); - String structureVoid = Blocks.STRUCTURE_VOID.getRegistryName() + String structureVoid = RegisteredObjects.getKeyOrThrow(Blocks.STRUCTURE_VOID) .toString(); NBTHelper.iterateCompoundList(nbt.getList("palette", 10), c -> { diff --git a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java index 78c73a66d..83eb45628 100644 --- a/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/item/SchematicItem.java @@ -20,6 +20,7 @@ import com.simibubi.create.content.schematics.SchematicProcessor; import com.simibubi.create.content.schematics.client.SchematicEditScreen; import com.simibubi.create.content.schematics.filtering.SchematicInstances; import com.simibubi.create.foundation.gui.ScreenOpener; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.NBTHelper; @@ -31,7 +32,6 @@ import net.minecraft.nbt.NbtAccounter; import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -84,7 +84,7 @@ public class SchematicItem extends Item { if (stack.hasTag()) { if (stack.getTag() .contains("File")) - tooltip.add(new TextComponent(ChatFormatting.GOLD + stack.getTag() + tooltip.add(Components.literal(ChatFormatting.GOLD + stack.getTag() .getString("File"))); } else { tooltip.add(Lang.translateDirect("schematic.invalid").withStyle(ChatFormatting.RED)); diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index bf43cd997..8ff0941e4 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -62,6 +62,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.CameraAngleAnimationService; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.placement.PlacementHelpers; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; @@ -72,7 +73,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -274,7 +274,7 @@ public class ClientEvents { List kineticStats = ItemDescription.getKineticStats(item.getBlock()); if (!kineticStats.isEmpty()) { event.getToolTip() - .add(new TextComponent("")); + .add(Components.immutableEmpty()); event.getToolTip() .addAll(kineticStats); } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java index 10f37ab4d..29ecb546a 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java @@ -5,6 +5,7 @@ import java.util.function.UnaryOperator; import com.google.gson.JsonObject; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Components; import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.advancements.Advancement; @@ -16,7 +17,6 @@ import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.MinMaxBounds; import net.minecraft.advancements.critereon.NbtPredicate; import net.minecraft.advancements.critereon.PlacedBlockTrigger; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.TagKey; @@ -54,8 +54,8 @@ public class CreateAdvancement { builder.addCriterion("0", builtinTrigger.instance()); } - builder.display(t.icon, new TranslatableComponent(titleKey()), - new TranslatableComponent(descriptionKey()).withStyle(s -> s.withColor(0xDBA213)), + builder.display(t.icon, Components.translatable(titleKey()), + Components.translatable(descriptionKey()).withStyle(s -> s.withColor(0xDBA213)), id.equals("root") ? BACKGROUND : null, t.type.frame, t.type.toast, t.type.announce, t.type.hide); if (t.type == TaskType.SECRET) diff --git a/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java b/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java index 6d2e5f4ff..b1592abd6 100644 --- a/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java +++ b/src/main/java/com/simibubi/create/foundation/block/BlockStressValues.java @@ -6,6 +6,7 @@ import java.util.Map; import javax.annotation.Nullable; import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -25,12 +26,12 @@ public class BlockStressValues { @Nullable public static IStressValueProvider getProvider(Block block) { - return getProvider(block.getRegistryName() + return getProvider(RegisteredObjects.getKeyOrThrow(block) .getNamespace()); } public static double getImpact(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.getImpact(block); @@ -43,7 +44,7 @@ public class BlockStressValues { } public static double getCapacity(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.getCapacity(block); @@ -56,7 +57,7 @@ public class BlockStressValues { } public static boolean hasImpact(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.hasImpact(block); @@ -65,7 +66,7 @@ public class BlockStressValues { } public static boolean hasCapacity(Block block) { - ResourceLocation blockId = block.getRegistryName(); + ResourceLocation blockId = RegisteredObjects.getKeyOrThrow(block); IStressValueProvider provider = getProvider(blockId.getNamespace()); if (provider != null) { return provider.hasCapacity(block); diff --git a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java index b266d1bd0..46cb8558e 100644 --- a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java +++ b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java @@ -12,6 +12,7 @@ import org.apache.commons.lang3.ArrayUtils; import com.simibubi.create.AllTags; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.providers.DataGenContext; @@ -226,7 +227,7 @@ public class CopperBlockSet { public void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, CopperBlockSet blocks, WeatherState state, boolean waxed) { Block block = ctx.get(); - String path = block.getRegistryName() + String path = RegisteredObjects.getKeyOrThrow(block) .getPath(); String baseLoc = ModelProvider.BLOCK_FOLDER + "/" + blocks.generalDirectory + getWeatherStatePrefix(state); diff --git a/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java b/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java index ac6040874..2186c2676 100644 --- a/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java +++ b/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.Set; import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.resources.ResourceLocation; @@ -21,7 +22,7 @@ public class ItemUseOverrides { private static final Set OVERRIDES = new HashSet<>(); public static void addBlock(Block block) { - OVERRIDES.add(block.getRegistryName()); + OVERRIDES.add(RegisteredObjects.getKeyOrThrow(block)); } @SubscribeEvent @@ -31,8 +32,7 @@ public class ItemUseOverrides { BlockState state = event.getWorld() .getBlockState(event.getPos()); - ResourceLocation id = state.getBlock() - .getRegistryName(); + ResourceLocation id = RegisteredObjects.getKeyOrThrow(state.getBlock()); if (!OVERRIDES.contains(id)) return; diff --git a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java index 6f8f0cda5..8dc43b692 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java @@ -1,58 +1,55 @@ package com.simibubi.create.foundation.block.render; -import java.util.ArrayList; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; +import com.google.common.collect.Multimap; +import com.google.common.collect.MultimapBuilder; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.ForgeRegistries; public class CustomBlockModels { - private List, NonNullFunction>> registered; - private Map> customModels; + private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); + private final Map> finalModelFunc = new IdentityHashMap<>(); - public CustomBlockModels() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); + public void register(ResourceLocation block, NonNullFunction func) { + modelFuncs.put(block, func); } public void forEach(NonNullBiConsumer> consumer) { loadEntriesIfMissing(); - customModels.forEach(consumer); + finalModelFunc.forEach(consumer); } private void loadEntriesIfMissing() { - if (customModels.isEmpty()) + if (finalModelFunc.isEmpty()) loadEntries(); } private void loadEntries() { - customModels.clear(); - registered.forEach(p -> { - Block key = p.getKey() - .get(); - - NonNullFunction existingModel = customModels.get(key); - if (existingModel != null) { - customModels.put(key, p.getValue() - .andThen(existingModel)); + finalModelFunc.clear(); + modelFuncs.asMap().forEach((location, funcList) -> { + Block block = ForgeRegistries.BLOCKS.getValue(location); + if (block == null) { return; } - - customModels.put(key, p.getValue()); + + NonNullFunction finalFunc = null; + for (NonNullFunction func : funcList) { + if (finalFunc == null) { + finalFunc = func; + } else { + finalFunc = finalFunc.andThen(func); + } + } + + finalModelFunc.put(block, finalFunc); }); } diff --git a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java index 34a47169c..f000634db 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java @@ -2,10 +2,10 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; @@ -18,7 +18,7 @@ public class ClearBufferCacheCommand { .executes(ctx -> { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClearBufferCacheCommand::execute); ctx.getSource() - .sendSuccess(new TextComponent("Cleared rendering buffers."), true); + .sendSuccess(Components.literal("Cleared rendering buffers."), true); return 1; }); } diff --git a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java index 11b68e60e..d07b9f888 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java @@ -8,14 +8,13 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Clearable; import net.minecraft.world.level.block.Blocks; @@ -30,7 +29,7 @@ import net.minecraft.world.phys.Vec3; public class CloneCommand { private static final Dynamic2CommandExceptionType CLONE_TOO_BIG_EXCEPTION = new Dynamic2CommandExceptionType( - (arg1, arg2) -> new TranslatableComponent("commands.clone.toobig", arg1, arg2)); + (arg1, arg2) -> Components.translatable("commands.clone.toobig", arg1, arg2)); public static ArgumentBuilder register() { return Commands.literal("clone") @@ -47,7 +46,7 @@ public class CloneCommand { BlockPosArgument.getLoadedBlockPos(ctx, "destination"), true))))) .executes(ctx -> { ctx.getSource() - .sendSuccess(new TextComponent( + .sendSuccess(Components.literal( "Clones all blocks as well as super glue from the specified area to the target destination"), true); @@ -78,9 +77,9 @@ public class CloneCommand { int gluePastes = cloneGlue(sourceArea, world, diffToTarget); if (cloneBlocks) - source.sendSuccess(new TextComponent("Successfully cloned " + blockPastes + " Blocks"), true); + source.sendSuccess(Components.literal("Successfully cloned " + blockPastes + " Blocks"), true); - source.sendSuccess(new TextComponent("Successfully applied glue " + gluePastes + " times"), true); + source.sendSuccess(Components.literal("Successfully applied glue " + gluePastes + " times"), true); return blockPastes + gluePastes; } diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java index a7abc0456..bdbc0cfcd 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java @@ -6,10 +6,10 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.Create; import com.simibubi.create.foundation.config.ui.ConfigHelper; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.network.PacketDistributor; @@ -55,7 +55,7 @@ public class ConfigCommand { try { configPath = ConfigHelper.ConfigPath.parse(path); } catch (IllegalArgumentException e) { - ctx.getSource().sendFailure(new TextComponent(e.getMessage())); + ctx.getSource().sendFailure(Components.literal(e.getMessage())); return 0; } @@ -71,13 +71,13 @@ public class ConfigCommand { try { ConfigHelper.setConfigValue(configPath, value); - ctx.getSource().sendSuccess(new TextComponent("Great Success!"), false); + ctx.getSource().sendSuccess(Components.literal("Great Success!"), false); return Command.SINGLE_SUCCESS; } catch (ConfigHelper.InvalidValueException e) { - ctx.getSource().sendFailure(new TextComponent("Config could not be set the the specified value!")); + ctx.getSource().sendFailure(Components.literal("Config could not be set the the specified value!")); return 0; } catch (Exception e) { - ctx.getSource().sendFailure(new TextComponent("Something went wrong while trying to set config value. Check the server logs for more information")); + ctx.getSource().sendFailure(Components.literal("Something went wrong while trying to set config value. Check the server logs for more information")); Create.LOGGER.warn("Exception during server-side config value set:", e); return 0; } diff --git a/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java b/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java index acb60d295..2a4d282e8 100644 --- a/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java @@ -12,12 +12,12 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingHandler; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.vehicle.AbstractMinecart; @@ -26,11 +26,11 @@ import net.minecraftforge.common.util.LazyOptional; public class CouplingCommand { public static final SimpleCommandExceptionType ONLY_MINECARTS_ALLOWED = - new SimpleCommandExceptionType(new TextComponent("Only Minecarts can be coupled")); + new SimpleCommandExceptionType(Components.literal("Only Minecarts can be coupled")); public static final SimpleCommandExceptionType SAME_DIMENSION = - new SimpleCommandExceptionType(new TextComponent("Minecarts have to be in the same Dimension")); + new SimpleCommandExceptionType(Components.literal("Minecarts have to be in the same Dimension")); public static final DynamicCommandExceptionType TWO_CARTS = - new DynamicCommandExceptionType(a -> new TextComponent( + new DynamicCommandExceptionType(a -> Components.literal( "Your selector targeted " + a + " entities. You can only couple 2 Minecarts at a time.")); public static ArgumentBuilder register() { @@ -105,7 +105,7 @@ public class CouplingCommand { cart1.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); if (!cart1Capability.isPresent()) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -115,7 +115,7 @@ public class CouplingCommand { + (cart1Controller.isLeadingCoupling() ? 1 : 0); if (cart1Couplings == 0) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -138,7 +138,7 @@ public class CouplingCommand { } ctx.getSource() - .sendSuccess(new TextComponent("The specified Carts are not coupled"), true); + .sendSuccess(Components.literal("The specified Carts are not coupled"), true); return 0; })))) @@ -153,7 +153,7 @@ public class CouplingCommand { cart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); if (!capability.isPresent()) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -163,7 +163,7 @@ public class CouplingCommand { (controller.isConnectedToCoupling() ? 1 : 0) + (controller.isLeadingCoupling() ? 1 : 0); if (couplings == 0) { ctx.getSource() - .sendSuccess(new TextComponent("Minecart has no Couplings Attached"), true); + .sendSuccess(Components.literal("Minecart has no Couplings Attached"), true); return 0; } @@ -171,7 +171,7 @@ public class CouplingCommand { ctx.getSource() .sendSuccess( - new TextComponent("Removed " + couplings + " couplings from the Minecart"), true); + Components.literal("Removed " + couplings + " couplings from the Minecart"), true); return couplings; }))); diff --git a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java index d51655d52..64139ca20 100644 --- a/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/DumpRailwaysCommand.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePoi import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.SignalBoundary; import com.simibubi.create.content.logistics.trains.management.edgePoint.station.GlobalStation; import com.simibubi.create.content.logistics.trains.management.schedule.ScheduleRuntime; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.commands.CommandSourceStack; @@ -22,7 +23,6 @@ import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.HoverEvent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; @@ -36,7 +36,7 @@ public class DumpRailwaysCommand { .executes(ctx -> { CommandSourceStack source = ctx.getSource(); fillReport(source.getLevel(), source.getPosition(), - (s, f) -> source.sendSuccess(new TextComponent(s).withStyle(st -> st.withColor(f)), false), + (s, f) -> source.sendSuccess(Components.literal(s).withStyle(st -> st.withColor(f)), false), (c) -> source.sendSuccess(c, false)); return 1; }); @@ -141,11 +141,11 @@ public class DumpRailwaysCommand { } private static Component createDeleteButton(Train train) { - return ComponentUtils.wrapInSquareBrackets((new TextComponent("Remove")).withStyle((p_180514_) -> { + return ComponentUtils.wrapInSquareBrackets((Components.literal("Remove")).withStyle((p_180514_) -> { return p_180514_.withColor(0xFFAD60) .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/c killTrain " + train.id.toString())) .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new TextComponent("Click to remove ").append(train.name))) + Components.literal("Click to remove ").append(train.name))) .withInsertion("/c killTrain " + train.id.toString()); })); } diff --git a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java index ceca34925..326fe3a71 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java @@ -2,10 +2,10 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.PacketDistributor; @@ -21,7 +21,7 @@ public class FixLightingCommand { ctx.getSource() .sendSuccess( - new TextComponent("Forge's experimental block rendering pipeline is now enabled."), true); + Components.literal("Forge's experimental block rendering pipeline is now enabled."), true); return 1; }); diff --git a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java index 0f6bf0e27..288ef50aa 100644 --- a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java @@ -4,11 +4,11 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.arguments.FloatArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.context.CommandContext; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; -import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket; import net.minecraft.server.level.ServerPlayer; @@ -38,7 +38,7 @@ public class FlySpeedCommand { player.connection.send(packet); ctx.getSource() - .sendSuccess(new TextComponent("Temporarily set " + player.getName() + .sendSuccess(Components.literal("Temporarily set " + player.getName() .getString() + "'s Flying Speed to: " + speed), true); return Command.SINGLE_SUCCESS; diff --git a/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java b/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java index 496885d84..605c5782e 100644 --- a/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java @@ -7,13 +7,13 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; @@ -60,7 +60,7 @@ public class HighlightCommand { private static void sendMissMessage(CommandSourceStack source) { source.sendSuccess( - new TextComponent("Try looking at a Block that has failed to assemble a Contraption and try again."), + Components.literal("Try looking at a Block that has failed to assemble a Contraption and try again."), true); } @@ -94,7 +94,7 @@ public class HighlightCommand { } if (!exception.hasPosition()) { - source.sendSuccess(new TextComponent("Can't highlight a specific position for this issue"), true); + source.sendSuccess(Components.literal("Can't highlight a specific position for this issue"), true); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java index 171a5a6ba..1486be151 100644 --- a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java @@ -46,12 +46,12 @@ public class KillTPSCommand { return 1; }) .then(Commands.argument(Lang.translateDirect("command.killTPSCommand.argument.tickTime") - .getContents(), IntegerArgumentType.integer(1)) + .getString(), IntegerArgumentType.integer(1)) .executes(ctx -> { // killtps start tickTime int tickTime = IntegerArgumentType.getInteger(ctx, Lang.translateDirect("command.killTPSCommand.argument.tickTime") - .getContents()); + .getString()); Create.LAGGER.setTickTime(tickTime); Create.LAGGER.setLagging(true); ctx.getSource() diff --git a/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java b/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java index c2194446c..62303acca 100644 --- a/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/KillTrainCommand.java @@ -5,11 +5,11 @@ import java.util.UUID; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.Create; import com.simibubi.create.content.logistics.trains.entity.Train; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.UuidArgument; -import net.minecraft.network.chat.TextComponent; public class KillTrainCommand { @@ -27,13 +27,13 @@ public class KillTrainCommand { private static void run(CommandSourceStack source, UUID argument) { Train train = Create.RAILWAYS.trains.get(argument); if (train == null) { - source.sendFailure(new TextComponent("No Train with id " + argument.toString() + source.sendFailure(Components.literal("No Train with id " + argument.toString() .substring(0, 5) + "[...] was found")); return; } train.invalid = true; - source.sendSuccess(new TextComponent("Train '").append(train.name) + source.sendSuccess(Components.literal("Train '").append(train.name) .append("' removed successfully"), true); } diff --git a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java index 384fc6c41..e17be1cf2 100644 --- a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java @@ -2,10 +2,10 @@ package com.simibubi.create.foundation.command; import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; @@ -26,7 +26,7 @@ public class OverlayConfigCommand { new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayReset.name(), ""))); ctx.getSource() - .sendSuccess(new TextComponent("reset overlay offset"), true); + .sendSuccess(Components.literal("reset overlay offset"), true); return 1; }) @@ -40,7 +40,7 @@ public class OverlayConfigCommand { new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayScreen.name(), ""))); ctx.getSource() - .sendSuccess(new TextComponent("window opened"), true); + .sendSuccess(Components.literal("window opened"), true); return 1; }); diff --git a/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java b/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java index bbb8ce46b..53f1292a8 100644 --- a/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java +++ b/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java @@ -4,12 +4,12 @@ import org.apache.commons.lang3.mutable.MutableInt; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BaseCommandBlock; import net.minecraft.world.level.block.CommandBlock; @@ -59,10 +59,10 @@ public class ReplaceInCommandBlocksCommand { }); int intValue = blocks.intValue(); if (intValue == 0) { - source.sendSuccess(new TextComponent("Couldn't find \"" + toReplace + "\" anywhere."), true); + source.sendSuccess(Components.literal("Couldn't find \"" + toReplace + "\" anywhere."), true); return; } - source.sendSuccess(new TextComponent("Replaced occurrences in " + intValue + " blocks."), true); + source.sendSuccess(Components.literal("Replaced occurrences in " + intValue + " blocks."), true); } } diff --git a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java index 63036edda..a92f177a2 100644 --- a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java +++ b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java @@ -18,15 +18,14 @@ import com.simibubi.create.foundation.ponder.PonderRegistry; import com.simibubi.create.foundation.ponder.ui.PonderIndexScreen; import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.CameraAngleAnimationService; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -87,7 +86,7 @@ public class SConfigureConfigPacket extends SimplePacketBase { try { configPath = ConfigHelper.ConfigPath.parse(option); } catch (IllegalArgumentException e) { - player.displayClientMessage(new TextComponent(e.getMessage()), false); + player.displayClientMessage(Components.literal(e.getMessage()), false); return; } @@ -98,11 +97,11 @@ public class SConfigureConfigPacket extends SimplePacketBase { try { ConfigHelper.setConfigValue(configPath, value); - player.displayClientMessage(new TextComponent("Great Success!"), false); + player.displayClientMessage(Components.literal("Great Success!"), false); } catch (ConfigHelper.InvalidValueException e) { - player.displayClientMessage(new TextComponent("Config could not be set the the specified value!"), false); + player.displayClientMessage(Components.literal("Config could not be set the the specified value!"), false); } catch (Exception e) { - player.displayClientMessage(new TextComponent("Something went wrong while trying to set config value. Check the client logs for more information"), false); + player.displayClientMessage(Components.literal("Something went wrong while trying to set config value. Check the client logs for more information"), false); Create.LOGGER.warn("Exception during client-side config value set:", e); } @@ -146,14 +145,14 @@ public class SConfigureConfigPacket extends SimplePacketBase { try { configPath = ConfigHelper.ConfigPath.parse(value); } catch (IllegalArgumentException e) { - player.displayClientMessage(new TextComponent(e.getMessage()), false); + player.displayClientMessage(Components.literal(e.getMessage()), false); return; } try { ScreenOpener.open(SubMenuConfigScreen.find(configPath)); } catch (Exception e) { - player.displayClientMessage(new TextComponent("Unable to find the specified config"), false); + player.displayClientMessage(Components.literal("Unable to find the specified config"), false); } } @@ -164,7 +163,7 @@ public class SConfigureConfigPacket extends SimplePacketBase { return; if (value.equals("info")) { - Component text = new TextComponent("Rainbow Debug Utility is currently: ") + Component text = Components.literal("Rainbow Debug Utility is currently: ") .append(boolToText(AllConfigs.CLIENT.rainbowDebug.get())); player.displayClientMessage(text, false); return; @@ -172,7 +171,7 @@ public class SConfigureConfigPacket extends SimplePacketBase { AllConfigs.CLIENT.rainbowDebug.set(Boolean.parseBoolean(value)); Component text = boolToText(AllConfigs.CLIENT.rainbowDebug.get()) - .append(new TextComponent(" Rainbow Debug Utility").withStyle(ChatFormatting.WHITE)); + .append(Components.literal(" Rainbow Debug Utility").withStyle(ChatFormatting.WHITE)); player.displayClientMessage(text, false); } @@ -213,9 +212,11 @@ public class SConfigureConfigPacket extends SimplePacketBase { @OnlyIn(Dist.CLIENT) private static void fabulousWarning(String value) { AllConfigs.CLIENT.ignoreFabulousWarning.set(true); - Minecraft.getInstance().gui.handleChat(ChatType.CHAT, - new TextComponent("Disabled Fabulous graphics warning"), - Minecraft.getInstance().player.getUUID()); + LocalPlayer player = Minecraft.getInstance().player; + if (player != null) { + player.displayClientMessage( + Components.literal("Disabled Fabulous graphics warning"), false); + } } @OnlyIn(Dist.CLIENT) @@ -268,8 +269,8 @@ public class SConfigureConfigPacket extends SimplePacketBase { } private static MutableComponent boolToText(boolean b) { - return b ? new TextComponent("enabled").withStyle(ChatFormatting.DARK_GREEN) - : new TextComponent("disabled").withStyle(ChatFormatting.RED); + return b ? Components.literal("enabled").withStyle(ChatFormatting.DARK_GREEN) + : Components.literal("disabled").withStyle(ChatFormatting.RED); } } } diff --git a/src/main/java/com/simibubi/create/foundation/config/CStress.java b/src/main/java/com/simibubi/create/foundation/config/CStress.java index 5ab9d0bc2..344394f98 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CStress.java +++ b/src/main/java/com/simibubi/create/foundation/config/CStress.java @@ -8,6 +8,7 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.block.BlockStressDefaults; import com.simibubi.create.foundation.block.BlockStressValues.IStressValueProvider; import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -43,7 +44,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public double getImpact(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); ConfigValue value = getImpacts().get(key); if (value != null) return value.get(); @@ -53,7 +54,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public double getCapacity(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); ConfigValue value = getCapacities().get(key); if (value != null) return value.get(); @@ -63,7 +64,7 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public Couple getGeneratedRPM(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); Supplier> supplier = BlockStressDefaults.GENERATOR_SPEEDS.get(key); if (supplier == null) return null; @@ -73,14 +74,14 @@ public class CStress extends ConfigBase implements IStressValueProvider { @Override public boolean hasImpact(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); return getImpacts().containsKey(key); } @Override public boolean hasCapacity(Block block) { block = redirectValues(block); - ResourceLocation key = block.getRegistryName(); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(block); return getCapacities().containsKey(key); } diff --git a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java index b31539745..c6d012ce0 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java +++ b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java @@ -1,47 +1,40 @@ package com.simibubi.create.foundation.config; import java.util.Collection; -import java.util.HashMap; import java.util.function.Supplier; import javax.annotation.Nullable; +import com.simibubi.create.foundation.utility.CreateRegistry; + import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraftforge.common.extensions.IForgeBlock; +import net.minecraftforge.registries.ForgeRegistries; public enum ContraptionMovementSetting { MOVABLE, NO_PICKUP, UNMOVABLE; - private static HashMap> registry = new HashMap<>(); + private static final CreateRegistry> SETTING_SUPPLIERS = new CreateRegistry<>(ForgeRegistries.BLOCKS); - public static void register(ResourceLocation id, Supplier setting) { - registry.put(id, setting); + public static void register(ResourceLocation block, Supplier settingSupplier) { + SETTING_SUPPLIERS.register(block, settingSupplier); } - static { - register(Blocks.BUDDING_AMETHYST.getRegistryName(), () -> AllConfigs.SERVER.kinetics.amethystMovement.get()); - register(Blocks.SPAWNER.getRegistryName(), () -> AllConfigs.SERVER.kinetics.spawnerMovement.get()); - register(Blocks.OBSIDIAN.getRegistryName(), () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); - register(Blocks.CRYING_OBSIDIAN.getRegistryName(), () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + public static void register(Block block, Supplier settingSupplier) { + SETTING_SUPPLIERS.register(block, settingSupplier); } @Nullable public static ContraptionMovementSetting get(Block block) { - if (block instanceof IMovementSettingProvider) - return ((IMovementSettingProvider) block).getContraptionMovementSetting(); - return get(block.getRegistryName()); + if (block instanceof IMovementSettingProvider provider) + return provider.getContraptionMovementSetting(); + return SETTING_SUPPLIERS.get(block).get(); } - @Nullable - public static ContraptionMovementSetting get(ResourceLocation id) { - Supplier supplier = registry.get(id); - return supplier == null ? null : supplier.get(); - } - - protected static boolean allAre(Collection blocks, ContraptionMovementSetting are) { + public static boolean allAre(Collection blocks, ContraptionMovementSetting are) { return blocks.stream().anyMatch(b -> get(b.state.getBlock()) == are); } @@ -49,6 +42,13 @@ public enum ContraptionMovementSetting { return allAre(blocks, ContraptionMovementSetting.NO_PICKUP); } + public static void registerDefaults() { + register(Blocks.BUDDING_AMETHYST, () -> AllConfigs.SERVER.kinetics.amethystMovement.get()); + register(Blocks.SPAWNER, () -> AllConfigs.SERVER.kinetics.spawnerMovement.get()); + register(Blocks.OBSIDIAN, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + register(Blocks.CRYING_OBSIDIAN, () -> AllConfigs.SERVER.kinetics.obsidianMovement.get()); + } + public interface IMovementSettingProvider extends IForgeBlock { ContraptionMovementSetting getContraptionMovementSetting(); } diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java index cf5fb411f..a80623f38 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java @@ -21,10 +21,10 @@ import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.gui.element.TextStencilElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.config.ModConfig; @@ -146,7 +146,7 @@ public class BaseConfigScreen extends ConfigScreen { super.init(); returnOnClose = true; - TextStencilElement clientText = new TextStencilElement(font, new TextComponent(clientTile)).centered(true, true); + TextStencilElement clientText = new TextStencilElement(font, Components.literal(clientTile)).centered(true, true); addRenderableWidget(clientConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 - 30, 200, 16).showingElement(clientText)); if (clientSpec != null) { @@ -158,7 +158,7 @@ public class BaseConfigScreen extends ConfigScreen { clientText.withElementRenderer(DISABLED_RENDERER); } - TextStencilElement commonText = new TextStencilElement(font, new TextComponent(commonTile)).centered(true, true); + TextStencilElement commonText = new TextStencilElement(font, Components.literal(commonTile)).centered(true, true); addRenderableWidget(commonConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15, 200, 16).showingElement(commonText)); if (commonSpec != null) { @@ -170,7 +170,7 @@ public class BaseConfigScreen extends ConfigScreen { commonText.withElementRenderer(DISABLED_RENDERER); } - TextStencilElement serverText = new TextStencilElement(font, new TextComponent(serverTile)).centered(true, true); + TextStencilElement serverText = new TextStencilElement(font, Components.literal(serverTile)).centered(true, true); addRenderableWidget(serverConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 + 30, 200, 16).showingElement(serverText)); if (serverSpec == null) { @@ -180,10 +180,10 @@ public class BaseConfigScreen extends ConfigScreen { } else if (minecraft.level == null) { serverText.withElementRenderer(DISABLED_RENDERER); serverConfigWidget.getToolTip() - .add(new TextComponent("Stored individually per World")); + .add(Components.literal("Stored individually per World")); serverConfigWidget.getToolTip() .addAll(TooltipHelper.cutTextComponent( - new TextComponent( + Components.literal( "Gameplay settings can only be accessed from the in-game menu after joining a World or Server."), ChatFormatting.GRAY, ChatFormatting.GRAY)); } else { @@ -218,10 +218,10 @@ public class BaseConfigScreen extends ConfigScreen { goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil() .withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); goBack.getToolTip() - .add(new TextComponent("Go Back")); + .add(Components.literal("Go Back")); addRenderableWidget(goBack); - TextStencilElement othersText = new TextStencilElement(font, new TextComponent("Access Configs of other Mods")).centered(true, true); + TextStencilElement othersText = new TextStencilElement(font, Components.literal("Access Configs of other Mods")).centered(true, true); others = new BoxWidget(width / 2 - 100, height / 2 - 15 + 90, 200, 16).showingElement(othersText); othersText.withElementRenderer(BoxWidget.gradientFactory.apply(others)); others.withCallback(() -> linkTo(new ConfigModListScreen(this))); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java index 51231e588..e3b074830 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigModListScreen.java @@ -13,10 +13,10 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.fml.ModList; import net.minecraftforge.forgespi.language.IModInfo; @@ -58,7 +58,7 @@ public class ConfigModListScreen extends ConfigScreen { goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil() .withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); goBack.getToolTip() - .add(new TextComponent("Go Back")); + .add(Components.literal("Go Back")); addRenderableWidget(goBack); search = new HintableTextFieldWidget(font, width / 2 - listWidth / 2, height - 35, listWidth, 20); @@ -112,8 +112,8 @@ public class ConfigModListScreen extends ConfigScreen { button.active = false; button.updateColorsFromState(); button.modifyElement(e -> ((DelegatedStencilElement) e).withElementRenderer(BaseConfigScreen.DISABLED_RENDERER)); - labelTooltip.add(new TextComponent(toHumanReadable(id))); - labelTooltip.addAll(TooltipHelper.cutTextComponent(new TextComponent("This Mod does not have any configs registered or is not using Forge's config system"), ChatFormatting.GRAY, ChatFormatting.GRAY)); + labelTooltip.add(Components.literal(toHumanReadable(id))); + labelTooltip.addAll(TooltipHelper.cutTextComponent(Components.literal("This Mod does not have any configs registered or is not using Forge's config system"), ChatFormatting.GRAY, ChatFormatting.GRAY)); } listeners.add(button); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java index f014b5424..3e537be81 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.gui.TickableGuiEventListener; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.TextStencilElement; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.client.Minecraft; @@ -28,7 +29,6 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class ConfigScreenList extends ObjectSelectionList implements TickableGuiEventListener { @@ -272,7 +272,7 @@ public class ConfigScreenList extends ObjectSelectionList AllIcons.I_CONFIG_LOCKED.render(ms, 0, 0)); stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, red)); serverLocked.withBorderColors(red); - serverLocked.getToolTip().add(new TextComponent("Locked").withStyle(ChatFormatting.BOLD)); + serverLocked.getToolTip().add(Components.literal("Locked").withStyle(ChatFormatting.BOLD)); serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You do not have enough permissions to edit the server config. You can still look at the current values here though.", ChatFormatting.GRAY, ChatFormatting.GRAY)); } else { stencil.withStencilRenderer((ms, w, h, alpha) -> AllIcons.I_CONFIG_UNLOCKED.render(ms, 0, 0)); stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, green)); serverLocked.withBorderColors(green); - serverLocked.getToolTip().add(new TextComponent("Unlocked").withStyle(ChatFormatting.BOLD)); + serverLocked.getToolTip().add(Components.literal("Unlocked").withStyle(ChatFormatting.BOLD)); serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You have enough permissions to edit the server config. Changes you make here will be synced with the server when you save them.", ChatFormatting.GRAY, ChatFormatting.GRAY)); } diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java index e90668608..4111d83b2 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java @@ -11,11 +11,12 @@ import com.simibubi.create.foundation.config.ui.ConfigTextField; import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.gui.element.TextStencilElement; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraftforge.common.ForgeConfigSpec; public abstract class NumberEntry extends ValueEntry { @@ -74,13 +75,13 @@ public abstract class NumberEntry extends ValueEntry { Font font = Minecraft.getInstance().font; if (min.doubleValue() > getTypeMin().doubleValue()) { - TextComponent t = new TextComponent(formatBound(min) + " < "); + MutableComponent t = Components.literal(formatBound(min) + " < "); minText = new TextStencilElement(font, t).centered(true, false); minText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); minOffset = font.width(t); } if (max.doubleValue() < getTypeMax().doubleValue()) { - TextComponent t = new TextComponent(" < " + formatBound(max)); + MutableComponent t = Components.literal(" < " + formatBound(max)); maxText = new TextStencilElement(font, t).centered(true, false); maxText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); maxOffset = font.width(t); diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java index 1d3d89d3b..330b2cda3 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java +++ b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java @@ -18,10 +18,10 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.gui.widget.BoxWidget; import com.simibubi.create.foundation.item.TooltipHelper; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.common.ForgeConfigSpec; public class ValueEntry extends ConfigScreenList.LabeledEntry { @@ -50,7 +50,7 @@ public class ValueEntry extends ConfigScreenList.LabeledEntry { listeners.add(resetButton); List path = value.getPath(); - labelTooltip.add(new TextComponent(label).withStyle(ChatFormatting.WHITE)); + labelTooltip.add(Components.literal(label).withStyle(ChatFormatting.WHITE)); String comment = spec.getComment(); if (comment == null || comment.isEmpty()) return; @@ -68,18 +68,18 @@ public class ValueEntry extends ConfigScreenList.LabeledEntry { // add comment to tooltip labelTooltip.addAll(commentLines.stream() .filter(Predicates.not(s -> s.startsWith("Range"))) - .map(TextComponent::new) + .map(Components::literal) .flatMap(stc -> TooltipHelper.cutTextComponent(stc, ChatFormatting.GRAY, ChatFormatting.GRAY) .stream()) .collect(Collectors.toList())); if (annotations.containsKey(ConfigAnnotations.RequiresRelog.TRUE.getName())) - labelTooltip.addAll(TooltipHelper.cutTextComponent(new TextComponent("Changing this value will require a _relog_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.GOLD)); + labelTooltip.addAll(TooltipHelper.cutTextComponent(Components.literal("Changing this value will require a _relog_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.GOLD)); if (annotations.containsKey(ConfigAnnotations.RequiresRestart.CLIENT.getName())) - labelTooltip.addAll(TooltipHelper.cutTextComponent(new TextComponent("Changing this value will require a _restart_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.RED)); + labelTooltip.addAll(TooltipHelper.cutTextComponent(Components.literal("Changing this value will require a _restart_ to take full effect"), ChatFormatting.GRAY, ChatFormatting.RED)); - labelTooltip.add(new TextComponent(ConfigScreen.modID + ":" + path.get(path.size() - 1)).withStyle(ChatFormatting.DARK_GRAY)); + labelTooltip.add(Components.literal(ConfigScreen.modID + ":" + path.get(path.size() - 1)).withStyle(ChatFormatting.DARK_GRAY)); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index bff5adfda..2c410b692 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -39,6 +39,7 @@ import com.simibubi.create.foundation.block.BlockStressDefaults; import com.simibubi.create.foundation.block.ItemUseOverrides; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; @@ -87,7 +88,7 @@ public class BuilderTransformers { .blockstate((c, p) -> BlockStateGen.horizontalAxisBlock(c, p, s -> p.models() .getExistingFile(p.modLoc("block/track/bogey/top")))) .loot((p, l) -> p.dropOther(l, AllBlocks.RAILWAY_CASING.get())) - .onRegister(block -> IBogeyBlock.register(block.getRegistryName())); + .onRegister(block -> IBogeyBlock.register(RegisteredObjects.getKeyOrThrow(block))); } public static NonNullUnaryOperator> trapdoor(boolean orientable) { diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index 9a0e26718..22cf21343 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -18,6 +18,7 @@ import com.simibubi.create.content.contraptions.fluids.VirtualFluid; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; import com.simibubi.create.foundation.block.connected.CTModel; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.BlockEntityBuilder.BlockEntityFactory; @@ -204,11 +205,6 @@ public class CreateRegistrate extends AbstractRegistrate { /* Util */ - public static NonNullConsumer connectedTextures( - Supplier behavior) { - return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); - } - public static NonNullConsumer casingConnectivity( BiConsumer consumer) { return entry -> onClient(() -> () -> registerCasingConnectivity(entry, consumer)); @@ -224,15 +220,13 @@ public class CreateRegistrate extends AbstractRegistrate { return entry -> onClient(() -> () -> registerItemModel(entry, func)); } - protected static void onClient(Supplier toRun) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, toRun); + public static NonNullConsumer connectedTextures( + Supplier behavior) { + return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); } - @OnlyIn(Dist.CLIENT) - private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { - ConnectedTextureBehaviour behavior = behaviorSupplier.get(); - CreateClient.MODEL_SWAPPER.getCustomBlockModels() - .register(entry.delegate, model -> new CTModel(model, behavior)); + protected static void onClient(Supplier toRun) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, toRun); } @OnlyIn(Dist.CLIENT) @@ -245,14 +239,21 @@ public class CreateRegistrate extends AbstractRegistrate { private static void registerBlockModel(Block entry, Supplier> func) { CreateClient.MODEL_SWAPPER.getCustomBlockModels() - .register(entry.delegate, func.get()); + .register(RegisteredObjects.getKeyOrThrow(entry), func.get()); } @OnlyIn(Dist.CLIENT) private static void registerItemModel(Item entry, Supplier> func) { CreateClient.MODEL_SWAPPER.getCustomItemModels() - .register(entry.delegate, func.get()); + .register(RegisteredObjects.getKeyOrThrow(entry), func.get()); + } + + @OnlyIn(Dist.CLIENT) + private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { + ConnectedTextureBehaviour behavior = behaviorSupplier.get(); + CreateClient.MODEL_SWAPPER.getCustomBlockModels() + .register(RegisteredObjects.getKeyOrThrow(entry), model -> new CTModel(model, behavior)); } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java index 564a68145..af314d575 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/HauntingRecipeGen.java @@ -5,9 +5,9 @@ import java.util.function.Supplier; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.data.DataGenerator; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; @@ -52,9 +52,8 @@ public class HauntingRecipeGen extends ProcessingRecipeGen { } public GeneratedRecipe convert(Supplier input, Supplier result) { - return create(new ResourceLocation(Create.ID, result.get() - .asItem() - .getRegistryName() + return create(Create.asResource(RegisteredObjects.getKeyOrThrow(result.get() + .asItem()) .getPath()), p -> p.withItemIngredients(input.get()) .output(result.get())); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java index 3cf72b753..4dbb1fdc0 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java @@ -7,6 +7,7 @@ import com.simibubi.create.content.contraptions.components.deployer.ManualApplic import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; @@ -57,7 +58,7 @@ public class LogStrippingFakeRecipes { } private static ManualApplicationRecipe create(Item fromItem, Item toItem, ItemStack axe) { - ResourceLocation rn = toItem.getRegistryName(); + ResourceLocation rn = RegisteredObjects.getKeyOrThrow(toItem); return new ProcessingRecipeBuilder<>(ManualApplicationRecipe::new, new ResourceLocation(rn.getNamespace(), rn.getPath() + "_via_vanilla_stripping")).require(fromItem) .require(Ingredient.of(axe)) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java index 54a12eb5f..b398a31ee 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java @@ -15,6 +15,7 @@ import com.google.common.collect.Sets; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.resources.ResourceLocation; @@ -27,7 +28,6 @@ import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.common.crafting.conditions.ICondition; import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.registries.ForgeRegistries; public class MechanicalCraftingRecipeBuilder { @@ -112,7 +112,7 @@ public class MechanicalCraftingRecipeBuilder { * Builds this recipe into a {@link FinishedRecipe}. */ public void build(Consumer p_200464_1_) { - this.build(p_200464_1_, ForgeRegistries.ITEMS.getKey(this.result)); + this.build(p_200464_1_, RegisteredObjects.getKeyOrThrow(this.result)); } /** @@ -120,7 +120,7 @@ public class MechanicalCraftingRecipeBuilder { * {@link #build(Consumer)} if save is the same as the ID for the result. */ public void build(Consumer p_200466_1_, String p_200466_2_) { - ResourceLocation resourcelocation = ForgeRegistries.ITEMS.getKey(this.result); + ResourceLocation resourcelocation = RegisteredObjects.getKeyOrThrow(this.result); if ((new ResourceLocation(p_200466_2_)).equals(resourcelocation)) { throw new IllegalStateException("Shaped Recipe " + p_200466_2_ + " should remove its 'save' argument"); } else { @@ -209,7 +209,7 @@ public class MechanicalCraftingRecipeBuilder { p_218610_1_.add("key", jsonobject); JsonObject jsonobject1 = new JsonObject(); - jsonobject1.addProperty("item", ForgeRegistries.ITEMS.getKey(this.result) + jsonobject1.addProperty("item", RegisteredObjects.getKeyOrThrow(this.result) .toString()); if (this.count > 1) jsonobject1.addProperty("count", this.count); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java index d359a5bf0..dbf210b72 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java @@ -6,6 +6,7 @@ import com.google.common.base.Supplier; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; @@ -97,9 +98,8 @@ public class MechanicalCraftingRecipeGen extends CreateRecipeProvider { return register(consumer -> { MechanicalCraftingRecipeBuilder b = builder.apply(MechanicalCraftingRecipeBuilder.shapedRecipe(result.get(), amount)); - ResourceLocation location = Create.asResource("mechanical_crafting/" + result.get() - .asItem() - .getRegistryName() + ResourceLocation location = Create.asResource("mechanical_crafting/" + RegisteredObjects.getKeyOrThrow(result.get() + .asItem()) .getPath() + suffix); b.build(consumer, location); }); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java index 71a9f20a8..88e7308a8 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java @@ -10,6 +10,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo; import net.minecraft.data.DataGenerator; @@ -76,8 +77,7 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider { ItemLike iItemProvider = singleIngredient.get(); transform .apply(new ProcessingRecipeBuilder<>(serializer.getFactory(), - new ResourceLocation(namespace, iItemProvider.asItem() - .getRegistryName() + new ResourceLocation(namespace, RegisteredObjects.getKeyOrThrow(iItemProvider.asItem()) .getPath())).withItemIngredients(Ingredient.of(iItemProvider))) .build(c); }; @@ -130,9 +130,8 @@ public abstract class ProcessingRecipeGen extends CreateRecipeProvider { protected Supplier idWithSuffix(Supplier item, String suffix) { return () -> { - ResourceLocation registryName = item.get() - .asItem() - .getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(item.get() + .asItem()); return Create.asResource(registryName.getPath() + suffix); }; } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index fdb315cfd..5401c429c 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -28,6 +28,7 @@ import com.simibubi.create.content.AllSections; import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.content.palettes.AllPaletteStoneTypes; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.ItemProviderEntry; @@ -1281,9 +1282,8 @@ public class StandardRecipeGen extends CreateRecipeProvider { } private ResourceLocation getRegistryName() { - return compatDatagenOutput == null ? result.get() - .asItem() - .getRegistryName() : compatDatagenOutput; + return compatDatagenOutput == null ? RegisteredObjects.getKeyOrThrow(result.get() + .asItem()) : compatDatagenOutput; } GeneratedCookingRecipeBuilder viaCooking(Supplier item) { @@ -1365,7 +1365,7 @@ public class StandardRecipeGen extends CreateRecipeProvider { consumer.accept( isOtherMod ? new ModdedCookingRecipeResult(result, compatDatagenOutput, recipeConditions) : result); - }, createSimpleLocation(serializer.getRegistryName() + }, createSimpleLocation(RegisteredObjects.getKeyOrThrow(serializer) .getPath())); }); } diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java index be7a06a2f..16bbd3adb 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTil import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; import com.simibubi.create.foundation.utility.Pair; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.TagParser; import net.minecraft.resources.ResourceLocation; @@ -100,8 +101,7 @@ public class FluidHelper { public static JsonElement serializeFluidStack(FluidStack stack) { JsonObject json = new JsonObject(); - json.addProperty("fluid", stack.getFluid() - .getRegistryName() + json.addProperty("fluid", RegisteredObjects.getKeyOrThrow(stack.getFluid()) .toString()); json.addProperty("amount", stack.getAmount()); if (stack.hasTag()) diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java index 10097c729..b74e6e5dd 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java @@ -13,6 +13,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; @@ -183,7 +184,7 @@ public abstract class FluidIngredient implements Predicate { @Override protected void writeInternal(JsonObject json) { - json.addProperty("fluid", fluid.getRegistryName() + json.addProperty("fluid", RegisteredObjects.getKeyOrThrow(fluid) .toString()); json.add("nbt", JsonParser.parseString(tagToMatch.toString())); } diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java index f0388bc00..508880945 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java @@ -6,6 +6,7 @@ import java.util.List; import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.widget.AbstractSimiWidget; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Widget; @@ -13,7 +14,6 @@ import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -29,7 +29,7 @@ public abstract class AbstractSimiScreen extends Screen { } protected AbstractSimiScreen() { - this(TextComponent.EMPTY); + this(Components.immutableEmpty()); } /** diff --git a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java index 51889c28f..45c03f754 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CreateMainMenuScreen.java @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; @@ -25,7 +26,6 @@ import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.renderer.CubeMap; import net.minecraft.client.renderer.PanoramaRenderer; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -37,8 +37,8 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { new ResourceLocation("textures/gui/title/background/panorama_overlay.png"); public static final PanoramaRenderer PANORAMA = new PanoramaRenderer(PANORAMA_RESOURCES); - private static final Component CURSEFORGE_TOOLTIP = new TextComponent("CurseForge").withStyle(s -> s.withColor(0xFC785C).withBold(true)); - private static final Component MODRINTH_TOOLTIP = new TextComponent("Modrinth").withStyle(s -> s.withColor(0x3FD32B).withBold(true)); + private static final Component CURSEFORGE_TOOLTIP = Components.literal("CurseForge").withStyle(s -> s.withColor(0xFC785C).withBold(true)); + private static final Component MODRINTH_TOOLTIP = Components.literal("Modrinth").withStyle(s -> s.withColor(0x3FD32B).withBold(true)); public static final String CURSEFORGE_LINK = "https://www.curseforge.com/minecraft/mc-mods/create"; public static final String MODRINTH_LINK = "https://modrinth.com/mod/create"; @@ -120,9 +120,9 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { ms.pushPose(); ms.translate(0, 0, 200); - drawCenteredString(ms, font, new TextComponent(Create.NAME).withStyle(ChatFormatting.BOLD) + drawCenteredString(ms, font, Components.literal(Create.NAME).withStyle(ChatFormatting.BOLD) .append( - new TextComponent(" v" + Create.VERSION).withStyle(ChatFormatting.BOLD, ChatFormatting.WHITE)), + Components.literal(" v" + Create.VERSION).withStyle(ChatFormatting.BOLD, ChatFormatting.WHITE)), width / 2, 89, 0xFF_E4BB67); ms.popPose(); @@ -209,7 +209,7 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { protected final float scale; public PlatformIconButton(int pX, int pY, int pWidth, int pHeight, AllGuiTextures icon, float scale, OnPress pOnPress, OnTooltip pOnTooltip) { - super(pX, pY, pWidth, pHeight, TextComponent.EMPTY, pOnPress, pOnTooltip); + super(pX, pY, pWidth, pHeight, Components.immutableEmpty(), pOnPress, pOnTooltip); this.icon = icon; this.scale = scale; } diff --git a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java index 4a2a56e6e..69973a41f 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java @@ -6,12 +6,12 @@ import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.gui.widget.TooltipArea; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Pair; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; -import net.minecraft.network.chat.TextComponent; public class ModularGuiLineBuilder { @@ -52,7 +52,7 @@ public class ModularGuiLineBuilder { } private void addScrollInput(T input, BiConsumer inputTransform, String dataKey) { - Label label = new Label(input.x + 5, y, TextComponent.EMPTY); + Label label = new Label(input.x + 5, y, Components.immutableEmpty()); label.withShadow(); inputTransform.accept(input, label); input.writingTo(label); @@ -76,7 +76,7 @@ public class ModularGuiLineBuilder { public ModularGuiLineBuilder addTextInput(int x, int width, BiConsumer inputTransform, String dataKey) { - EditBox input = new EditBox(font, x + this.x + 5, y, width - 9, 8, TextComponent.EMPTY); + EditBox input = new EditBox(font, x + this.x + 5, y, width - 9, 8, Components.immutableEmpty()); input.setBordered(false); input.setTextColor(0xffffff); input.changeFocus(false); diff --git a/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java index d735a33aa..3b53ad9a0 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java +++ b/src/main/java/com/simibubi/create/foundation/gui/element/TextStencilElement.java @@ -1,10 +1,10 @@ package com.simibubi.create.foundation.gui.element; import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.Font; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class TextStencilElement extends DelegatedStencilElement { @@ -21,7 +21,7 @@ public class TextStencilElement extends DelegatedStencilElement { public TextStencilElement(Font font, String text) { this(font); - component = new TextComponent(text); + component = Components.literal(text); } public TextStencilElement(Font font, MutableComponent component) { @@ -30,7 +30,7 @@ public class TextStencilElement extends DelegatedStencilElement { } public TextStencilElement withText(String text) { - component = new TextComponent(text); + component = Components.literal(text); return this; } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java index 85cdd4ae1..6d0d747c3 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/AbstractSimiWidget.java @@ -8,11 +8,11 @@ import javax.annotation.Nonnull; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.TickableGuiEventListener; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; public abstract class AbstractSimiWidget extends AbstractWidget implements TickableGuiEventListener { @@ -31,7 +31,7 @@ public abstract class AbstractSimiWidget extends AbstractWidget implements Ticka } protected AbstractSimiWidget(int x, int y, int width, int height) { - this(x, y, width, height, TextComponent.EMPTY); + this(x, y, width, height, Components.immutableEmpty()); } protected AbstractSimiWidget(int x, int y, int width, int height, Component message) { diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java b/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java index 414f5ab5b..57bb7ce28 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java @@ -4,12 +4,12 @@ import javax.annotation.Nonnull; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.utility.Components; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class Label extends AbstractSimiWidget { @@ -22,7 +22,7 @@ public class Label extends AbstractSimiWidget { public Label(int x, int y, Component text) { super(x, y, Minecraft.getInstance().font.width(text), 10); font = Minecraft.getInstance().font; - this.text = new TextComponent("Label"); + this.text = Components.literal("Label"); color = 0xFFFFFF; hasShadow = false; suffix = ""; @@ -62,8 +62,8 @@ public class Label extends AbstractSimiWidget { for (int i = startIndex; i != endIndex; i += step) { String sub = builder.substring(trimFront ? i : startIndex, trimFront ? endIndex + 1 : i + 1); - if (fontRenderer.width(new TextComponent(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) { - text = new TextComponent(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle()); + if (fontRenderer.width(Components.literal(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) { + text = Components.literal(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle()); return; } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java index 337729b27..4f810c3ab 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java @@ -5,12 +5,12 @@ import java.util.function.Function; import com.simibubi.create.AllKeys; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class ScrollInput extends AbstractSimiWidget { @@ -34,7 +34,7 @@ public class ScrollInput extends AbstractSimiWidget { max = 1; shiftStep = 5; step = standardStep(); - formatter = i -> new TextComponent(String.valueOf(i)); + formatter = i -> Components.literal(String.valueOf(i)); } public Function standardStep() { diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java index 1a570d446..097f21b32 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/SelectionScrollInput.java @@ -3,12 +3,12 @@ package com.simibubi.create.foundation.gui.widget; import java.util.ArrayList; import java.util.List; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class SelectionScrollInput extends ScrollInput { @@ -43,23 +43,23 @@ public class SelectionScrollInput extends ScrollInput { if (this.min + 1 == min) min--; if (min > this.min) - toolTip.add(new TextComponent("> ...").withStyle(ChatFormatting.GRAY)); + toolTip.add(Components.literal("> ...").withStyle(ChatFormatting.GRAY)); if (this.max - 1 == max) max++; for (int i = min; i < max; i++) { if (i == state) - toolTip.add(TextComponent.EMPTY.plainCopy() + toolTip.add(Components.empty() .append("-> ") .append(options.get(i)) .withStyle(ChatFormatting.WHITE)); else - toolTip.add(TextComponent.EMPTY.plainCopy() + toolTip.add(Components.empty() .append("> ") .append(options.get(i)) .withStyle(ChatFormatting.GRAY)); } if (max < this.max) - toolTip.add(new TextComponent("> ...").withStyle(ChatFormatting.GRAY)); + toolTip.add(Components.literal("> ...").withStyle(ChatFormatting.GRAY)); toolTip.add(scrollToSelect.plainCopy() .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)); diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java index 3f0be8ba2..b8b85e2f6 100644 --- a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java +++ b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java @@ -27,6 +27,7 @@ import com.simibubi.create.content.contraptions.goggles.GogglesItem; import com.simibubi.create.foundation.block.BlockStressValues; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.CKinetics; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.LangBuilder; @@ -36,13 +37,12 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.level.block.Block; public class ItemDescription { public static final ItemDescription MISSING = new ItemDescription(null); - public static Component trim = new TextComponent(" ").withStyle(WHITE, STRIKETHROUGH); + public static Component trim = Components.literal(" ").withStyle(WHITE, STRIKETHROUGH); public enum Palette { @@ -175,13 +175,13 @@ public class ItemDescription { } public ItemDescription withBehaviour(String condition, String behaviour) { - add(linesOnShift, new TextComponent(condition).withStyle(GRAY)); + add(linesOnShift, Components.literal(condition).withStyle(GRAY)); addStrings(linesOnShift, cutStringTextComponent(behaviour, palette.color, palette.hColor, 1)); return this; } public ItemDescription withControl(String condition, String action) { - add(linesOnCtrl, new TextComponent(condition).withStyle(GRAY)); + add(linesOnCtrl, Components.literal(condition).withStyle(GRAY)); addStrings(linesOnCtrl, cutStringTextComponent(action, palette.color, palette.hColor, 1)); return this; } @@ -204,30 +204,30 @@ public class ItemDescription { boolean ctrl = list == linesOnCtrl; if (holdDesc.length != 2 || holdCtrl.length != 2) { - list.add(0, new TextComponent("Invalid lang formatting!")); + list.add(0, Components.literal("Invalid lang formatting!")); continue; } if (hasControls) { - MutableComponent tabBuilder = new TextComponent(""); - tabBuilder.append(new TextComponent(holdCtrl[0]).withStyle(DARK_GRAY)); + MutableComponent tabBuilder = Components.empty(); + tabBuilder.append(Components.literal(holdCtrl[0]).withStyle(DARK_GRAY)); tabBuilder.append(keyCtrl.plainCopy() .withStyle(ctrl ? WHITE : GRAY)); - tabBuilder.append(new TextComponent(holdCtrl[1]).withStyle(DARK_GRAY)); + tabBuilder.append(Components.literal(holdCtrl[1]).withStyle(DARK_GRAY)); list.add(0, tabBuilder); } if (hasDescription) { - MutableComponent tabBuilder = new TextComponent(""); - tabBuilder.append(new TextComponent(holdDesc[0]).withStyle(DARK_GRAY)); + MutableComponent tabBuilder = Components.empty(); + tabBuilder.append(Components.literal(holdDesc[0]).withStyle(DARK_GRAY)); tabBuilder.append(keyShift.plainCopy() .withStyle(shift ? WHITE : GRAY)); - tabBuilder.append(new TextComponent(holdDesc[1]).withStyle(DARK_GRAY)); + tabBuilder.append(Components.literal(holdDesc[1]).withStyle(DARK_GRAY)); list.add(0, tabBuilder); } if (shift || ctrl) - list.add(hasDescription && hasControls ? 2 : 1, new TextComponent("")); + list.add(hasDescription && hasControls ? 2 : 1, Components.immutableEmpty()); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index bccd61761..ad5fdf92a 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -14,6 +14,7 @@ import com.simibubi.create.content.AllSections; import com.simibubi.create.content.contraptions.goggles.GogglesItem; import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; import com.simibubi.create.foundation.item.ItemDescription.Palette; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; @@ -24,7 +25,6 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -69,7 +69,7 @@ public class TooltipHelper { @Deprecated public static List cutString(Component s, ChatFormatting defaultColor, ChatFormatting highlightColor) { - return cutString(s.getContents(), defaultColor, highlightColor, 0); + return cutString(s.getString(), defaultColor, highlightColor, 0); } @Deprecated @@ -105,7 +105,7 @@ public class TooltipHelper { public static List cutStringTextComponent(String c, ChatFormatting defaultColor, ChatFormatting highlightColor) { - return cutTextComponent(new TextComponent(c), defaultColor, highlightColor, 0); + return cutTextComponent(Components.literal(c), defaultColor, highlightColor, 0); } public static List cutTextComponent(Component c, ChatFormatting defaultColor, @@ -115,7 +115,7 @@ public class TooltipHelper { public static List cutStringTextComponent(String c, ChatFormatting defaultColor, ChatFormatting highlightColor, int indent) { - return cutTextComponent(new TextComponent(c), defaultColor, highlightColor, indent); + return cutTextComponent(Components.literal(c), defaultColor, highlightColor, indent); } public static List cutTextComponent(Component c, ChatFormatting defaultColor, @@ -161,7 +161,7 @@ public class TooltipHelper { } // Format - MutableComponent lineStart = new TextComponent(Strings.repeat(" ", indent)); + MutableComponent lineStart = Components.literal(Strings.repeat(" ", indent)); lineStart.withStyle(defaultColor); List formattedLines = new ArrayList<>(lines.size()); Couple f = Couple.create(highlightColor, defaultColor); @@ -171,7 +171,7 @@ public class TooltipHelper { MutableComponent currentComponent = lineStart.plainCopy(); String[] split = string.split("_"); for (String part : split) { - currentComponent.append(new TextComponent(part).withStyle(f.get(currentlyHighlighted))); + currentComponent.append(Components.literal(part).withStyle(f.get(currentlyHighlighted))); currentlyHighlighted = !currentlyHighlighted; } @@ -275,7 +275,7 @@ public class TooltipHelper { // Summary if (I18n.exists(summaryKey)) - tooltip = tooltip.withSummary(new TextComponent(I18n.get(summaryKey))); + tooltip = tooltip.withSummary(Components.literal(I18n.get(summaryKey))); // Requirements // if (stack.getItem() instanceof BlockItem) { @@ -293,7 +293,7 @@ public class TooltipHelper { break; if (i == 1) tooltip.getLinesOnShift() - .add(new TextComponent("")); + .add(Components.immutableEmpty()); tooltip.withBehaviour(I18n.get(conditionKey), I18n.get(behaviourKey)); } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java index 6e1c5d808..289281528 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java @@ -1,48 +1,56 @@ package com.simibubi.create.foundation.item.render; -import java.util.ArrayList; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; +import com.google.common.collect.Multimap; +import com.google.common.collect.MultimapBuilder; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; public class CustomItemModels { - private List, NonNullFunction>> registered; - private Map> customModels; + private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); + private final Map> finalModelFuncs = new IdentityHashMap<>(); - public CustomItemModels() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); + public void register(ResourceLocation item, NonNullFunction func) { + modelFuncs.put(item, func); } public void forEach(NonNullBiConsumer> consumer) { loadEntriesIfMissing(); - customModels.forEach(consumer); + finalModelFuncs.forEach(consumer); } private void loadEntriesIfMissing() { - if (customModels.isEmpty()) + if (finalModelFuncs.isEmpty()) loadEntries(); } private void loadEntries() { - customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); + finalModelFuncs.clear(); + modelFuncs.asMap().forEach((location, funcList) -> { + Item item = ForgeRegistries.ITEMS.getValue(location); + if (item == null) { + return; + } + + NonNullFunction finalFunc = null; + for (NonNullFunction func : funcList) { + if (finalFunc == null) { + finalFunc = func; + } else { + finalFunc = finalFunc.andThen(func); + } + } + + finalModelFuncs.put(item, finalFunc); + }); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java index 491e46f8a..08f7a990a 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java @@ -1,16 +1,26 @@ package com.simibubi.create.foundation.item.render; +import java.util.HashSet; +import java.util.Set; + import com.mojang.blaze3d.vertex.PoseStack; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.client.RenderProperties; +import net.minecraftforge.registries.ForgeRegistries; public abstract class CustomRenderedItemModelRenderer extends BlockEntityWithoutLevelRenderer { + private static final Set ITEMS = new HashSet<>(); + public CustomRenderedItemModelRenderer() { super(null, null); } @@ -34,4 +44,25 @@ public abstract class CustomRenderedItemModelRenderer> consumer) { + for (Item item : ITEMS) { + if (ForgeRegistries.ITEMS.containsValue(item)) { + BlockEntityWithoutLevelRenderer renderer = RenderProperties.get(item).getItemStackRenderer(); + if (renderer instanceof CustomRenderedItemModelRenderer customRenderer) { + consumer.accept(item, customRenderer::createModel); + } + } + } + } + } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java index 9fe7b2b80..7a29d0d14 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java @@ -1,49 +1,48 @@ package com.simibubi.create.foundation.item.render; -import java.util.ArrayList; +import java.util.HashMap; import java.util.IdentityHashMap; -import java.util.List; import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; +import net.minecraftforge.registries.ForgeRegistries; public class CustomRenderedItems { - private List, NonNullFunction>> registered; - private Map> customModels; + private final Map> modelFuncs = new HashMap<>(); + private final Map> finalModelFuncs = new IdentityHashMap<>(); - public CustomRenderedItems() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); + public void register(ResourceLocation item, + NonNullFunction func) { + modelFuncs.put(item, func); } public void forEach( NonNullBiConsumer> consumer) { loadEntriesIfMissing(); - customModels.forEach(consumer); + finalModelFuncs.forEach(consumer); } private void loadEntriesIfMissing() { - if (customModels.isEmpty()) + if (finalModelFuncs.isEmpty()) loadEntries(); } private void loadEntries() { - customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); + finalModelFuncs.clear(); + CustomRenderedItemModelRenderer.acceptModelFuncs(finalModelFuncs::put); + modelFuncs.forEach((location, func) -> { + Item item = ForgeRegistries.ITEMS.getValue(location); + if (item == null) { + return; + } + finalModelFuncs.put(item, func); + }); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java index 44b0c5d9f..539dd5b60 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java @@ -1,7 +1,5 @@ package com.simibubi.create.foundation.item.render; -import com.simibubi.create.CreateClient; - import net.minecraft.world.item.Item; import net.minecraftforge.client.IItemRenderProperties; @@ -14,7 +12,7 @@ public class SimpleCustomRenderer implements IItemRenderProperties { } public static SimpleCustomRenderer create(Item item, CustomRenderedItemModelRenderer renderer) { - CreateClient.MODEL_SWAPPER.getCustomRenderedItems().register(item.delegate, renderer::createModel); + CustomRenderedItemModelRenderer.registerForSwapping(item); return new SimpleCustomRenderer(renderer); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java index cad0c1bab..279339556 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTagRegistry.java @@ -10,6 +10,7 @@ import java.util.Set; import com.google.common.collect.ImmutableSet; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.resources.ResourceLocation; @@ -109,8 +110,7 @@ public class PonderTagRegistry { } public TagBuilder add(ItemLike item) { - return add(item.asItem() - .getRegistryName()); + return add(RegisteredObjects.getKeyOrThrow(item.asItem())); } public TagBuilder add(ItemProviderEntry entry) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java index cf22e348c..90f5ce8fe 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java @@ -8,7 +8,9 @@ import com.simibubi.create.foundation.gui.ScreenOpener; import com.simibubi.create.foundation.ponder.ui.NavigatableSimiScreen; import com.simibubi.create.foundation.ponder.ui.PonderUI; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.ChatFormatting; @@ -18,7 +20,6 @@ import net.minecraft.client.gui.Font; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraftforge.client.event.RenderTooltipEvent; @@ -112,8 +113,7 @@ public class PonderTooltipHandler { if (stack.isEmpty()) return; - if (!PonderRegistry.ALL.containsKey(stack.getItem() - .getRegistryName())) + if (!PonderRegistry.ALL.containsKey(RegisteredObjects.getKeyOrThrow(stack.getItem()))) return; if (prevStack.isEmpty() || !prevStack.sameItem(stack)) @@ -165,7 +165,7 @@ public class PonderTooltipHandler { bars += ChatFormatting.GRAY + Strings.repeat("|", current); if (progress < 1) bars += ChatFormatting.DARK_GRAY + Strings.repeat("|", total - current); - return new TextComponent(bars); + return Components.literal(bars); } return holdW; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java index a81424f72..5193df037 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java @@ -19,6 +19,7 @@ import com.simibubi.create.foundation.ponder.element.WorldSectionElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.tileEntity.IMultiTileContainer; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; import net.minecraft.client.Camera; @@ -47,7 +48,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.registries.ForgeRegistries; public class PonderWorld extends SchematicWorld { @@ -228,7 +228,7 @@ public class PonderWorld extends SchematicWorld { @SuppressWarnings("unchecked") private Particle makeParticle(T data, double x, double y, double z, double mx, double my, double mz) { - ResourceLocation key = ForgeRegistries.PARTICLE_TYPES.getKey(data.getType()); + ResourceLocation key = RegisteredObjects.getKeyOrThrow(data.getType()); ParticleProvider particleProvider = (ParticleProvider) particleProviders.get(key); return particleProvider == null ? null : particleProvider.createParticle(data, asClientWorld.get(), x, y, z, mx, my, mz); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java index 06fb92e84..fa09e1135 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/DisplayScenes.java @@ -9,12 +9,12 @@ import com.simibubi.create.foundation.ponder.SceneBuildingUtil; import com.simibubi.create.foundation.ponder.Selection; import com.simibubi.create.foundation.ponder.element.InputWindowElement; import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -135,7 +135,7 @@ public class DisplayScenes { scene.world.hideSection(depot, Direction.SOUTH); scene.idle(5); - scene.world.setDisplayBoardText(board, 1, TextComponent.EMPTY); + scene.world.setDisplayBoardText(board, 1, Components.immutableEmpty()); scene.world.flashDisplayLink(linkPos); scene.idle(5); ElementLink dirtElement = scene.world.showIndependentSection(dirt, Direction.SOUTH); @@ -156,7 +156,7 @@ public class DisplayScenes { scene.world.moveSection(stressElement, util.vector.of(0, -2, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent(1024 + " ").append(Lang.translateDirect("generic.unit.stress"))); + Components.literal(1024 + " ").append(Lang.translateDirect("generic.unit.stress"))); scene.world.flashDisplayLink(linkPos); scene.idle(40); scene.world.hideIndependentSection(stressElement, Direction.SOUTH); @@ -166,8 +166,8 @@ public class DisplayScenes { scene.world.moveSection(chestElement, util.vector.of(0, -3, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent(418 + " ").append(new ItemStack(Items.DEEPSLATE).getHoverName())); - scene.world.setDisplayBoardText(board, 2, new TextComponent(14 + " ").append(AllBlocks.COGWHEEL.asStack() + Components.literal(418 + " ").append(new ItemStack(Items.DEEPSLATE).getHoverName())); + scene.world.setDisplayBoardText(board, 2, Components.literal(14 + " ").append(AllBlocks.COGWHEEL.asStack() .getHoverName())); scene.world.flashDisplayLink(linkPos); scene.idle(40); @@ -185,8 +185,8 @@ public class DisplayScenes { scene.world.moveSection(cuckooElement, util.vector.of(0, -1, 0), 0); scene.idle(10); scene.world.setDisplayBoardText(board, 1, - new TextComponent("6:00 ").append(Lang.translateDirect("generic.daytime.pm"))); - scene.world.setDisplayBoardText(board, 2, TextComponent.EMPTY); + Components.literal("6:00 ").append(Lang.translateDirect("generic.daytime.pm"))); + scene.world.setDisplayBoardText(board, 2, Components.immutableEmpty()); scene.world.flashDisplayLink(linkPos); scene.idle(90); @@ -286,7 +286,7 @@ public class DisplayScenes { .showControls(new InputWindowElement(target, Pointing.RIGHT).withItem(new ItemStack(Items.NAME_TAG)) .rightClick(), 40); scene.idle(6); - scene.world.setDisplayBoardText(board, 0, new TextComponent("Create")); + scene.world.setDisplayBoardText(board, 0, Components.literal("Create")); scene.idle(25); scene.overlay.showText(50) @@ -360,7 +360,7 @@ public class DisplayScenes { scene.overlay.showControls(new InputWindowElement(target, Pointing.RIGHT).rightClick(), 40); scene.idle(6); - scene.world.setDisplayBoardText(board, 0, new TextComponent("")); + scene.world.setDisplayBoardText(board, 0, Components.immutableEmpty()); scene.idle(25); scene.overlay.showText(70) @@ -452,7 +452,7 @@ public class DisplayScenes { scene.world.moveSection(redstoneBlock, util.vector.of(-1, 0, 1), 0); scene.idle(10); scene.world.flashDisplayLink(linkPos); - scene.world.setDisplayBoardText(board, 1, TextComponent.EMPTY); + scene.world.setDisplayBoardText(board, 1, Components.immutableEmpty()); scene.idle(25); scene.overlay.showSelectionWithText(depot, 80) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java index 7e7bb5c1f..ae6bf1945 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java @@ -21,13 +21,13 @@ import com.simibubi.create.foundation.ponder.Selection; import com.simibubi.create.foundation.ponder.element.InputWindowElement; import com.simibubi.create.foundation.ponder.element.ParrotElement; import com.simibubi.create.foundation.ponder.element.WorldSectionElement; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Pointing; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -630,7 +630,7 @@ public class RedstoneScenes { .withItem(new ItemStack(Items.NAME_TAG)), 40); scene.idle(7); - Component component = new TextComponent("CREATE"); + Component component = Components.literal("CREATE"); for (int i = 0; i < 3; i++) { final int index = i; scene.world.modifyTileNBT(util.select.position(3 - i, 1, 3), NixieTubeTileEntity.class, nbt -> { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java index 2b1bb4682..afb234ff3 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/NavigatableSimiScreen.java @@ -23,7 +23,7 @@ import com.simibubi.create.foundation.utility.animation.LerpedFloat; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Mth; public abstract class NavigatableSimiScreen extends AbstractSimiScreen { @@ -96,7 +96,7 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen { ms.pushPose(); ms.translate(0, 0, 500); if (backTrack.isHoveredOrFocused()) { - TranslatableComponent translate = Lang.translateDirect(backTrackingLangKey()); + MutableComponent translate = Lang.translateDirect(backTrackingLangKey()); font.draw(ms, translate, 41 - font.width(translate) / 2, height - 16, Theme.i(Theme.Key.TEXT_DARKER)); if (Mth.equal(arrowAnimation.getValue(), arrowAnimation.getChaseTarget())) { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java index 17e337439..22fcd732d 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderIndexScreen.java @@ -14,6 +14,7 @@ import com.simibubi.create.foundation.gui.Theme; import com.simibubi.create.foundation.gui.UIRenderHelper; import com.simibubi.create.foundation.ponder.PonderChapter; import com.simibubi.create.foundation.ponder.PonderRegistry; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; @@ -104,7 +105,7 @@ public class PonderIndexScreen extends NavigatableSimiScreen { PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) .showing(new ItemStack(item)) .withCallback((x, y) -> { - if (!PonderRegistry.ALL.containsKey(item.getRegistryName())) + if (!PonderRegistry.ALL.containsKey(RegisteredObjects.getKeyOrThrow(item))) return; centerScalingOn(x, y); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java index c7bd9bc8b..ce6bbcc80 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagIndexScreen.java @@ -17,6 +17,7 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.ponder.PonderRegistry; import com.simibubi.create.foundation.ponder.PonderTag; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; @@ -24,7 +25,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; public class PonderTagIndexScreen extends NavigatableSimiScreen { @@ -214,7 +214,7 @@ public class PonderTagIndexScreen extends NavigatableSimiScreen { if (hoveredItem != null) { List list = TooltipHelper.cutStringTextComponent(hoveredItem.getDescription(), ChatFormatting.GRAY, ChatFormatting.GRAY); - list.add(0, new TextComponent(hoveredItem.getTitle())); + list.add(0, Components.literal(hoveredItem.getTitle())); renderComponentTooltip(ms, list, mouseX, mouseY); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java index 854026875..f91b6ecdc 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java @@ -18,6 +18,7 @@ import com.simibubi.create.foundation.ponder.PonderRegistry; import com.simibubi.create.foundation.ponder.PonderTag; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.renderer.Rect2i; @@ -83,13 +84,13 @@ public class PonderTagScreen extends NavigatableSimiScreen { PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) .showing(new ItemStack(i)); - if (PonderRegistry.ALL.containsKey(i.getRegistryName())) { + if (PonderRegistry.ALL.containsKey(RegisteredObjects.getKeyOrThrow(i))) { b.withCallback((mouseX, mouseY) -> { centerScalingOn(mouseX, mouseY); ScreenOpener.transitionTo(PonderUI.of(new ItemStack(i), tag)); }); } else { - if (i.getRegistryName() + if (RegisteredObjects.getKeyOrThrow(i) .getNamespace() .equals(Create.ID)) b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_CREATE)) @@ -104,9 +105,8 @@ public class PonderTagScreen extends NavigatableSimiScreen { } if (!tag.getMainItem().isEmpty()) { - ResourceLocation registryName = tag.getMainItem() - .getItem() - .getRegistryName(); + ResourceLocation registryName = RegisteredObjects.getKeyOrThrow(tag.getMainItem() + .getItem()); PonderButton b = new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 48, itemCenterY - 10) .showing(tag.getMainItem()); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java index 32554bf02..b976f571c 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java @@ -35,12 +35,14 @@ import com.simibubi.create.foundation.ponder.content.PonderIndex; import com.simibubi.create.foundation.ponder.element.TextWindowElement; import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.FontHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; import com.simibubi.create.foundation.utility.Pointing; +import com.simibubi.create.foundation.utility.RegisteredObjects; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; @@ -53,7 +55,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; -import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -117,13 +118,11 @@ public class PonderUI extends NavigatableSimiScreen { } public static PonderUI of(ItemStack item) { - return new PonderUI(PonderRegistry.compile(item.getItem() - .getRegistryName())); + return new PonderUI(PonderRegistry.compile(RegisteredObjects.getKeyOrThrow(item.getItem()))); } public static PonderUI of(ItemStack item, PonderTag tag) { - PonderUI ponderUI = new PonderUI(PonderRegistry.compile(item.getItem() - .getRegistryName())); + PonderUI ponderUI = new PonderUI(PonderRegistry.compile(RegisteredObjects.getKeyOrThrow(item.getItem()))); ponderUI.referredToByTag = tag; return ponderUI; } @@ -654,7 +653,7 @@ public class PonderUI extends NavigatableSimiScreen { if (hoveredBlockPos != null && PonderIndex.editingModeActive() && !userViewMode) { ms.translate(0, -15, 0); boolean copied = copiedBlockPos != null && hoveredBlockPos.equals(copiedBlockPos); - MutableComponent coords = new TextComponent( + MutableComponent coords = Components.literal( hoveredBlockPos.getX() + ", " + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ()) .withStyle(copied ? ChatFormatting.GREEN : ChatFormatting.GOLD); renderTooltip(ms, coords, 0, 0); diff --git a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java index 70bde02e9..7615afb36 100644 --- a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java @@ -15,6 +15,7 @@ import com.mojang.math.Vector4f; import com.simibubi.create.Create; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.RegisteredObjects; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; @@ -78,8 +79,7 @@ public class TileEntityRenderHelper { } catch (Exception e) { iterator.remove(); - String message = "BlockEntity " + tileEntity.getType() - .getRegistryName() + String message = "BlockEntity " + RegisteredObjects.getKeyOrThrow(tileEntity.getType()) .toString() + " could not be rendered virtually."; if (AllConfigs.CLIENT.explainRenderErrors.get()) Create.LOGGER.error(message, e); diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java index e50ad52c2..75d6367d2 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.render.SuperRenderTypeBuffer; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.outliner.ChasingAABBOutline; @@ -16,7 +17,6 @@ import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; @@ -25,8 +25,8 @@ import net.minecraft.world.phys.Vec3; public class ValueBox extends ChasingAABBOutline { protected Component label; - protected Component sublabel = TextComponent.EMPTY; - protected Component scrollTooltip = TextComponent.EMPTY; + protected Component sublabel = Components.immutableEmpty(); + protected Component scrollTooltip = Components.immutableEmpty(); protected Vec3 labelOffset = Vec3.ZERO; protected int passiveColor; @@ -106,11 +106,11 @@ public class ValueBox extends ChasingAABBOutline { ms.translate(labelOffset.x, labelOffset.y, labelOffset.z); renderHoveringText(ms, buffer, label); - if (!sublabel.toString().isEmpty()) { + if (!sublabel.getString().isEmpty()) { ms.translate(0, 10, 0); renderHoveringText(ms, buffer, sublabel); } - if (!scrollTooltip.getContents().isEmpty()) { + if (!scrollTooltip.getString().isEmpty()) { ms.translate(0, 10, 0); renderHoveringText(ms, buffer, scrollTooltip, 0x998899, 0x111111); } @@ -137,7 +137,7 @@ public class ValueBox extends ChasingAABBOutline { public void renderContents(PoseStack ms, MultiBufferSource buffer) { super.renderContents(ms, buffer); Font font = Minecraft.getInstance().font; - Component countString = new TextComponent(count == 0 ? "*" : count + ""); + Component countString = Components.literal(count == 0 ? "*" : count + ""); ms.translate(17.5f, -5f, 7f); boolean isFilter = stack.getItem() instanceof FilterItem; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java index d801e692d..8f69bfc62 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllSpecialTextures; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.client.Minecraft; @@ -13,7 +14,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; @@ -64,7 +64,7 @@ public class EdgeInteractionRenderer { AABB bb = EdgeInteractionHandler.getBB(pos, closestEdge); boolean hit = bb.contains(target.getLocation()); - ValueBox box = new ValueBox(TextComponent.EMPTY, bb.move(-pos.getX(), -pos.getY(), -pos.getZ()), pos); + ValueBox box = new ValueBox(Components.immutableEmpty(), bb.move(-pos.getX(), -pos.getY(), -pos.getZ()), pos); Vec3 textOffset = Vec3.ZERO; boolean positive = closestEdge.getAxisDirection() == AxisDirection.POSITIVE; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index 934204a36..d9fe1c193 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.ItemValueBox import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxRenderer; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Pair; @@ -23,7 +24,6 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; @@ -66,7 +66,7 @@ public class FilteringRenderer { boolean isFilterSlotted = filter.getItem() instanceof FilterItem; boolean showCount = behaviour.isCountVisible(); boolean fluids = behaviour.fluidFilter; - Component label = isFilterSlotted ? TextComponent.EMPTY + Component label = isFilterSlotted ? Components.immutableEmpty() : Lang.translateDirect(behaviour.recipeFilter ? "logistics.recipe_filter" : fluids ? "logistics.fluid_filter" : "logistics.filter"); boolean hit = behaviour.slotPositioning.testHit(state, target.getLocation() @@ -80,7 +80,7 @@ public class FilteringRenderer { box.offsetLabel(behaviour.textShift) .withColors(fluids ? 0x407088 : 0x7A6A2C, fluids ? 0x70adb5 : 0xB79D64) - .scrollTooltip(showCount && !isFilterSlotted ? new TextComponent("[").append(Lang.translateDirect("action.scroll")).append("]") : TextComponent.EMPTY) + .scrollTooltip(showCount && !isFilterSlotted ? Components.literal("[").append(Lang.translateDirect("action.scroll")).append("]") : Components.immutableEmpty()) .passive(!hit); CreateClient.OUTLINER.showValueBox(Pair.of("filter", pos), box.transform(behaviour.slotPositioning)) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java index ec7545742..79311f5b6 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java @@ -8,6 +8,7 @@ import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.IconValueBox; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.TextValueBox; +import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Lang; import net.minecraft.client.Minecraft; @@ -15,7 +16,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; @@ -65,12 +65,12 @@ public class ScrollValueRenderer { if (behaviour instanceof ScrollOptionBehaviour) { box = new IconValueBox(label, ((ScrollOptionBehaviour) behaviour).getIconForSelected(), bb, pos); } else { - box = new TextValueBox(label, bb, pos, new TextComponent(behaviour.formatValue())); + box = new TextValueBox(label, bb, pos, Components.literal(behaviour.formatValue())); if (behaviour.unit != null) - box.subLabel(new TextComponent("(").append(behaviour.unit.apply(behaviour.scrollableValue)).append(")")); + box.subLabel(Components.literal("(").append(behaviour.unit.apply(behaviour.scrollableValue)).append(")")); } - box.scrollTooltip(new TextComponent("[").append(Lang.translateDirect("action.scroll")).append("]")); + box.scrollTooltip(Components.literal("[").append(Lang.translateDirect("action.scroll")).append("]")); box.offsetLabel(behaviour.textShift.add(20, -10, 0)) .withColors(0x5A5D5A, 0xB5B7B6) .passive(!highlight); diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index 4817470f3..f2cb5d081 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -68,8 +68,7 @@ public class BlockHelper { if (blockState.hasProperty(BlockStateProperties.STAGE)) return blockState.setValue(BlockStateProperties.STAGE, 0); if (blockState.is(BlockTags.CAULDRONS)) - return Blocks.CAULDRON.delegate.get() - .defaultBlockState(); + return Blocks.CAULDRON.defaultBlockState(); if (blockState.hasProperty(BlockStateProperties.LEVEL_COMPOSTER)) return blockState.setValue(BlockStateProperties.LEVEL_COMPOSTER, 0); if (blockState.hasProperty(BlockStateProperties.EXTENDED)) diff --git a/src/main/java/com/simibubi/create/foundation/utility/Components.java b/src/main/java/com/simibubi/create/foundation/utility/Components.java new file mode 100644 index 000000000..1a892adcc --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/Components.java @@ -0,0 +1,34 @@ +package com.simibubi.create.foundation.utility; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.KeybindComponent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; + +public final class Components { + public static Component immutableEmpty() { + return TextComponent.EMPTY; + } + + /** Use {@link #immutableEmpty()} when possible to prevent creating an extra object. */ + public static MutableComponent empty() { + return TextComponent.EMPTY.copy(); + } + + public static MutableComponent literal(String str) { + return new TextComponent(str); + } + + public static MutableComponent translatable(String key) { + return new TranslatableComponent(key); + } + + public static MutableComponent translatable(String key, Object... args) { + return new TranslatableComponent(key, args); + } + + public static MutableComponent keybind(String name) { + return new KeybindComponent(name); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java b/src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java new file mode 100644 index 000000000..6e1e92d5e --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/CreateRegistry.java @@ -0,0 +1,108 @@ +package com.simibubi.create.foundation.utility; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Map; + +import org.jetbrains.annotations.Nullable; + +import com.simibubi.create.Create; + +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.IForgeRegistryEntry; + +public class CreateRegistry, V> { + private static final List> ALL = new ArrayList<>(); + + protected final IForgeRegistry objectRegistry; + protected final Map locationMap = new HashMap<>(); + protected final Map objectMap = new IdentityHashMap<>(); + protected boolean unwrapped = false; + + public CreateRegistry(IForgeRegistry objectRegistry) { + this.objectRegistry = objectRegistry; + ALL.add(this); + } + + public void register(ResourceLocation location, V value) { + if (!unwrapped) { + locationMap.put(location, value); + } else { + K object = objectRegistry.getValue(location); + if (object != null) { + objectMap.put(object, value); + } else { + Create.LOGGER.warn("Could not get object for location '" + location + "' in CreateRegistry after unwrapping!"); + } + } + } + + public void register(K object, V value) { + if (unwrapped) { + objectMap.put(object, value); + } else { + ResourceLocation location = objectRegistry.getKey(object); + if (location != null) { + locationMap.put(location, value); + } else { + Create.LOGGER.warn("Could not get location of object '" + object + "' in CreateRegistry before unwrapping!"); + } + } + } + + @Nullable + public V get(ResourceLocation location) { + if (!unwrapped) { + return locationMap.get(location); + } else { + K object = objectRegistry.getValue(location); + if (object != null) { + return objectMap.get(object); + } else { + Create.LOGGER.warn("Could not get object for location '" + location + "' in CreateRegistry after unwrapping!"); + return null; + } + } + } + + @Nullable + public V get(K object) { + if (unwrapped) { + return objectMap.get(object); + } else { + ResourceLocation location = objectRegistry.getKey(object); + if (location != null) { + return locationMap.get(location); + } else { + Create.LOGGER.warn("Could not get location of object '" + object + "' in CreateRegistry before unwrapping!"); + return null; + } + } + } + + public boolean isUnwrapped() { + return unwrapped; + } + + protected void unwrap() { + for (Map.Entry entry : locationMap.entrySet()) { + ResourceLocation location = entry.getKey(); + K object = objectRegistry.getValue(location); + if (object != null) { + objectMap.put(object, entry.getValue()); + } else { + Create.LOGGER.warn("Could not get object for location '" + location + "' in CreateRegistry during unwrapping!"); + } + } + unwrapped = true; + } + + public static void unwrapAll() { + for (CreateRegistry registry : ALL) { + registry.unwrap(); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Debug.java b/src/main/java/com/simibubi/create/foundation/utility/Debug.java index 74e2f881c..d37522de6 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Debug.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Debug.java @@ -6,7 +6,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.util.thread.EffectiveSide; @@ -18,20 +17,20 @@ public class Debug { @Deprecated public static void debugChat(String message) { if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), false); + Minecraft.getInstance().player.displayClientMessage(Components.literal(message), false); } @Deprecated public static void debugChatAndShowStack(String message, int depth) { if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.displayClientMessage(new TextComponent(message).append("@") + Minecraft.getInstance().player.displayClientMessage(Components.literal(message).append("@") .append(debugStack(depth)), false); } @Deprecated public static void debugMessage(String message) { if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.displayClientMessage(new TextComponent(message), true); + Minecraft.getInstance().player.displayClientMessage(Components.literal(message), true); } @Deprecated @@ -49,18 +48,18 @@ public class Debug { public static Component debugStack(int depth) { StackTraceElement[] stackTraceElements = Thread.currentThread() .getStackTrace(); - MutableComponent text = new TextComponent("[") - .append(new TextComponent(getLogicalSide()).withStyle(ChatFormatting.GOLD)) + MutableComponent text = Components.literal("[") + .append(Components.literal(getLogicalSide()).withStyle(ChatFormatting.GOLD)) .append("] "); for (int i = 1; i < depth + 2 && i < stackTraceElements.length; i++) { StackTraceElement e = stackTraceElements[i]; if (e.getClassName() .equals(Debug.class.getName())) continue; - text.append(new TextComponent(e.getMethodName()).withStyle(ChatFormatting.YELLOW)) + text.append(Components.literal(e.getMethodName()).withStyle(ChatFormatting.YELLOW)) .append(", "); } - return text.append(new TextComponent(" ...").withStyle(ChatFormatting.GRAY)); + return text.append(Components.literal(" ...").withStyle(ChatFormatting.GRAY)); } @Deprecated diff --git a/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java b/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java index 25d982d7a..aa7edb495 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java +++ b/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java @@ -13,7 +13,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec2; @@ -47,7 +46,7 @@ public class DynamicComponent { } public MutableComponent get() { - return parsedCustomText == null ? TextComponent.EMPTY.copy() : parsedCustomText.copy(); + return parsedCustomText == null ? Components.empty() : parsedCustomText.copy(); } public void read(Level level, BlockPos pos, CompoundTag nbt) { @@ -90,7 +89,7 @@ public class DynamicComponent { public static CommandSourceStack getCommandSource(ServerLevel level, BlockPos pos) { return new CommandSourceStack(CommandSource.NULL, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, Create.ID, - new TextComponent(Create.ID), level.getServer(), null); + Components.literal(Create.ID), level.getServer(), null); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java index 5e9ac98dc..6ff90da6b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java @@ -1,7 +1,6 @@ package com.simibubi.create.foundation.utility; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; public class FluidFormatter { @@ -13,13 +12,13 @@ public class FluidFormatter { public static Couple asComponents(long amount, boolean shorten) { if (shorten && amount >= 1000) { return Couple.create( - new TextComponent(String.format("%.1f" , amount / 1000d)), + Components.literal(String.format("%.1f" , amount / 1000d)), Lang.translateDirect("generic.unit.buckets") ); } return Couple.create( - new TextComponent(String.valueOf(amount)), + Components.literal(String.valueOf(amount)), Lang.translateDirect("generic.unit.millibuckets") ); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/Lang.java b/src/main/java/com/simibubi/create/foundation/utility/Lang.java index 3e062b8bb..51dde4d44 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Lang.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Lang.java @@ -7,8 +7,7 @@ import java.util.Locale; import com.simibubi.create.Create; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fluids.FluidStack; @@ -22,8 +21,8 @@ public class Lang { * @param args * @return */ - public static TranslatableComponent translateDirect(String key, Object... args) { - return new TranslatableComponent(Create.ID + "." + key, resolveBuilders(args)); + public static MutableComponent translateDirect(String key, Object... args) { + return Components.translatable(Create.ID + "." + key, resolveBuilders(args)); } public static String asId(String name) { @@ -42,10 +41,6 @@ public class Lang { return result; } - public static Component empty() { - return TextComponent.EMPTY; - } - // public static LangBuilder builder() { diff --git a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java index 5440c102a..564b6131f 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/utility/LangBuilder.java @@ -6,8 +6,6 @@ import joptsimple.internal.Strings; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Player; public class LangBuilder { @@ -37,7 +35,7 @@ public class LangBuilder { * @return */ public LangBuilder translate(String langKey, Object... args) { - return add(new TranslatableComponent(namespace + "." + langKey, Lang.resolveBuilders(args))); + return add(Components.translatable(namespace + "." + langKey, Lang.resolveBuilders(args))); } /** @@ -47,7 +45,7 @@ public class LangBuilder { * @return */ public LangBuilder text(String literalText) { - return add(new TextComponent(literalText)); + return add(Components.literal(literalText)); } /** @@ -58,7 +56,7 @@ public class LangBuilder { * @return */ public LangBuilder text(ChatFormatting format, String literalText) { - return add(new TextComponent(literalText).withStyle(format)); + return add(Components.literal(literalText).withStyle(format)); } /** @@ -69,7 +67,7 @@ public class LangBuilder { * @return */ public LangBuilder text(int color, String literalText) { - return add(new TextComponent(literalText).withStyle(s -> s.withColor(color))); + return add(Components.literal(literalText).withStyle(s -> s.withColor(color))); } /** diff --git a/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java b/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java index bfd0fd91f..25c4338d8 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ModelSwapper.java @@ -78,7 +78,7 @@ public class ModelSwapper { public static List getAllBlockStateModelLocations(Block block) { List models = new ArrayList<>(); - ResourceLocation blockRl = block.getRegistryName(); + ResourceLocation blockRl = RegisteredObjects.getKeyOrThrow(block); block.getStateDefinition() .getPossibleStates() .forEach(state -> { @@ -88,7 +88,7 @@ public class ModelSwapper { } public static ModelResourceLocation getItemModelLocation(Item item) { - return new ModelResourceLocation(item.getRegistryName(), "inventory"); + return new ModelResourceLocation(RegisteredObjects.getKeyOrThrow(item), "inventory"); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java b/src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java new file mode 100644 index 000000000..1fde9bb2d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/RegisteredObjects.java @@ -0,0 +1,68 @@ +package com.simibubi.create.foundation.utility; + +import org.jetbrains.annotations.NotNull; + +import net.minecraft.core.particles.ParticleType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.IForgeRegistryEntry; + +public final class RegisteredObjects { + // registry argument for easier porting to 1.19 + @NotNull + public static > ResourceLocation getKeyOrThrow(IForgeRegistry registry, V value) { + ResourceLocation key = value.getRegistryName(); + if (key == null) { + throw new IllegalArgumentException("Could not get key for value " + value + "!"); + } + return key; + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Block value) { + return getKeyOrThrow(ForgeRegistries.BLOCKS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Item value) { + return getKeyOrThrow(ForgeRegistries.ITEMS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Fluid value) { + return getKeyOrThrow(ForgeRegistries.FLUIDS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(EntityType value) { + return getKeyOrThrow(ForgeRegistries.ENTITIES, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(BlockEntityType value) { + return getKeyOrThrow(ForgeRegistries.BLOCK_ENTITIES, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(Potion value) { + return getKeyOrThrow(ForgeRegistries.POTIONS, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(ParticleType value) { + return getKeyOrThrow(ForgeRegistries.PARTICLE_TYPES, value); + } + + @NotNull + public static ResourceLocation getKeyOrThrow(RecipeSerializer value) { + return getKeyOrThrow(ForgeRegistries.RECIPE_SERIALIZERS, value); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java index ff66d8ffc..a7a74c928 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java @@ -96,8 +96,8 @@ public class RemapHelper { reMap.put("adjustable_pulse_repeater", PULSE_REPEATER.getId()); reMap.put("adjustable_repeater", PULSE_REPEATER.getId()); - reMap.put("copper_block", Blocks.COPPER_BLOCK.getRegistryName()); - reMap.put("copper_ore", Blocks.COPPER_ORE.getRegistryName()); + reMap.put("copper_block", RegisteredObjects.getKeyOrThrow(Blocks.COPPER_BLOCK)); + reMap.put("copper_ore", RegisteredObjects.getKeyOrThrow(Blocks.COPPER_ORE)); reMap.put("acacia_glass", ACACIA_WINDOW.getId()); reMap.put("acacia_glass_pane", ACACIA_WINDOW_PANE.getId()); From 9fbb71e4e9d9f70e2256a73b45482208b01053cf Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Wed, 3 Aug 2022 22:36:14 -0700 Subject: [PATCH 05/32] Crash and leak fix - Fix crash when invoking ContraptionMovementSetting#get - Fix memory leak in WorldAttached by copying Flywheel's updated version - Fix stockpile switches not preserving settings after being printed --- .../redstone/StockpileSwitchTileEntity.java | 16 +++- .../config/ContraptionMovementSetting.java | 5 +- .../foundation/utility/WorldAttached.java | 75 ++++++++++++++++--- 3 files changed, 83 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java index 150aa9494..6a467744d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/StockpileSwitchTileEntity.java @@ -59,17 +59,27 @@ public class StockpileSwitchTileEntity extends SmartTileEntity { super.read(compound, clientPacket); } - @Override - public void write(CompoundTag compound, boolean clientPacket) { + protected void writeCommon(CompoundTag compound) { compound.putFloat("OnAbove", onWhenAbove); compound.putFloat("OffBelow", offWhenBelow); + compound.putBoolean("Inverted", inverted); + } + + @Override + public void write(CompoundTag compound, boolean clientPacket) { + writeCommon(compound); compound.putFloat("Current", currentLevel); compound.putBoolean("Powered", redstoneState); - compound.putBoolean("Inverted", inverted); compound.putBoolean("PoweredAfterDelay", poweredAfterDelay); super.write(compound, clientPacket); } + @Override + public void writeSafe(CompoundTag compound) { + writeCommon(compound); + super.writeSafe(compound); + } + public float getStockLevel() { return currentLevel; } diff --git a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java index c6d012ce0..f197203bd 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java +++ b/src/main/java/com/simibubi/create/foundation/config/ContraptionMovementSetting.java @@ -31,7 +31,10 @@ public enum ContraptionMovementSetting { public static ContraptionMovementSetting get(Block block) { if (block instanceof IMovementSettingProvider provider) return provider.getContraptionMovementSetting(); - return SETTING_SUPPLIERS.get(block).get(); + Supplier supplier = SETTING_SUPPLIERS.get(block); + if (supplier == null) + return null; + return supplier.get(); } public static boolean allAre(Collection blocks, ContraptionMovementSetting are) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java b/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java index 4986354f5..236d38d16 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java +++ b/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java @@ -1,36 +1,50 @@ package com.simibubi.create.foundation.utility; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; import javax.annotation.Nonnull; import net.minecraft.world.level.LevelAccessor; -import net.minecraftforge.common.util.NonNullFunction; public class WorldAttached { - static List> allMaps = new ArrayList<>(); - Map attached; - private final NonNullFunction factory; + // weak references to prevent leaking hashmaps when a WorldAttached is GC'd during runtime + static List>> allMaps = new ArrayList<>(); + private final Map attached; + private final Function factory; - public WorldAttached(NonNullFunction factory) { + public WorldAttached(Function factory) { this.factory = factory; attached = new HashMap<>(); - allMaps.add(attached); + allMaps.add(new WeakReference<>(attached)); } public static void invalidateWorld(LevelAccessor world) { - allMaps.forEach(m -> m.remove(world)); + var i = allMaps.iterator(); + while (i.hasNext()) { + Map map = i.next() + .get(); + if (map == null) { + // If the map has been GC'd, remove the weak reference + i.remove(); + } else { + // Prevent leaks + map.remove(world); + } + } } @Nonnull public T get(LevelAccessor world) { T t = attached.get(world); - if (t != null) - return t; + if (t != null) return t; T entry = factory.apply(world); put(world, entry); return entry; @@ -40,4 +54,47 @@ public class WorldAttached { attached.put(world, entry); } + /** + * Replaces the entry with a new one from the factory and returns the new entry. + */ + @Nonnull + public T replace(LevelAccessor world) { + attached.remove(world); + + return get(world); + } + + /** + * Replaces the entry with a new one from the factory and returns the new entry. + */ + @Nonnull + public T replace(LevelAccessor world, Consumer finalizer) { + T remove = attached.remove(world); + + if (remove != null) + finalizer.accept(remove); + + return get(world); + } + + /** + * Deletes all entries after calling a function on them. + * + * @param finalizer Do something with all of the world-value pairs + */ + public void empty(BiConsumer finalizer) { + attached.forEach(finalizer); + attached.clear(); + } + + /** + * Deletes all entries after calling a function on them. + * + * @param finalizer Do something with all of the values + */ + public void empty(Consumer finalizer) { + attached.values() + .forEach(finalizer); + attached.clear(); + } } From 3536394bdd611b7eae693de0f562884c95d07225 Mon Sep 17 00:00:00 2001 From: Grimmauld Date: Fri, 5 Aug 2022 12:13:55 +0200 Subject: [PATCH 06/32] PonderUI addon accessibility - PonderUI constructor is now protected to allow addons to make subclasses - renderWidgets now calls protected sub-methods for different parts of overlay rendering --- .../create/foundation/ponder/ui/PonderUI.java | 191 +++++++++--------- 1 file changed, 100 insertions(+), 91 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java index b976f571c..4285a8965 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderUI.java @@ -133,7 +133,7 @@ public class PonderUI extends NavigatableSimiScreen { return ui; } - PonderUI(List scenes) { + protected PonderUI(List scenes) { ResourceLocation component = scenes.get(0) .getComponent(); if (ForgeRegistries.ITEMS.containsKey(component)) @@ -567,65 +567,8 @@ public class PonderUI extends NavigatableSimiScreen { noWidgetsHovered &= !child.isMouseOver(mouseX, mouseY); int tooltipColor = Theme.i(Theme.Key.TEXT_DARKER); - { - // Chapter title - ms.pushPose(); - ms.translate(0, 0, 400); - int x = 31 + 20 + 8; - int y = 31; - - String title = activeScene.getTitle(); - int wordWrappedHeight = font.wordWrapHeight(title, left.x - 51); - - int streakHeight = 35 - 9 + wordWrappedHeight; - UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (150 * fade)); - UIRenderHelper.streak(ms, 180, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (30 * fade)); - new BoxElement().withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) - .at(21, 21, 100) - .withBounds(30, 30) - .render(ms); - - GuiGameElement.of(stack) - .scale(2) - .at(x - 39, y - 11) - .render(ms); - - font.draw(ms, Lang.translateDirect(PONDERING), x, y - 6, tooltipColor); - y += 8; - x += 0; - ms.translate(x, y, 0); - ms.mulPose(Vector3f.XN.rotationDegrees(indexDiff * -75)); - ms.translate(0, 0, 5); - FontHelper.drawSplitString(ms, font, title, 0, 0, left.x - 51, Theme.c(Theme.Key.TEXT) - .scaleAlpha(1 - indexDiff) - .getRGB()); - ms.popPose(); - - if (chapter != null) { - ms.pushPose(); - - ms.translate(chap.x - 4 - 4, chap.y, 0); - UIRenderHelper.streak(ms, 180, 4, 10, 26, (int) (150 * fade)); - - drawRightAlignedString(font, ms, Lang.translateDirect(IN_CHAPTER) - .getString(), 0, 0, tooltipColor); - drawRightAlignedString(font, ms, chapter.getTitle(), 0, 12, Theme.i(Theme.Key.TEXT)); - - ms.popPose(); - } - - Color c1 = Theme.c(Theme.Key.PONDER_BACK_ARROW) - .setAlpha(0x40); - Color c2 = Theme.c(Theme.Key.PONDER_BACK_ARROW) - .setAlpha(0x20); - Color c3 = Theme.c(Theme.Key.PONDER_BACK_ARROW) - .setAlpha(0x10); - UIRenderHelper.breadcrumbArrow(ms, width / 2 - 20, height - 51, 0, 20, 20, 5, c1, c2); - UIRenderHelper.breadcrumbArrow(ms, width / 2 + 20, height - 51, 0, -20, 20, -5, c1, c2); - UIRenderHelper.breadcrumbArrow(ms, width / 2 - 90, height - 51, 0, 70, 20, 5, c1, c3); - UIRenderHelper.breadcrumbArrow(ms, width / 2 + 90, height - 51, 0, -70, 20, -5, c1, c3); - } + renderChapterTitle(ms, fade, indexDiff, activeScene, tooltipColor); + renderNavigationMenu(ms); if (identifyMode) { if (noWidgetsHovered && mouseY < height - 80) { @@ -637,17 +580,8 @@ public class PonderUI extends NavigatableSimiScreen { ((MutableComponent) minecraft.options.keyDrop.getTranslatedKeyMessage()) .withStyle(ChatFormatting.WHITE)) .withStyle(ChatFormatting.GRAY); - - // renderOrderedTooltip(ms, textRenderer.wrapLines(text, width / 3), 0, 0); renderComponentTooltip(ms, font.getSplitter() .splitLines(text, width / 3, Style.EMPTY), 0, 0, font); - /* - * String tooltip = Lang .createTranslationTextComponent(IDENTIFY_MODE, - * client.gameSettings.keyBindDrop.getBoundKeyLocalizedText().applyTextStyle( - * TextFormatting.WHITE)) .applyTextStyle(TextFormatting.GRAY) - * .getFormattedText(); renderTooltip(font.listFormattedStringToWidth(tooltip, - * width / 3), 0, 0); - */ } else renderTooltip(ms, hoveredTooltipItem, 0, 0); if (hoveredBlockPos != null && PonderIndex.editingModeActive() && !userViewMode) { @@ -677,30 +611,12 @@ public class PonderUI extends NavigatableSimiScreen { else slowMode.dim(); - { - // Scene overlay - float scenePT = skipCooling > 0 ? 0 : partialTicks; - ms.pushPose(); - ms.translate(0, 0, 100); - renderOverlay(ms, index, scenePT); - if (indexDiff > 1 / 512f) - renderOverlay(ms, lazyIndexValue < index ? index - 1 : index + 1, scenePT); - ms.popPose(); - } + renderSceneOverlay(ms, partialTicks, lazyIndexValue, indexDiff); boolean finished = activeScene.isFinished(); - // Next up: - if (finished && nextScene != null && nextUp.getValue() > 1 / 16f && !nextScene.getId() - .equals(Create.asResource("creative_motor_mojang"))) { - ms.pushPose(); - ms.translate(right.x + 10, right.y - 6 + nextUp.getValue(partialTicks) * 5, 400); - int boxWidth = (Math.max(font.width(nextScene.getTitle()), font.width(Lang.translateDirect(NEXT_UP))) + 5); - renderSpeechBox(ms, 0, 0, boxWidth, 20, right.isHoveredOrFocused(), Pointing.DOWN, false); - ms.translate(0, -29, 100); - drawCenteredString(ms, font, Lang.translateDirect(NEXT_UP), 0, 0, Theme.i(Theme.Key.TEXT_DARKER)); - drawCenteredString(ms, font, nextScene.getTitle(), 0, 10, Theme.i(Theme.Key.TEXT)); - ms.popPose(); + if (finished) { + jumpToNextScene(ms, partialTicks, nextScene); } // Widgets @@ -725,6 +641,13 @@ public class PonderUI extends NavigatableSimiScreen { nextUp.updateChaseTarget(0); } + renderPonderTags(ms, mouseX, mouseY, partialTicks, fade, activeScene); + + renderHoverTooltips(ms, tooltipColor); + RenderSystem.enableDepthTest(); + } + + protected void renderPonderTags(PoseStack ms, int mouseX, int mouseY, float partialTicks, float fade, PonderScene activeScene) { // Tags List sceneTags = activeScene.getTags(); boolean highlightAll = sceneTags.contains(PonderTag.Highlight.ALL); @@ -765,7 +688,34 @@ public class PonderUI extends NavigatableSimiScreen { ms.popPose(); }); + } + protected void renderSceneOverlay(PoseStack ms, float partialTicks, float lazyIndexValue, float indexDiff) { + // Scene overlay + float scenePT = skipCooling > 0 ? 0 : partialTicks; + ms.pushPose(); + ms.translate(0, 0, 100); + renderOverlay(ms, index, scenePT); + if (indexDiff > 1 / 512f) + renderOverlay(ms, lazyIndexValue < index ? index - 1 : index + 1, scenePT); + ms.popPose(); + } + + protected void jumpToNextScene(PoseStack ms, float partialTicks, PonderScene nextScene) { + if (nextScene != null && nextUp.getValue() > 1 / 16f && !nextScene.getId() + .equals(Create.asResource("creative_motor_mojang"))) { + ms.pushPose(); + ms.translate(right.x + 10, right.y - 6 + nextUp.getValue(partialTicks) * 5, 400); + int boxWidth = (Math.max(font.width(nextScene.getTitle()), font.width(Lang.translateDirect(NEXT_UP))) + 5); + renderSpeechBox(ms, 0, 0, boxWidth, 20, right.isHoveredOrFocused(), Pointing.DOWN, false); + ms.translate(0, -29, 100); + drawCenteredString(ms, font, Lang.translateDirect(NEXT_UP), 0, 0, Theme.i(Theme.Key.TEXT_DARKER)); + drawCenteredString(ms, font, nextScene.getTitle(), 0, 10, Theme.i(Theme.Key.TEXT)); + ms.popPose(); + } + } + + protected void renderHoverTooltips(PoseStack ms, int tooltipColor) { ms.pushPose(); ms.translate(0, 0, 500); int tooltipY = height - 16; @@ -784,8 +734,67 @@ public class PonderUI extends NavigatableSimiScreen { if (PonderIndex.editingModeActive() && userMode.isHoveredOrFocused()) drawCenteredString(ms, font, "Editor View", userMode.x + 10, tooltipY, tooltipColor); ms.popPose(); + } - RenderSystem.enableDepthTest(); + protected void renderChapterTitle(PoseStack ms, float fade, float indexDiff, PonderScene activeScene, int tooltipColor) { + // Chapter title + ms.pushPose(); + ms.translate(0, 0, 400); + int x = 31 + 20 + 8; + int y = 31; + + String title = activeScene.getTitle(); + int wordWrappedHeight = font.wordWrapHeight(title, left.x - 51); + + int streakHeight = 35 - 9 + wordWrappedHeight; + UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (150 * fade)); + UIRenderHelper.streak(ms, 180, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (30 * fade)); + new BoxElement().withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) + .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) + .at(21, 21, 100) + .withBounds(30, 30) + .render(ms); + + GuiGameElement.of(stack) + .scale(2) + .at(x - 39f, y - 11f) + .render(ms); + + font.draw(ms, Lang.translateDirect(PONDERING), x, y - 6, tooltipColor); + y += 8; + x += 0; + ms.translate(x, y, 0); + ms.mulPose(Vector3f.XN.rotationDegrees(indexDiff * -75)); + ms.translate(0, 0, 5); + FontHelper.drawSplitString(ms, font, title, 0, 0, left.x - 51, Theme.c(Theme.Key.TEXT) + .scaleAlpha(1 - indexDiff) + .getRGB()); + ms.popPose(); + if (chapter != null) { + ms.pushPose(); + + ms.translate(chap.x - 8, chap.y, 0); + UIRenderHelper.streak(ms, 180, 4, 10, 26, (int) (150 * fade)); + + drawRightAlignedString(font, ms, Lang.translateDirect(IN_CHAPTER) + .getString(), 0, 0, tooltipColor); + drawRightAlignedString(font, ms, chapter.getTitle(), 0, 12, Theme.i(Theme.Key.TEXT)); + + ms.popPose(); + } + } + + protected void renderNavigationMenu(PoseStack ms) { + Color c1 = Theme.c(Theme.Key.PONDER_BACK_ARROW) + .setAlpha(0x40); + Color c2 = Theme.c(Theme.Key.PONDER_BACK_ARROW) + .setAlpha(0x20); + Color c3 = Theme.c(Theme.Key.PONDER_BACK_ARROW) + .setAlpha(0x10); + UIRenderHelper.breadcrumbArrow(ms, width / 2 - 20, height - 51, 0, 20, 20, 5, c1, c2); + UIRenderHelper.breadcrumbArrow(ms, width / 2 + 20, height - 51, 0, -20, 20, -5, c1, c2); + UIRenderHelper.breadcrumbArrow(ms, width / 2 - 90, height - 51, 0, 70, 20, 5, c1, c3); + UIRenderHelper.breadcrumbArrow(ms, width / 2 + 90, height - 51, 0, -70, 20, -5, c1, c3); } private void renderOverlay(PoseStack ms, int i, float partialTicks) { From 42ffe443acee13d0e5a19e2f7fd44a66b995253a Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Fri, 5 Aug 2022 11:39:34 -0700 Subject: [PATCH 07/32] Defer registration, datagen worldgen - Use DeferredRegister/RegistryObject where possible - Refactor worldgen code to be cleaner and support datagen - Fix zinc ore only generating on chunk corners - Remove fan_heaters block tag --- src/generated/resources/.cache/cache | 3 +- .../data/create/tags/blocks/fan_heaters.json | 11 - .../tags/blocks/passive_boiler_heaters.json | 7 +- .../java/com/simibubi/create/AllBlocks.java | 4 +- .../create/AllEntityDataSerializers.java | 15 +- .../com/simibubi/create/AllParticleTypes.java | 56 ++--- .../com/simibubi/create/AllRecipeTypes.java | 101 ++++---- .../com/simibubi/create/AllSoundEvents.java | 108 ++++---- .../create/AllStructureProcessorTypes.java | 19 ++ .../java/com/simibubi/create/AllTags.java | 21 +- src/main/java/com/simibubi/create/Create.java | 62 ++--- .../api/behaviour/BlockSpoutingBehaviour.java | 2 +- .../processing/BasinTileEntity.java | 2 +- .../curiosities/armor/AllArmorMaterials.java | 8 +- .../schematics/SchematicProcessor.java | 13 +- .../simibubi/create/events/CommonEvents.java | 4 +- .../create/foundation/config/CWorldGen.java | 14 +- .../create/foundation/config/ConfigBase.java | 4 + .../foundation/data/DynamicDataProvider.java | 93 +++++++ .../foundation/worldgen/AllFeatures.java | 20 ++ .../foundation/worldgen/AllLayerPatterns.java | 16 +- .../worldgen/AllOreFeatureConfigEntries.java | 134 ++++++++++ .../worldgen/AllPlacementModifiers.java | 19 ++ .../foundation/worldgen/AllWorldFeatures.java | 116 --------- ...e.java => BaseConfigDrivenOreFeature.java} | 13 +- ...seConfigDrivenOreFeatureConfiguration.java | 25 ++ .../foundation/worldgen/BiomeFilter.java | 10 - .../worldgen/BuiltinRegistration.java | 36 +++ .../worldgen/ConfigDrivenDecorator.java | 67 ----- .../worldgen/ConfigDrivenFeatureEntry.java | 118 --------- ...gDrivenLayeredOreFeatureConfiguration.java | 33 +++ .../ConfigDrivenOreConfiguration.java | 67 ----- .../ConfigDrivenOreFeatureConfiguration.java | 35 +++ .../worldgen/ConfigDrivenPlacement.java | 79 ++++++ .../foundation/worldgen/LayerPattern.java | 114 +++++---- .../worldgen/LayeredOreFeature.java | 25 +- .../worldgen/OreFeatureConfigEntry.java | 233 ++++++++++++++++++ .../worldgen/StandardOreFeature.java | 168 +++++++++++++ .../worldgen/VanillaStyleOreFeature.java | 176 ------------- 39 files changed, 1204 insertions(+), 847 deletions(-) delete mode 100644 src/generated/resources/data/create/tags/blocks/fan_heaters.json create mode 100644 src/main/java/com/simibubi/create/AllStructureProcessorTypes.java create mode 100644 src/main/java/com/simibubi/create/foundation/data/DynamicDataProvider.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/AllFeatures.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/AllPlacementModifiers.java delete mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java rename src/main/java/com/simibubi/create/foundation/worldgen/{OreFeatureBase.java => BaseConfigDrivenOreFeature.java} (65%) create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeatureConfiguration.java delete mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/BiomeFilter.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java delete mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java delete mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenLayeredOreFeatureConfiguration.java delete mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreConfiguration.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfiguration.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenPlacement.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java create mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/StandardOreFeature.java delete mode 100644 src/main/java/com/simibubi/create/foundation/worldgen/VanillaStyleOreFeature.java diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 751345e2f..306a249ea 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -5628,11 +5628,10 @@ ac265a674626e0e832330086fd18fe0be37fc327 data/create/recipes/weathered_copper_ti 5942a571f79c40524bbf408775cf91de4715f2b6 data/create/recipes/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json 2d549ea56fb226c0e31e66c0391996093f8bece9 data/create/tags/blocks/brittle.json d99d5c67bdffff60789a19bd51a5c5267c75e0a4 data/create/tags/blocks/casing.json -418c6da531d6206e3cbe4049dce3db23c4270bed data/create/tags/blocks/fan_heaters.json 443f75adbf3d2f6fb0aad4b344372669470065b8 data/create/tags/blocks/fan_transparent.json 6e5d3b2123fbb00e7f439c091623619502551bca data/create/tags/blocks/non_movable.json 10781e8cfcbb3486327aace3aa00e437fb44b331 data/create/tags/blocks/ore_override_stone.json -197ed7ee3b284045c005011d28c38ac5b2e44d8c data/create/tags/blocks/passive_boiler_heaters.json +418c6da531d6206e3cbe4049dce3db23c4270bed data/create/tags/blocks/passive_boiler_heaters.json 74f4ba5f6f61c30e27947c6fb4557e888d018285 data/create/tags/blocks/safe_nbt.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json d063e12c9ef75f39518c6d129ea35d833464d547 data/create/tags/blocks/toolboxes.json diff --git a/src/generated/resources/data/create/tags/blocks/fan_heaters.json b/src/generated/resources/data/create/tags/blocks/fan_heaters.json deleted file mode 100644 index dc4ef4afb..000000000 --- a/src/generated/resources/data/create/tags/blocks/fan_heaters.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "create:blaze_burner", - "create:lit_blaze_burner", - "#minecraft:fire", - "#minecraft:campfires", - "minecraft:magma_block", - "minecraft:lava" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/passive_boiler_heaters.json b/src/generated/resources/data/create/tags/blocks/passive_boiler_heaters.json index 509d23e72..dc4ef4afb 100644 --- a/src/generated/resources/data/create/tags/blocks/passive_boiler_heaters.json +++ b/src/generated/resources/data/create/tags/blocks/passive_boiler_heaters.json @@ -1,6 +1,11 @@ { "replace": false, "values": [ - "#create:fan_heaters" + "create:blaze_burner", + "create:lit_blaze_burner", + "#minecraft:fire", + "#minecraft:campfires", + "minecraft:magma_block", + "minecraft:lava" ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index b4b1c0c4b..1ebce4f34 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -652,7 +652,7 @@ public class AllBlocks { .properties(p -> p.lightLevel(BlazeBurnerBlock::getLight)) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) - .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) + .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag) .loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable())) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour())) @@ -669,7 +669,7 @@ public class AllBlocks { .properties(p -> p.lightLevel(LitBlazeBurnerBlock::getLight)) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) - .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) + .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag) .loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get())) .blockstate((c, p) -> p.getVariantBuilder(c.get()) .forAllStates(state -> ConfiguredModel.builder() diff --git a/src/main/java/com/simibubi/create/AllEntityDataSerializers.java b/src/main/java/com/simibubi/create/AllEntityDataSerializers.java index 9ef17ce66..b0d6b2343 100644 --- a/src/main/java/com/simibubi/create/AllEntityDataSerializers.java +++ b/src/main/java/com/simibubi/create/AllEntityDataSerializers.java @@ -2,17 +2,20 @@ package com.simibubi.create; import com.simibubi.create.content.logistics.trains.entity.CarriageSyncDataSerializer; -import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DataSerializerEntry; -import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public class AllEntityDataSerializers { + private static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.Keys.DATA_SERIALIZERS, Create.ID); public static final CarriageSyncDataSerializer CARRIAGE_DATA = new CarriageSyncDataSerializer(); - public static void register(RegistryEvent.Register event) { - IForgeRegistry registry = event.getRegistry(); - registry.register(new DataSerializerEntry(CARRIAGE_DATA).setRegistryName(Create.asResource("carriage_data"))); - } + public static final RegistryObject CARRIAGE_DATA_ENTRY = REGISTER.register("carriage_data", () -> new DataSerializerEntry(CARRIAGE_DATA)); + public static void register(IEventBus modEventBus) { + REGISTER.register(modEventBus); + } } diff --git a/src/main/java/com/simibubi/create/AllParticleTypes.java b/src/main/java/com/simibubi/create/AllParticleTypes.java index 722f1b5d2..8903f7894 100644 --- a/src/main/java/com/simibubi/create/AllParticleTypes.java +++ b/src/main/java/com/simibubi/create/AllParticleTypes.java @@ -18,12 +18,13 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.particle.ParticleEngine; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; -import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public enum AllParticleTypes { @@ -39,19 +40,17 @@ public enum AllParticleTypes { SOUL(SoulParticle.Data::new), SOUL_BASE(SoulBaseParticle.Data::new), SOUL_PERIMETER(SoulParticle.PerimeterData::new), - SOUL_EXPANDING_PERIMETER(SoulParticle.ExpandingPerimeterData::new) - ; + SOUL_EXPANDING_PERIMETER(SoulParticle.ExpandingPerimeterData::new); - private ParticleEntry entry; + private final ParticleEntry entry; AllParticleTypes(Supplier> typeFactory) { - String asId = Lang.asId(this.name()); - entry = new ParticleEntry<>(new ResourceLocation(Create.ID, asId), typeFactory); + String name = Lang.asId(name()); + entry = new ParticleEntry<>(name, typeFactory); } - public static void register(RegistryEvent.Register> event) { - for (AllParticleTypes particle : values()) - particle.entry.register(event.getRegistry()); + public static void register(IEventBus modEventBus) { + ParticleEntry.REGISTER.register(modEventBus); } @OnlyIn(Dist.CLIENT) @@ -62,40 +61,31 @@ public enum AllParticleTypes { } public ParticleType get() { - return entry.getOrCreateType(); + return entry.object.get(); } public String parameter() { - return Lang.asId(name()); + return entry.name; } - private class ParticleEntry { - Supplier> typeFactory; - ParticleType type; - ResourceLocation id; + private static class ParticleEntry { + private static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, Create.ID); - public ParticleEntry(ResourceLocation id, Supplier> typeFactory) { - this.id = id; + private final String name; + private final Supplier> typeFactory; + private final RegistryObject> object; + + public ParticleEntry(String name, Supplier> typeFactory) { + this.name = name; this.typeFactory = typeFactory; - } - void register(IForgeRegistry> registry) { - registry.register(getOrCreateType()); - } - - ParticleType getOrCreateType() { - if (type != null) - return type; - type = typeFactory.get() - .createType(); - type.setRegistryName(id); - return type; + object = REGISTER.register(name, () -> this.typeFactory.get().createType()); } @OnlyIn(Dist.CLIENT) - void registerFactory(ParticleEngine particles) { + public void registerFactory(ParticleEngine particles) { typeFactory.get() - .register(getOrCreateType(), particles); + .register(object.get(), particles); } } diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 21875a375..0a290dd36 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -4,6 +4,8 @@ import java.util.Optional; import java.util.Set; import java.util.function.Supplier; +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.ImmutableSet; import com.simibubi.create.compat.jei.ConversionRecipe; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; @@ -38,7 +40,10 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.item.crafting.SimpleRecipeSerializer; import net.minecraft.world.level.Level; -import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public enum AllRecipeTypes implements IRecipeTypeInfo { @@ -61,34 +66,53 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new), - TOOLBOX_DYEING(() -> new SimpleRecipeSerializer<>(ToolboxDyeingRecipe::new), RecipeType.CRAFTING); + TOOLBOX_DYEING(() -> new SimpleRecipeSerializer<>(ToolboxDyeingRecipe::new), () -> RecipeType.CRAFTING, false); - ; + private final ResourceLocation id; + private final RegistryObject> serializerObject; + @Nullable + private final RegistryObject> typeObject; + private final Supplier> type; - private ResourceLocation id; - private Supplier> serializerSupplier; - private Supplier> typeSupplier; - private RecipeSerializer serializer; - private RecipeType type; - - AllRecipeTypes(Supplier> serializerSupplier, Supplier> typeSupplier) { - this.id = Create.asResource(Lang.asId(name())); - this.serializerSupplier = serializerSupplier; - this.typeSupplier = typeSupplier; - } - - AllRecipeTypes(Supplier> serializerSupplier, RecipeType existingType) { - this(serializerSupplier, () -> existingType); + AllRecipeTypes(Supplier> serializerSupplier, Supplier> typeSupplier, boolean registerType) { + String name = Lang.asId(name()); + id = Create.asResource(name); + serializerObject = Registers.SERIALIZER_REGISTER.register(name, serializerSupplier); + if (registerType) { + typeObject = Registers.TYPE_REGISTER.register(name, typeSupplier); + type = typeObject; + } else { + typeObject = null; + type = typeSupplier; + } } AllRecipeTypes(Supplier> serializerSupplier) { - this.id = Create.asResource(Lang.asId(name())); - this.serializerSupplier = serializerSupplier; - this.typeSupplier = () -> simpleType(id); + String name = Lang.asId(name()); + id = Create.asResource(name); + serializerObject = Registers.SERIALIZER_REGISTER.register(name, serializerSupplier); + typeObject = Registers.TYPE_REGISTER.register(name, () -> simpleType(id)); + type = typeObject; } AllRecipeTypes(ProcessingRecipeFactory processingFactory) { - this(processingSerializer(processingFactory)); + this(() -> new ProcessingRecipeSerializer<>(processingFactory)); + } + + public static > RecipeType simpleType(ResourceLocation id) { + String stringId = id.toString(); + return new RecipeType() { + @Override + public String toString() { + return stringId; + } + }; + } + + public static void register(IEventBus modEventBus) { + ShapedRecipe.setCraftingSize(9, 9); + Registers.SERIALIZER_REGISTER.register(modEventBus); + Registers.TYPE_REGISTER.register(modEventBus); } @Override @@ -99,13 +123,13 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { @SuppressWarnings("unchecked") @Override public > T getSerializer() { - return (T) serializer; + return (T) serializerObject.get(); } @SuppressWarnings("unchecked") @Override public > T getType() { - return (T) type; + return (T) type.get(); } public > Optional find(C inv, Level world) { @@ -113,32 +137,6 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { .getRecipeFor(getType(), inv, world); } - public static void register(RegistryEvent.Register> event) { - ShapedRecipe.setCraftingSize(9, 9); - - for (AllRecipeTypes r : AllRecipeTypes.values()) { - r.serializer = r.serializerSupplier.get(); - r.type = r.typeSupplier.get(); - r.serializer.setRegistryName(r.id); - event.getRegistry() - .register(r.serializer); - } - } - - private static Supplier> processingSerializer(ProcessingRecipeFactory factory) { - return () -> new ProcessingRecipeSerializer<>(factory); - } - - public static > RecipeType simpleType(ResourceLocation id) { - String stringId = id.toString(); - return Registry.register(Registry.RECIPE_TYPE, id, new RecipeType() { - @Override - public String toString() { - return stringId; - } - }); - } - public static final Set RECIPE_DENY_SET = ImmutableSet.of(new ResourceLocation("occultism", "spirit_trade"), new ResourceLocation("occultism", "ritual")); @@ -151,4 +149,9 @@ public enum AllRecipeTypes implements IRecipeTypeInfo { .endsWith("_manual_only"); } + private static class Registers { + private static final DeferredRegister> SERIALIZER_REGISTER = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Create.ID); + private static final DeferredRegister> TYPE_REGISTER = DeferredRegister.create(Registry.RECIPE_TYPE_REGISTRY, Create.ID); + } + } diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java index 3835bf89e..2128825a6 100644 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ b/src/main/java/com/simibubi/create/AllSoundEvents.java @@ -6,14 +6,12 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Supplier; -import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Pair; import net.minecraft.core.Vec3i; import net.minecraft.data.DataGenerator; @@ -28,12 +26,15 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.RegistryObject; //@EventBusSubscriber(bus = Bus.FORGE) public class AllSoundEvents { - public static final Map entries = new HashMap<>(); + public static final Map ALL = new HashMap<>(); + public static final SoundEntry SCHEMATICANNON_LAUNCH_BLOCK = create("schematicannon_launch_block").subtitle("Schematicannon fires") @@ -306,20 +307,20 @@ public class AllSoundEvents { return new SoundEntryBuilder(id); } - public static void register(RegistryEvent.Register event) { - IForgeRegistry registry = event.getRegistry(); - for (SoundEntry entry : entries.values()) - entry.register(registry); + public static void prepare() { + for (SoundEntry entry : ALL.values()) + entry.prepare(); } - public static void prepare() { - for (SoundEntry entry : entries.values()) - entry.prepare(); + public static void register(RegistryEvent.Register event) { + IForgeRegistry registry = event.getRegistry(); + for (SoundEntry entry : ALL.values()) + entry.register(registry); } public static JsonObject provideLangEntries() { JsonObject object = new JsonObject(); - for (SoundEntry entry : entries.values()) + for (SoundEntry entry : ALL.values()) if (entry.hasSubtitle()) object.addProperty(entry.getSubtitleKey(), entry.getSubtitle()); return object; @@ -370,7 +371,7 @@ public class AllSoundEvents { try { JsonObject json = new JsonObject(); - entries.entrySet() + ALL.entrySet() .stream() .sorted(Map.Entry.comparingByKey()) .forEach(entry -> { @@ -386,12 +387,15 @@ public class AllSoundEvents { } + public record ConfiguredSoundEvent(Supplier event, float volume, float pitch) { + } + public static class SoundEntryBuilder { protected ResourceLocation id; protected String subtitle = "unregistered"; protected SoundSource category = SoundSource.BLOCKS; - protected List>> wrappedEvents; + protected List wrappedEvents; protected List variants; protected int attenuationDistance; @@ -430,11 +434,15 @@ public class AllSoundEvents { return this; } - public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitch) { - wrappedEvents.add(Pair.of(event, Couple.create(volume, pitch))); + public SoundEntryBuilder playExisting(Supplier event, float volume, float pitch) { + wrappedEvents.add(new ConfiguredSoundEvent(event, volume, pitch)); return this; } + public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitch) { + return playExisting(() -> event, volume, pitch); + } + public SoundEntryBuilder playExisting(SoundEvent event) { return playExisting(event, 1, 1); } @@ -443,7 +451,7 @@ public class AllSoundEvents { SoundEntry entry = wrappedEvents.isEmpty() ? new CustomSoundEntry(id, variants, subtitle, category, attenuationDistance) : new WrappedSoundEntry(id, subtitle, wrappedEvents, category, attenuationDistance); - entries.put(entry.getId(), entry); + ALL.put(entry.getId(), entry); return entry; } @@ -532,50 +540,53 @@ public class AllSoundEvents { private static class WrappedSoundEntry extends SoundEntry { - private List>> wrappedEvents; - private List>> compiledEvents; + private List wrappedEvents; + private List compiledEvents; public WrappedSoundEntry(ResourceLocation id, String subtitle, - List>> wrappedEvents, SoundSource category, int attenuationDistance) { + List wrappedEvents, SoundSource category, int attenuationDistance) { super(id, subtitle, category, attenuationDistance); this.wrappedEvents = wrappedEvents; - compiledEvents = Lists.newArrayList(); + compiledEvents = new ArrayList<>(); } @Override public void prepare() { for (int i = 0; i < wrappedEvents.size(); i++) { - ResourceLocation location = Create.asResource(getIdOf(i)); - SoundEvent sound = new SoundEvent(location).setRegistryName(location); - compiledEvents.add(Pair.of(sound, wrappedEvents.get(i) - .getSecond())); + ConfiguredSoundEvent wrapped = wrappedEvents.get(i); + ResourceLocation location = getIdOf(i); + RegistryObject event = RegistryObject.create(location, ForgeRegistries.SOUND_EVENTS); + compiledEvents.add(new CompiledSoundEvent(event, wrapped.volume(), wrapped.pitch())); } } @Override public void register(IForgeRegistry registry) { - for (Pair> pair : compiledEvents) - registry.register(pair.getFirst()); + for (CompiledSoundEvent compiledEvent : compiledEvents) { + ResourceLocation location = compiledEvent.event().getId(); + registry.register(new SoundEvent(location).setRegistryName(location)); + } } @Override public SoundEvent getMainEvent() { return compiledEvents.get(0) - .getFirst(); + .event().get(); } - protected String getIdOf(int i) { - return i == 0 ? id.getPath() : id.getPath() + "_compounded_" + i; + protected ResourceLocation getIdOf(int i) { + return new ResourceLocation(id.getNamespace(), i == 0 ? id.getPath() : id.getPath() + "_compounded_" + i); } @Override public void write(JsonObject json) { for (int i = 0; i < wrappedEvents.size(); i++) { - Pair> pair = wrappedEvents.get(i); + ConfiguredSoundEvent event = wrappedEvents.get(i); JsonObject entry = new JsonObject(); JsonArray list = new JsonArray(); JsonObject s = new JsonObject(); - s.addProperty("name", pair.getFirst() + s.addProperty("name", event.event() + .get() .getLocation() .toString()); s.addProperty("type", "event"); @@ -585,33 +596,35 @@ public class AllSoundEvents { entry.add("sounds", list); if (i == 0 && hasSubtitle()) entry.addProperty("subtitle", getSubtitleKey()); - json.add(getIdOf(i), entry); + json.add(getIdOf(i).getPath(), entry); } } @Override public void play(Level world, Player entity, double x, double y, double z, float volume, float pitch) { - for (Pair> pair : compiledEvents) { - Couple volPitch = pair.getSecond(); - world.playSound(entity, x, y, z, pair.getFirst(), category, volPitch.getFirst() * volume, - volPitch.getSecond() * pitch); + for (CompiledSoundEvent event : compiledEvents) { + world.playSound(entity, x, y, z, event.event().get(), category, event.volume() * volume, + event.pitch() * pitch); } } @Override public void playAt(Level world, double x, double y, double z, float volume, float pitch, boolean fade) { - for (Pair> pair : compiledEvents) { - Couple volPitch = pair.getSecond(); - world.playLocalSound(x, y, z, pair.getFirst(), category, volPitch.getFirst() * volume, - volPitch.getSecond() * pitch, fade); + for (CompiledSoundEvent event : compiledEvents) { + world.playLocalSound(x, y, z, event.event().get(), category, event.volume() * volume, + event.pitch() * pitch, fade); } } + + private record CompiledSoundEvent(RegistryObject event, float volume, float pitch) { + } + } private static class CustomSoundEntry extends SoundEntry { protected List variants; - protected SoundEvent event; + protected RegistryObject event; public CustomSoundEntry(ResourceLocation id, List variants, String subtitle, SoundSource category, int attenuationDistance) { @@ -621,17 +634,18 @@ public class AllSoundEvents { @Override public void prepare() { - event = new SoundEvent(id).setRegistryName(id); + event = RegistryObject.create(id, ForgeRegistries.SOUND_EVENTS); } @Override public void register(IForgeRegistry registry) { - registry.register(event); + ResourceLocation location = event.getId(); + registry.register(new SoundEvent(location).setRegistryName(location)); } @Override public SoundEvent getMainEvent() { - return event; + return event.get(); } @Override @@ -663,12 +677,12 @@ public class AllSoundEvents { @Override public void play(Level world, Player entity, double x, double y, double z, float volume, float pitch) { - world.playSound(entity, x, y, z, event, category, volume, pitch); + world.playSound(entity, x, y, z, event.get(), category, volume, pitch); } @Override public void playAt(Level world, double x, double y, double z, float volume, float pitch, boolean fade) { - world.playLocalSound(x, y, z, event, category, volume, pitch, fade); + world.playLocalSound(x, y, z, event.get(), category, volume, pitch, fade); } } diff --git a/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java b/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java new file mode 100644 index 000000000..047f68f9a --- /dev/null +++ b/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java @@ -0,0 +1,19 @@ +package com.simibubi.create; + +import com.simibubi.create.content.schematics.SchematicProcessor; + +import net.minecraft.core.Registry; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +public class AllStructureProcessorTypes { + private static final DeferredRegister> REGISTER = DeferredRegister.create(Registry.STRUCTURE_PROCESSOR_REGISTRY, Create.ID); + + public static final RegistryObject> SCHEMATIC = REGISTER.register("schematic", () -> () -> SchematicProcessor.CODEC); + + public static void register(IEventBus modEventBus) { + REGISTER.register(modEventBus); + } +} diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index f2fb70d00..f5c1153d9 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -112,9 +112,11 @@ public class AllTags { public enum AllBlockTags { BRITTLE, - FAN_HEATERS, + CASING, FAN_TRANSPARENT, + NON_MOVABLE, ORE_OVERRIDE_STONE, + PASSIVE_BOILER_HEATERS, SAFE_NBT, SEATS, TOOLBOXES, @@ -122,10 +124,6 @@ public class AllTags { WINDMILL_SAILS, WINDOWABLE, WRENCH_PICKUP, - CASING, - NON_MOVABLE, - - PASSIVE_BOILER_HEATERS, RELOCATION_NOT_SUPPORTED(FORGE), WG_STONE(FORGE), @@ -208,10 +206,13 @@ public class AllTags { BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"), BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"), + CASING, CREATE_INGOTS, CRUSHED_ORES, + PRESSURIZED_AIR_SOURCES, SANDPAPER, SEATS, + SLEEPERS, TOOLBOXES, UPRIGHT_ON_BELT, VALVE_HANDLES, @@ -219,9 +220,6 @@ public class AllTags { VANILLA_STRIPPED_WOOD, MODDED_STRIPPED_LOGS, MODDED_STRIPPED_WOOD, - CASING, - SLEEPERS, - PRESSURIZED_AIR_SOURCES, STRIPPED_LOGS(FORGE), STRIPPED_WOOD(FORGE), @@ -402,10 +400,9 @@ public class AllTags { AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.CAMPFIRES); AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS); - AllBlockTags.FAN_HEATERS.includeAll(BlockTags.FIRE); - AllBlockTags.FAN_HEATERS.includeAll(BlockTags.CAMPFIRES); - AllBlockTags.FAN_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.LAVA); - AllBlockTags.FAN_HEATERS.includeIn(AllBlockTags.PASSIVE_BOILER_HEATERS); + AllBlockTags.PASSIVE_BOILER_HEATERS.includeAll(BlockTags.FIRE); + AllBlockTags.PASSIVE_BOILER_HEATERS.includeAll(BlockTags.CAMPFIRES); + AllBlockTags.PASSIVE_BOILER_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.LAVA); AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS); AllBlockTags.SAFE_NBT.includeAll(BlockTags.BANNERS); diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 56c0b9b1a..bdfd20d23 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -21,7 +21,6 @@ import com.simibubi.create.content.logistics.block.mechanicalArm.AllArmInteracti import com.simibubi.create.content.logistics.trains.GlobalRailwayManager; import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.content.palettes.PalettesItemGroup; -import com.simibubi.create.content.schematics.SchematicProcessor; import com.simibubi.create.content.schematics.ServerSchematicLoader; import com.simibubi.create.content.schematics.filtering.SchematicInstances; import com.simibubi.create.foundation.advancement.AllAdvancements; @@ -38,18 +37,17 @@ import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen; import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.utility.CreateRegistry; -import com.simibubi.create.foundation.worldgen.AllWorldFeatures; +import com.simibubi.create.foundation.worldgen.AllFeatures; +import com.simibubi.create.foundation.worldgen.AllPlacementModifiers; +import com.simibubi.create.foundation.worldgen.BuiltinRegistration; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.minecraft.core.particles.ParticleType; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; -import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.MinecraftForge; @@ -61,7 +59,6 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; -import net.minecraftforge.registries.DataSerializerEntry; @Mod(Create.ID) public class Create { @@ -97,6 +94,10 @@ public class Create { public static void onCtor() { ModLoadingContext modLoadingContext = ModLoadingContext.get(); + IEventBus modEventBus = FMLJavaModLoadingContext.get() + .getModEventBus(); + IEventBus forgeEventBus = MinecraftForge.EVENT_BUS; + AllSoundEvents.prepare(); AllBlocks.register(); AllItems.register(); @@ -106,34 +107,33 @@ public class Create { AllContainerTypes.register(); AllEntityTypes.register(); AllTileEntities.register(); + AllEnchantments.register(); + AllRecipeTypes.register(modEventBus); + AllParticleTypes.register(modEventBus); + AllStructureProcessorTypes.register(modEventBus); + AllEntityDataSerializers.register(modEventBus); + AllFeatures.register(modEventBus); + AllPlacementModifiers.register(modEventBus); + BuiltinRegistration.register(modEventBus); + + AllConfigs.register(modLoadingContext); + AllMovementBehaviours.registerDefaults(); AllInteractionBehaviours.registerDefaults(); AllDisplayBehaviours.registerDefaults(); ContraptionMovementSetting.registerDefaults(); AllArmInteractionPointTypes.register(); - AllWorldFeatures.register(); - AllEnchantments.register(); - AllConfigs.register(modLoadingContext); - BlockSpoutingBehaviour.register(); + BlockSpoutingBehaviour.registerDefaults(); ForgeMod.enableMilkFluid(); - CopperRegistries.inject(); - IEventBus modEventBus = FMLJavaModLoadingContext.get() - .getModEventBus(); - IEventBus forgeEventBus = MinecraftForge.EVENT_BUS; - modEventBus.addListener(Create::init); modEventBus.addListener(EventPriority.LOWEST, Create::gatherData); - modEventBus.addGenericListener(Feature.class, AllWorldFeatures::registerOreFeatures); - modEventBus.addGenericListener(RecipeSerializer.class, AllRecipeTypes::register); - modEventBus.addGenericListener(ParticleType.class, AllParticleTypes::register); modEventBus.addGenericListener(SoundEvent.class, AllSoundEvents::register); - modEventBus.addGenericListener(DataSerializerEntry.class, AllEntityDataSerializers::register); forgeEventBus.addListener(EventPriority.HIGH, SlidingDoorBlock::stopItQuark); - + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> CreateClient.onCtorClient(modEventBus, forgeEventBus)); Mods.CURIOS.executeIfInstalled(() -> Curios::init); @@ -148,22 +148,24 @@ public class Create { event.enqueueWork(() -> { AllAdvancements.register(); AllTriggers.register(); - SchematicProcessor.register(); - AllWorldFeatures.registerFeatures(); - AllWorldFeatures.registerPlacementTypes(); BoilerHeaters.registerDefaults(); }); } public static void gatherData(GatherDataEvent event) { DataGenerator gen = event.getGenerator(); - gen.addProvider(new AllAdvancements(gen)); - gen.addProvider(new LangMerger(gen)); - gen.addProvider(AllSoundEvents.provider(gen)); - gen.addProvider(new StandardRecipeGen(gen)); - gen.addProvider(new MechanicalCraftingRecipeGen(gen)); - gen.addProvider(new SequencedAssemblyRecipeGen(gen)); - ProcessingRecipeGen.registerAll(gen); + if (event.includeClient()) { + gen.addProvider(new LangMerger(gen)); + gen.addProvider(AllSoundEvents.provider(gen)); + } + if (event.includeServer()) { + gen.addProvider(new AllAdvancements(gen)); + gen.addProvider(new StandardRecipeGen(gen)); + gen.addProvider(new MechanicalCraftingRecipeGen(gen)); + gen.addProvider(new SequencedAssemblyRecipeGen(gen)); + ProcessingRecipeGen.registerAll(gen); +// AllOreFeatureConfigEntries.gatherData(event); + } } public static CreateRegistrate registrate() { diff --git a/src/main/java/com/simibubi/create/api/behaviour/BlockSpoutingBehaviour.java b/src/main/java/com/simibubi/create/api/behaviour/BlockSpoutingBehaviour.java index f96d95176..8915492b8 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/BlockSpoutingBehaviour.java +++ b/src/main/java/com/simibubi/create/api/behaviour/BlockSpoutingBehaviour.java @@ -46,7 +46,7 @@ public abstract class BlockSpoutingBehaviour { public abstract int fillBlock(Level world, BlockPos pos, SpoutTileEntity spout, FluidStack availableFluid, boolean simulate); - public static void register() { + public static void registerDefaults() { addCustomSpoutInteraction(Create.asResource("ticon_casting"), new SpoutCasting()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index f2549660a..32e2e3174 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -588,7 +588,7 @@ public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInfor public static HeatLevel getHeatLevelOf(BlockState state) { if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL)) return state.getValue(BlazeBurnerBlock.HEAT_LEVEL); - return AllTags.AllBlockTags.FAN_HEATERS.matches(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE; + return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE; } public Couple getTanks() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java b/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java index 677fad057..0937f2b7d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java @@ -13,7 +13,7 @@ import net.minecraft.world.item.crafting.Ingredient; public enum AllArmorMaterials implements ArmorMaterial { - COPPER("copper", 7, new int[] { 1, 3, 4, 2 }, 25, AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F, + COPPER("copper", 7, new int[] { 1, 3, 4, 2 }, 25, () -> AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F, () -> Ingredient.of(Items.COPPER_INGOT)) ; @@ -23,13 +23,13 @@ public enum AllArmorMaterials implements ArmorMaterial { private final int maxDamageFactor; private final int[] damageReductionAmountArray; private final int enchantability; - private final SoundEvent soundEvent; + private final Supplier soundEvent; private final float toughness; private final float knockbackResistance; private final Supplier repairMaterial; private AllArmorMaterials(String name, int maxDamageFactor, int[] damageReductionAmountArray, int enchantability, - SoundEvent soundEvent, float toughness, float knockbackResistance, Supplier repairMaterial) { + Supplier soundEvent, float toughness, float knockbackResistance, Supplier repairMaterial) { this.name = name; this.maxDamageFactor = maxDamageFactor; this.damageReductionAmountArray = damageReductionAmountArray; @@ -57,7 +57,7 @@ public enum AllArmorMaterials implements ArmorMaterial { @Override public SoundEvent getEquipSound() { - return this.soundEvent; + return this.soundEvent.get(); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java b/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java index a07359ac7..e5507d8e7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java @@ -5,6 +5,7 @@ import java.util.Optional; import javax.annotation.Nullable; import com.mojang.serialization.Codec; +import com.simibubi.create.AllStructureProcessorTypes; import com.simibubi.create.foundation.utility.NBTProcessors; import net.minecraft.core.BlockPos; @@ -21,18 +22,12 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProc import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; public class SchematicProcessor extends StructureProcessor { - + public static final SchematicProcessor INSTANCE = new SchematicProcessor(); public static final Codec CODEC = Codec.unit(() -> { return INSTANCE; }); - - public static StructureProcessorType TYPE; - - public static void register() { - TYPE = StructureProcessorType.register("schematic", CODEC); - } - + @Nullable @Override public StructureTemplate.StructureBlockInfo process(LevelReader world, BlockPos pos, BlockPos anotherPos, StructureTemplate.StructureBlockInfo rawInfo, @@ -65,7 +60,7 @@ public class SchematicProcessor extends StructureProcessor { @Override protected StructureProcessorType getType() { - return TYPE; + return AllStructureProcessorTypes.SCHEMATIC.get(); } } diff --git a/src/main/java/com/simibubi/create/events/CommonEvents.java b/src/main/java/com/simibubi/create/events/CommonEvents.java index fe6332c10..38156537a 100644 --- a/src/main/java/com/simibubi/create/events/CommonEvents.java +++ b/src/main/java/com/simibubi/create/events/CommonEvents.java @@ -20,7 +20,7 @@ import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.WorldAttached; import com.simibubi.create.foundation.utility.recipe.RecipeFinder; -import com.simibubi.create.foundation.worldgen.AllWorldFeatures; +import com.simibubi.create.foundation.worldgen.AllOreFeatureConfigEntries; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -213,7 +213,7 @@ public class CommonEvents { @SubscribeEvent(priority = EventPriority.HIGH) public static void onBiomeLoad(BiomeLoadingEvent event) { - AllWorldFeatures.reload(event); + AllOreFeatureConfigEntries.modifyBiomes(event); } public static void leftClickEmpty(ServerPlayer player) { diff --git a/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java b/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java index 8220e50df..6f03e44c5 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java +++ b/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java @@ -1,22 +1,30 @@ package com.simibubi.create.foundation.config; -import com.simibubi.create.foundation.worldgen.AllWorldFeatures; +import com.simibubi.create.Create; +import com.simibubi.create.foundation.worldgen.AllOreFeatureConfigEntries; import net.minecraftforge.common.ForgeConfigSpec.Builder; public class CWorldGen extends ConfigBase { + /** + * Increment this number if all worldgen config entries should be overwritten + * in this update. Worlds from the previous version will overwrite potentially + * changed values with the new defaults. + */ + public static final int FORCED_UPDATE_VERSION = 2; + public final ConfigBool disable = b(false, "disableWorldGen", Comments.disable); @Override protected void registerAll(Builder builder) { super.registerAll(builder); - AllWorldFeatures.fillConfig(builder); + AllOreFeatureConfigEntries.fillConfig(builder, Create.ID); } @Override public String getName() { - return "worldgen.v" + AllWorldFeatures.forcedUpdateVersion; + return "worldgen.v" + FORCED_UPDATE_VERSION; } private static class Comments { diff --git a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java index 5b8565da3..352975c79 100644 --- a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java +++ b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java @@ -63,6 +63,10 @@ public abstract class ConfigBase { return i(current, min, Integer.MAX_VALUE, name, comment); } + protected ConfigInt i(int current, String name, String... comment) { + return i(current, Integer.MIN_VALUE, Integer.MAX_VALUE, name, comment); + } + protected > ConfigEnum e(T defaultValue, String name, String... comment) { return new ConfigEnum<>(name, defaultValue, comment); } diff --git a/src/main/java/com/simibubi/create/foundation/data/DynamicDataProvider.java b/src/main/java/com/simibubi/create/foundation/data/DynamicDataProvider.java new file mode 100644 index 000000000..3ee8a1387 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/data/DynamicDataProvider.java @@ -0,0 +1,93 @@ +package com.simibubi.create.foundation.data; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; + +import org.jetbrains.annotations.Nullable; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.mojang.serialization.DynamicOps; +import com.mojang.serialization.Encoder; +import com.mojang.serialization.JsonOps; +import com.simibubi.create.Create; + +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.RegistryAccess.RegistryData; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DataProvider; +import net.minecraft.data.HashCache; +import net.minecraft.resources.RegistryOps; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; + +public class DynamicDataProvider implements DataProvider { + private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + + private final DataGenerator generator; + private final String name; + private final RegistryAccess registryAccess; + private final RegistryAccess.RegistryData registryData; + private final Map values; + + public DynamicDataProvider(DataGenerator generator, String name, RegistryAccess registryAccess, RegistryAccess.RegistryData registryData, Map values) { + this.generator = generator; + this.name = name; + this.registryAccess = registryAccess; + this.registryData = registryData; + this.values = values; + } + + @Nullable + public static DynamicDataProvider create(DataGenerator generator, String name, RegistryAccess registryAccess, ResourceKey> registryKey, Map values) { + @SuppressWarnings("unchecked") + RegistryAccess.RegistryData registryData = (RegistryData) RegistryAccess.REGISTRIES.get(registryKey); + if (registryData == null) { + return null; + } + return new DynamicDataProvider<>(generator, name, registryAccess, registryData, values); + } + + @Override + public void run(HashCache cache) throws IOException { + Path path = generator.getOutputFolder(); + DynamicOps ops = RegistryOps.create(JsonOps.INSTANCE, registryAccess); + + dumpValues(path, cache, ops, registryData.key(), values, registryData.codec()); + } + + private void dumpValues(Path rootPath, HashCache cache, DynamicOps ops, ResourceKey> registryKey, Map values, Encoder encoder) { + for (Entry entry : values.entrySet()) { + Path path = createPath(rootPath, registryKey.location(), entry.getKey()); + dumpValue(path, cache, ops, encoder, entry.getValue()); + } + } + + // From WorldgenRegistryDumpReport + private void dumpValue(Path path, HashCache cache, DynamicOps ops, Encoder encoder, T value) { + try { + Optional optional = encoder.encodeStart(ops, value).resultOrPartial((message) -> { + Create.LOGGER.error("Couldn't serialize element {}: {}", path, message); + }); + if (optional.isPresent()) { + DataProvider.save(GSON, cache, optional.get(), path); + } + } catch (IOException e) { + Create.LOGGER.error("Couldn't save element {}", path, e); + } + } + + private Path createPath(Path path, ResourceLocation registry, ResourceLocation value) { + return path.resolve("data").resolve(value.getNamespace()).resolve(registry.getPath()).resolve(value.getPath() + ".json"); + } + + @Override + public String getName() { + return name; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllFeatures.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllFeatures.java new file mode 100644 index 000000000..5fa2a98c2 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/AllFeatures.java @@ -0,0 +1,20 @@ +package com.simibubi.create.foundation.worldgen; + +import com.simibubi.create.Create; + +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public class AllFeatures { + private static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.FEATURES, Create.ID); + + public static final RegistryObject STANDARD_ORE = REGISTER.register("standard_ore", () -> new StandardOreFeature()); + public static final RegistryObject LAYERED_ORE = REGISTER.register("layered_ore", () -> new LayeredOreFeature()); + + public static void register(IEventBus modEventBus) { + REGISTER.register(modEventBus); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllLayerPatterns.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllLayerPatterns.java index 4908780fe..395894742 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/AllLayerPatterns.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/AllLayerPatterns.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.block.Blocks; public class AllLayerPatterns { - public static NonNullSupplier + public static final NonNullSupplier CINNABAR = () -> LayerPattern.builder() .layer(l -> l.weight(1) @@ -25,7 +25,7 @@ public class AllLayerPatterns { .block(AllPaletteStoneTypes.LIMESTONE.getBaseBlock())) .build(); - public static NonNullSupplier MAGNETITE = () -> LayerPattern.builder() + public static final NonNullSupplier MAGNETITE = () -> LayerPattern.builder() .layer(l -> l.weight(1) .passiveBlock()) .layer(l -> l.weight(2) @@ -41,7 +41,7 @@ public class AllLayerPatterns { .block(Blocks.CALCITE)) .build(); - public static NonNullSupplier OCHRESTONE = () -> LayerPattern.builder() + public static final NonNullSupplier OCHRESTONE = () -> LayerPattern.builder() .layer(l -> l.weight(1) .passiveBlock()) .layer(l -> l.weight(2) @@ -56,7 +56,7 @@ public class AllLayerPatterns { .size(1, 2)) .build(); - public static NonNullSupplier MALACHITE = () -> LayerPattern.builder() + public static final NonNullSupplier MALACHITE = () -> LayerPattern.builder() .layer(l -> l.weight(2) .passiveBlock()) .layer(l -> l.weight(4) @@ -72,7 +72,7 @@ public class AllLayerPatterns { .block(Blocks.SMOOTH_BASALT)) .build(); - public static NonNullSupplier SCORIA = () -> LayerPattern.builder() + public static final NonNullSupplier SCORIA = () -> LayerPattern.builder() .layer(l -> l.weight(1) .passiveBlock()) .layer(l -> l.weight(2) @@ -88,7 +88,7 @@ public class AllLayerPatterns { .block(Blocks.DIORITE)) .build(); - public static NonNullSupplier LIMESTONE = () -> LayerPattern.builder() + public static final NonNullSupplier LIMESTONE = () -> LayerPattern.builder() .layer(l -> l.weight(1) .passiveBlock()) .layer(l -> l.weight(2) @@ -100,7 +100,7 @@ public class AllLayerPatterns { .size(1, 4)) .build(); - public static NonNullSupplier SCORIA_NETHER = () -> LayerPattern.builder() + public static final NonNullSupplier SCORIA_NETHER = () -> LayerPattern.builder() .inNether() .layer(l -> l.weight(1) .passiveBlock()) @@ -115,7 +115,7 @@ public class AllLayerPatterns { .block(Blocks.SMOOTH_BASALT)) .build(); - public static NonNullSupplier SCORCHIA_NETHER = () -> LayerPattern.builder() + public static final NonNullSupplier SCORCHIA_NETHER = () -> LayerPattern.builder() .inNether() .layer(l -> l.weight(2) .passiveBlock()) diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java new file mode 100644 index 000000000..e0e778ed3 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java @@ -0,0 +1,134 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Predicate; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.Create; +import com.simibubi.create.foundation.data.DynamicDataProvider; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.worldgen.OreFeatureConfigEntry.DatagenExtension; + +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.DataGenerator; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biome.BiomeCategory; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.event.world.BiomeLoadingEvent; +import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; + +public class AllOreFeatureConfigEntries { + private static final Predicate OVERWORLD_BIOMES = event -> { + Biome.BiomeCategory category = event.getCategory(); + return category != BiomeCategory.NETHER && category != BiomeCategory.THEEND && category != BiomeCategory.NONE; + }; + + private static final Predicate NETHER_BIOMES = event -> { + Biome.BiomeCategory category = event.getCategory(); + return category == BiomeCategory.NETHER; + }; + + // + + public static final OreFeatureConfigEntry ZINC_ORE = + create("zinc_ore", 12, 8, -63, 70) + .biomeExt() + .predicate(OVERWORLD_BIOMES) + .parent() + .standardDatagenExt() + .withBlocks(Couple.create(AllBlocks.ZINC_ORE, AllBlocks.DEEPSLATE_ZINC_ORE)) + .parent(); + + public static final OreFeatureConfigEntry STRIATED_ORES_OVERWORLD = + create("striated_ores_overworld", 32, 1 / 12f, -30, 70) + .biomeExt() + .predicate(OVERWORLD_BIOMES) + .parent() + .layeredDatagenExt() + .withLayerPattern(AllLayerPatterns.SCORIA) + .withLayerPattern(AllLayerPatterns.CINNABAR) + .withLayerPattern(AllLayerPatterns.MAGNETITE) + .withLayerPattern(AllLayerPatterns.MALACHITE) + .withLayerPattern(AllLayerPatterns.LIMESTONE) + .withLayerPattern(AllLayerPatterns.OCHRESTONE) + .parent(); + + public static final OreFeatureConfigEntry STRIATED_ORES_NETHER = + create("striated_ores_nether", 32, 1 / 12f, 40, 90) + .biomeExt() + .predicate(NETHER_BIOMES) + .parent() + .layeredDatagenExt() + .withLayerPattern(AllLayerPatterns.SCORIA_NETHER) + .withLayerPattern(AllLayerPatterns.SCORCHIA_NETHER) + .parent(); + + // + + private static OreFeatureConfigEntry create(String name, int clusterSize, float frequency, + int minHeight, int maxHeight) { + ResourceLocation id = Create.asResource(name); + OreFeatureConfigEntry configDrivenFeatureEntry = new OreFeatureConfigEntry(id, clusterSize, frequency, minHeight, maxHeight); + return configDrivenFeatureEntry; + } + + public static void fillConfig(ForgeConfigSpec.Builder builder, String namespace) { + OreFeatureConfigEntry.ALL + .forEach((id, entry) -> { + if (id.getNamespace().equals(namespace)) { + builder.push(entry.getName()); + entry.addToConfig(builder); + builder.pop(); + } + }); + } + + public static void init() {} + + public static void modifyBiomes(BiomeLoadingEvent event) { + for (OreFeatureConfigEntry entry : OreFeatureConfigEntry.ALL.values()) { + entry.biomeExt().modifyBiomes(event, BuiltinRegistries.PLACED_FEATURE); + } + } + + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + RegistryAccess registryAccess = RegistryAccess.BUILTIN.get(); + + // + + Map> configuredFeatures = new HashMap<>(); + for (Map.Entry entry : OreFeatureConfigEntry.ALL.entrySet()) { + DatagenExtension datagenExt = entry.getValue().datagenExt(); + if (datagenExt != null) { + configuredFeatures.put(entry.getKey(), datagenExt.getConfiguredFeature()); + } + } + + DynamicDataProvider> configuredFeatureProvider = DynamicDataProvider.create(generator, "Create's Configured Features", registryAccess, Registry.CONFIGURED_FEATURE_REGISTRY, configuredFeatures); + if (configuredFeatureProvider != null) { + generator.addProvider(configuredFeatureProvider); + } + + // + + Map placedFeatures = new HashMap<>(); + for (Map.Entry entry : OreFeatureConfigEntry.ALL.entrySet()) { + DatagenExtension datagenExt = entry.getValue().datagenExt(); + if (datagenExt != null) { + placedFeatures.put(entry.getKey(), datagenExt.getPlacedFeature()); + } + } + + DynamicDataProvider placedFeatureProvider = DynamicDataProvider.create(generator, "Create's Placed Features", registryAccess, Registry.PLACED_FEATURE_REGISTRY, placedFeatures); + if (placedFeatureProvider != null) { + generator.addProvider(placedFeatureProvider); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllPlacementModifiers.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllPlacementModifiers.java new file mode 100644 index 000000000..fd8ce11bc --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/AllPlacementModifiers.java @@ -0,0 +1,19 @@ +package com.simibubi.create.foundation.worldgen; + +import com.simibubi.create.Create; + +import net.minecraft.core.Registry; +import net.minecraft.world.level.levelgen.placement.PlacementModifierType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +public class AllPlacementModifiers { + private static final DeferredRegister> REGISTER = DeferredRegister.create(Registry.PLACEMENT_MODIFIER_REGISTRY, Create.ID); + + public static final RegistryObject> CONFIG_DRIVEN = REGISTER.register("config_driven", () -> () -> ConfigDrivenPlacement.CODEC); + + public static void register(IEventBus modEventBus) { + REGISTER.register(modEventBus); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java deleted file mode 100644 index 11a703644..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.HashMap; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.Couple; - -import net.minecraft.core.Registry; -import net.minecraft.data.BuiltinRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.biome.Biome.BiomeCategory; -import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.GenerationStep.Decoration; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.world.BiomeLoadingEvent; - -public class AllWorldFeatures { - - public static final Map ENTRIES = new HashMap<>(); - - private static final BiomeFilter OVERWORLD_BIOMES = - (r, b) -> b != BiomeCategory.NETHER && b != BiomeCategory.THEEND && b != BiomeCategory.NONE; - - private static final BiomeFilter NETHER_BIOMES = (r, b) -> b == BiomeCategory.NETHER; - - // - - public static final ConfigDrivenFeatureEntry ZINC_ORE = - register("zinc_ore", 12, 8, OVERWORLD_BIOMES).between(-63, 70) - .withBlocks(Couple.create(AllBlocks.ZINC_ORE, AllBlocks.DEEPSLATE_ZINC_ORE)); - - public static final ConfigDrivenFeatureEntry STRIATED_ORES_OVERWORLD = - register("striated_ores_overworld", 32, 1 / 12f, OVERWORLD_BIOMES).between(-30, 70) - .withLayerPattern(AllLayerPatterns.SCORIA) - .withLayerPattern(AllLayerPatterns.CINNABAR) - .withLayerPattern(AllLayerPatterns.MAGNETITE) - .withLayerPattern(AllLayerPatterns.MALACHITE) - .withLayerPattern(AllLayerPatterns.LIMESTONE) - .withLayerPattern(AllLayerPatterns.OCHRESTONE); - - public static final ConfigDrivenFeatureEntry STRIATED_ORES_NETHER = - register("striated_ores_nether", 32, 1 / 12f, NETHER_BIOMES).between(40, 90) - .withLayerPattern(AllLayerPatterns.SCORIA_NETHER) - .withLayerPattern(AllLayerPatterns.SCORCHIA_NETHER); - - // - - private static ConfigDrivenFeatureEntry register(String id, int clusterSize, float frequency, - BiomeFilter biomeFilter) { - ConfigDrivenFeatureEntry configDrivenFeatureEntry = new ConfigDrivenFeatureEntry(id, clusterSize, frequency); - configDrivenFeatureEntry.biomeFilter = biomeFilter; - ENTRIES.put(Create.asResource(id), configDrivenFeatureEntry); - return configDrivenFeatureEntry; - } - - /** - * Increment this number if all worldgen entries should be overwritten in this - * update. Worlds from the previous version will overwrite potentially changed - * values with the new defaults. - */ - public static final int forcedUpdateVersion = 2; - - public static void registerFeatures() { - ENTRIES.entrySet() - .forEach(entry -> { - String id = Create.ID + "_" + entry.getKey() - .getPath(); - ConfigDrivenFeatureEntry featureEntry = entry.getValue(); - featureEntry.configuredFeature = BuiltinRegistries.register(BuiltinRegistries.CONFIGURED_FEATURE, id, - featureEntry.factory.apply(featureEntry)); - featureEntry.placedFeature = - BuiltinRegistries.register(BuiltinRegistries.PLACED_FEATURE, id, new PlacedFeature( - featureEntry.configuredFeature, ImmutableList.of(new ConfigDrivenDecorator(featureEntry.id)))); - }); - } - - public static void reload(BiomeLoadingEvent event) { - BiomeGenerationSettingsBuilder generation = event.getGeneration(); - Decoration decoStep = GenerationStep.Decoration.UNDERGROUND_ORES; - ENTRIES.values() - .forEach(entry -> { - ConfigDrivenFeatureEntry value = entry; - if (value.biomeFilter.test(event.getName(), event.getCategory())) - generation.addFeature(decoStep, value.placedFeature); - }); - } - - public static void fillConfig(ForgeConfigSpec.Builder builder) { - ENTRIES.values() - .forEach(entry -> { - builder.push(entry.id); - entry.addToConfig(builder); - builder.pop(); - }); - } - - public static void register() {} - - public static void registerOreFeatures(RegistryEvent.Register> event) { - event.getRegistry() - .registerAll(VanillaStyleOreFeature.INSTANCE, LayeredOreFeature.INSTANCE); - } - - public static void registerPlacementTypes() { - ConfigDrivenDecorator.TYPE = - Registry.register(Registry.PLACEMENT_MODIFIERS, "create_config_driven", () -> ConfigDrivenDecorator.CODEC); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureBase.java b/src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeature.java similarity index 65% rename from src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureBase.java rename to src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeature.java index c886cd155..b55d2eea6 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureBase.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeature.java @@ -3,23 +3,24 @@ package com.simibubi.create.foundation.worldgen; import java.util.Random; import java.util.function.Function; +import com.mojang.serialization.Codec; + import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; -public abstract class OreFeatureBase extends Feature { - - public OreFeatureBase() { - super(ConfigDrivenOreConfiguration.CODEC); +public abstract class BaseConfigDrivenOreFeature extends Feature { + public BaseConfigDrivenOreFeature(Codec configCodec) { + super(configCodec); } public boolean canPlaceOre(BlockState pState, Function pAdjacentStateAccessor, - Random pRandom, ConfigDrivenOreConfiguration pConfig, OreConfiguration.TargetBlockState pTargetState, + Random pRandom, BaseConfigDrivenOreFeatureConfiguration pConfig, OreConfiguration.TargetBlockState pTargetState, BlockPos.MutableBlockPos pMatablePos) { if (!pTargetState.target.test(pState, pRandom)) return false; - if (shouldSkipAirCheck(pRandom, pConfig.discardChanceOnAirExposure)) + if (shouldSkipAirCheck(pRandom, pConfig.getDiscardChanceOnAirExposure())) return true; return !isAdjacentToAir(pAdjacentStateAccessor, pMatablePos); diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeatureConfiguration.java b/src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeatureConfiguration.java new file mode 100644 index 000000000..1c741236f --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/BaseConfigDrivenOreFeatureConfiguration.java @@ -0,0 +1,25 @@ +package com.simibubi.create.foundation.worldgen; + +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; + +public class BaseConfigDrivenOreFeatureConfiguration implements FeatureConfiguration { + protected final OreFeatureConfigEntry entry; + protected final float discardChanceOnAirExposure; + + public BaseConfigDrivenOreFeatureConfiguration(OreFeatureConfigEntry entry, float discardChance) { + this.entry = entry; + this.discardChanceOnAirExposure = discardChance; + } + + public OreFeatureConfigEntry getEntry() { + return entry; + } + + public int getClusterSize() { + return entry.clusterSize.get(); + } + + public float getDiscardChanceOnAirExposure() { + return discardChanceOnAirExposure; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/BiomeFilter.java b/src/main/java/com/simibubi/create/foundation/worldgen/BiomeFilter.java deleted file mode 100644 index b3cd9e2c9..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/BiomeFilter.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.function.BiPredicate; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.biome.Biome.BiomeCategory; - -public interface BiomeFilter extends BiPredicate { - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java b/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java new file mode 100644 index 000000000..df332d2a0 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java @@ -0,0 +1,36 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.Map; + +import com.simibubi.create.Create; +import com.simibubi.create.foundation.worldgen.OreFeatureConfigEntry.DatagenExtension; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; + +public class BuiltinRegistration { + private static final DeferredRegister> CONFIGURED_FEATURE_REGISTER = DeferredRegister.create(Registry.CONFIGURED_FEATURE_REGISTRY, Create.ID); + private static final DeferredRegister PLACED_FEATURE_REGISTER = DeferredRegister.create(Registry.PLACED_FEATURE_REGISTRY, Create.ID); + + static { + for (Map.Entry entry : OreFeatureConfigEntry.ALL.entrySet()) { + ResourceLocation id = entry.getKey(); + if (id.getNamespace().equals(Create.ID)) { + DatagenExtension datagenExt = entry.getValue().datagenExt(); + if (datagenExt != null) { + CONFIGURED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.getConfiguredFeature()); + PLACED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.getPlacedFeature()); + } + } + } + } + + public static void register(IEventBus modEventBus) { + CONFIGURED_FEATURE_REGISTER.register(modEventBus); + PLACED_FEATURE_REGISTER.register(modEventBus); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java deleted file mode 100644 index a1af6270d..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.Random; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.Create; - -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.world.level.levelgen.placement.PlacementContext; -import net.minecraft.world.level.levelgen.placement.PlacementModifier; -import net.minecraft.world.level.levelgen.placement.PlacementModifierType; - -public class ConfigDrivenDecorator extends PlacementModifier { - - public static PlacementModifierType TYPE; - - public static final Codec CODEC = RecordCodecBuilder.create((p_67849_) -> { - return p_67849_.group(Codec.STRING.fieldOf("key") - .forGetter(t -> t.key.getPath())) - .apply(p_67849_, ConfigDrivenDecorator::new); - }); - - private ResourceLocation key; - - public ConfigDrivenDecorator(String key) { - this.key = Create.asResource(key); - } - - @Override - public PlacementModifierType type() { - return TYPE; - } - - @Override - public Stream getPositions(PlacementContext context, Random random, BlockPos pos) { - ConfigDrivenOreConfiguration config = (ConfigDrivenOreConfiguration) entry().configuredFeature.value() - .config(); - - float frequency = config.getFrequency(); - int floored = Mth.floor(frequency); - int count = floored + (random.nextFloat() < frequency - floored ? 1 : 0); - if (count == 0) - return Stream.empty(); - - int maxY = config.getMaxY(); - int minY = config.getMinY(); - - return IntStream.range(0, count) - .mapToObj($ -> pos) - .map(p -> { - int i = p.getX(); - int j = p.getZ(); - int k = random.nextInt(maxY - minY) + minY; - return new BlockPos(i, k, j); - }); - } - - protected ConfigDrivenFeatureEntry entry() { - return AllWorldFeatures.ENTRIES.get(key); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java deleted file mode 100644 index b2b87db7c..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Function; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.ConfigBase; -import com.simibubi.create.foundation.utility.Couple; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.core.Holder; -import net.minecraft.data.worldgen.features.OreFeatures; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraftforge.common.ForgeConfigSpec; - -public class ConfigDrivenFeatureEntry extends ConfigBase { - - public final String id; - public BiomeFilter biomeFilter; - - private NonNullSupplier block; - private NonNullSupplier deepblock; - private NonNullSupplier netherblock; - - private List> layers = new ArrayList<>(); - - protected ConfigInt clusterSize; - protected ConfigInt minHeight; - protected ConfigInt maxHeight; - protected ConfigFloat frequency; - - Function> factory; - Holder> configuredFeature; - Holder placedFeature; - - public ConfigDrivenFeatureEntry(String id, int clusterSize, float frequency) { - this.id = id; - this.factory = this::standardFactory; - this.clusterSize = i(clusterSize, 0, "clusterSize"); - this.minHeight = i(0, 0, "minHeight"); - this.maxHeight = i(256, 0, "maxHeight"); - this.frequency = f(frequency, 0, 512, "frequency", "Amount of clusters generated per Chunk.", - " >1 to spawn multiple.", " <1 to make it a chance.", " 0 to disable."); - } - - public ConfigDrivenFeatureEntry withLayerPattern(NonNullSupplier pattern) { - this.layers.add(pattern); - this.factory = this::layersFactory; - return this; - } - - public ConfigDrivenFeatureEntry withBlock(NonNullSupplier block) { - this.block = this.deepblock = block; - return this; - } - - public ConfigDrivenFeatureEntry withNetherBlock(NonNullSupplier block) { - this.netherblock = block; - return this; - } - - public ConfigDrivenFeatureEntry withBlocks(Couple> blocks) { - this.block = blocks.getFirst(); - this.deepblock = blocks.getSecond(); - return this; - } - - public ConfigDrivenFeatureEntry between(int minHeight, int maxHeight) { - allValues.remove(this.minHeight); - allValues.remove(this.maxHeight); - this.minHeight = i(minHeight, -64, "minHeight"); - this.maxHeight = i(maxHeight, -64, "maxHeight"); - return this; - } - - private ConfiguredFeature layersFactory(ConfigDrivenFeatureEntry entry) { - ConfigDrivenOreConfiguration config = new ConfigDrivenOreConfiguration(ImmutableList.of(), 0, id); - LayeredOreFeature.LAYER_PATTERNS.put(Create.asResource(id), layers.stream() - .map(NonNullSupplier::get) - .toList()); - return new ConfiguredFeature<>(LayeredOreFeature.INSTANCE, config); - } - - private ConfiguredFeature standardFactory(ConfigDrivenFeatureEntry entry) { - ConfigDrivenOreConfiguration config = new ConfigDrivenOreConfiguration(createTarget(), 0, id); - return new ConfiguredFeature<>(VanillaStyleOreFeature.INSTANCE, config); - } - - private List createTarget() { - List list = new ArrayList<>(); - if (block != null) - list.add(OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, block.get() - .defaultBlockState())); - if (deepblock != null) - list.add(OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES, deepblock.get() - .defaultBlockState())); - if (netherblock != null) - list.add(OreConfiguration.target(OreFeatures.NETHER_ORE_REPLACEABLES, netherblock.get() - .defaultBlockState())); - return list; - } - - public void addToConfig(ForgeConfigSpec.Builder builder) { - registerAll(builder); - } - - @Override - public String getName() { - return id; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenLayeredOreFeatureConfiguration.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenLayeredOreFeatureConfiguration.java new file mode 100644 index 000000000..4066b20b3 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenLayeredOreFeatureConfiguration.java @@ -0,0 +1,33 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.List; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +public class ConfigDrivenLayeredOreFeatureConfiguration extends BaseConfigDrivenOreFeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> { + return instance.group( + OreFeatureConfigEntry.CODEC + .fieldOf("entry") + .forGetter(config -> config.entry), + Codec.floatRange(0.0F, 1.0F) + .fieldOf("discard_chance_on_air_exposure") + .forGetter(config -> config.discardChanceOnAirExposure), + Codec.list(LayerPattern.CODEC) + .fieldOf("layer_patterns") + .forGetter(config -> config.layerPatterns) + ).apply(instance, ConfigDrivenLayeredOreFeatureConfiguration::new); + }); + + private final List layerPatterns; + + public ConfigDrivenLayeredOreFeatureConfiguration(OreFeatureConfigEntry entry, float discardChance, List layerPatterns) { + super(entry, discardChance); + this.layerPatterns = layerPatterns; + } + + public List getLayerPatterns() { + return layerPatterns; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreConfiguration.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreConfiguration.java deleted file mode 100644 index 7c567861f..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreConfiguration.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.List; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; - -public class ConfigDrivenOreConfiguration implements FeatureConfiguration { - - public static final Codec CODEC = RecordCodecBuilder.create((p_67849_) -> { - return p_67849_.group(Codec.list(TargetBlockState.CODEC) - .fieldOf("targets") - .forGetter((p_161027_) -> { - return p_161027_.targetStates; - }), Codec.floatRange(0.0F, 1.0F) - .fieldOf("discard_chance_on_air_exposure") - .forGetter((p_161020_) -> { - return p_161020_.discardChanceOnAirExposure; - }), - Codec.STRING.fieldOf("key") - .forGetter(t -> t.key.getPath())) - .apply(p_67849_, ConfigDrivenOreConfiguration::new); - }); - - public final List targetStates; - public final float discardChanceOnAirExposure; - public final ResourceLocation key; - - public ConfigDrivenOreConfiguration(List targetStates, float discardChance, String key) { - this.targetStates = targetStates; - this.discardChanceOnAirExposure = discardChance; - this.key = Create.asResource(key); - } - - public int getSize() { - return entry().clusterSize.get(); - } - - public int getMinY() { - return entry().minHeight.get(); - } - - public int getMaxY() { - return entry().maxHeight.get(); - } - - public List getLayers() { - return LayeredOreFeature.LAYER_PATTERNS.get(key); - } - - public float getFrequency() { - if (AllConfigs.COMMON.worldGen.disable.get()) - return 0; - return entry().frequency.getF(); - } - - protected ConfigDrivenFeatureEntry entry() { - return AllWorldFeatures.ENTRIES.get(key); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfiguration.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfiguration.java new file mode 100644 index 000000000..d554cc139 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfiguration.java @@ -0,0 +1,35 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.List; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; + +public class ConfigDrivenOreFeatureConfiguration extends BaseConfigDrivenOreFeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> { + return instance.group( + OreFeatureConfigEntry.CODEC + .fieldOf("entry") + .forGetter(config -> config.entry), + Codec.floatRange(0.0F, 1.0F) + .fieldOf("discard_chance_on_air_exposure") + .forGetter(config -> config.discardChanceOnAirExposure), + Codec.list(TargetBlockState.CODEC) + .fieldOf("targets") + .forGetter(config -> config.targetStates) + ).apply(instance, ConfigDrivenOreFeatureConfiguration::new); + }); + + private final List targetStates; + + public ConfigDrivenOreFeatureConfiguration(OreFeatureConfigEntry entry, float discardChance, List targetStates) { + super(entry, discardChance); + this.targetStates = targetStates; + } + + public List getTargetStates() { + return targetStates; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenPlacement.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenPlacement.java new file mode 100644 index 000000000..858f53930 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenPlacement.java @@ -0,0 +1,79 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.Random; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import com.simibubi.create.foundation.config.AllConfigs; + +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.level.levelgen.placement.PlacementContext; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; +import net.minecraft.world.level.levelgen.placement.PlacementModifierType; + +public class ConfigDrivenPlacement extends PlacementModifier { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> { + return instance.group( + OreFeatureConfigEntry.CODEC + .fieldOf("entry") + .forGetter(ConfigDrivenPlacement::getEntry) + ).apply(instance, ConfigDrivenPlacement::new); + }); + + private final OreFeatureConfigEntry entry; + + public ConfigDrivenPlacement(OreFeatureConfigEntry entry) { + this.entry = entry; + } + + @Override + public Stream getPositions(PlacementContext context, Random random, BlockPos pos) { + int count = getCount(getFrequency(), random); + if (count == 0) { + return Stream.empty(); + } + + int minY = getMinY(); + int maxY = getMaxY(); + + return IntStream.range(0, count) + .mapToObj(i -> pos) + .map(p -> { + int x = random.nextInt(16) + p.getX(); + int z = random.nextInt(16) + p.getZ(); + int y = Mth.randomBetweenInclusive(random, minY, maxY); + return new BlockPos(x, y, z); + }); + } + + public int getCount(float frequency, Random random) { + int floored = Mth.floor(frequency); + return floored + (random.nextFloat() < (frequency - floored) ? 1 : 0); + } + + @Override + public PlacementModifierType type() { + return AllPlacementModifiers.CONFIG_DRIVEN.get(); + } + + public OreFeatureConfigEntry getEntry() { + return entry; + } + + public float getFrequency() { + if (AllConfigs.COMMON.worldGen.disable.get()) + return 0; + return entry.frequency.getF(); + } + + public int getMinY() { + return entry.minHeight.get(); + } + + public int getMaxY() { + return entry.maxHeight.get(); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/LayerPattern.java b/src/main/java/com/simibubi/create/foundation/worldgen/LayerPattern.java index 71ad7fd2e..dc4a53d1e 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/LayerPattern.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/LayerPattern.java @@ -7,8 +7,9 @@ import java.util.Random; import javax.annotation.Nullable; import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.worldgen.LayerPattern.Layer.LayerBuilder; import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.data.worldgen.features.OreFeatures; @@ -20,16 +21,13 @@ import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguratio import net.minecraftforge.common.util.NonNullConsumer; public class LayerPattern { + public static final Codec CODEC = Codec.list(Layer.CODEC) + .xmap(LayerPattern::new, pattern -> pattern.layers); - List layers; + public final List layers; - public LayerPattern() { - layers = new ArrayList<>(); - } - - public static Builder builder() { - LayerPattern ore = new LayerPattern(); - return ore.new Builder(); + public LayerPattern(List layers) { + this.layers = layers; } public Layer rollNext(@Nullable Layer previous, Random random) { @@ -49,42 +47,60 @@ public class LayerPattern { return null; } - class Builder { - + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private final List layers = new ArrayList<>(); private boolean netherMode; - public LayerPattern build() { - return LayerPattern.this; - } - public Builder inNether() { netherMode = true; return this; } - public Builder layer(NonNullConsumer builder) { - Layer layer = new Layer(); - LayerBuilder layerBuilder = layer.new LayerBuilder(); + public Builder layer(NonNullConsumer builder) { + Layer.Builder layerBuilder = new Layer.Builder(); layerBuilder.netherMode = netherMode; builder.accept(layerBuilder); layers.add(layerBuilder.build()); return this; } + public LayerPattern build() { + return new LayerPattern(layers); + } } - static class Layer { + public static class Layer { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> { + return instance.group( + Codec.list(Codec.list(TargetBlockState.CODEC)) + .fieldOf("targets") + .forGetter(layer -> layer.targets), + Codec.intRange(0, Integer.MAX_VALUE) + .fieldOf("min_size") + .forGetter(layer -> layer.minSize), + Codec.intRange(0, Integer.MAX_VALUE) + .fieldOf("max_size") + .forGetter(layer -> layer.maxSize), + Codec.intRange(0, Integer.MAX_VALUE) + .fieldOf("weight") + .forGetter(layer -> layer.weight) + ).apply(instance, Layer::new); + }); - public List> targets; - public int minSize; - public int maxSize; - public int weight; + public final List> targets; + public final int minSize; + public final int maxSize; + public final int weight; - public Layer() { - this.targets = new ArrayList<>(); - this.minSize = 1; - this.maxSize = 1; - this.weight = 1; + public Layer(List> targets, int minSize, int maxSize, int weight) { + this.targets = targets; + this.minSize = minSize; + this.maxSize = maxSize; + this.weight = weight; } public List rollBlock(Random random) { @@ -93,36 +109,35 @@ public class LayerPattern { return targets.get(random.nextInt(targets.size())); } - class LayerBuilder { - + public static class Builder { + private final List> targets = new ArrayList<>(); + private int minSize = 1; + private int maxSize = 1; + private int weight = 1; private boolean netherMode; - private Layer build() { - return Layer.this; - } - - public LayerBuilder block(NonNullSupplier block) { + public Builder block(NonNullSupplier block) { return block(block.get()); } - public LayerBuilder passiveBlock() { + public Builder passiveBlock() { return blocks(Blocks.STONE.defaultBlockState(), Blocks.DEEPSLATE.defaultBlockState()); } - public LayerBuilder block(Block block) { + public Builder block(Block block) { if (netherMode) { - Layer.this.targets.add(ImmutableList.of(OreConfiguration + this.targets.add(ImmutableList.of(OreConfiguration .target(OreFeatures.NETHER_ORE_REPLACEABLES, block.defaultBlockState()))); return this; } return blocks(block.defaultBlockState(), block.defaultBlockState()); } - public LayerBuilder blocks(Block block, Block deepblock) { + public Builder blocks(Block block, Block deepblock) { return blocks(block.defaultBlockState(), deepblock.defaultBlockState()); } - public LayerBuilder blocks(Couple> blocksByDepth) { + public Builder blocks(Couple> blocksByDepth) { return blocks(blocksByDepth.getFirst() .get() .defaultBlockState(), @@ -131,26 +146,27 @@ public class LayerPattern { .defaultBlockState()); } - private LayerBuilder blocks(BlockState stone, BlockState deepslate) { - Layer.this.targets.add( + private Builder blocks(BlockState stone, BlockState deepslate) { + this.targets.add( ImmutableList.of(OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, stone), OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES, deepslate))); return this; } - public LayerBuilder weight(int weight) { - Layer.this.weight = weight; + public Builder weight(int weight) { + this.weight = weight; return this; } - public LayerBuilder size(int min, int max) { - Layer.this.minSize = min; - Layer.this.maxSize = max; + public Builder size(int min, int max) { + this.minSize = min; + this.maxSize = max; return this; } + public Layer build() { + return new Layer(targets, minSize, maxSize, weight); + } } - } - } diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/LayeredOreFeature.java b/src/main/java/com/simibubi/create/foundation/worldgen/LayeredOreFeature.java index 36ccebded..00b1ca89e 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/LayeredOreFeature.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/LayeredOreFeature.java @@ -1,9 +1,7 @@ package com.simibubi.create.foundation.worldgen; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Random; import com.simibubi.create.foundation.worldgen.LayerPattern.Layer; @@ -11,7 +9,6 @@ import com.simibubi.create.foundation.worldgen.LayerPattern.Layer; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.SectionPos; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; @@ -22,23 +19,18 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; -public class LayeredOreFeature extends OreFeatureBase { - - public static final Map> LAYER_PATTERNS = new HashMap<>(); - - public static final LayeredOreFeature INSTANCE = new LayeredOreFeature(); - +public class LayeredOreFeature extends BaseConfigDrivenOreFeature { public LayeredOreFeature() { - setRegistryName("config_driven_layered_ore"); + super(ConfigDrivenLayeredOreFeatureConfiguration.CODEC); } - public boolean place(FeaturePlaceContext pContext) { - + @Override + public boolean place(FeaturePlaceContext pContext) { Random random = pContext.random(); BlockPos blockpos = pContext.origin(); WorldGenLevel worldgenlevel = pContext.level(); - ConfigDrivenOreConfiguration config = pContext.config(); - List patternPool = config.getLayers(); + ConfigDrivenLayeredOreFeatureConfiguration config = pContext.config(); + List patternPool = config.getLayerPatterns(); if (patternPool.isEmpty()) return false; @@ -46,8 +38,8 @@ public class LayeredOreFeature extends OreFeatureBase { LayerPattern layerPattern = patternPool.get(random.nextInt(patternPool.size())); int placedAmount = 0; - int size = config.getSize(); - int radius = Mth.ceil(config.getSize() / 2f); + int size = config.getClusterSize(); + int radius = Mth.ceil(config.getClusterSize() / 2f); int x0 = blockpos.getX() - radius; int y0 = blockpos.getY() - radius; int z0 = blockpos.getZ() - radius; @@ -150,5 +142,4 @@ public class LayeredOreFeature extends OreFeatureBase { bulksectionaccess.close(); return placedAmount > 0; } - } diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java b/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java new file mode 100644 index 000000000..0ef2b7582 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java @@ -0,0 +1,233 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; + +import org.jetbrains.annotations.Nullable; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.simibubi.create.foundation.config.ConfigBase; +import com.simibubi.create.foundation.utility.Couple; +import com.tterrag.registrate.util.nullness.NonNullSupplier; + +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.event.world.BiomeLoadingEvent; + +public class OreFeatureConfigEntry extends ConfigBase { + public static final Map ALL = new HashMap<>(); + + public static final Codec CODEC = ResourceLocation.CODEC + .comapFlatMap(OreFeatureConfigEntry::read, entry -> entry.id); + + public final ResourceLocation id; + public final ConfigInt clusterSize; + public final ConfigFloat frequency; + public final ConfigInt minHeight; + public final ConfigInt maxHeight; + + private BiomeExtension biomeExt; + private DatagenExtension datagenExt; + + public OreFeatureConfigEntry(ResourceLocation id, int clusterSize, float frequency, int minHeight, int maxHeight) { + this.id = id; + + this.clusterSize = i(clusterSize, 0, "clusterSize"); + this.frequency = f(frequency, 0, 512, "frequency", "Amount of clusters generated per Chunk.", + " >1 to spawn multiple.", " <1 to make it a chance.", " 0 to disable."); + this.minHeight = i(minHeight, "minHeight"); + this.maxHeight = i(maxHeight, "maxHeight"); + + ALL.put(id, this); + } + + public BiomeExtension biomeExt() { + if (biomeExt == null) { + biomeExt = new BiomeExtension(); + } + return biomeExt; + } + + @Nullable + public StandardDatagenExtension standardDatagenExt() { + if (datagenExt == null) { + datagenExt = new StandardDatagenExtension(); + } + if (datagenExt instanceof StandardDatagenExtension standard) { + return standard; + } + return null; + } + + @Nullable + public LayeredDatagenExtension layeredDatagenExt() { + if (datagenExt == null) { + datagenExt = new LayeredDatagenExtension(); + } + if (datagenExt instanceof LayeredDatagenExtension layered) { + return layered; + } + return null; + } + + @Nullable + public DatagenExtension datagenExt() { + if (datagenExt != null) { + return datagenExt; + } + return null; + } + + public void addToConfig(ForgeConfigSpec.Builder builder) { + registerAll(builder); + } + + @Override + public String getName() { + return id.getPath(); + } + + public static DataResult read(ResourceLocation id) { + OreFeatureConfigEntry entry = ALL.get(id); + if (entry != null) { + return DataResult.success(entry); + } else { + return DataResult.error("Not a valid OreFeatureConfigEntry: " + id); + } + } + + public class BiomeExtension { + public ResourceLocation placedFeatureLocation = id; + public Predicate biomePredicate = e -> false; + + public BiomeExtension feature(ResourceLocation placedFeature) { + this.placedFeatureLocation = placedFeature; + return this; + } + + public BiomeExtension predicate(Predicate predicate) { + this.biomePredicate = predicate; + return this; + } + + public void modifyBiomes(BiomeLoadingEvent event, Registry registry) { + if (biomePredicate.test(event)) { + Optional> optionalFeature = registry.getHolder(ResourceKey.create(Registry.PLACED_FEATURE_REGISTRY, placedFeatureLocation)); + if (optionalFeature.isPresent()) { + event.getGeneration().addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, optionalFeature.get()); + } + } + } + + public OreFeatureConfigEntry parent() { + return OreFeatureConfigEntry.this; + } + } + + public abstract class DatagenExtension { + protected ConfiguredFeature configuredFeature; + protected PlacedFeature placedFeature; + + public abstract ConfiguredFeature getConfiguredFeature(); + + public PlacedFeature getPlacedFeature() { + if (placedFeature != null) { + return placedFeature; + } + + placedFeature = new PlacedFeature(Holder.direct(getConfiguredFeature()), List.of(new ConfigDrivenPlacement(OreFeatureConfigEntry.this))); + + return placedFeature; + } + + public OreFeatureConfigEntry parent() { + return OreFeatureConfigEntry.this; + } + } + + public class StandardDatagenExtension extends DatagenExtension { + public NonNullSupplier block; + public NonNullSupplier deepBlock; + public NonNullSupplier netherBlock; + + public StandardDatagenExtension withBlock(NonNullSupplier block) { + this.block = block; + this.deepBlock = block; + return this; + } + + public StandardDatagenExtension withBlocks(Couple> blocks) { + this.block = blocks.getFirst(); + this.deepBlock = blocks.getSecond(); + return this; + } + + public StandardDatagenExtension withNetherBlock(NonNullSupplier block) { + this.netherBlock = block; + return this; + } + + @Override + public ConfiguredFeature getConfiguredFeature() { + if (configuredFeature != null) { + return configuredFeature; + } + + List targetStates = new ArrayList<>(); + if (block != null) + targetStates.add(OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, block.get() + .defaultBlockState())); + if (deepBlock != null) + targetStates.add(OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES, deepBlock.get() + .defaultBlockState())); + if (netherBlock != null) + targetStates.add(OreConfiguration.target(OreFeatures.NETHER_ORE_REPLACEABLES, netherBlock.get() + .defaultBlockState())); + + ConfigDrivenOreFeatureConfiguration config = new ConfigDrivenOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, targetStates); + configuredFeature = new ConfiguredFeature<>(AllFeatures.STANDARD_ORE.get(), config); + + return configuredFeature; + } + } + + public class LayeredDatagenExtension extends DatagenExtension { + public final List> layerPatterns = new ArrayList<>(); + + public LayeredDatagenExtension withLayerPattern(NonNullSupplier pattern) { + this.layerPatterns.add(pattern); + return this; + } + + @Override + public ConfiguredFeature getConfiguredFeature() { + if (configuredFeature != null) { + return configuredFeature; + } + + List layerPatterns = this.layerPatterns.stream() + .map(NonNullSupplier::get) + .toList(); + + ConfigDrivenLayeredOreFeatureConfiguration config = new ConfigDrivenLayeredOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, layerPatterns); + configuredFeature = new ConfiguredFeature<>(AllFeatures.LAYERED_ORE.get(), config); + + return configuredFeature; + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/StandardOreFeature.java b/src/main/java/com/simibubi/create/foundation/worldgen/StandardOreFeature.java new file mode 100644 index 000000000..58749166d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/worldgen/StandardOreFeature.java @@ -0,0 +1,168 @@ +package com.simibubi.create.foundation.worldgen; + +import java.util.BitSet; +import java.util.Random; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.SectionPos; +import net.minecraft.util.Mth; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.BulkSectionAccess; +import net.minecraft.world.level.chunk.LevelChunkSection; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; + +public class StandardOreFeature extends BaseConfigDrivenOreFeature { + + public StandardOreFeature() { + super(ConfigDrivenOreFeatureConfiguration.CODEC); + } + + // From OreFeature, slight adjustments + + @Override + public boolean place(FeaturePlaceContext pContext) { + Random random = pContext.random(); + BlockPos blockpos = pContext.origin(); + WorldGenLevel worldgenlevel = pContext.level(); + ConfigDrivenOreFeatureConfiguration oreconfiguration = pContext.config(); + float f = random.nextFloat() * (float)Math.PI; + float f1 = (float)oreconfiguration.getClusterSize() / 8.0F; + int i = Mth.ceil(((float)oreconfiguration.getClusterSize() / 16.0F * 2.0F + 1.0F) / 2.0F); + double d0 = (double)blockpos.getX() + Math.sin((double)f) * (double)f1; + double d1 = (double)blockpos.getX() - Math.sin((double)f) * (double)f1; + double d2 = (double)blockpos.getZ() + Math.cos((double)f) * (double)f1; + double d3 = (double)blockpos.getZ() - Math.cos((double)f) * (double)f1; + double d4 = (double)(blockpos.getY() + random.nextInt(3) - 2); + double d5 = (double)(blockpos.getY() + random.nextInt(3) - 2); + int k = blockpos.getX() - Mth.ceil(f1) - i; + int l = blockpos.getY() - 2 - i; + int i1 = blockpos.getZ() - Mth.ceil(f1) - i; + int j1 = 2 * (Mth.ceil(f1) + i); + int k1 = 2 * (2 + i); + + for(int l1 = k; l1 <= k + j1; ++l1) { + for(int i2 = i1; i2 <= i1 + j1; ++i2) { + if (l <= worldgenlevel.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, l1, i2)) { + return this.doPlace(worldgenlevel, random, oreconfiguration, d0, d1, d2, d3, d4, d5, k, l, i1, j1, k1); + } + } + } + + return false; + } + + protected boolean doPlace(WorldGenLevel pLevel, Random pRandom, ConfigDrivenOreFeatureConfiguration pConfig, double pMinX, + double pMaxX, double pMinZ, double pMaxZ, double pMinY, double pMaxY, int pX, int pY, int pZ, int pWidth, + int pHeight) { + int i = 0; + BitSet bitset = new BitSet(pWidth * pHeight * pWidth); + BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); + int j = pConfig.getClusterSize(); + double[] adouble = new double[j * 4]; + + for(int k = 0; k < j; ++k) { + float f = (float)k / (float)j; + double d0 = Mth.lerp((double)f, pMinX, pMaxX); + double d1 = Mth.lerp((double)f, pMinY, pMaxY); + double d2 = Mth.lerp((double)f, pMinZ, pMaxZ); + double d3 = pRandom.nextDouble() * (double)j / 16.0D; + double d4 = ((double)(Mth.sin((float)Math.PI * f) + 1.0F) * d3 + 1.0D) / 2.0D; + adouble[k * 4 + 0] = d0; + adouble[k * 4 + 1] = d1; + adouble[k * 4 + 2] = d2; + adouble[k * 4 + 3] = d4; + } + + for(int l3 = 0; l3 < j - 1; ++l3) { + if (!(adouble[l3 * 4 + 3] <= 0.0D)) { + for(int i4 = l3 + 1; i4 < j; ++i4) { + if (!(adouble[i4 * 4 + 3] <= 0.0D)) { + double d8 = adouble[l3 * 4 + 0] - adouble[i4 * 4 + 0]; + double d10 = adouble[l3 * 4 + 1] - adouble[i4 * 4 + 1]; + double d12 = adouble[l3 * 4 + 2] - adouble[i4 * 4 + 2]; + double d14 = adouble[l3 * 4 + 3] - adouble[i4 * 4 + 3]; + if (d14 * d14 > d8 * d8 + d10 * d10 + d12 * d12) { + if (d14 > 0.0D) { + adouble[i4 * 4 + 3] = -1.0D; + } else { + adouble[l3 * 4 + 3] = -1.0D; + } + } + } + } + } + } + + BulkSectionAccess bulksectionaccess = new BulkSectionAccess(pLevel); + + try { + for(int j4 = 0; j4 < j; ++j4) { + double d9 = adouble[j4 * 4 + 3]; + if (!(d9 < 0.0D)) { + double d11 = adouble[j4 * 4 + 0]; + double d13 = adouble[j4 * 4 + 1]; + double d15 = adouble[j4 * 4 + 2]; + int k4 = Math.max(Mth.floor(d11 - d9), pX); + int l = Math.max(Mth.floor(d13 - d9), pY); + int i1 = Math.max(Mth.floor(d15 - d9), pZ); + int j1 = Math.max(Mth.floor(d11 + d9), k4); + int k1 = Math.max(Mth.floor(d13 + d9), l); + int l1 = Math.max(Mth.floor(d15 + d9), i1); + + for(int i2 = k4; i2 <= j1; ++i2) { + double d5 = ((double)i2 + 0.5D - d11) / d9; + if (d5 * d5 < 1.0D) { + for(int j2 = l; j2 <= k1; ++j2) { + double d6 = ((double)j2 + 0.5D - d13) / d9; + if (d5 * d5 + d6 * d6 < 1.0D) { + for(int k2 = i1; k2 <= l1; ++k2) { + double d7 = ((double)k2 + 0.5D - d15) / d9; + if (d5 * d5 + d6 * d6 + d7 * d7 < 1.0D && !pLevel.isOutsideBuildHeight(j2)) { + int l2 = i2 - pX + (j2 - pY) * pWidth + (k2 - pZ) * pWidth * pHeight; + if (!bitset.get(l2)) { + bitset.set(l2); + blockpos$mutableblockpos.set(i2, j2, k2); + if (pLevel.ensureCanWrite(blockpos$mutableblockpos)) { + LevelChunkSection levelchunksection = bulksectionaccess.getSection(blockpos$mutableblockpos); + if (levelchunksection != null) { + int i3 = SectionPos.sectionRelative(i2); + int j3 = SectionPos.sectionRelative(j2); + int k3 = SectionPos.sectionRelative(k2); + BlockState blockstate = levelchunksection.getBlockState(i3, j3, k3); + + for(OreConfiguration.TargetBlockState oreconfiguration$targetblockstate : pConfig.getTargetStates()) { + if (canPlaceOre(blockstate, bulksectionaccess::getBlockState, pRandom, pConfig, oreconfiguration$targetblockstate, blockpos$mutableblockpos)) { + levelchunksection.setBlockState(i3, j3, k3, oreconfiguration$targetblockstate.state, false); + ++i; + break; + } + } + } + } + } + } + } + } + } + } + } + } + } + } catch (Throwable throwable1) { + try { + bulksectionaccess.close(); + } catch (Throwable throwable) { + throwable1.addSuppressed(throwable); + } + + throw throwable1; + } + + bulksectionaccess.close(); + return i > 0; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/VanillaStyleOreFeature.java b/src/main/java/com/simibubi/create/foundation/worldgen/VanillaStyleOreFeature.java deleted file mode 100644 index 011ccda9d..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/VanillaStyleOreFeature.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.BitSet; -import java.util.Random; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.SectionPos; -import net.minecraft.util.Mth; -import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.BulkSectionAccess; -import net.minecraft.world.level.chunk.LevelChunkSection; -import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; - -public class VanillaStyleOreFeature extends OreFeatureBase { - - public static final VanillaStyleOreFeature INSTANCE = new VanillaStyleOreFeature(); - - public VanillaStyleOreFeature() { - setRegistryName("config_driven_ore"); - } - - // From OreFeature, slight adjustments - - public boolean place(FeaturePlaceContext pContext) { - - Random random = pContext.random(); - BlockPos blockpos = pContext.origin(); - WorldGenLevel worldgenlevel = pContext.level(); - ConfigDrivenOreConfiguration oreconfiguration = pContext.config(); - - float f = random.nextFloat() * (float) Math.PI; - float diameter = (float) oreconfiguration.getSize() / 8.0F; - int centeringOffset = Mth.ceil(((float) oreconfiguration.getSize() / 8.0F + 1.0F) / 2.0F); - double d0 = blockpos.getX() + Math.sin(f) * diameter; - double d1 = blockpos.getX() - Math.sin(f) * diameter; - double d2 = blockpos.getZ() + Math.cos(f) * diameter; - double d3 = blockpos.getZ() - Math.cos(f) * diameter; - double d4 = (blockpos.getY() + random.nextInt(3) - 2); - double d5 = (blockpos.getY() + random.nextInt(3) - 2); - int k = blockpos.getX() - Mth.ceil(diameter) - centeringOffset; - int l = blockpos.getY() - 2 - centeringOffset; - int i1 = blockpos.getZ() - Mth.ceil(diameter) - centeringOffset; - int j1 = 2 * (Mth.ceil(diameter) + centeringOffset); - int k1 = 2 * (2 + centeringOffset); - - for (int x = k; x <= k + j1; ++x) - for (int z = i1; z <= i1 + j1; ++z) - if (l <= worldgenlevel.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, x, z)) - return this.doPlace(worldgenlevel, random, oreconfiguration, d0, d1, d2, d3, d4, d5, k, l, i1, j1, - k1); - - return false; - } - - protected boolean doPlace(WorldGenLevel pLevel, Random pRandom, ConfigDrivenOreConfiguration pConfig, double pMinX, - double pMaxX, double pMinZ, double pMaxZ, double pMinY, double pMaxY, int pX, int pY, int pZ, int pWidth, - int pHeight) { - int i = 0; - BitSet bitset = new BitSet(pWidth * pHeight * pWidth); - BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); - int j = pConfig.getSize(); - double[] adouble = new double[j * 4]; - - for (int k = 0; k < j; ++k) { - float f = (float) k / (float) j; - double d0 = Mth.lerp(f, pMinX, pMaxX); - double d1 = Mth.lerp(f, pMinY, pMaxY); - double d2 = Mth.lerp(f, pMinZ, pMaxZ); - double d3 = pRandom.nextDouble() * j / 16.0D; - double d4 = ((Mth.sin((float) Math.PI * f) + 1.0F) * d3 + 1.0D) / 2.0D; - adouble[k * 4 + 0] = d0; - adouble[k * 4 + 1] = d1; - adouble[k * 4 + 2] = d2; - adouble[k * 4 + 3] = d4; - } - - for (int l3 = 0; l3 < j - 1; ++l3) { - if (adouble[l3 * 4 + 3] <= 0.0D) - continue; - for (int i4 = l3 + 1; i4 < j; ++i4) { - if (adouble[i4 * 4 + 3] <= 0.0D) - continue; - - double d8 = adouble[l3 * 4 + 0] - adouble[i4 * 4 + 0]; - double d10 = adouble[l3 * 4 + 1] - adouble[i4 * 4 + 1]; - double d12 = adouble[l3 * 4 + 2] - adouble[i4 * 4 + 2]; - double d14 = adouble[l3 * 4 + 3] - adouble[i4 * 4 + 3]; - if (d14 * d14 <= d8 * d8 + d10 * d10 + d12 * d12) - continue; - - if (d14 > 0.0D) - adouble[i4 * 4 + 3] = -1.0D; - else - adouble[l3 * 4 + 3] = -1.0D; - } - } - - BulkSectionAccess bulksectionaccess = new BulkSectionAccess(pLevel); - - try { - for (int j4 = 0; j4 < j; ++j4) { - double d9 = adouble[j4 * 4 + 3]; - if (d9 < 0.0D) - continue; - - double d11 = adouble[j4 * 4 + 0]; - double d13 = adouble[j4 * 4 + 1]; - double d15 = adouble[j4 * 4 + 2]; - int k4 = Math.max(Mth.floor(d11 - d9), pX); - int l = Math.max(Mth.floor(d13 - d9), pY); - int i1 = Math.max(Mth.floor(d15 - d9), pZ); - int j1 = Math.max(Mth.floor(d11 + d9), k4); - int k1 = Math.max(Mth.floor(d13 + d9), l); - int l1 = Math.max(Mth.floor(d15 + d9), i1); - - for (int i2 = k4; i2 <= j1; ++i2) { - double d5 = (i2 + 0.5D - d11) / d9; - if (d5 * d5 >= 1.0D) - continue; - for (int j2 = l; j2 <= k1; ++j2) { - double d6 = (j2 + 0.5D - d13) / d9; - if (d5 * d5 + d6 * d6 >= 1.0D) - continue; - for (int k2 = i1; k2 <= l1; ++k2) { - double d7 = (k2 + 0.5D - d15) / d9; - if (d5 * d5 + d6 * d6 + d7 * d7 >= 1.0D || pLevel.isOutsideBuildHeight(j2)) - continue; - - int l2 = i2 - pX + (j2 - pY) * pWidth + (k2 - pZ) * pWidth * pHeight; - if (bitset.get(l2)) - continue; - bitset.set(l2); - blockpos$mutableblockpos.set(i2, j2, k2); - if (!pLevel.ensureCanWrite(blockpos$mutableblockpos)) - continue; - LevelChunkSection levelchunksection = - bulksectionaccess.getSection(blockpos$mutableblockpos); - if (levelchunksection == null) - continue; - int i3 = SectionPos.sectionRelative(i2); - int j3 = SectionPos.sectionRelative(j2); - int k3 = SectionPos.sectionRelative(k2); - BlockState blockstate = levelchunksection.getBlockState(i3, j3, k3); - - for (OreConfiguration.TargetBlockState oreconfiguration$targetblockstate : pConfig.targetStates) { - if (!canPlaceOre(blockstate, bulksectionaccess::getBlockState, pRandom, pConfig, - oreconfiguration$targetblockstate, blockpos$mutableblockpos)) - continue; - levelchunksection.setBlockState(i3, j3, k3, oreconfiguration$targetblockstate.state, - false); - ++i; - break; - } - } - } - } - } - - } catch (Throwable throwable1) { - try { - bulksectionaccess.close(); - } catch (Throwable throwable) { - throwable1.addSuppressed(throwable); - } - - throw throwable1; - } - - bulksectionaccess.close(); - return i > 0; - } - -} From 544b9699d96d30c7f5d6714174a1076e7b16dbd6 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Fri, 5 Aug 2022 17:21:47 -0700 Subject: [PATCH 08/32] More worldgen tweaks - Pass RegistryAccess to builtin worldgen object creation methods - Do not cache builtin worldgen objects - Remove unused fluid layer code --- .../java/com/simibubi/create/AllFluids.java | 22 ++--------- src/main/java/com/simibubi/create/Create.java | 2 + .../com/simibubi/create/CreateClient.java | 1 - .../worldgen/AllOreFeatureConfigEntries.java | 4 +- .../worldgen/BuiltinRegistration.java | 5 ++- .../worldgen/OreFeatureConfigEntry.java | 38 +++++-------------- 6 files changed, 21 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/simibubi/create/AllFluids.java b/src/main/java/com/simibubi/create/AllFluids.java index 50e6ed263..275d61e06 100644 --- a/src/main/java/com/simibubi/create/AllFluids.java +++ b/src/main/java/com/simibubi/create/AllFluids.java @@ -10,15 +10,11 @@ import com.simibubi.create.content.palettes.AllPaletteStoneTypes; import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.FluidEntry; -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.ForgeFlowingFluid; @@ -28,17 +24,17 @@ public class AllFluids { public static final FluidEntry POTION = REGISTRATE.virtualFluid("potion", PotionFluidAttributes::new, PotionFluid::new) - .lang(f -> "fluid.create.potion", "Potion") + .lang("Potion") .register(); public static final FluidEntry TEA = REGISTRATE.virtualFluid("tea") - .lang(f -> "fluid.create.tea", "Builder's Tea") + .lang("Builder's Tea") .tag(AllTags.forgeFluidTag("tea")) .register(); public static final FluidEntry HONEY = REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new) - .lang(f -> "fluid.create.honey", "Honey") + .lang("Honey") .attributes(b -> b.viscosity(2000) .density(1400)) .properties(p -> p.levelDecreasePerBlock(2) @@ -54,7 +50,7 @@ public class AllFluids { public static final FluidEntry CHOCOLATE = REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new) - .lang(f -> "fluid.create.chocolate", "Chocolate") + .lang("Chocolate") .tag(AllTags.forgeFluidTag("chocolate")) .attributes(b -> b.viscosity(1500) .density(1400)) @@ -68,16 +64,6 @@ public class AllFluids { public static void register() {} - @OnlyIn(Dist.CLIENT) - public static void assignRenderLayers() {} - - @OnlyIn(Dist.CLIENT) - private static void makeTranslucent(FluidEntry entry) { - ForgeFlowingFluid fluid = entry.get(); - ItemBlockRenderTypes.setRenderLayer(fluid, RenderType.translucent()); - ItemBlockRenderTypes.setRenderLayer(fluid.getSource(), RenderType.translucent()); - } - @Nullable public static BlockState getLavaInteraction(FluidState fluidState) { Fluid fluid = fluidState.getType(); diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index bdfd20d23..3d985d579 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -38,6 +38,7 @@ import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; import com.simibubi.create.foundation.networking.AllPackets; import com.simibubi.create.foundation.utility.CreateRegistry; import com.simibubi.create.foundation.worldgen.AllFeatures; +import com.simibubi.create.foundation.worldgen.AllOreFeatureConfigEntries; import com.simibubi.create.foundation.worldgen.AllPlacementModifiers; import com.simibubi.create.foundation.worldgen.BuiltinRegistration; import com.tterrag.registrate.util.nullness.NonNullSupplier; @@ -112,6 +113,7 @@ public class Create { AllParticleTypes.register(modEventBus); AllStructureProcessorTypes.register(modEventBus); AllEntityDataSerializers.register(modEventBus); + AllOreFeatureConfigEntries.init(); AllFeatures.register(modEventBus); AllPlacementModifiers.register(modEventBus); BuiltinRegistration.register(modEventBus); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 3860b9395..d20076543 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -84,7 +84,6 @@ public class CreateClient { BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); AllKeys.register(); - // AllFluids.assignRenderLayers(); AllBlockPartials.init(); AllStitchedTextures.init(); diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java index e0e778ed3..ffdb25906 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/AllOreFeatureConfigEntries.java @@ -107,7 +107,7 @@ public class AllOreFeatureConfigEntries { for (Map.Entry entry : OreFeatureConfigEntry.ALL.entrySet()) { DatagenExtension datagenExt = entry.getValue().datagenExt(); if (datagenExt != null) { - configuredFeatures.put(entry.getKey(), datagenExt.getConfiguredFeature()); + configuredFeatures.put(entry.getKey(), datagenExt.createConfiguredFeature(registryAccess)); } } @@ -122,7 +122,7 @@ public class AllOreFeatureConfigEntries { for (Map.Entry entry : OreFeatureConfigEntry.ALL.entrySet()) { DatagenExtension datagenExt = entry.getValue().datagenExt(); if (datagenExt != null) { - placedFeatures.put(entry.getKey(), datagenExt.getPlacedFeature()); + placedFeatures.put(entry.getKey(), datagenExt.createPlacedFeature(registryAccess)); } } diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java b/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java index df332d2a0..5ad6a320f 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/BuiltinRegistration.java @@ -6,6 +6,7 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.worldgen.OreFeatureConfigEntry.DatagenExtension; import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; @@ -22,8 +23,8 @@ public class BuiltinRegistration { if (id.getNamespace().equals(Create.ID)) { DatagenExtension datagenExt = entry.getValue().datagenExt(); if (datagenExt != null) { - CONFIGURED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.getConfiguredFeature()); - PLACED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.getPlacedFeature()); + CONFIGURED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.createConfiguredFeature(BuiltinRegistries.ACCESS)); + PLACED_FEATURE_REGISTER.register(id.getPath(), () -> datagenExt.createPlacedFeature(BuiltinRegistries.ACCESS)); } } } diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java b/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java index 0ef2b7582..0da0efab1 100644 --- a/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java +++ b/src/main/java/com/simibubi/create/foundation/worldgen/OreFeatureConfigEntry.java @@ -17,6 +17,7 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import net.minecraft.core.Holder; import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -140,19 +141,12 @@ public class OreFeatureConfigEntry extends ConfigBase { } public abstract class DatagenExtension { - protected ConfiguredFeature configuredFeature; - protected PlacedFeature placedFeature; + public abstract ConfiguredFeature createConfiguredFeature(RegistryAccess registryAccess); - public abstract ConfiguredFeature getConfiguredFeature(); - - public PlacedFeature getPlacedFeature() { - if (placedFeature != null) { - return placedFeature; - } - - placedFeature = new PlacedFeature(Holder.direct(getConfiguredFeature()), List.of(new ConfigDrivenPlacement(OreFeatureConfigEntry.this))); - - return placedFeature; + public PlacedFeature createPlacedFeature(RegistryAccess registryAccess) { + Registry> featureRegistry = registryAccess.registryOrThrow(Registry.CONFIGURED_FEATURE_REGISTRY); + Holder> featureHolder = featureRegistry.getOrCreateHolder(ResourceKey.create(Registry.CONFIGURED_FEATURE_REGISTRY, id)); + return new PlacedFeature(featureHolder, List.of(new ConfigDrivenPlacement(OreFeatureConfigEntry.this))); } public OreFeatureConfigEntry parent() { @@ -183,11 +177,7 @@ public class OreFeatureConfigEntry extends ConfigBase { } @Override - public ConfiguredFeature getConfiguredFeature() { - if (configuredFeature != null) { - return configuredFeature; - } - + public ConfiguredFeature createConfiguredFeature(RegistryAccess registryAccess) { List targetStates = new ArrayList<>(); if (block != null) targetStates.add(OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, block.get() @@ -200,9 +190,7 @@ public class OreFeatureConfigEntry extends ConfigBase { .defaultBlockState())); ConfigDrivenOreFeatureConfiguration config = new ConfigDrivenOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, targetStates); - configuredFeature = new ConfiguredFeature<>(AllFeatures.STANDARD_ORE.get(), config); - - return configuredFeature; + return new ConfiguredFeature<>(AllFeatures.STANDARD_ORE.get(), config); } } @@ -215,19 +203,13 @@ public class OreFeatureConfigEntry extends ConfigBase { } @Override - public ConfiguredFeature getConfiguredFeature() { - if (configuredFeature != null) { - return configuredFeature; - } - + public ConfiguredFeature createConfiguredFeature(RegistryAccess registryAccess) { List layerPatterns = this.layerPatterns.stream() .map(NonNullSupplier::get) .toList(); ConfigDrivenLayeredOreFeatureConfiguration config = new ConfigDrivenLayeredOreFeatureConfiguration(OreFeatureConfigEntry.this, 0, layerPatterns); - configuredFeature = new ConfiguredFeature<>(AllFeatures.LAYERED_ORE.get(), config); - - return configuredFeature; + return new ConfiguredFeature<>(AllFeatures.LAYERED_ORE.get(), config); } } } From 6c0af5f83f9ba576d215c3e7e26298cb605da02f Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Sat, 6 Aug 2022 19:37:19 -0700 Subject: [PATCH 09/32] Fix fluid pipe culling - Rework PipeAttachmentModel to not rely on cullfaces for extra information - Split connector away from rim/drain models into separate models - Remove none pipe models --- build.gradle | 8 ++ src/generated/resources/.cache/cache | 5 +- .../assets/create/blockstates/fluid_pipe.json | 81 ------------------- .../models/block/fluid_pipe/none_x.json | 37 --------- .../models/block/fluid_pipe/none_y.json | 37 --------- .../models/block/fluid_pipe/none_z.json | 37 --------- .../com/simibubi/create/AllBlockPartials.java | 8 +- .../java/com/simibubi/create/AllBlocks.java | 12 +-- .../fluids/FluidTransportBehaviour.java | 27 ++++++- .../fluids/PipeAttachmentModel.java | 54 +++++-------- .../fluids/pipes/FluidPipeTileEntity.java | 6 +- .../fluids/pipes/StraightPipeTileEntity.java | 4 +- .../create/foundation/data/BlockStateGen.java | 16 +--- .../block/fluid_pipe/connection/down.json | 8 +- .../block/fluid_pipe/connection/east.json | 8 +- .../block/fluid_pipe/connection/north.json | 8 +- .../block/fluid_pipe/connection/south.json | 8 +- .../block/fluid_pipe/connection/up.json | 8 +- .../block/fluid_pipe/connection/west.json | 8 +- .../models/block/fluid_pipe/drain/down.json | 14 +--- .../models/block/fluid_pipe/drain/east.json | 14 +--- .../models/block/fluid_pipe/drain/north.json | 15 +--- .../models/block/fluid_pipe/drain/south.json | 15 +--- .../models/block/fluid_pipe/drain/up.json | 14 +--- .../models/block/fluid_pipe/drain/west.json | 14 +--- .../models/block/fluid_pipe/rim/down.json | 12 +-- .../models/block/fluid_pipe/rim/east.json | 12 +-- .../models/block/fluid_pipe/rim/north.json | 13 +-- .../models/block/fluid_pipe/rim/south.json | 13 +-- .../models/block/fluid_pipe/rim/up.json | 12 +-- .../models/block/fluid_pipe/rim/west.json | 12 +-- .../block/fluid_pipe/rim_connector/down.json | 20 +++++ .../block/fluid_pipe/rim_connector/east.json | 20 +++++ .../block/fluid_pipe/rim_connector/north.json | 21 +++++ .../block/fluid_pipe/rim_connector/south.json | 21 +++++ .../block/fluid_pipe/rim_connector/up.json | 20 +++++ .../block/fluid_pipe/rim_connector/west.json | 20 +++++ 37 files changed, 233 insertions(+), 429 deletions(-) delete mode 100644 src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json delete mode 100644 src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json delete mode 100644 src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json create mode 100644 src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/down.json create mode 100644 src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/east.json create mode 100644 src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/north.json create mode 100644 src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/south.json create mode 100644 src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/up.json create mode 100644 src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/west.json diff --git a/build.gradle b/build.gradle index 228483274..d84384f8d 100644 --- a/build.gradle +++ b/build.gradle @@ -128,6 +128,13 @@ repositories { //location of the maven for curios api url = "https://maven.theillusivec4.top/" } + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + content { + includeGroup "maven.modrinth" + } + } } dependencies { @@ -161,6 +168,7 @@ dependencies { // runtimeOnly fg.deobf("vazkii.quark:Quark:r2.0-212.984") // runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.5-1.6.115") // runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.1.1.252") + // runtimeOnly fg.deobf("maven.modrinth:rubidium:0.5.3") // https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497 // Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 306a249ea..19f04fff8 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -209,7 +209,7 @@ d13940ed213d7acbc6ebe3bdd21175ef89e4d613 assets/create/blockstates/encased_fluid 8a87e42262f3f161b0e6fe10b795ff00eccf768f assets/create/blockstates/exposed_copper_tile_stairs.json fb41aa1a0828c9256b3f886fdcb55bb54252ba09 assets/create/blockstates/exposed_copper_tiles.json 7a2259a71fbbbb9491fc1e6a9c935bc9fef14042 assets/create/blockstates/fake_track.json -bb74442749b6bd688d45d919b541dbd66bbeb18a assets/create/blockstates/fluid_pipe.json +dd6dadfeb65c4a4c4d1dc92516c411355e90dcca assets/create/blockstates/fluid_pipe.json f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json 5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json 95b0775bf4d619ca5b0a42dbdc47c6f2c15d7b3d assets/create/blockstates/flywheel.json @@ -1047,9 +1047,6 @@ abb8810d05128749bd7ffbbbd9d7c425886d8ef3 assets/create/models/block/fluid_pipe/l eefb0e3b0ed7b6d5a99ff715d4aae42db4133343 assets/create/models/block/fluid_pipe/lu_x.json a55a9ef109c4166c767459f88bce4f5c614fe13e assets/create/models/block/fluid_pipe/lu_y.json d933b8a9e5d166cb6b250eb8f359180872daa276 assets/create/models/block/fluid_pipe/lu_z.json -8d2a247dcb09c4bc07c2c88ceaebc45f2f29ccaf assets/create/models/block/fluid_pipe/none_x.json -817252a6729ca8dc52753de47dbfe0b30c33dfa8 assets/create/models/block/fluid_pipe/none_y.json -ddba92d010016a0147ceecc30a30c9c1622d3daa assets/create/models/block/fluid_pipe/none_z.json 968fc1c2d555592134554bd16abb0b38629a76dd assets/create/models/block/fluid_pipe/r_x.json c8fee17269f33f5e55ff0b019e535e9506dd964b assets/create/models/block/fluid_pipe/r_y.json f63e221319b2703083e55f4034ed2d7b7a79a5da assets/create/models/block/fluid_pipe/r_z.json diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index b781259c3..ca0117aec 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -1,53 +1,5 @@ { "multipart": [ - { - "when": { - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/connection/down" - } - }, - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/connection/up" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/connection/north" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/connection/south" - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/connection/west" - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/connection/east" - } - }, { "when": { "up": "true", @@ -158,17 +110,6 @@ "model": "create:block/fluid_pipe/r_x" } }, - { - "when": { - "up": "false", - "south": "false", - "north": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/none_x" - } - }, { "when": { "south": "true", @@ -279,17 +220,6 @@ "model": "create:block/fluid_pipe/r_y" } }, - { - "when": { - "south": "false", - "east": "false", - "west": "false", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/none_y" - } - }, { "when": { "up": "true", @@ -399,17 +329,6 @@ "apply": { "model": "create:block/fluid_pipe/r_z" } - }, - { - "when": { - "up": "false", - "east": "false", - "west": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/none_z" - } } ] } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json deleted file mode 100644 index 19fc21af8..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ], - "faces": { - "west": { - "texture": "#0", - "uv": [ - 16.0, - 8.0, - 12.0, - 12.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 12.0, - 8.0, - 16.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json deleted file mode 100644 index 678f90c01..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ], - "faces": { - "down": { - "texture": "#0", - "uv": [ - 16.0, - 8.0, - 12.0, - 12.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 16.0, - 12.0, - 12.0, - 8.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json deleted file mode 100644 index aa3608193..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ], - "faces": { - "north": { - "texture": "#0", - "uv": [ - 12.0, - 8.0, - 16.0, - 12.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 16.0, - 8.0, - 12.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 674af4f64..88443bdc2 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -161,16 +161,14 @@ public class AllBlockPartials { ; - public static final Map> PIPE_ATTACHMENTS = - new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.class); + public static final Map> PIPE_ATTACHMENTS = + new EnumMap<>(FluidTransportBehaviour.AttachmentTypes.ComponentPartials.class); public static final Map METAL_GIRDER_BRACKETS = new EnumMap<>(Direction.class); public static final Map TOOLBOX_LIDS = new EnumMap<>(DyeColor.class); static { - for (FluidTransportBehaviour.AttachmentTypes type : FluidTransportBehaviour.AttachmentTypes.values()) { - if (!type.hasModel()) - continue; + for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials type : FluidTransportBehaviour.AttachmentTypes.ComponentPartials.values()) { Map map = new HashMap<>(); for (Direction d : Iterate.directions) { String asId = Lang.asId(type.name()); diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 1ebce4f34..1fd9d6434 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -812,7 +812,7 @@ public class AllBlocks { .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.pipe()) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) + .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .item() .transform(customItemModel()) .register(); @@ -827,7 +827,7 @@ public class AllBlocks { .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING, (s, f) -> !s.getValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f))))) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) + .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .loot((p, b) -> p.dropOther(b, FLUID_PIPE.get())) .register(); @@ -849,7 +849,7 @@ public class AllBlocks { .build(); }, BlockStateProperties.WATERLOGGED); }) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent)) + .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .loot((p, b) -> p.dropOther(b, FLUID_PIPE.get())) .register(); @@ -858,7 +858,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.STONE)) .transform(pickaxeOnly()) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) + .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .transform(BlockStressDefaults.setImpact(4.0)) .item() .transform(customItemModel()) @@ -870,7 +870,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) .blockstate(new SmartFluidPipeGenerator()::generate) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::transparent)) + .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .item() .transform(customItemModel()) .register(); @@ -881,7 +881,7 @@ public class AllBlocks { .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed"))) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::opaque)) + .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .item() .transform(customItemModel()) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java index 92e200e36..87a6eef0f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java @@ -256,11 +256,30 @@ public abstract class FluidTransportBehaviour extends TileEntityBehaviour { return AttachmentTypes.RIM; } - public static enum AttachmentTypes { - NONE, RIM, DRAIN; + public enum AttachmentTypes { + NONE, + CONNECTION(ComponentPartials.CONNECTION), + RIM(ComponentPartials.RIM_CONNECTOR, ComponentPartials.RIM), + PARTIAL_RIM(ComponentPartials.RIM), + DRAIN(ComponentPartials.RIM_CONNECTOR, ComponentPartials.DRAIN), + PARTIAL_DRAIN(ComponentPartials.DRAIN); - public boolean hasModel() { - return this != NONE; + public final ComponentPartials[] partials; + + AttachmentTypes(ComponentPartials... partials) { + this.partials = partials; + } + + public AttachmentTypes withoutConnector() { + if (this == AttachmentTypes.RIM) + return AttachmentTypes.PARTIAL_RIM; + if (this == AttachmentTypes.DRAIN) + return AttachmentTypes.PARTIAL_DRAIN; + return this; + } + + public enum ComponentPartials { + CONNECTION, RIM_CONNECTOR, RIM, DRAIN; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java index c4ab64276..bc6056670 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java @@ -7,6 +7,7 @@ import java.util.Random; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.AttachmentTypes; +import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.AttachmentTypes.ComponentPartials; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; import com.simibubi.create.foundation.block.connected.BakedModelWrapperWithData; @@ -27,19 +28,9 @@ import net.minecraftforge.client.model.data.ModelProperty; public class PipeAttachmentModel extends BakedModelWrapperWithData { private static final ModelProperty PIPE_PROPERTY = new ModelProperty<>(); - private boolean hideAttachmentConnector; - public static PipeAttachmentModel opaque(BakedModel template) { - return new PipeAttachmentModel(template, false); - } - - public static PipeAttachmentModel transparent(BakedModel template) { - return new PipeAttachmentModel(template, true); - } - - public PipeAttachmentModel(BakedModel template, boolean hideAttachmentConnector) { + public PipeAttachmentModel(BakedModel template) { super(template); - this.hideAttachmentConnector = hideAttachmentConnector; } @Override @@ -50,7 +41,7 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { if (transport != null) for (Direction d : Iterate.directions) - data.putRim(d, transport.getRenderedRimAttachment(world, pos, state, d)); + data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d)); if (bracket != null) data.putBracket(bracket.getBracket()); @@ -63,7 +54,7 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { List quads = super.getQuads(state, side, rand, data); if (data.hasProperty(PIPE_PROPERTY)) { PipeModelData pipeData = data.getData(PIPE_PROPERTY); - quads = side != null && pipeData.hasRim(side) ? new ArrayList<>() : new ArrayList<>(quads); + quads = new ArrayList<>(quads); addQuads(quads, state, side, rand, data, pipeData); } return quads; @@ -74,27 +65,28 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { BakedModel bracket = pipeData.getBracket(); if (bracket != null) quads.addAll(bracket.getQuads(state, side, rand, data)); - if (hideAttachmentConnector && side == Direction.UP) - return; - for (Direction d : Iterate.directions) - if (pipeData.hasRim(d)) - quads.addAll(AllBlockPartials.PIPE_ATTACHMENTS.get(pipeData.getRim(d)) + for (Direction d : Iterate.directions) { + AttachmentTypes type = pipeData.getAttachment(d); + for (ComponentPartials partial : type.partials) { + quads.addAll(AllBlockPartials.PIPE_ATTACHMENTS.get(partial) .get(d) .get() .getQuads(state, side, rand, data)); + } + } if (pipeData.isEncased()) quads.addAll(AllBlockPartials.FLUID_PIPE_CASING.get() .getQuads(state, side, rand, data)); } private static class PipeModelData { - AttachmentTypes[] rims; - boolean encased; - BakedModel bracket; + private AttachmentTypes[] attachments; + private boolean encased; + private BakedModel bracket; public PipeModelData() { - rims = new AttachmentTypes[6]; - Arrays.fill(rims, AttachmentTypes.NONE); + attachments = new AttachmentTypes[6]; + Arrays.fill(attachments, AttachmentTypes.NONE); } public void putBracket(BlockState state) { @@ -109,22 +101,18 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { return bracket; } - public void putRim(Direction face, AttachmentTypes rim) { - rims[face.get3DDataValue()] = rim; + public void putAttachment(Direction face, AttachmentTypes rim) { + attachments[face.get3DDataValue()] = rim; + } + + public AttachmentTypes getAttachment(Direction face) { + return attachments[face.get3DDataValue()]; } public void setEncased(boolean encased) { this.encased = encased; } - public boolean hasRim(Direction face) { - return rims[face.get3DDataValue()] != AttachmentTypes.NONE; - } - - public AttachmentTypes getRim(Direction face) { - return rims[face.get3DDataValue()]; - } - public boolean isEncased() { return encased; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java index e3a45f27b..d3a238a7a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java @@ -68,11 +68,13 @@ public class FluidPipeTileEntity extends SmartTileEntity implements ITransformab TileEntityBehaviour.get(world, offsetPos, FluidTransportBehaviour.TYPE); if (pipeBehaviour != null) if (pipeBehaviour.canHaveFlowToward(otherState, direction.getOpposite())) - return AttachmentTypes.NONE; + return AttachmentTypes.CONNECTION; } if (attachment == AttachmentTypes.RIM && !FluidPipeBlock.shouldDrawRim(world, pos, state, direction)) - return AttachmentTypes.NONE; + return AttachmentTypes.CONNECTION; + if (attachment == AttachmentTypes.NONE && state.getValue(FluidPipeBlock.PROPERTY_BY_DIRECTION.get(direction))) + return AttachmentTypes.CONNECTION; return attachment; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java index bc4fa8d67..ec4101a09 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java @@ -51,7 +51,7 @@ public class StraightPipeTileEntity extends SmartTileEntity { if (attachment == AttachmentTypes.RIM && state.getBlock() instanceof FluidValveBlock) return AttachmentTypes.NONE; if (attachment == AttachmentTypes.RIM && FluidPipeBlock.isPipe(otherState)) - return AttachmentTypes.RIM; + return AttachmentTypes.PARTIAL_RIM; if (axis == otherAxis && axis != null) return AttachmentTypes.NONE; @@ -59,7 +59,7 @@ public class StraightPipeTileEntity extends SmartTileEntity { && FluidValveBlock.getPipeAxis(otherState) == direction.getAxis()) return AttachmentTypes.NONE; - return attachment; + return attachment.withoutConnector(); } } diff --git a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java index 8b2619a02..e11bb2a02 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -425,9 +425,7 @@ public class BlockStateGen { String L = "l"; String R = "r"; - String NONE = "none"; - - List orientations = ImmutableList.of(LU, RU, LD, RD, LR, UD, U, D, L, R, NONE); + List orientations = ImmutableList.of(LU, RU, LD, RD, LR, UD, U, D, L, R); Map> uvs = ImmutableMap.>builder() .put(LU, Pair.of(12, 4)) .put(RU, Pair.of(8, 4)) @@ -439,7 +437,6 @@ public class BlockStateGen { .put(D, Pair.of(0, 0)) .put(L, Pair.of(4, 0)) .put(R, Pair.of(0, 4)) - .put(NONE, Pair.of(12, 8)) .build(); Map coreTemplates = new IdentityHashMap<>(); @@ -485,16 +482,6 @@ public class BlockStateGen { } MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); - for (Direction d : Iterate.directions) { - ModelFile end = p.models() - .getExistingFile(p.modLoc(path + "/connection/" + d.getSerializedName())); - builder.part() - .modelFile(end) - .addModel() - .condition(FluidPipeBlock.PROPERTY_BY_DIRECTION.get(d), true) - .end(); - } - for (Axis axis : Iterate.axes) { putPart(coreModels, builder, axis, LU, true, false, true, false); putPart(coreModels, builder, axis, RU, true, false, false, true); @@ -506,7 +493,6 @@ public class BlockStateGen { putPart(coreModels, builder, axis, LR, false, false, true, true); putPart(coreModels, builder, axis, L, false, false, true, false); putPart(coreModels, builder, axis, R, false, false, false, true); - putPart(coreModels, builder, axis, NONE, false, false, false, false); } }; } diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/connection/down.json b/src/main/resources/assets/create/models/block/fluid_pipe/connection/down.json index c2096c835..a5c404bbe 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/connection/down.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/connection/down.json @@ -11,10 +11,10 @@ "to": [12, 4, 12], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]}, "faces": { - "north": {"uv": [0, 6, 4, 8], "texture": "#0", "cullface": "down"}, - "east": {"uv": [0, 6, 4, 8], "texture": "#0", "cullface": "down"}, - "south": {"uv": [4, 6, 0, 8], "texture": "#0", "cullface": "down"}, - "west": {"uv": [4, 6, 0, 8], "texture": "#0", "cullface": "down"} + "north": {"uv": [0, 6, 4, 8], "texture": "#0"}, + "east": {"uv": [0, 6, 4, 8], "texture": "#0"}, + "south": {"uv": [4, 6, 0, 8], "texture": "#0"}, + "west": {"uv": [4, 6, 0, 8], "texture": "#0"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/connection/east.json b/src/main/resources/assets/create/models/block/fluid_pipe/connection/east.json index a423068c9..f41e9f67b 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/connection/east.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/connection/east.json @@ -11,10 +11,10 @@ "to": [16, 12, 12], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]}, "faces": { - "north": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "east"}, - "south": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "east"}, - "up": {"uv": [4, 0, 0, 2], "rotation": 90, "texture": "#0", "cullface": "east"}, - "down": {"uv": [4, 6, 0, 8], "rotation": 270, "texture": "#0", "cullface": "east"} + "north": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4, 0, 0, 2], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4, 6, 0, 8], "rotation": 270, "texture": "#0"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/connection/north.json b/src/main/resources/assets/create/models/block/fluid_pipe/connection/north.json index fc419689d..f8afab833 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/connection/north.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/connection/north.json @@ -11,10 +11,10 @@ "to": [12, 12, 4], "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 0]}, "faces": { - "east": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "north"}, - "west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "north"}, - "up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0", "cullface": "north"}, - "down": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0", "cullface": "north"} + "east": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/connection/south.json b/src/main/resources/assets/create/models/block/fluid_pipe/connection/south.json index 47efd545a..84fcda0a0 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/connection/south.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/connection/south.json @@ -11,10 +11,10 @@ "to": [12, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 0]}, "faces": { - "east": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "south"}, - "west": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "south"}, - "up": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0", "cullface": "south"}, - "down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0", "cullface": "south"} + "east": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#0"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/connection/up.json b/src/main/resources/assets/create/models/block/fluid_pipe/connection/up.json index 91b453be6..7b6830c42 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/connection/up.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/connection/up.json @@ -11,10 +11,10 @@ "to": [12, 16, 12], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]}, "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#0", "cullface": "up"}, - "east": {"uv": [0, 0, 4, 2], "texture": "#0", "cullface": "up"}, - "south": {"uv": [4, 0, 0, 2], "texture": "#0", "cullface": "up"}, - "west": {"uv": [4, 0, 0, 2], "texture": "#0", "cullface": "up"} + "north": {"uv": [0, 0, 4, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 2], "texture": "#0"}, + "south": {"uv": [4, 0, 0, 2], "texture": "#0"}, + "west": {"uv": [4, 0, 0, 2], "texture": "#0"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/connection/west.json b/src/main/resources/assets/create/models/block/fluid_pipe/connection/west.json index 3955a86f5..e28c729d2 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/connection/west.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/connection/west.json @@ -11,10 +11,10 @@ "to": [4, 12, 12], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, -16]}, "faces": { - "north": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0", "cullface": "west"}, - "south": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0", "cullface": "west"}, - "up": {"uv": [4, 6, 0, 8], "rotation": 90, "texture": "#0", "cullface": "west"}, - "down": {"uv": [4, 0, 0, 2], "rotation": 270, "texture": "#0", "cullface": "west"} + "north": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4, 6, 0, 8], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4, 0, 0, 2], "rotation": 270, "texture": "#0"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json index 215dca735..bae7d7b34 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json @@ -15,7 +15,7 @@ "east": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"}, "south": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"}, "west": {"uv": [12, 8, 13.5, 11], "rotation": 90, "texture": "#0"}, - "down": {"uv": [13, 8, 16, 11], "rotation": 90, "texture": "#0"} + "down": {"uv": [13, 8, 16, 11], "rotation": 90, "texture": "#0", "cullface": "down"} } }, { @@ -28,17 +28,7 @@ "south": {"uv": [4, 8, 9, 9.5], "rotation": 180, "texture": "#0"}, "west": {"uv": [9, 9.5, 4, 8], "texture": "#0"}, "up": {"uv": [6, 11, 11, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [4, 2, 4], - "to": [12, 4, 12], - "faces": { - "north": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"}, - "east": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"}, - "south": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"}, - "west": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"} + "down": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0", "cullface": "down"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json index c940b6717..2d03133b2 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json @@ -6,23 +6,13 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [12, 4, 4], - "to": [14, 12, 12], - "faces": { - "north": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "south": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [4, 8, 0, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "down": {"uv": [4, 9, 0, 10], "rotation": 270, "texture": "#0", "cullface": "up"} - } - }, { "from": [16.95, 4.95, 4.95], "to": [19.95, 11.05, 11.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [12, 8, 13.5, 11], "rotation": 180, "texture": "#0"}, - "east": {"uv": [13, 8, 16, 11], "texture": "#0"}, + "east": {"uv": [13, 8, 16, 11], "texture": "#0", "cullface": "east"}, "south": {"uv": [12, 8, 13.5, 11], "texture": "#0"}, "up": {"uv": [12, 8, 13.5, 11], "texture": "#0"}, "down": {"uv": [12, 8, 13.5, 11], "texture": "#0"} @@ -34,7 +24,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [9, 9.5, 4, 8], "rotation": 90, "texture": "#0"}, - "east": {"uv": [11, 11, 16, 16], "texture": "#0"}, + "east": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "east"}, "south": {"uv": [4, 8, 9, 9.5], "rotation": 90, "texture": "#0"}, "west": {"uv": [6, 11, 11, 16], "texture": "#0"}, "up": {"uv": [4, 8, 9, 9.5], "rotation": 90, "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json index 38d079e32..dc99b2a3c 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json @@ -6,23 +6,12 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [4, 4, 2], - "to": [12, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"} - } - }, { "from": [2.95, 2.95, -0.95], "to": [13.05, 13.05, 2], "rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]}, "faces": { - "north": {"uv": [11, 11, 16, 16], "texture": "#0"}, + "north": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "north"}, "east": {"uv": [4, 8, 9, 9.5], "rotation": 90, "texture": "#0"}, "south": {"uv": [6, 11, 11, 16], "texture": "#0"}, "west": {"uv": [9, 9.5, 4, 8], "rotation": 90, "texture": "#0"}, @@ -35,7 +24,7 @@ "to": [11.05, 11.05, -0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]}, "faces": { - "north": {"uv": [13, 8, 16, 11], "texture": "#0"}, + "north": {"uv": [13, 8, 16, 11], "texture": "#0", "cullface": "north"}, "east": {"uv": [12, 8, 13.5, 11], "texture": "#0"}, "west": {"uv": [12, 8, 13.5, 11], "rotation": 180, "texture": "#0"}, "up": {"uv": [12, 8, 13.5, 11], "rotation": 270, "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json index 08d80349e..e3b02dd89 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json @@ -6,24 +6,13 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [4, 4, 12], - "to": [12, 12, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"} - } - }, { "from": [4.95, 4.95, 16.95], "to": [11.05, 11.05, 19.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 34, 8]}, "faces": { "east": {"uv": [13.5, 8, 12, 11], "texture": "#0"}, - "south": {"uv": [16, 8, 13, 11], "texture": "#0"}, + "south": {"uv": [16, 8, 13, 11], "texture": "#0", "cullface": "south"}, "west": {"uv": [13.5, 8, 12, 11], "rotation": 180, "texture": "#0"}, "up": {"uv": [13.5, 8, 12, 11], "rotation": 270, "texture": "#0"}, "down": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"} @@ -36,7 +25,7 @@ "faces": { "north": {"uv": [11, 11, 6, 16], "texture": "#0"}, "east": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"}, - "south": {"uv": [16, 11, 11, 16], "texture": "#0"}, + "south": {"uv": [16, 11, 11, 16], "texture": "#0", "cullface": "south"}, "west": {"uv": [9, 8, 4, 9.5], "rotation": 90, "texture": "#0"}, "up": {"uv": [4, 9.5, 9, 8], "texture": "#0"}, "down": {"uv": [9, 8, 4, 9.5], "texture": "#0"} diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json index dce053e99..e521c5d40 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json @@ -6,16 +6,6 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [4, 12, 4], - "to": [12, 14, 12], - "faces": { - "north": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"}, - "east": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"}, - "south": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"}, - "west": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"} - } - }, { "from": [2.95, 14, 2.95], "to": [13.05, 16.95, 13.05], @@ -25,7 +15,7 @@ "east": {"uv": [4, 9.5, 9, 8], "rotation": 180, "texture": "#0"}, "south": {"uv": [4, 9.5, 9, 8], "rotation": 180, "texture": "#0"}, "west": {"uv": [9, 8, 4, 9.5], "texture": "#0"}, - "up": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#0", "cullface": "up"}, "down": {"uv": [11, 11, 6, 16], "rotation": 90, "texture": "#0"} } }, @@ -38,7 +28,7 @@ "east": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"}, "south": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"}, "west": {"uv": [13.5, 8, 12, 11], "rotation": 90, "texture": "#0"}, - "up": {"uv": [16, 8, 13, 11], "rotation": 90, "texture": "#0"} + "up": {"uv": [16, 8, 13, 11], "rotation": 90, "texture": "#0", "cullface": "up"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json index d1cf0d2ff..0fc04344a 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json @@ -6,16 +6,6 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [2, 4, 4], - "to": [4, 12, 12], - "faces": { - "north": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "south": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [4, 9, 0, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "down": {"uv": [4, 8, 0, 9], "rotation": 270, "texture": "#0", "cullface": "up"} - } - }, { "from": [-0.95, 2.95, 2.95], "to": [2, 13.05, 13.05], @@ -24,7 +14,7 @@ "north": {"uv": [9, 8, 4, 9.5], "rotation": 90, "texture": "#0"}, "east": {"uv": [11, 11, 6, 16], "texture": "#0"}, "south": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"}, - "west": {"uv": [16, 11, 11, 16], "texture": "#0"}, + "west": {"uv": [16, 11, 11, 16], "texture": "#0", "cullface": "west"}, "up": {"uv": [4, 9.5, 9, 8], "rotation": 90, "texture": "#0"}, "down": {"uv": [9, 8, 4, 9.5], "rotation": 270, "texture": "#0"} } @@ -36,7 +26,7 @@ "faces": { "north": {"uv": [13.5, 8, 12, 11], "rotation": 180, "texture": "#0"}, "south": {"uv": [13.5, 8, 12, 11], "texture": "#0"}, - "west": {"uv": [16, 8, 13, 11], "texture": "#0"}, + "west": {"uv": [16, 8, 13, 11], "texture": "#0", "cullface": "west"}, "up": {"uv": [13.5, 8, 12, 11], "texture": "#0"}, "down": {"uv": [13.5, 8, 12, 11], "texture": "#0"} } diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json index 25db0a359..0548e16b1 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json @@ -6,16 +6,6 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [4, 2, 4], - "to": [12, 4, 12], - "faces": { - "north": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"}, - "east": {"uv": [0, 9, 4, 10], "texture": "#0", "cullface": "up"}, - "south": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"}, - "west": {"uv": [4, 9, 0, 10], "texture": "#0", "cullface": "up"} - } - }, { "from": [3, 0, 3], "to": [13, 2, 13], @@ -25,7 +15,7 @@ "south": {"uv": [10.5, 11, 11.5, 16], "rotation": 90, "texture": "#0"}, "west": {"uv": [10.5, 11, 11.5, 16], "rotation": 90, "texture": "#0"}, "up": {"uv": [6, 11, 11, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [11, 11, 16, 16], "rotation": 270, "texture": "#0"} + "down": {"uv": [11, 11, 16, 16], "rotation": 270, "texture": "#0", "cullface": "down"} } } ] diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json index dd1a39dd6..6267b7e7b 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json @@ -6,22 +6,12 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [12, 4, 4], - "to": [14, 12, 12], - "faces": { - "north": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "south": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [4, 8, 0, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "down": {"uv": [4, 9, 0, 10], "rotation": 270, "texture": "#0", "cullface": "up"} - } - }, { "from": [14, 3, 3], "to": [16, 13, 13], "faces": { "north": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"}, - "east": {"uv": [11, 11, 16, 16], "texture": "#0"}, + "east": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "east"}, "south": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"}, "west": {"uv": [6, 11, 11, 16], "texture": "#0"}, "up": {"uv": [11.5, 16, 10.5, 11], "rotation": 180, "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json index 37ca40ae8..64aa7fc57 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json @@ -6,23 +6,12 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [4, 4, 2], - "to": [12, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"} - } - }, { "from": [3, 3, 0], "to": [13, 13, 2], "rotation": {"angle": 0, "axis": "y", "origin": [8, 28, 8]}, "faces": { - "north": {"uv": [11, 11, 16, 16], "texture": "#0"}, + "north": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "north"}, "east": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"}, "south": {"uv": [6, 11, 11, 16], "texture": "#0"}, "west": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json index aca79f871..60e2628b8 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json @@ -6,17 +6,6 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [4, 4, 12], - "to": [12, 12, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0", "cullface": "up"} - } - }, { "from": [3, 3, 14], "to": [13, 13, 16], @@ -24,7 +13,7 @@ "faces": { "north": {"uv": [6, 11, 11, 16], "texture": "#0"}, "east": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"}, - "south": {"uv": [11, 11, 16, 16], "texture": "#0"}, + "south": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "south"}, "west": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"}, "up": {"uv": [11.5, 16, 10.5, 11], "rotation": 270, "texture": "#0"}, "down": {"uv": [10.5, 11, 11.5, 16], "rotation": 270, "texture": "#0"} diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json index 310db4b45..8bbeb696c 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json @@ -14,19 +14,9 @@ "east": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"}, "south": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"}, "west": {"uv": [11.5, 16, 10.5, 11], "rotation": 90, "texture": "#0"}, - "up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#0", "cullface": "up"}, "down": {"uv": [6, 11, 11, 16], "rotation": 270, "texture": "#0"} } - }, - { - "from": [4, 12, 4], - "to": [12, 14, 12], - "faces": { - "north": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"}, - "east": {"uv": [0, 8, 4, 9], "texture": "#0", "cullface": "up"}, - "south": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"}, - "west": {"uv": [4, 8, 0, 9], "texture": "#0", "cullface": "up"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json index a956d9951..35edc6555 100644 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json @@ -6,16 +6,6 @@ "particle": "create:block/pipes" }, "elements": [ - { - "from": [2, 4, 4], - "to": [4, 12, 12], - "faces": { - "north": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0", "cullface": "up"}, - "south": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "up": {"uv": [4, 9, 0, 10], "rotation": 90, "texture": "#0", "cullface": "up"}, - "down": {"uv": [4, 8, 0, 9], "rotation": 270, "texture": "#0", "cullface": "up"} - } - }, { "from": [0, 3, 3], "to": [2, 13, 13], @@ -23,7 +13,7 @@ "north": {"uv": [10.5, 11, 11.5, 16], "texture": "#0"}, "east": {"uv": [6, 11, 11, 16], "texture": "#0"}, "south": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"}, - "west": {"uv": [11, 11, 16, 16], "texture": "#0"}, + "west": {"uv": [11, 11, 16, 16], "texture": "#0", "cullface": "west"}, "up": {"uv": [10.5, 11, 11.5, 16], "rotation": 180, "texture": "#0"}, "down": {"uv": [11.5, 16, 10.5, 11], "texture": "#0"} } diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/down.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/down.json new file mode 100644 index 000000000..648120364 --- /dev/null +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/down.json @@ -0,0 +1,20 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "create:block/pipes", + "particle": "create:block/pipes" + }, + "elements": [ + { + "from": [4, 2, 4], + "to": [12, 4, 12], + "faces": { + "north": {"uv": [0, 9, 4, 10], "texture": "#0"}, + "east": {"uv": [0, 9, 4, 10], "texture": "#0"}, + "south": {"uv": [4, 9, 0, 10], "texture": "#0"}, + "west": {"uv": [4, 9, 0, 10], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/east.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/east.json new file mode 100644 index 000000000..cf0f16ca9 --- /dev/null +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/east.json @@ -0,0 +1,20 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "create:block/pipes", + "particle": "create:block/pipes" + }, + "elements": [ + { + "from": [12, 4, 4], + "to": [14, 12, 12], + "faces": { + "north": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4, 8, 0, 9], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4, 9, 0, 10], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/north.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/north.json new file mode 100644 index 000000000..c333936ec --- /dev/null +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/north.json @@ -0,0 +1,21 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "create:block/pipes", + "particle": "create:block/pipes" + }, + "elements": [ + { + "from": [4, 4, 2], + "to": [12, 12, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/south.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/south.json new file mode 100644 index 000000000..2263f7fd3 --- /dev/null +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/south.json @@ -0,0 +1,21 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "create:block/pipes", + "particle": "create:block/pipes" + }, + "elements": [ + { + "from": [4, 4, 12], + "to": [12, 12, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 8, 4, 9], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/up.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/up.json new file mode 100644 index 000000000..ea375691d --- /dev/null +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/up.json @@ -0,0 +1,20 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "create:block/pipes", + "particle": "create:block/pipes" + }, + "elements": [ + { + "from": [4, 12, 4], + "to": [12, 14, 12], + "faces": { + "north": {"uv": [0, 8, 4, 9], "texture": "#0"}, + "east": {"uv": [0, 8, 4, 9], "texture": "#0"}, + "south": {"uv": [4, 8, 0, 9], "texture": "#0"}, + "west": {"uv": [4, 8, 0, 9], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/west.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/west.json new file mode 100644 index 000000000..d9f97cb89 --- /dev/null +++ b/src/main/resources/assets/create/models/block/fluid_pipe/rim_connector/west.json @@ -0,0 +1,20 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "create:block/pipes", + "particle": "create:block/pipes" + }, + "elements": [ + { + "from": [2, 4, 4], + "to": [4, 12, 12], + "faces": { + "north": {"uv": [0, 8, 4, 9], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 9, 4, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4, 9, 0, 10], "rotation": 90, "texture": "#0"}, + "down": {"uv": [4, 8, 0, 9], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file From 58e49b9fdf5ed2ebabcd35cba3137822c32110d9 Mon Sep 17 00:00:00 2001 From: SuperCoder79 <25208576+SuperCoder7979@users.noreply.github.com> Date: Wed, 10 Aug 2022 15:02:14 -0400 Subject: [PATCH 10/32] Fix deepslate emerald ore providing cobblestone when crushed --- src/generated/resources/.cache/cache | 2 +- .../data/create/recipes/crushing/deepslate_emerald_ore.json | 2 +- .../create/foundation/data/recipe/CrushingRecipeGen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 19f04fff8..5e99bd512 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -4226,7 +4226,7 @@ ace6ea5ed1828f4cbb1be0ae8ef10049bd4a07fc data/create/recipes/crushing/asurine.js c0f2d4de4d00504607a8f3e2d1327d754835eebe data/create/recipes/crushing/deepslate_coal_ore.json dedb4d7e958efa2218561686974ad9223848ec30 data/create/recipes/crushing/deepslate_copper_ore.json 2f9f26daadda2d291989bccd2b0ea5f85e3ef5ae data/create/recipes/crushing/deepslate_diamond_ore.json -ab79ae0d086ac1c90d2e802a2bbb7eb868e9ff8b data/create/recipes/crushing/deepslate_emerald_ore.json +ae3070fc3ae237192949ad06ebb8a4c157f7e832 data/create/recipes/crushing/deepslate_emerald_ore.json ae0418f47a68c15247350e8b31fd24905f1bced8 data/create/recipes/crushing/deepslate_gold_ore.json 21e591d215993dcecd92db86e14334958198d7c7 data/create/recipes/crushing/deepslate_iron_ore.json b85ba487f2867564c10a0870b55ce213558156bf data/create/recipes/crushing/deepslate_lapis_ore.json diff --git a/src/generated/resources/data/create/recipes/crushing/deepslate_emerald_ore.json b/src/generated/resources/data/create/recipes/crushing/deepslate_emerald_ore.json index d3d49fbc9..ead9005b8 100644 --- a/src/generated/resources/data/create/recipes/crushing/deepslate_emerald_ore.json +++ b/src/generated/resources/data/create/recipes/crushing/deepslate_emerald_ore.json @@ -19,7 +19,7 @@ "chance": 0.75 }, { - "item": "minecraft:cobblestone", + "item": "minecraft:cobbled_deepslate", "chance": 0.125 } ], diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java index 1b4b9d894..e6df5757b 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java @@ -90,7 +90,7 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { DEEP_IRON_ORE = deepslateOre(() -> Items.DEEPSLATE_IRON_ORE, AllItems.CRUSHED_IRON::get, 2.25f, 350), DEEP_GOLD_ORE = deepslateOre(() -> Items.DEEPSLATE_GOLD_ORE, AllItems.CRUSHED_GOLD::get, 2.25f, 350), DEEP_DIAMOND_ORE = deepslateOre(() -> Items.DEEPSLATE_DIAMOND_ORE, () -> Items.DIAMOND, 2.25f, 450), - DEEP_EMERALD_ORE = stoneOre(() -> Items.DEEPSLATE_EMERALD_ORE, () -> Items.EMERALD, 2.25f, 450), + DEEP_EMERALD_ORE = deepslateOre(() -> Items.DEEPSLATE_EMERALD_ORE, () -> Items.EMERALD, 2.25f, 450), DEEP_COAL_ORE = deepslateOre(() -> Items.DEEPSLATE_COAL_ORE, () -> Items.COAL, 1.75f, 250), DEEP_REDSTONE_ORE = deepslateOre(() -> Items.DEEPSLATE_REDSTONE_ORE, () -> Items.REDSTONE, 7.5f, 350), DEEP_LAPIS_ORE = deepslateOre(() -> Items.DEEPSLATE_LAPIS_ORE, () -> Items.LAPIS_LAZULI, 12.5f, 350), From 67fd16b492c46091fe4e62034d74f5b4ed96efcd Mon Sep 17 00:00:00 2001 From: SuperCoder79 <25208576+SuperCoder7979@users.noreply.github.com> Date: Wed, 10 Aug 2022 16:19:38 -0400 Subject: [PATCH 11/32] Break door blocks when rotating a Contraption vertically - This prevents them from getting stuck in an invalid state. --- .../components/structureMovement/Contraption.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index 5a66c6d05..ae1c164be 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -21,6 +21,8 @@ import java.util.function.BiConsumer; import javax.annotation.Nullable; +import net.minecraft.world.level.block.DoorBlock; + import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -1045,7 +1047,7 @@ public abstract class Contraption { boolean verticalRotation = transform.rotationAxis == null || transform.rotationAxis.isHorizontal(); verticalRotation = verticalRotation && transform.rotation != Rotation.NONE; if (verticalRotation) { - if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock) + if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock || state.getBlock() instanceof DoorBlock) world.destroyBlock(targetPos, true); } From c33fc73f3ae2cc8737e70a755fa5364b73d9a44f Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 12 Aug 2022 20:50:48 +0200 Subject: [PATCH 12/32] Discomportulated - Potential fix for spout ponder crash with other mods installed - Fixed train navigation not behaving correctly near portals --- .../components/structureMovement/Contraption.java | 2 +- .../content/contraptions/fluids/actors/SpoutTileEntity.java | 2 ++ .../create/content/logistics/trains/entity/Navigation.java | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index ae1c164be..592fe6307 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -1022,7 +1022,7 @@ public abstract class Contraption { .isEmpty() && !blockState.getCollisionShape(world, targetPos) .isEmpty())) { - if (targetPos.getY() == 0) + if (targetPos.getY() == world.getMinBuildHeight()) targetPos = targetPos.above(); world.levelEvent(2001, targetPos, Block.getId(state)); Block.dropResources(state, world, targetPos, null); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java index db8ce23ba..56525f5f5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java @@ -76,6 +76,8 @@ public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInfor protected ProcessingResult onItemReceived(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler) { + if (handler.tileEntity.isVirtual()) + return PASS; if (!FillingBySpout.canItemBeFilled(level, transported.stack)) return PASS; if (tank.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java index dfba07f87..5c2d68d6a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Navigation.java @@ -644,9 +644,13 @@ public class Navigation { List> validTargets = new ArrayList<>(); Map connectionsFrom = graph.getConnectionsFrom(node2); - for (Entry connection : connectionsFrom.entrySet()) + for (Entry connection : connectionsFrom.entrySet()) { + TrackNode newNode = connection.getKey(); + if (newNode == node1) + continue; if (edge.canTravelTo(connection.getValue())) validTargets.add(connection); + } if (validTargets.isEmpty()) continue; From 33daccc39769aeea8677eb9b07092b0debe33bf5 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 13 Aug 2022 14:29:18 +0200 Subject: [PATCH 13/32] Committing self-wrench - Fluid Pumps now orient themselves at adjacent pipes when placed - Deployers mounted on minecart contraptions can no longer pick up minecart contraptions using a wrench --- .../deployer/DeployerFakePlayer.java | 1 + .../deployer/DeployerMovementBehaviour.java | 1 + .../deployer/DeployerMovingInteraction.java | 2 ++ .../mounted/MinecartContraptionItem.java | 3 ++ .../contraptions/fluids/PumpBlock.java | 33 +++++++++++++++---- 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java index 682b626d7..15f408253 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java @@ -51,6 +51,7 @@ public class DeployerFakePlayer extends FakePlayer { Pair blockBreakingProgress; ItemStack spawnedItemEffects; public boolean placedTracks; + public boolean onMinecartContraption; public DeployerFakePlayer(ServerLevel world) { super(world, DEPLOYER_PROFILE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java index 116918e76..e64bfce04 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java @@ -275,6 +275,7 @@ public class DeployerMovementBehaviour implements MovementBehaviour { private DeployerFakePlayer getPlayer(MovementContext context) { if (!(context.temporaryData instanceof DeployerFakePlayer) && context.world instanceof ServerLevel) { DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) context.world); + deployerFakePlayer.onMinecartContraption = context.contraption instanceof MountedContraption; deployerFakePlayer.getInventory() .load(context.tileData.getList("Inventory", Tag.TAG_COMPOUND)); if (context.data.contains("HeldItem")) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java index 401d77731..58bedbfd1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java @@ -6,6 +6,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.MovingInteractionBehaviour; +import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.core.BlockPos; @@ -55,6 +56,7 @@ public class DeployerMovingInteraction extends MovingInteractionBehaviour { if (!(ctx.temporaryData instanceof DeployerFakePlayer) && ctx.world instanceof ServerLevel) { DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) ctx.world); + deployerFakePlayer.onMinecartContraption = ctx.contraption instanceof MountedContraption; deployerFakePlayer.getInventory() .load(ctx.tileData.getList("Inventory", Tag.TAG_COMPOUND)); ctx.temporaryData = fake = deployerFakePlayer; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java index 28c22731a..50bd66123 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java @@ -8,6 +8,7 @@ import javax.annotation.Nullable; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import com.simibubi.create.AllItems; +import com.simibubi.create.content.contraptions.components.deployer.DeployerFakePlayer; import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; @@ -208,6 +209,8 @@ public class MinecartContraptionItem extends Item { return; if (!entity.isAlive()) return; + if (player instanceof DeployerFakePlayer dfp && dfp.onMinecartContraption) + return; AbstractMinecart cart = (AbstractMinecart) entity; Type type = cart.getMinecartType(); if (type != Type.RIDEABLE && type != Type.FURNACE && type != Type.CHEST) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java index 7bf15694d..93956008f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java @@ -5,14 +5,18 @@ import java.util.Random; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.block.ProperWaterloggedBlock; +import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.BlockGetter; @@ -32,7 +36,8 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.ticks.TickPriority; -public class PumpBlock extends DirectionalKineticBlock implements SimpleWaterloggedBlock, ICogWheel, ITE { +public class PumpBlock extends DirectionalKineticBlock + implements SimpleWaterloggedBlock, ICogWheel, ITE { public PumpBlock(Properties p_i48415_1_) { super(p_i48415_1_); @@ -96,10 +101,26 @@ public class PumpBlock extends DirectionalKineticBlock implements SimpleWaterlog @Override public BlockState getStateForPlacement(BlockPlaceContext context) { - FluidState FluidState = context.getLevel() - .getFluidState(context.getClickedPos()); - return super.getStateForPlacement(context).setValue(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(FluidState.getType() == Fluids.WATER)); + BlockState toPlace = super.getStateForPlacement(context); + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + Player player = context.getPlayer(); + toPlace = ProperWaterloggedBlock.withWater(level, toPlace, pos); + + if (player != null && player.isSteppingCarefully()) + return toPlace; + + for (Direction d : Iterate.directions) { + BlockPos adjPos = pos.relative(d); + BlockState adjState = level.getBlockState(adjPos); + if (!FluidPipeBlock.canConnectTo(level, adjPos, adjState, d)) + continue; + toPlace = toPlace.setValue(FACING, d); + if (context.getClickedFace() == d.getOpposite()) + break; + } + + return toPlace; } public static boolean isPump(BlockState state) { @@ -113,7 +134,7 @@ public class PumpBlock extends DirectionalKineticBlock implements SimpleWaterlog return; if (state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); - + if (isPump(state) && isPump(oldState) && state.getValue(FACING) == oldState.getValue(FACING) .getOpposite()) { BlockEntity tileEntity = world.getBlockEntity(pos); From 693e2f6730eec33487b90a9c203b21f209b059f3 Mon Sep 17 00:00:00 2001 From: luffypirat Date: Sat, 13 Aug 2022 15:33:54 +0300 Subject: [PATCH 14/32] Updates to ru_ru.json by luffypirat (#3556) --- .../resources/assets/create/lang/ru_ru.json | 893 +++++++++--------- 1 file changed, 448 insertions(+), 445 deletions(-) diff --git a/src/main/resources/assets/create/lang/ru_ru.json b/src/main/resources/assets/create/lang/ru_ru.json index 4f37d9bdd..882f7e7c7 100644 --- a/src/main/resources/assets/create/lang/ru_ru.json +++ b/src/main/resources/assets/create/lang/ru_ru.json @@ -27,7 +27,7 @@ "block.create.black_seat": "Чёрное сиденье", "block.create.black_toolbox": "Чёрный ящик для инструментов", "block.create.black_valve_handle": "Чёрный ручной вентиль", - "block.create.blaze_burner": "Горелка Всполоха", + "block.create.blaze_burner": "Горелка всполоха", "block.create.blue_nixie_tube": "Синий газоразрядный индикатор", "block.create.blue_sail": "Синий парус", "block.create.blue_seat": "Синее сиденье", @@ -71,7 +71,7 @@ "block.create.creative_fluid_tank": "Творческий жидкостный бак", "block.create.creative_motor": "Творческий мотор", "block.create.crimsite": "Кримзит", - "block.create.crimsite_pillar": "Кримзитовая коллона", + "block.create.crimsite_pillar": "Кримзитовая колонна", "block.create.crimson_window": "Багровое окно", "block.create.crimson_window_pane": "Панель из багрового окна", "block.create.crushing_wheel": "Колесо дробления", @@ -127,7 +127,7 @@ "block.create.cut_diorite_wall": "Резная диоритовая ограда", "block.create.cut_dripstone": "Резной натёчный камень", "block.create.cut_dripstone_brick_slab": "Плита из натёчнокаменного кирпича", - "block.create.cut_dripstone_brick_stairs": "Ступеньки из натёчнокаменного кирпича ", + "block.create.cut_dripstone_brick_stairs": "Ступеньки из натёчнокаменного кирпича", "block.create.cut_dripstone_brick_wall": "Ограда из натёчнокаменного кирпича", "block.create.cut_dripstone_bricks": "Резные кирпичи из натёчного камня", "block.create.cut_dripstone_slab": "Плита из резного натёчного камня", @@ -152,7 +152,7 @@ "block.create.cut_ochrum": "Резной охрум", "block.create.cut_ochrum_brick_slab": "Плита из резных охрумовых кирпичей", "block.create.cut_ochrum_brick_stairs": "Ступеньки из резных охрумовых кирпичей", - "block.create.cut_ochrum_brick_wall": "Резная ограда из резных охрумовых кирпичей", + "block.create.cut_ochrum_brick_wall": "Ограда из резных охрумовых кирпичей", "block.create.cut_ochrum_bricks": "Резные кирпичи из охрума", "block.create.cut_ochrum_slab": "Резная плита из охрума", "block.create.cut_ochrum_stairs": "Резные ступеньки из охрума", @@ -196,7 +196,7 @@ "block.create.cyan_valve_handle": "Бирюзовый ручной вентиль", "block.create.dark_oak_window": "Окно из тёмного дуба", "block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб", - "block.create.deepslate_pillar": "Колонна из глубинного сланца", + "block.create.deepslate_pillar": "Глубинносланцевая колонна", "block.create.deepslate_zinc_ore": "Цинконосный глубинный сланец", "block.create.deployer": "Автономный активатор", "block.create.depot": "Депо", @@ -213,7 +213,7 @@ "block.create.exposed_copper_tile_slab": "Плита из потемневший медной плитки", "block.create.exposed_copper_tile_stairs": "Ступеньки из потемневший медной плитки", "block.create.exposed_copper_tiles": "Потемневшая медная плитка", - "block.create.fake_track": "Маркер станции для карт", + "block.create.fake_track": "Маркер станции для карты", "block.create.fluid_pipe": "Жидкостная труба", "block.create.fluid_tank": "Жидкостный бак", "block.create.fluid_valve": "Жидкостный клапан", @@ -283,7 +283,7 @@ "block.create.limestone": "Известняк", "block.create.limestone_pillar": "Известковая колонна", "block.create.linear_chassis": "Линейное шасси", - "block.create.lit_blaze_burner": "Зажжённая горелка Всполоха", + "block.create.lit_blaze_burner": "Зажжённая горелка всполоха", "block.create.magenta_nixie_tube": "Пурпурный газоразрядный индикатор", "block.create.magenta_sail": "Пурпурный парус", "block.create.magenta_seat": "Пурпурное сиденье", @@ -305,7 +305,7 @@ "block.create.metal_girder": "Металлическая балка", "block.create.metal_girder_encased_shaft": "Вал в металлической балке", "block.create.millstone": "Жёрнов", - "block.create.minecart_anchor": "Вагонеточный якорь", + "block.create.minecart_anchor": "Вагонеточная опора", "block.create.mysterious_cuckoo_clock": "Часы с кукушкой", "block.create.nixie_tube": "Газоразрядный индикатор", "block.create.nozzle": "Форсунка", @@ -416,16 +416,16 @@ "block.create.rope": "Канат", "block.create.rope_pulley": "Лебёдка", "block.create.rose_quartz_block": "Блок розового кварца", - "block.create.rose_quartz_lamp": "Фонарь из розового кварца", + "block.create.rose_quartz_lamp": "Редстоуновый фонарь из розового кварца", "block.create.rose_quartz_tiles": "Плитка из розового кварца", "block.create.rotation_speed_controller": "Регулятор скорости вращения", "block.create.sail_frame": "Рама паруса", "block.create.schematic_table": "Схематичный стол", "block.create.schematicannon": "Схематичная пушка", "block.create.scorchia": "Тёмный пепел", - "block.create.scorchia_pillar": "Колонна из тёмного пепла", + "block.create.scorchia_pillar": "Тёмнопепловая колонна", "block.create.scoria": "Пепел", - "block.create.scoria_pillar": "Колонна из пепла", + "block.create.scoria_pillar": "Пепловая колонна", "block.create.secondary_linear_chassis": "Вторичное линейное шасси", "block.create.sequenced_gearshift": "Последовательная коробка передач", "block.create.shadow_steel_casing": "Теневой корпус", @@ -472,9 +472,9 @@ "block.create.small_ochrum_brick_wall": "Ограда из мелкого охрумого кирпича", "block.create.small_ochrum_bricks": "Мелкие охрумовые кирпичи", "block.create.small_rose_quartz_tiles": "Мелкая плитка из розового кварца", - "block.create.small_scorchia_brick_slab": "Плита из мелкого тёмно-пеплового кирпича", - "block.create.small_scorchia_brick_stairs": "Ступеньки из мелкого тёмно-пеплового кирпича", - "block.create.small_scorchia_brick_wall": "Ограда из мелкого тёмно-пеплового кирпича", + "block.create.small_scorchia_brick_slab": "Плита из мелкого тёмнопеплового кирпича", + "block.create.small_scorchia_brick_stairs": "Ступеньки из мелкого тёмнопеплового кирпича", + "block.create.small_scorchia_brick_wall": "Ограда из мелкого тёмнопеплового кирпича", "block.create.small_scorchia_bricks": "Мелкие тёмно-пепловые кирпичи", "block.create.small_scoria_brick_slab": "Плита из мелких пепловых кирпичей", "block.create.small_scoria_brick_stairs": "Ступеньки из мелких пепловых кирпичей", @@ -499,7 +499,7 @@ "block.create.steam_whistle_extension": "Удлинитель парового свистка", "block.create.sticker": "Блок-липучка", "block.create.sticky_mechanical_piston": "Липкий механический поршень", - "block.create.stockpile_switch": "Настраиваемый компаратор", + "block.create.stockpile_switch": "Наблюдатель заполненности", "block.create.stressometer": "Стрессометр", "block.create.tiled_glass": "Плиточное стекло", "block.create.tiled_glass_pane": "Плиточная стеклянная панель", @@ -515,8 +515,8 @@ "block.create.veridium_pillar": "Веридиумавая колонна", "block.create.vertical_framed_glass": "Вертикальное обрамлённое стекло", "block.create.vertical_framed_glass_pane": "Вертикальная обрамлённая стеклянная панель", - "block.create.warped_window": "Искаженное окно", - "block.create.warped_window_pane": "Панель из искаженного окна", + "block.create.warped_window": "Искажённое окно", + "block.create.warped_window_pane": "Панель из искажённого окна", "block.create.water_wheel": "Водяное колесо", "block.create.waxed_copper_shingle_slab": "Вощёная плита из медной черепицы", "block.create.waxed_copper_shingle_stairs": "Вощёные ступеньки из медной черепицы", @@ -574,22 +574,22 @@ "entity.create.potato_projectile": "Картофельный снаряд", "entity.create.seat": "Сиденье", "entity.create.stationary_contraption": "Стационарная штуковина", - "entity.create.super_glue": "Супер-клей", + "entity.create.super_glue": "Суперклей", "fluid.create.potion": "Зелье", - "fluid.create.tea": "Чай Строителя", + "fluid.create.tea": "Чай строителя", "item.create.andesite_alloy": "Андезитовый сплав", "item.create.attribute_filter": "Фильтр атрибутов", "item.create.bar_of_chocolate": "Плитка шоколада", "item.create.belt_connector": "Механический ремень", - "item.create.blaze_cake": "Торт Всполоха", - "item.create.blaze_cake_base": "Основа торта Всполоха", + "item.create.blaze_cake": "Торт всполоха", + "item.create.blaze_cake_base": "Основа торта всполоха", "item.create.brass_hand": "Латунная рука", "item.create.brass_ingot": "Латунный слиток", "item.create.brass_nugget": "Кусочек латуни", "item.create.brass_sheet": "Латунный лист", - "item.create.builders_tea": "Чай Строителя", + "item.create.builders_tea": "Чай строителя", "item.create.chest_minecart_contraption": "Грузовая вагонеточная штуковина", "item.create.chocolate_bucket": "Ведро шоколада", "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", @@ -601,7 +601,7 @@ "item.create.copper_sheet": "Медный лист", "item.create.crafter_slot_cover": "Заглушка на слот крафтера", "item.create.crafting_blueprint": "Чёртеж", - "item.create.creative_blaze_cake": "Творческий торт Всполоха", + "item.create.creative_blaze_cake": "Творческий торт всполоха", "item.create.crushed_aluminum_ore": "Дроблёная алюминиевая руда", "item.create.crushed_copper_ore": "Дроблёная медная руда", "item.create.crushed_gold_ore": "Дроблёная золотая руда", @@ -619,12 +619,12 @@ "item.create.diving_helmet": "Шлем для дайвинга", "item.create.dough": "Тесто", "item.create.electron_tube": "Электронная лампа", - "item.create.empty_blaze_burner": "Пустая горелка Всполоха", + "item.create.empty_blaze_burner": "Пустая горелка всполоха", "item.create.empty_schematic": "Пустая схематика", "item.create.experience_nugget": "Кусочек опыта", "item.create.extendo_grip": "Удлинённая рука", "item.create.filter": "Фильтр", - "item.create.furnace_minecart_contraption": "Штуковина самоходной вагонетки", + "item.create.furnace_minecart_contraption": "Самоходная вагонеточная штуковина", "item.create.goggles": "Инженерные очки", "item.create.golden_sheet": "Золотой лист", "item.create.handheld_worldshaper": "Ручной редактор мира", @@ -651,7 +651,7 @@ "item.create.schematic_and_quill": "Схематика и перо", "item.create.shadow_steel": "Теневая сталь", "item.create.sturdy_sheet": "Прочный лист", - "item.create.super_glue": "Супер-клей", + "item.create.super_glue": "Суперклей", "item.create.sweet_roll": "Сладкий рулет", "item.create.tree_fertilizer": "Удобрение для деревьев", "item.create.unprocessed_obsidian_sheet": "Необработанный обсидиановый лист", @@ -669,191 +669,191 @@ "advancement.create.root": "Добро пожаловать в Create!", "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", "advancement.create.andesite_alloy": "Повторение — мать учения", - "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав.", + "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", "advancement.create.andesite_casing": "Андезитовый век", - "advancement.create.andesite_casing.desc": "Используйте немного Андезитового сплава и дерева для создания корпуса.", + "advancement.create.andesite_casing.desc": "Используйте немного Андезитового сплава и дерева для создания Андезитового корпуса", "advancement.create.mechanical_press": "Пресс делает «Бонк!»", - "advancement.create.mechanical_press.desc": "Создайте несколько листов в Механическом прессе.", + "advancement.create.mechanical_press.desc": "Создайте несколько листов в Механическом прессе", "advancement.create.encased_fan": "Механический маг воздуха", - "advancement.create.encased_fan.desc": "Разместите и активируйте Вентилятор в корпусе.", + "advancement.create.encased_fan.desc": "Разместите и активируйте Вентилятор в корпусе", "advancement.create.fan_processing": "Обработка воздухом", - "advancement.create.fan_processing.desc": "Используйте Вентилятор в корпусе для обработки предметов.", + "advancement.create.fan_processing.desc": "Используйте Вентилятор в корпусе для обработки предметов", "advancement.create.saw_processing": "Ужас лесопилки", "advancement.create.saw_processing.desc": "Используйте вертикальную Механическую пилу для обработки материалов", "advancement.create.compacting": "Компактификация", - "advancement.create.compacting.desc": "Используйте Пресс и Чашу, чтобы создавать меньше предметов из большего количества предметов.", + "advancement.create.compacting.desc": "Используйте Механический пресс и Чашу, чтобы спрессовать предметы", "advancement.create.belt": "Передайте за проезд!", - "advancement.create.belt.desc": "Соедините два Вала с помощью Механического ремня.", + "advancement.create.belt.desc": "Соедините два Вала с помощью Механического ремня", "advancement.create.funnel": "Эстетика аэропорта", - "advancement.create.funnel.desc": "Извлеките или вставьте элементы в контейнер с помощью Воронки.", + "advancement.create.funnel.desc": "Извлеките или добавьте элементы в контейнер с помощью Воронки", "advancement.create.chute": "Упало", - "advancement.create.chute.desc": "Разместите Жёлоб, вертикальный аналог конвейера.", + "advancement.create.chute.desc": "Разместите Жёлоб, вертикальный аналог конвейера", "advancement.create.mechanical_mixer": "Смешать, но не взбалтывать", - "advancement.create.mechanical_mixer.desc": "Смешайте ингредиенты в Механическом смешивателе.", + "advancement.create.mechanical_mixer.desc": "Смешайте ингредиенты в Чаше с помощью Механического смешивателя", "advancement.create.burner": "Разумный камин", "advancement.create.burner.desc": "Получите Горелку всполоха", "advancement.create.water_wheel": "Обузданная гидравлика", - "advancement.create.water_wheel.desc": "Поставьте Водяное колесо и попытайтесь заставить его вращаться!", + "advancement.create.water_wheel.desc": "Поставьте Водяное колесо и попытайтесь заставить его вращаться", "advancement.create.windmill": "Куда дует ветер", - "advancement.create.windmill.desc": "Соберите Ветряную мельницу.", + "advancement.create.windmill.desc": "Соберите Ветряную мельницу", "advancement.create.shifting_gears": "Механизм переключения", - "advancement.create.shifting_gears.desc": "Подсоедините Большую шестерню к обычной Шестерне для изменения скорости вращения.", + "advancement.create.shifting_gears.desc": "Подсоедините Большую шестерню к обычной Шестерне для изменения скорости вращения", "advancement.create.millstone": "Карманная дробилка", - "advancement.create.millstone.desc": "Поставьте и приведите в действие Жёрнов.", + "advancement.create.millstone.desc": "Поставьте и приведите в действие Жёрнов", "advancement.create.super_glue": "Площадь соединена", - "advancement.create.super_glue.desc": "Объедините несколько блоков в группу с помощью Супер-клея.", + "advancement.create.super_glue.desc": "Объедините несколько блоков в группу с помощью Суперклея", "advancement.create.contraption_actors": "Движение с целью", - "advancement.create.contraption_actors.desc": "Создайте штуковину с Дрелью, Пилой или Комбайном на борту.", + "advancement.create.contraption_actors.desc": "Создайте штуковину с Дрелью, Пилой или Комбайном на борту", "advancement.create.portable_storage_interface": "Обмен на ходу", - "advancement.create.portable_storage_interface.desc": "Используйте Портативный интерфейс хранения, чтобы брать или вставлять предметы в штуковину.", + "advancement.create.portable_storage_interface.desc": "Используйте Портативный интерфейс хранения, чтобы извлекать или добавлять предметы во время работы штуковины", "advancement.create.wrench_goggles": "Дресс-код механика", - "advancement.create.wrench_goggles.desc": "Наденьте Инженерные очки и возьмите Гаечный ключ.", + "advancement.create.wrench_goggles.desc": "Наденьте Инженерные очки и возьмите Гаечный ключ", "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на стрессометр через очки, чтобы прочитать точное значение.", + "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на Стрессометр через Очки, чтобы прочитать точное значение", "advancement.create.cuckoo_clock": "Который час?", - "advancement.create.cuckoo_clock.desc": "Станьте свидетелем того, как ваши Часы с кукушкой объявляют время сна.", + "advancement.create.cuckoo_clock.desc": "Станьте свидетелем того, как ваши Часы с кукушкой объявляют время сна", "advancement.create.windmill_maxed": "Ветер крепчает", - "advancement.create.windmill_maxed.desc": "Соберите Ветрянную мельницу максимальной силы.", + "advancement.create.windmill_maxed.desc": "Соберите Ветряную мельницу максимальной силы", "advancement.create.ejector_maxed": "Чемпион катапульты", - "advancement.create.ejector_maxed.desc": "Отлетите больше чем на 30 блоков с помощью Взвешенной катапульты.", + "advancement.create.ejector_maxed.desc": "Отлетите больше чем на 30 блоков с помощью Взвешенной катапульты", "advancement.create.pulley_maxed": "Веревка в никуда", - "advancement.create.pulley_maxed.desc": "Растяните лебёдку на глубину более 200 блоков.", + "advancement.create.pulley_maxed.desc": "Растяните Лебёдку на глубину более 200 блоков", "advancement.create.cart_pickup": "Сильные руки", - "advancement.create.cart_pickup.desc": "Поднимите Вагонеточную штуковину с не менее чем 200 прикрепленными блоками.", + "advancement.create.cart_pickup.desc": "Поднимите Вагонеточную штуковину с не менее чем 200 прикреплёнными блоками", "advancement.create.anvil_plough": "Кузнечная артиллерия", - "advancement.create.anvil_plough.desc": "Запустите наковальню с Механическими плугами.", + "advancement.create.anvil_plough.desc": "Запустите наковальню с Механическими плугами", "advancement.create.lava_wheel_00000": "Адское колесо", "advancement.create.lava_wheel_00000.desc": "Это не должно было работать!§7\n(Секретное достижение)", "advancement.create.hand_crank_000": "Силовая тренировка", - "advancement.create.hand_crank_000.desc": "Используйте Рукоятку до полного истощения.§7\n(Секретное достижение)", + "advancement.create.hand_crank_000.desc": "Используйте Рукоятку до полного истощения§7\n(Секретное достижение)", "advancement.create.belt_funnel_kiss": "Механический ужин", - "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на ремнях Воронки поцеловаться!", + "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на конвейере Воронки поцеловаться!", "advancement.create.stressometer_maxed": "Миллиметраж", - "advancement.create.stressometer_maxed.desc": "Получите 100% показания стрессометра.§7\n(Секретное достижение)", + "advancement.create.stressometer_maxed.desc": "Получите предельные показания Стрессометра§7\n(Секретное достижение)", "advancement.create.copper": "Более прочные камни", - "advancement.create.copper.desc": "Получите немного меди за хитрости с водой.", + "advancement.create.copper.desc": "Получите немного меди за хитрости с водой", "advancement.create.copper_casing": "Медный век", - "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания Медного корпуса.", + "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания Медного корпуса", "advancement.create.spout": "Буль", - "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора.", + "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора", "advancement.create.drain": "Промышленное осушение", - "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью предметного Осушителя.", + "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью Предметного осушителя", "advancement.create.steam_engine": "Сила пара", - "advancement.create.steam_engine.desc": "Используйте Паровой двигатель для создания вращательной силы.", + "advancement.create.steam_engine.desc": "Используйте Паровой двигатель для создания вращательной силы", "advancement.create.steam_whistle": "Голос ангела", - "advancement.create.steam_whistle.desc": "Активируйте Паровой свисток.", + "advancement.create.steam_whistle.desc": "Активируйте Паровой свисток", "advancement.create.backtank": "Повышение давления", - "advancement.create.backtank.desc": "Создайте Медный баллон и заставте его закачивать воздух в себя.", + "advancement.create.backtank.desc": "Создайте Медный баллон и заставьте его закачивать воздух в себя", "advancement.create.diving_suit": "Готов к погружению", - "advancement.create.diving_suit.desc": "Наденьте Водолазный шлем вместе с Баллоном и прыгайте в воду.", + "advancement.create.diving_suit.desc": "Наденьте Водолазный шлем вместе с Баллоном и прыгайте в воду", "advancement.create.mechanical_pump_0": "Под давлением", - "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механический насос.", + "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механический насос", "advancement.create.glass_pipe": "Шпион за потоками", - "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании Гаечного ключа.", + "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании Гаечного ключа", "advancement.create.water_supply": "Сборщик луж", - "advancement.create.water_supply.desc": "Используйте тянущий конец Трубы или Насоса, чтобы собрать водный блок.", + "advancement.create.water_supply.desc": "Используйте тянущий конец Трубы или Насоса, чтобы собрать водный блок", "advancement.create.hose_pulley": "Промышленный полив", - "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он высасывает или заполнят пространство жидкостью.", + "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он высасывает или заполнят пространство жидкостью", "advancement.create.chocolate_bucket": "Не слипнется!", - "advancement.create.chocolate_bucket.desc": "Получите ведро расплавленного шоколада.", + "advancement.create.chocolate_bucket.desc": "Получите Ведро расплавленного шоколада", "advancement.create.honey_drain": "Укуси меня пчела!", - "advancement.create.honey_drain.desc": "Используйте Трубы, чтобы вытащить мёд из пчелиного улья или гнезда, пока пчёлы не понимают что их обворовывают.", + "advancement.create.honey_drain.desc": "Используйте Трубы, чтобы вытащить мёд из пчелиного улья или гнезда, пока пчёлы не понимают что их обворовывают", "advancement.create.hose_pulley_lava": "Прикосновение к мантии", - "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из источника, считающегося бесконечным.", + "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из источника, считающегося бесконечным", "advancement.create.steam_engine_maxed": "На полную мощность!", - "advancement.create.steam_engine_maxed.desc": "Запустите Котёл на максимальном уровне мощности.", + "advancement.create.steam_engine_maxed.desc": "Запустите Котёл на максимальном уровне мощности", "advancement.create.foods": "Сбалансированная диета", - "advancement.create.foods.desc": "Создайте шоколадные ягоды, медовое яблоко и сладкий рулет; всё из одного Дозатора.", + "advancement.create.foods.desc": "Создайте шоколадные ягоды, медовое яблоко и сладкий рулет; всё из одного Дозатора", "advancement.create.diving_suit_lava": "Плавание с лавомерками", - "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением.§7\n(Секретное достижение)", - "advancement.create.chained_drain": "В ударе", - "advancement.create.chained_drain.desc": "Наблюдайте, как предмет перемещается по ряду Предметных осушителей.§7\n(Секретное достижение)", + "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением§7\n(Секретное достижение)", + "advancement.create.chained_drain": "Смотри как могу!", + "advancement.create.chained_drain.desc": "Наблюдайте, как предмет перемещается по ряду Предметных осушителей§7\n(Секретное достижение)", "advancement.create.cross_streams": "Не пересекайте потоки!", - "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две жидкости встречаются в ваших трубах.§7\n(Секретное достижение)", + "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две жидкости встречаются в ваших трубах§7\n(Секретное достижение)", "advancement.create.pipe_organ": "Иоганн Бах", - "advancement.create.pipe_organ.desc": "Сделайте орган, прикрепив 12 Паровых свистков с уникальным звуком к одному резервуару с жидкостью.§7\n(Секретное достижение)", + "advancement.create.pipe_organ.desc": "Сделайте орган, прикрепив 12 Паровых свистков с уникальным звуком к одному резервуару с жидкостью§7\n(Секретное достижение)", "advancement.create.brass": "Реальный сплав", - "advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного Латуни.", - "advancement.create.brass_casing": "Бронзовый век", - "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и немного дерева, чтобы создать более продвинутый корпус.", + "advancement.create.brass.desc": "Используйте Дроблёную медь и Дроблёный цинк, чтобы создать немного Латуни", + "advancement.create.brass_casing": "Латунный век", + "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и немного дерева, чтобы создать более продвинутый корпус", "advancement.create.rose_quartz": "Розовые алмазы", - "advancement.create.rose_quartz.desc": "Отполируйте немного Розового кварца.", + "advancement.create.rose_quartz.desc": "Отполируйте немного Розового кварца", "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", - "advancement.create.deployer.desc": "Приведите в действие Автономный активатор, идеальное отражение себя.", + "advancement.create.deployer.desc": "Приведите в действие Автономный активатор, идеальное отражение себя", "advancement.create.precision_mechanism": "Сложные любопытства", - "advancement.create.precision_mechanism.desc": "Создайте Механизм точности.", + "advancement.create.precision_mechanism.desc": "Создайте Механизм точности", "advancement.create.speed_controller": "Его ненавидят инженеры!", - "advancement.create.speed_controller.desc": "Установите Регулятор скорости вращения, идеальное устройство для переключения передач.", + "advancement.create.speed_controller.desc": "Установите Регулятор скорости вращения, идеальное устройство для переключения передач", "advancement.create.mechanical_arm": "Золотые руки!", - "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу.", + "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу", "advancement.create.mechanical_crafter": "Лень — двигатель прогресса", - "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Крафтеров.", + "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Механических крафтеров", "advancement.create.crushing_wheel": "Пара гигантов", - "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше материалов.", + "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше материалов", "advancement.create.haunted_bell": "Помощь призраков", - "advancement.create.haunted_bell.desc": "Позвоните в Призрачный колокол.", + "advancement.create.haunted_bell.desc": "Позвоните в Призрачный колокол", "advancement.create.clockwork_bearing": "Хитрые часы", - "advancement.create.clockwork_bearing.desc": "Соберите штуковину, расположенную на Часовом механизме.", + "advancement.create.clockwork_bearing.desc": "Соберите штуковину, расположенную на Часовом механизме", "advancement.create.display_link": "Большие данные", - "advancement.create.display_link.desc": "Используйте Передатчик информации для её визуализации.", + "advancement.create.display_link.desc": "Используйте Передатчик информации для её визуализации", "advancement.create.potato_cannon": "Свомп!", "advancement.create.potato_cannon.desc": "Победите врага с помощью своей Картофельной пушки!", "advancement.create.extendo_grip": "Бойоиоинг!", - "advancement.create.extendo_grip.desc": "Возьмите Удлинённую руку.", - "advancement.create.linked_controller": "Удаленная активация", - "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации редстоуна.", + "advancement.create.extendo_grip.desc": "Возьмите Удлинённую руку", + "advancement.create.linked_controller": "Удалённая активация", + "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации редстоуна", "advancement.create.arm_blaze_burner": "Поджигателе-трон", - "advancement.create.arm_blaze_burner.desc": "Запрограммируйте Механическую руку на кормление Горелки Всполоха.", + "advancement.create.arm_blaze_burner.desc": "Запрограммируйте Механическую руку на кормление Горелки всполоха", "advancement.create.crusher_maxed_0000": "Раздроби это!", - "advancement.create.crusher_maxed_0000.desc": "Управляйте парой Дробящих колес на максимальной скорости.", + "advancement.create.crusher_maxed_0000.desc": "Управляйте парой Дробящих колес на максимальной скорости", "advancement.create.arm_many_targets": "Организа-трон", - "advancement.create.arm_many_targets.desc": "Запрограммируйте Механическую руку на 10 и больше выходов.", + "advancement.create.arm_many_targets.desc": "Запрограммируйте Механическую руку на 10 и больше выходов", "advancement.create.potato_cannon_collide": "Картофегиляция", - "advancement.create.potato_cannon_collide.desc": "Заставь снаряды Картофельных пушек разных типов столкнуться друг с другом.", + "advancement.create.potato_cannon_collide.desc": "Заставь снаряды Картофельных пушек разных типов столкнуться друг с другом", "advancement.create.self_deploying": "Самоходная вагонетка", - "advancement.create.self_deploying.desc": "Создайте вагонеточную штуковину, которая размещает рельсы перед собой.", + "advancement.create.self_deploying.desc": "Создайте вагонеточную штуковину, которая размещает рельсы перед собой", "advancement.create.fist_bump": "Здарова, бро!", - "advancement.create.fist_bump.desc": "Сделайте два удара кулаками Автономных активаторов.", + "advancement.create.fist_bump.desc": "Сделайте так, чтобы два Автономных активатора ударили кулаками", "advancement.create.crafter_lazy_000": "Отчаянные меры", - "advancement.create.crafter_lazy_000.desc": "Значительно замедлите Механический крафтер, чтобы сделать плохое производство.§7\n(Секретное достижение)", + "advancement.create.crafter_lazy_000.desc": "Значительно замедлите Механический крафтер, чтобы сделать плохое производство§7\n(Секретное достижение)", "advancement.create.extendo_grip_dual": "В полной мере", - "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер досягаемости.§7\n(Секретное достижение)", + "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер досягаемости§7\n(Секретное достижение)", "advancement.create.musical_arm": "Сбацай что-нибудь!", - "advancement.create.musical_arm.desc": "Посмотрите как Механическая рука меняет пластинки.", + "advancement.create.musical_arm.desc": "Посмотрите как Механическая рука меняет пластинки", "advancement.create.sturdy_sheet": "Ещё более твёрдые камни", - "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из измельченного обсидиана.", + "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из измельченного обсидиана", "advancement.create.train_casing_00": "Железнодорожная эра", - "advancement.create.train_casing_00.desc": "Используйте Прочные листы для создания Железнодорожного корпуса.", + "advancement.create.train_casing_00.desc": "Используйте Прочные листы для создания Железнодорожного корпуса", "advancement.create.train": "Все на борт!", - "advancement.create.train.desc": "Соберите свой первый поезд.", + "advancement.create.train.desc": "Соберите свой первый поезд", "advancement.create.conductor": "Машинист-инструктор", - "advancement.create.conductor.desc": "Проинструктируйте машиниста следовать по Расписанию.", + "advancement.create.conductor.desc": "Проинструктируйте машиниста следовать по Расписанию", "advancement.create.track_signal": "Управление движением", - "advancement.create.track_signal.desc": "Разместите Железнодорожный светофор.", + "advancement.create.track_signal.desc": "Разместите Железнодорожный светофор", "advancement.create.display_board_0": "Динамическое расписание", - "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на табло с помощью Передатчика информации.", + "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на табло с помощью Передатчика информации", "advancement.create.track_0": "Новая колея", - "advancement.create.track_0.desc": "Получите Железнодорожный путь.", + "advancement.create.track_0.desc": "Получите Железнодорожный путь", "advancement.create.train_whistle": "Чу-Чу!", "advancement.create.train_whistle.desc": "Прикрепите Паровой свисток к вашему поезду и погудите в него!", "advancement.create.train_portal": "Сквозь измерения", - "advancement.create.train_portal.desc": "Проехать на поезде через Незер-портал.", + "advancement.create.train_portal.desc": "Проедьте на поезде через портал Незера", "advancement.create.track_crafting_factory": "Железнодорожная фабрика", - "advancement.create.track_crafting_factory.desc": "Произведите более 1000 Железнодорожных путей на одном Механическом прессе.", + "advancement.create.track_crafting_factory.desc": "Произведите более 1000 Железнодорожных путей на одном Механическом прессе", "advancement.create.long_bend": "Крутой поворот", - "advancement.create.long_bend.desc": "Создайте участок изогнутых путей длиной больше 30 блоков.", + "advancement.create.long_bend.desc": "Создайте участок изогнутых путей длиной больше 30 блоков", "advancement.create.long_train": "Амбициозные усилия", - "advancement.create.long_train.desc": "Создайте поезд как минимум с шестью вагонами.", + "advancement.create.long_train.desc": "Создайте поезд как минимум с шестью вагонами", "advancement.create.long_travel": "На дальней станции сойду", - "advancement.create.long_travel.desc": "Встаньте с сидения поезда на расстоянии более 5000 блоков от того места, где вы начали путешествие.", + "advancement.create.long_travel.desc": "Встаньте с сидения поезда на расстоянии более 5000 блоков от того места, где вы начали путешествие", "advancement.create.train_roadkill": "Убийство «Восточным экспрессом»", "advancement.create.train_roadkill.desc": "Переедьте врага своим поездом!§7\n(Секретное достижение)", "advancement.create.red_signal": "Я знаю короткую дорогу!", - "advancement.create.red_signal.desc": "Проедьте поездом на красный сигнал Светофора.§7\n(Секретное достижение)", + "advancement.create.red_signal.desc": "Проедьте поездом на красный сигнал Светофора§7\n(Секретное достижение)", "advancement.create.train_crash": "Ужасное обслуживание", - "advancement.create.train_crash.desc": "Станьте свидетелем железнодорожной аварии в качестве пассажира.§7\n(Секретное достижение)", + "advancement.create.train_crash.desc": "Станьте свидетелем железнодорожной аварии в качестве пассажира§7\n(Секретное достижение)", "advancement.create.train_crash_backwards": "Слепая зона", - "advancement.create.train_crash_backwards.desc": "Врежьтесь в другой поезд, двигаясь задним ходом.§7\n(Секретное достижение)", + "advancement.create.train_crash_backwards.desc": "Врежьтесь в другой поезд, двигаясь задним ходом§7\n(Секретное достижение)", "_": "->------------------------] UI & Messages [------------------------<-", @@ -863,9 +863,9 @@ "death.attack.create.crush": "%1$s был передроблен", "death.attack.create.crush.player": "%2$s столкнул %1$s в дробящие колёса", - "death.attack.create.fan_fire": "%1$s был сожжен до смерти горячим воздухом", + "death.attack.create.fan_fire": "%1$s был сожжён до смерти горячим воздухом", "death.attack.create.fan_fire.player": "%2$s столкнул %1$s в коптильню", - "death.attack.create.fan_lava": "%1$s был сожжен до смерти поклонником лавы", + "death.attack.create.fan_lava": "%1$s был сожжён до смерти поклонником лавы", "death.attack.create.fan_lava.player": "%2$s столкнул %1$s в плавильню", "death.attack.create.mechanical_drill": "%1$s был пронзён механической дрелью", "death.attack.create.mechanical_drill.player": "%2$s толкнул %1$s под механическую дрель", @@ -884,11 +884,10 @@ "create.menu.configure": "Настроить...", "create.menu.ponder_index": "Все размышления", "create.menu.only_ingame": "Доступны только во время игры", - "create.menu.project_page": "Страница проекта", "create.menu.report_bugs": "Нашли ошибку?", "create.menu.support": "Поддержите нас", - "create.recipe.crushing": "Измельчение", + "create.recipe.crushing": "Дробление", "create.recipe.milling": "Помол", "create.recipe.fan_washing": "Массовая промывка", "create.recipe.fan_washing.fan": "Вентилятор за водой", @@ -903,24 +902,24 @@ "create.recipe.deploying": "Автономная активация", "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", "create.recipe.automatic_brewing": "Автоматическое смешивание", - "create.recipe.packing": "Спрессование", - "create.recipe.automatic_packing": "Автоматическое спрессование", + "create.recipe.packing": "Спрессовывание", + "create.recipe.automatic_packing": "Автоматическое спрессовывание", "create.recipe.sawing": "Распиливание", "create.recipe.mechanical_crafting": "Механическое создание", "create.recipe.automatic_shaped": "Автоматическая форменная сборка", "create.recipe.block_cutting": "Резка блока", "create.recipe.wood_cutting": "Резка древесины", - "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", + "create.recipe.sandpaper_polishing": "Полирование наждачной бумагой", "create.recipe.mystery_conversion": "Хроматический метаморфоз", - "create.recipe.spout_filling": "Заполнение дозатором", + "create.recipe.spout_filling": "Наполнение дозатором", "create.recipe.draining": "Осушение предметов", - "create.recipe.item_application": "Применение предмета вручную", + "create.recipe.item_application": "Ручное создание", "create.recipe.item_application.any_axe": "Любой топор", "create.recipe.sequenced_assembly": "Последовательная сборка", "create.recipe.assembly.next": "Следующее: %1$s", "create.recipe.assembly.step": "Шаг %1$s:", "create.recipe.assembly.progress": "Прогресс: %1$s/%2$s", - "create.recipe.assembly.pressing": "Обработайте в Прессе", + "create.recipe.assembly.pressing": "Обработайте прессом", "create.recipe.assembly.spout_filling_fluid": "Долейте %1$s", "create.recipe.assembly.deploying_item": "Добавьте %1$s", "create.recipe.assembly.cutting": "Разрежьте пилой", @@ -964,7 +963,7 @@ "create.action.confirm": "Подтвердить", "create.action.abort": "Прервать", "create.action.saveToFile": "Сохранить", - "create.action.discard": "Отказаться", + "create.action.discard": "Отменить", "create.keyinfo.toolmenu": "Меню инструмента фокусировки", "create.keyinfo.toolbelt": "Доступ к ближайшим ящикам с инструментами", @@ -980,9 +979,9 @@ "create.gui.toolmenu.cycle": "[Прокрутка] для переключения", "create.toolbox.unequip": "Убрать: %1$s", - "create.toolbox.outOfRange": "Ящик с инструментами выбранного предмета слишком далеко...", + "create.toolbox.outOfRange": "Ящик для инструментов выбранного предмета слишком далеко...", "create.toolbox.detach": "Убрать выбранный предмет в ящик для инструментов", - "create.toolbox.depositAll": "Вернуть предметы в ближайшие ящики с инструментами", + "create.toolbox.depositAll": "Вернуть предметы в ближайшие ящики для инструментов", "create.toolbox.depositBox": "Вернуть предметы в ящик для инструментов", "create.gui.symmetryWand.mirrorType": "Зеркало", @@ -1026,25 +1025,25 @@ "create.gui.terrainzapper.tool.overlay": "Наложение", "create.gui.terrainzapper.tool.flatten": "Выравнивание", - "create.terrainzapper.shiftRightClickToSet": "ПКМ крадучись, чтобы выбрать форму", + "create.terrainzapper.shiftRightClickToSet": "Нажмите Shift+ПКМ, чтобы выбрать форму", "create.terrainzapper.usingBlock": "Используется: %1$s", - "create.terrainzapper.leftClickToSet": "Левый клик по блоку, что бы использовать материал", + "create.terrainzapper.leftClickToSet": "Нажмите ЛКМ по блоку, что бы использовать материал", - "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только две связи", - "create.minecart_coupling.unloaded": "Кажется, в данный момент часть вашего поезда в незагруженных чанках", + "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только два соединения", + "create.minecart_coupling.unloaded": "Кажется, в данный момент часть вашей вагонеточной штуковины в незагруженных чанках", "create.minecart_coupling.no_loops": "Соединители не могут образовывать петлю", - "create.minecart_coupling.removed": "Убраны все связи между вагонетками", - "create.minecart_coupling.too_far": "Вагонетки слишком далеко друг от друга", + "create.minecart_coupling.removed": "Убраны все соединения между вагонетками", + "create.minecart_coupling.too_far": "Вагонетки слишком далеко друг от друга...", "create.contraptions.movement_mode": "Режим движения", - "create.contraptions.movement_mode.move_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.move_place_returned": "Ставить только в исходное положение", - "create.contraptions.movement_mode.move_never_place": "Ставить только, когда якорь уничтожен", - "create.contraptions.movement_mode.rotate_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.rotate_place_returned": "Только место возле начального угла", - "create.contraptions.movement_mode.rotate_never_place": "Только место, когда якорь уничтожен", + "create.contraptions.movement_mode.move_place": "Превращать в блоки при остановке", + "create.contraptions.movement_mode.move_place_returned": "Превращать в блоки только в исх. положении", + "create.contraptions.movement_mode.move_never_place": "Превращать в блоки, если опора уничтожена", + "create.contraptions.movement_mode.rotate_place": "Превращать в блоки при остановке", + "create.contraptions.movement_mode.rotate_place_returned": "Превращать в блоки только в исх. положении", + "create.contraptions.movement_mode.rotate_never_place": "Превращать в блоки, если опора уничтожена", "create.contraptions.cart_movement_mode": "Режим движения вагонетки", - "create.contraptions.cart_movement_mode.rotate": "Всегда лицом к движению", + "create.contraptions.cart_movement_mode.rotate": "Вращение в сторону движения", "create.contraptions.cart_movement_mode.rotate_paused": "Пауза во время вращения", "create.contraptions.cart_movement_mode.rotation_locked": "Блокировка вращения", "create.contraptions.windmill.rotation_direction": "Направление вращения", @@ -1072,9 +1071,9 @@ "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": "Слишком много Удлинителей прикреплено к этому поршню.\nТекущий максимум: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Поршню нехватает Удлинителей", - "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусопободных блоков: %1$s\nМинимум из %2$s необходимых", + "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много удлинителей прикреплено к этому поршню.\nТекущий максимум: %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": "Нагрузка на сеть", @@ -1085,10 +1084,10 @@ "create.gui.contraptions.network_overstressed": "Похоже, что эта штуковина _перегружена_. Добавьте больше источников или _понизьте_ _скорость_ компонентов, _создающих_ высокую _нагрузку_.", "create.gui.adjustable_crate.title": "Регулируемый ящик", "create.gui.adjustable_crate.storageSpace": "Ёмкость", - "create.gui.stockpile_switch.title": "Настраиваемый компаратор", + "create.gui.stockpile_switch.title": "Наблюдатель заполненности", "create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал", - "create.gui.stockpile_switch.move_to_lower_at": "Двигаться к нижней линии при %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%", + "create.gui.stockpile_switch.move_to_lower_at": "Переключатся на нижнюю линию при %1$s%%", + "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": "Повернуть на угол", @@ -1167,7 +1166,7 @@ "create.schematics.maxAllowedSize": "Максимально допустимый размер файла:", "create.gui.schematicTable.refresh": "Обновить файлы", - "create.gui.schematicTable.open_folder": "Открыть папку", + "create.gui.schematicTable.open_folder": "Открыть папку со схематиками", "create.gui.schematicTable.title": "Схематичный стол", "create.gui.schematicTable.availableSchematics": "Доступные схемы", "create.gui.schematicTable.noSchematics": "Схемы не сохранены", @@ -1175,27 +1174,27 @@ "create.gui.schematicTable.finished": "Загрузка завершена!", "create.gui.schematicannon.title": "Схематичная пушка", "create.gui.schematicannon.listPrinter": "Список материалов", - "create.gui.schematicannon.gunpowderLevel": "Порох на %1$s%%", + "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "С резервной копией: %1$s", - "create.gui.schematicannon.optionEnabled": "В настоящее время включен", - "create.gui.schematicannon.optionDisabled": "В настоящее время отключен", - "create.gui.schematicannon.showOptions": "Показать настройки печати", + "create.gui.schematicannon.shotsRemainingWithBackup": "С порохом в запасе: %1$s", + "create.gui.schematicannon.optionEnabled": "Включено", + "create.gui.schematicannon.optionDisabled": "Отключено", + "create.gui.schematicannon.showOptions": "Показать настройки строительства", "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", "create.gui.schematicannon.option.skipTileEntities": "Защитить имущество", - "create.gui.schematicannon.slot.gunpowder": "Добавьте порох чтобы заправить пушку", + "create.gui.schematicannon.slot.gunpowder": "Добавьте порох, чтобы заправить пушку", "create.gui.schematicannon.slot.listPrinter": "Положите книгу, чтобы создать список предметов для схематики", "create.gui.schematicannon.slot.schematic": "Положите свою схематику здесь. Убедитесь что она размещена в правильном месте", - "create.gui.schematicannon.option.skipMissing.description": "Если пушка не может найти требуемый блок, она будет строить в следующем месте.", - "create.gui.schematicannon.option.skipTileEntities.description": "Пушка не будет заменять блоки хранения, такие как сундуки.", + "create.gui.schematicannon.option.skipMissing.description": "Если пушка не сможет найти требуемый блок, то она перейдёт к следующему.", + "create.gui.schematicannon.option.skipTileEntities.description": "Пушка не будет заменять блоки-хранилища, такие как сундуки.", "create.gui.schematicannon.option.dontReplaceSolid.description": "Пушка никогда не заменит целые блоки, только не целые и воздух.", "create.gui.schematicannon.option.replaceWithSolid.description": "Пушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", "create.gui.schematicannon.option.replaceWithAny.description": "Пушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Пушка отчистит все блоки, включая замену на воздух.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Пушка уберёт все блоки, включая замену на воздух.", "create.schematicannon.status.idle": "Бездействует", "create.schematicannon.status.ready": "Готова", @@ -1212,20 +1211,20 @@ "create.schematicannon.status.placing": "Стройка", "create.schematicannon.status.clearing": "Очистка", "create.schematicannon.status.schematicInvalid": "Неверная схема", - "create.schematicannon.status.schematicNotPlaced": "Схема не загружена", - "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истёк", + "create.schematicannon.status.schematicNotPlaced": "Схема не развёрнута", + "create.schematicannon.status.schematicExpired": "Файл схемы устарел", "create.materialChecklist": "Список материалов", "create.materialChecklist.blocksNotLoaded": "* Внимание! *\n\nСписок материалов может быть неточным из-за незагруженных чанков.", "create.gui.filter.deny_list": "Чёрный список", - "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой чёрный список принимает все.", + "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой чёрный список принимает всё.", "create.gui.filter.allow_list": "Белый список", - "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает все.", + "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает всё.", "create.gui.filter.respect_data": "Использование данных", - "create.gui.filter.respect_data.description": "Предметы совпадают только в том случае, если их прочность, чары и другие атрибуты совпадают.", + "create.gui.filter.respect_data.description": "Предметы проходят только в том случае, если их прочность, чары и другие атрибуты совпадают.", "create.gui.filter.ignore_data": "Игнорирование данных", - "create.gui.filter.ignore_data.description": "Предметы совпадают независимо от их атрибутов.", + "create.gui.filter.ignore_data.description": "Предметы проходят независимо от их атрибутов.", "create.item_attributes.placeable": "можно разместить", "create.item_attributes.placeable.inverted": "нельзя разместить", @@ -1235,8 +1234,8 @@ "create.item_attributes.fluid_container.inverted": "не может хранить жидкости", "create.item_attributes.enchanted": "зачарован", "create.item_attributes.enchanted.inverted": "не зачарован", - "create.item_attributes.max_enchanted": "Зачаровано за максимальный уровень", - "create.item_attributes.max_enchanted.inverted": "Не зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted": "зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted.inverted": "не зачаровано за максимальный уровень", "create.item_attributes.renamed": "имеет пользовательское имя", "create.item_attributes.renamed.inverted": "не имеет пользовательского имени", "create.item_attributes.damaged": "повреждён", @@ -1329,7 +1328,7 @@ "create.tooltip.capacityProvided": "Допустимая нагрузка: %1$s", "create.tooltip.capacityProvided.low": "Низкая", "create.tooltip.capacityProvided.medium": "Средняя", - "create.tooltip.capacityProvided.high": "Большая", + "create.tooltip.capacityProvided.high": "Высокая", "create.tooltip.generationSpeed": "Создаёт %1$s %2$s", "create.tooltip.analogStrength": "Аналоговая сила: %1$s/15", @@ -1347,13 +1346,13 @@ "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", "create.mechanical_arm.selection_mode.round_robin": "По кругу", - "create.mechanical_arm.selection_mode.forced_round_robin": "Принудительно по кругу", + "create.mechanical_arm.selection_mode.forced_round_robin": "Строго по кругу", "create.mechanical_arm.selection_mode.prefer_first": "Предпочитать первичную цель", - "create.tunnel.selection_mode.split": "Разделить", - "create.tunnel.selection_mode.forced_split": "Принудительно разделить", + "create.tunnel.selection_mode.split": "Разделение", + "create.tunnel.selection_mode.forced_split": "Строгое разделение", "create.tunnel.selection_mode.round_robin": "По кругу", - "create.tunnel.selection_mode.forced_round_robin": "Принудительно по кругу", + "create.tunnel.selection_mode.forced_round_robin": "Строго по кругу", "create.tunnel.selection_mode.prefer_nearest": "Предпочтительно ближайшее", "create.tunnel.selection_mode.randomize": "Случайно", "create.tunnel.selection_mode.synchronize": "Синхронизировать входы", @@ -1367,12 +1366,16 @@ "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "В данный момент раздает(выдает):", + "create.tooltip.deployer.header": "Информация об автономном активаторе", + "create.tooltip.deployer.using": "Автономный активатор использует", + "create.tooltip.deployer.punching": "Автономный активатор ударяет", + "create.tooltip.deployer.contains": "Держит: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "В данный момент распределяет:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "ПКМ, чтобы получить", "create.linked_controller.bind_mode": "Режим привязки активирован", - "create.linked_controller.press_keybind": "Нажмите %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, чтобы привязать эту частоту к соответствующей клавише", + "create.linked_controller.press_keybind": "Нажмите %1$s, %2$s, %3$s, %4$s, %5$s или %6$s, чтобы привязать эту частоту к соответствующей клавише.", "create.linked_controller.key_bound": "Частота привязана к %1$s", "create.linked_controller.frequency_slot_1": "Клавиша: %1$s, Частота #1", "create.linked_controller.frequency_slot_2": "Клавиша: %1$s, Частота #2", @@ -1383,9 +1386,9 @@ "create.crafting_blueprint.inferred": "Производные от рецепта", "create.crafting_blueprint.manually_assigned": "Назначен вручную", "create.crafting_blueprint.secondary_display_slot": "Дополнительная отображаемая ячейка", - "create.crafting_blueprint.optional": "Опциональна", + "create.crafting_blueprint.optional": "Опционально", - "create.potato_cannon.ammo.attack_damage": "%1$s урона от атаки", + "create.potato_cannon.ammo.attack_damage": "%1$s урона от попадания", "create.potato_cannon.ammo.reload_ticks": "%1$s тиков перезарядки", "create.potato_cannon.ammo.knockback": "%1$s отбрасывания", @@ -1406,10 +1409,10 @@ "create.boiler.status": "Статус котла: %1$s", "create.boiler.status_short": "Котёл: %1$s", - "create.boiler.passive": "Мин.", - "create.boiler.idle": "Выкл.", - "create.boiler.lvl": "Ур: %1$s", - "create.boiler.max_lvl": "Макс.", + "create.boiler.passive": "Начальный", + "create.boiler.idle": "Выключен", + "create.boiler.lvl": "Уровень: %1$s", + "create.boiler.max_lvl": "Предельный", "create.boiler.size": "Размер", "create.boiler.size_dots": ".... ", "create.boiler.water": "Вода", @@ -1437,7 +1440,7 @@ "create.schedule.instruction.filter_edit_box_1": "Используйте * в качестве текстового подстановочного знака", "create.schedule.instruction.filter_edit_box_2": "Пример: 'Моя Станция, платформа *'", "create.schedule.instruction.filter_edit_box_3": "Поезд выберет наименьшее совпадение", - "create.schedule.instruction.rename": "Обновить название расп.", + "create.schedule.instruction.rename": "Сменить имя расписания", "create.schedule.instruction.rename.summary": "Новое название:", "create.schedule.instruction.name_edit_box": "Название расписания", "create.schedule.instruction.name_edit_box_1": "Влияет на текст, отображаемый на табло", @@ -1451,9 +1454,9 @@ "create.schedule.condition.delay": "Пауза расписания", "create.schedule.condition.delay_short": "Ожидание: %1$s", "create.schedule.condition.delay.status": "До отправления %1$s", - "create.schedule.condition.idle": "Неизменение груза", - "create.schedule.condition.idle_short": "Груз не изменяется: %1$s %1$s", - "create.schedule.condition.idle.status": "Простой груза: %1$s", + "create.schedule.condition.idle": "Груз не изменился", + "create.schedule.condition.idle_short": "Груз без изменений: %1$s %1$s", + "create.schedule.condition.idle.status": "Груз без изменений %1$s", "create.schedule.condition.for_x_time": "в течение %1$s", "create.schedule.condition.unloaded": "Чанк выгружен", "create.schedule.condition.unloaded.status": "Ожидание выгрузки чанка", @@ -1517,15 +1520,15 @@ "create.schedule.remove_with_empty_hand": "Заберите текущее расписание пустой рукой", "create.schedule.auto_removed_from_train": "Автоматическое расписание отменено", "create.schedule.removed_from_train": "Расписание получено из поезда", - "create.schedule.no_stops": "В этом расписании пока нет остановок", + "create.schedule.no_stops": "В этом расписании нет остановок", "create.schedule.continued": "Расписание возобновлено", "create.track.selection_cleared": "Выбор отменён", - "create.track.valid_connection": "Можно соеденить ✔", + "create.track.valid_connection": "Можно соединить ✔", "create.track.second_point": "Разместите пути на горизонтальной поверхности или выберите вторую точку", - "create.track.too_far": "Слишком далеко", + "create.track.too_far": "Слишком далеко...", "create.track.original_missing": "Исходные пути разрушены, нажмите Shift+ПКМ, чтобы выйти из режима размещения", - "create.track.perpendicular": "Невозможно соеденить перпендикулярно", + "create.track.perpendicular": "Невозможно соединить перпендикулярно", "create.track.ascending_s_curve": "Невозможно создать наклонные S-образные изгибы", "create.track.too_sharp": "Слишком резкий угол поворота", "create.track.too_steep": "Слишком крутой склон", @@ -1555,11 +1558,11 @@ "create.station.remove_schedule": "Получить расписание", "create.station.remove_auto_schedule": "Отменить автоматическое расписание", "create.station.no_assembly_diagonal": "Нельзя строить поезда", - "create.station.no_assembly_diagonal_1": "на пересениях путей", + "create.station.no_assembly_diagonal_1": "на пересечениях путей", "create.station.no_assembly_curve": "Нельзя строить поезда", - "create.station.no_assembly_curve_1": "на изгнутых путях", - "create.station.train_not_aligned": "Невозможно разобрать,", - "create.station.train_not_aligned_1": "не все вагонные тележки были выровнены", + "create.station.no_assembly_curve_1": "на изогнутых путях", + "create.station.train_not_aligned": "Невозможно разобрать, не все", + "create.station.train_not_aligned_1": "вагонные тележки были выровнены", "create.station.carriage_number": "Вагон № %1$s:", "create.station.retry": "Исправьте это и повторите попытку.", "create.station.no_bogeys": "Нет вагонных тележек", @@ -1587,25 +1590,25 @@ "create.track_target.missing": "Сначала выберите пути, нажав ПКМ по ним", "create.track_target.too_far": "Установите станцию ближе к путям...", "create.track_target.no_junctions": "Невозможно установить маркер станции на перекрёстке", - "create.track_target.occupied": "Выбранный путь занят", + "create.track_target.occupied": "Выбранные пути заняты", "create.track_target.invalid": "Невозможно выбрать эти пути", "create.train.unnamed": "Безымянный поезд", "create.train.cannot_relocate_moving": "Невозможно переместить движущийся поезд", "create.train.relocate": "Нажмите по путям, чтобы переместить %1$s. Shift+ПКМ для отмены", "create.train.relocate.abort": "Перенос отменён", - "create.train.relocate.success": "Успешный перенос", + "create.train.relocate.success": "Успешно перенесён", "create.train.relocate.valid": "Можно переместить сюда, нажмите для подтверждения", "create.train.relocate.invalid": "Невозможно переместить поезд сюда", - "create.train.relocate.too_far": "Невозможно переместить поезд так далеко", + "create.train.relocate.too_far": "Невозможно переместить поезд так далеко...", "create.train.departing_from": "Отправился от %1$s", "create.train.arrived_at": "Прибыл на %1$s", "create.train.status": " Информация о поезде: %1$s", "create.train.status.back_on_track": "Поезд снова на ходу", - "create.train.status.collision": "Столкновение с другим поездом", + "create.train.status.collision": "Авария с другим поездом", "create.train.status.end_of_track": "Поезд достиг конца путей", "create.train.status.double_portal": "Поезд не может войти в портал, покидая другой", - "create.train.status.coupling_stress": "Принудительная остановка из-за нагрузки на спепление вагонов", + "create.train.status.coupling_stress": "Аварийная остановка из-за нагрузки на сцепление вагонов", "create.train.status.track_missing": "Под поездом нет путей", "create.train.status.paused_for_manual": "Расписание приостановлено для ручного управления", "create.train.status.opposite_driver": "Путь требует, чтобы машинист смотрел в противоположном направлении", @@ -1616,8 +1619,8 @@ "create.train.status.no_path": "Не удалось найти подходящий путь к следующему запланированному пункту назначения", "create.track_signal.cannot_change_mode": "Невозможно переключить режим этого светофора", - "create.track_signal.mode_change.entry_signal": "-> Разрешить проезд, если секция не занята", - "create.track_signal.mode_change.cross_signal": "-> Разрешить проезд, если секция полностью проходима и не занята", + "create.track_signal.mode_change.entry_signal": "-> Разрешить проезд, если сегмент не занят", + "create.track_signal.mode_change.cross_signal": "-> Разрешить проезд, если сегмент полностью проходим и не занят", "create.contraption.controls.start_controlling": "Под управлением: %1$s", "create.contraption.controls.stop_controlling": "Выход из режима управления", @@ -1625,9 +1628,9 @@ "create.display_link.set": "Выбрана целевая позиция", "create.display_link.success": "Успешно привязан к целевой позиции", - "create.display_link.clear": "Целевая позиция убрана", - "create.display_link.too_far": "Целевая позиция слишком далеко отсюда", - "create.display_link.invalid": "Передатчик не имеет выбранного табло, привяжите и попробуйте ещё раз", + "create.display_link.clear": "Выбор целевой позиции отменён", + "create.display_link.too_far": "Целевая позиция слишком далеко...", + "create.display_link.invalid": "Передатчик не имеет выбранной цели, привяжите его и попробуйте ещё раз", "create.display_link.title": "Передатчик информации", "create.display_link.no_source": "Не источник информации", "create.display_link.no_target": "Не цель для отображения", @@ -1698,8 +1701,8 @@ "create.display_source.redstone_power.display": "Формат отображения", "create.display_source.redstone_power.number": "Число", "create.display_source.redstone_power.progress_bar": "Полоса прогресса", - "create.display_source.boiler.not_enough_space": "Мало места ", - "create.display_source.boiler.for_boiler_status": "для статуса котла", + "create.display_source.boiler.not_enough_space": "нет места", + "create.display_source.boiler.for_boiler_status": "для текста", "create.display_target.line": "Строка %1$s", "create.display_target.page": "Страница %1$s", @@ -1716,7 +1719,7 @@ "create.super_glue.too_far": "Выбранная область слишком большая", "create.super_glue.cannot_reach": "Выбранные блоки должны быть соединены", "create.super_glue.click_to_confirm": "Нажмите ещё раз, чтобы подтвердить", - "create.super_glue.click_to_discard": "Shift+ПКМ, чтобы отменить выбор", + "create.super_glue.click_to_discard": "Нажмите Shift+ПКМ, чтобы отменить выбор", "create.super_glue.first_pos": "Выбрана первая позиция", "create.super_glue.abort": "Выбор отменён", "create.super_glue.not_enough": "Мало клея в инвентаре", @@ -1767,7 +1770,7 @@ "create.subtitle.mixing": "Шум смешивания", "create.subtitle.mechanical_press_activation_belt": "Механический пресс делает «Бонк»", "create.subtitle.fwoomp": "Картофельная пушка делает «Свомп»", - "create.subtitle.sanding_long": "Звук шлифовки", + "create.subtitle.sanding_long": "Короткий звук полировки", "create.subtitle.crushing_1": "Шум разрушения", "create.subtitle.depot_slide": "Шелест предметов", "create.subtitle.blaze_munch": "Всполох радостно жуёт", @@ -1776,7 +1779,7 @@ "create.subtitle.scroll_value": "Щелчки колеса прокрутки", "create.subtitle.controller_put": "Контроллер стучит", "create.subtitle.cranking": "Вращается рукоятка", - "create.subtitle.sanding_short": "Звук шлифовки", + "create.subtitle.sanding_short": "Долгий звук полировки", "create.subtitle.wrench_rotate": "Использован гаечный ключ", "create.subtitle.potato_hit": "Еда врезается", "create.subtitle.saw_activate_wood": "Активируется механическая пила", @@ -1816,13 +1819,13 @@ "block.create.seat.tooltip.behaviour1": "Сажает игрока на _Сиденье_. Нажмите _кнопку_ _приседания_ чтобы слезть (Shift по умолчанию).", "item.create.blaze_cake.tooltip": "ТОРТ ВСПОЛОХА", - "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги _Горелки Всполоха_. Зажигает их всех!", + "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги — _Горелки всполоха_. Зажигает их всех!", "item.create.wand_of_symmetry.tooltip": "ЖЕЗЛ СИММЕТРИИ", "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", - "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ по блоку", "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", @@ -1845,14 +1848,14 @@ "item.create.extendo_grip.tooltip": "УДЛИНЕННАЯ РУКА", "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", - "item.create.extendo_grip.tooltip.condition1": "Находясь в другой руке", + "item.create.extendo_grip.tooltip.condition1": "Находясь в левой руке", "item.create.extendo_grip.tooltip.behaviour1": "Увеличивает _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.", "item.create.extendo_grip.tooltip.condition2": "Когда надет Медный баллон", - "item.create.extendo_grip.tooltip.behaviour2": " _НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", + "item.create.extendo_grip.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", "item.create.potato_cannon.tooltip": "КАРТОФЕЛЬНАЯ ПУШКА", "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте выращенные вами овощи в своих врагов. Может работать от давления воздуха из _Медного_ _баллона_", - "item.create.potato_cannon.tooltip.condition1": "Нажимая ПКМ", + "item.create.potato_cannon.tooltip.condition1": "ПКМ с предметом", "item.create.potato_cannon.tooltip.behaviour1": "_Выстреливает_ подходящим предметом из вашего _инвентаря_.", "item.create.potato_cannon.tooltip.condition2": "Когда надет Медный баллон", "item.create.potato_cannon.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", @@ -1861,14 +1864,14 @@ "item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.", "item.create.filter.tooltip.condition1": "Когда в слоте фильтра", "item.create.filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.filter.tooltip.condition2": "При ПКМ", + "item.create.filter.tooltip.condition2": "ПКМ с предметом", "item.create.filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.attribute_filter.tooltip": "ФИЛЬТР АТРИБУТОВ", "item.create.attribute_filter.tooltip.summary": "_Управляет_ _выходами_ и _входами_ логистических устройств с _большей_ _точностью_, сопоставляя их с набором _атрибутов_ и _категорий предметов_.", "item.create.attribute_filter.tooltip.condition1": "Когда в слоте фильтра", "item.create.attribute_filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.attribute_filter.tooltip.condition2": "ПКМ", + "item.create.attribute_filter.tooltip.condition2": "ПКМ с предметом", "item.create.attribute_filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.empty_schematic.tooltip": "ПУСТАЯ СХЕМАТИКА", @@ -1876,18 +1879,18 @@ "item.create.schematic.tooltip": "СХЕМАТИКА", "item.create.schematic.tooltip.summary": "Содержит структуру, которая будет позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _схематичную пушку_ для ее построения.", - "item.create.schematic.tooltip.condition1": "При удерживании", + "item.create.schematic.tooltip.condition1": "ПКМ с предметом", "item.create.schematic.tooltip.behaviour1": "Может быть позиционирован с помощью инструментов на экране.", "item.create.schematic.tooltip.control1": "ПКМ крадучись", "item.create.schematic.tooltip.action1": "Открывает _интерфейс_ для ввода _точных_ _координат_.", "item.create.schematic_and_quill.tooltip": "СХЕМАТИКА И ПЕРО", - "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в вашем мире в файл .nbt.", + "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в вашем мире в файл формата .nbt.", "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две угловые точки, используя ПКМ.", "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ и _прокрутка_ на голограмме для изменения размера. Нажмите ПКМ, чтобы сохранить.", - "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ с предметом", "item.create.schematic_and_quill.tooltip.action1": "Выберите угловые точки / подтвердите сохранение.", "item.create.schematic_and_quill.tooltip.control2": "Удержание Ctrl", "item.create.schematic_and_quill.tooltip.action2": "Выберите точки в воздухе. Прокрутка для настройки расстояния.", @@ -1896,7 +1899,7 @@ "block.create.schematicannon.tooltip": "СХЕМАТИЧНАЯ ПУШКА", "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", - "block.create.schematicannon.tooltip.condition1": "ПКМ", + "block.create.schematicannon.tooltip.condition1": "ПКМ по блоку", "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", "block.create.schematic_table.tooltip": "СХЕМАТИЧНЫЙ СТОЛ", @@ -1937,39 +1940,39 @@ "block.create.toolbox.tooltip.behaviour1": "_Сохраняет_ содержимое _инвентаря_.", "block.create.toolbox.tooltip.condition2": "При размещении в диапазоне досягаемости", "block.create.toolbox.tooltip.behaviour2": "_Ближайшие_ _игроки_ могут зажать _клавишу_ для _удалённого_ получения содержимого _ящика_ _для_ _инструментов_.", - "block.create.toolbox.tooltip.condition3": "ПКМ по ящику", + "block.create.toolbox.tooltip.condition3": "ПКМ по блоку", "block.create.toolbox.tooltip.behaviour3": "Открывает _интерфейс контейнера_.", - "block.create.stockpile_switch.tooltip": "НАСТРАИВАЕМЫЙ КОМПАРАТОР", + "block.create.stockpile_switch.tooltip": "НАБЛЮДАТЕЛЬ ЗАПОЛНЕННОСТИ", "block.create.stockpile_switch.tooltip.summary": "Подаёт сигнал красного камня в зависимости от _заполненности_ _прикреплённого_ _ящика_.", - "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего предела", + "block.create.stockpile_switch.tooltip.condition1": "Когда достигнут нижний предел", "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _сигнал_ _красного_ _камня_.", "block.create.content_observer.tooltip": "НАБЛЮДАТЕЛЬ ЗА СОДЕРЖИМЫМ", - "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и _конвейеров_, соответствующие настроенному _фильтру_. Если наблюдаемый инвентарь, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _ воронка передает_ соответствующий предмет, этот компонент испускает _импульс_.", + "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и на _конвейерах_, соответствующие настроенному _фильтру_. Если наблюдаемый блок-хранилище, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _воронка передает_ соответствующий предмет, этот компонент испускает _импульс редстоуна_.", "block.create.content_observer.tooltip.condition1": "Когда наблюдает за контейнером", "block.create.content_observer.tooltip.behaviour1": "Выдаёт _сигнал редстоуна_, пока наблюдаемое содержимое совпадает с _фильтром_.", "block.create.content_observer.tooltip.condition2": "Когда наблюдает за воронкой", "block.create.content_observer.tooltip.behaviour2": "Выдаёт _сигнал редстоуна_, пока содержимое совпадает с _перемещаемым_ предметом.", "block.create.creative_crate.tooltip": "ТВОРЧЕСКИЙ ЯЩИК", - "block.create.creative_crate.tooltip.summary": "Этот _контейнер_ для _хранения_ позволяющий _бесконечную_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалу.", + "block.create.creative_crate.tooltip.summary": "Это _хранилище_ позволяет _бесконечно_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалам.", "block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра", - "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.", + "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _помещённые_ в этот ящик, будут _уничтожены_.", "item.create.creative_blaze_cake.tooltip": "ТВОРЧЕСКИЙ ТОРТ", - "item.create.creative_blaze_cake.tooltip.summary": "Особое угощение для ваших _Горелок Всполоха_. После поедания этого торта у Горелки Всполоха _никогда не закончится топливо_.", - "item.create.creative_blaze_cake.tooltip.condition1": "При использовании", - "item.create.creative_blaze_cake.tooltip.behaviour1": "_Циклически_ изменяет уровень нагрева Горелки Всполоха.", + "item.create.creative_blaze_cake.tooltip.summary": "Особое угощение для ваших _Горелок всполоха_. После поедания этого торта у Горелки всполоха _никогда не закончится топливо_.", + "item.create.creative_blaze_cake.tooltip.condition1": "ПКМ по Горелке всполоха", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_Циклически_ изменяет уровень нагрева.", "block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩИЕ РЕЛЬСЫ", - "block.create.controller_rail.tooltip.summary": "_Всенаправленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.", + "block.create.controller_rail.tooltip.summary": "_Всенаправленные запитанные рельсы_, позволяющие провести _точную настройку_ _скорости_ вагонеток.", "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на величину зависящую от _силы сигнала_. Распространяя сигнал красного камня на соседние контролирующие рельсы. Питание двух контролирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", "item.create.sand_paper.tooltip": "НАЖДАЧНАЯ БУМАГА", "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", - "item.create.sand_paper.tooltip.condition1": "Когда используется", + "item.create.sand_paper.tooltip.condition1": "ПКМ с предметом", "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_", "item.create.builders_tea.tooltip": "ЧАЙ СТРОИТЕЛЯ", @@ -1980,19 +1983,19 @@ "item.create.refined_radiance.tooltip.condition1": "Работа в процессе", "item.create.refined_radiance.tooltip.behaviour1": "Использование этого материала будет доступно в следующем обновлении.", - "item.create.shadow_steel.tooltip": "ВОЗВРАЩЕНИЕ ПУСТОТЫ", + "item.create.shadow_steel.tooltip": "ТЕНЕВАЯ СТАЛЬ", "item.create.shadow_steel.tooltip.summary": "Хроматический материал, _добытый_ _в_ _пустоте_.", "item.create.shadow_steel.tooltip.condition1": "Работа в процессе", "item.create.shadow_steel.tooltip.behaviour1": "Использование этого материала будет доступно в следующем обновлении.", - "item.create.linked_controller.tooltip": "ПОДКЛЮЧАЕМЫЙ КОНТРОЛЛЕР", - "item.create.linked_controller.tooltip.summary": "Предоставляет _ручной_ _контроль_ над частотами _Беспроводного передатчика редстоун сигнала_, присвоенные его _шести_ кнопкам.", - "item.create.linked_controller.tooltip.condition1": "ПКМ", + "item.create.linked_controller.tooltip": "КОНТРОЛЛЕР СВЯЗИ", + "item.create.linked_controller.tooltip.summary": "Предоставляет _ручной_ _контроль_ над частотами _Редстоунового беспроводного передатчика сигнала_, присвоенные его _шести_ кнопкам.", + "item.create.linked_controller.tooltip.condition1": "ПКМ с предметом", "item.create.linked_controller.tooltip.behaviour1": "Включает контроллер. _Управление_ _движением_ перехвачено, пока он активен.", "item.create.linked_controller.tooltip.condition2": "ПКМ крадучись", "item.create.linked_controller.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.linked_controller.tooltip.condition3": "ПКМ по приемнику сигнала редстоуна", - "item.create.linked_controller.tooltip.behaviour3": "Включает _режим привязки_, нажмите одну из _шести кнопок_, чтобы привязать его к _частоте передатчика_.", + "item.create.linked_controller.tooltip.behaviour3": "Включает _режим привязки_, нажмите одну из _шести кнопок_, чтобы привязать её к _частоте передатчика_.", "item.create.linked_controller.tooltip.condition4": "ПКМ по кафедре", "item.create.linked_controller.tooltip.behaviour4": "Помещает контроллер на кафедру для удобства использования. (ПКМ крадучись, чтобы забрать его)", @@ -2013,7 +2016,7 @@ "block.create.placard.tooltip.condition1": "ПКМ по рамке с предметом в руках", "block.create.placard.tooltip.behaviour1": "_Добавляет_ удерживаемый _предмет_ в рамку. _Издаёт_ короткий _сигнал редстоуна_, если соответствующий предмет уже присутствует.", "block.create.placard.tooltip.condition2": "При ударе", - "block.create.placard.tooltip.behaviour2": "_Удаляет_ текущий _предмет_ из рамки.", + "block.create.placard.tooltip.behaviour2": "_Убирает_ текущий _предмет_ из рамки.", "block.create.flywheel.tooltip": "МАХОВИК", "block.create.flywheel.tooltip.summary": "_Украсьте_ свои _машины_ этим внушительным медным колесом.", @@ -2023,7 +2026,7 @@ "item.create.diving_boots.tooltip": "БОТИНКИ ДЛЯ ДАЙВИНГА", "item.create.diving_boots.tooltip.summary": "Пара _тяжелых_ _ботинок_, позволяющая лучше передвигаться по океанскому дну.", "item.create.diving_boots.tooltip.condition1": "При ношении", - "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по конвейрам.", + "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по конвейерам.", "item.create.crafting_blueprint.tooltip": "ЧЕРТЁЖ", "item.create.crafting_blueprint.tooltip.summary": "_Разместив_ на стене, его можно использовать для _определения_ _расположения_ _предметов_ для более простого ручного создания предметов. Каждый слот показывает отдельный рецепт крафта.", @@ -2032,22 +2035,22 @@ "item.create.crafting_blueprint.condition2": "ПКМ по настроенному слоту", "item.create.crafting_blueprint.behaviour2": "_Применяет_ _заданный_ _рецепт_ с подходящими ингредиентами, из вашего _инвентаря_. _Shift_, чтобы создать до _стака_ предметов.", - "item.create.minecart_coupling.tooltip": "СОЕДЕНИТЕЛЬ ВАГОНЕТОК", - "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный поезд.", - "item.create.minecart_coupling.tooltip.condition1": "При использовании на вагонетке", + "item.create.minecart_coupling.tooltip": "СОЕДИНИТЕЛЬ ВАГОНЕТОК", + "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный мини-поезд.", + "item.create.minecart_coupling.tooltip.condition1": "ПКМ по вагонеткам", "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определённой дистанции_ при движении.", "item.create.experience_nugget.tooltip": "КУСОЧЕК ОПЫТА", - "item.create.experience_nugget.tooltip.summary": "_Дзинь!_ Частица _вдохновения_ от ваших фантастических изобретений.", - "item.create.experience_nugget.tooltip.condition1": "При использовании", - "item.create.experience_nugget.tooltip.behaviour1": "_Высвобождает_ _очки опыта_ содержащиеся внутри.", + "item.create.experience_nugget.tooltip.summary": "_Дзинь!_ Частичка _вдохновения_ от ваших фантастических изобретений.", + "item.create.experience_nugget.tooltip.condition1": "ПКМ с предметом", + "item.create.experience_nugget.tooltip.behaviour1": "_Высвобождает_ _очки опыта_, находящиеся внутри.", "block.create.peculiar_bell.tooltip": "СТРАННЫЙ КОЛОКОЛ", - "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _Огнем душ_ может вызвать побочные эффекты...", + "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _Огнем душ_ может вызвать непредвиденные последствия...", "block.create.haunted_bell.tooltip": "ПРИЗРАЧНЫЙ КОЛОКОЛ", "block.create.haunted_bell.tooltip.summary": "_Проклятый колокол_ населённый потерянными душами Нижнего мира.", - "block.create.haunted_bell.tooltip.condition1": "При ношении или при звоне", + "block.create.haunted_bell.tooltip.condition1": "При ношении в руке или при ПКМ по блоку", "block.create.haunted_bell.tooltip.behaviour1": "Подсвечивает ближайшие _места без света_ на которых могут появляться _враждебные существа_.", @@ -2055,16 +2058,16 @@ "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для размышления", "create.ponder.subject": "Субъект этой сцены", - "create.ponder.pondering": "Размышляем о/об...", - "create.ponder.identify_mode": "Режим Идентификации включён.\nУбрать паузу: [%1$s]", + "create.ponder.pondering": "Размышляем над...", + "create.ponder.identify_mode": "Режим идентификации включён.\nСнять паузу: [%1$s]", "create.ponder.associated": "Связанные статьи", "create.ponder.close": "Закрыть", "create.ponder.identify": "Определить", "create.ponder.next": "Следующая сцена", - "create.ponder.next_up": "Размышлять дальше о/об:", + "create.ponder.next_up": "Размышлять дальше над...", "create.ponder.previous": "Предыдущая сцена", "create.ponder.replay": "Воспроизвести снова", - "create.ponder.think_back": "Подумать о предыдущем", + "create.ponder.think_back": "Назад", "create.ponder.slow_text": "Удобное чтение", "create.ponder.exit": "Выйти", "create.ponder.welcome": "Добро пожаловать в размышления!", @@ -2072,11 +2075,11 @@ "create.ponder.index_description": "Кликните по одной из иконок, чтобы узнать о связанных с ней предметах и блоках.", "create.ponder.index_title": "Содержание размышлений", "create.ponder.shared.rpm16": "16 об./мин.", - "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Ключом", + "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Гаечным ключом", "create.ponder.shared.storage_on_contraption": "Присоединённые к штуковине инвентари будут подбирать вещи автоматически", - "create.ponder.shared.sneak_and": "Shift+", + "create.ponder.shared.sneak_and": "Shift +", "create.ponder.shared.rpm8": "8 об./мин.", - "create.ponder.shared.ctrl_and": "Ctrl+", + "create.ponder.shared.ctrl_and": "Ctrl +", "create.ponder.shared.rpm32": "32 об./мин.", "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", "create.ponder.shared.movement_anchors": "С помощью суперклея или шасси, более крупные структуры могут быть сдвинуты.", @@ -2089,7 +2092,7 @@ "create.ponder.tag.decoration": "Эстетика", "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", "create.ponder.tag.windmill_sails": "Паруса для Подшипников ветряной мельницы", - "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы. Каждый из этих блоков имеет одинаковую эффективность в деле.", + "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы. Каждый из этих блоков имеет одинаковую эффективность в работе.", "create.ponder.tag.arm_targets": "Цели для Механической руки", "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической руки", "create.ponder.tag.kinetic_appliances": "Кинетические приборы", @@ -2113,18 +2116,18 @@ "create.ponder.tag.train_related": "Железнодорожное оборудование", "create.ponder.tag.train_related.description": "Компоненты, используемые при строительстве или управлении Железнодорожных штуковин", - "create.ponder.analog_lever.header": "Управлении сигналами используя Аналоговый рычаг", + "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": "Использовании Андезитовых туннелей", + "create.ponder.andesite_tunnel.header": "Использованием Андезитовых туннелей", "create.ponder.andesite_tunnel.text_1": "Андезитовые туннели могут быть использованы, чтобы накрывать Конвейеры", "create.ponder.andesite_tunnel.text_2": "Всегда, когда у Андезитового туннеля есть соединения сбоку...", "create.ponder.andesite_tunnel.text_3": "...он будет отделять ровно один предмет из любых проходящих мимо стаков", "create.ponder.andesite_tunnel.text_4": "Остаток продолжит свой путь", - "create.ponder.auto_schedule.header": "Станциях и Расписаниях", + "create.ponder.auto_schedule.header": "Станциями и Расписаниями", "create.ponder.auto_schedule.text_1": "Расписания могут использоваться для предоставления машинистам пункта назначения", "create.ponder.auto_schedule.text_2": "Компараторы будут получать сигнал всякий раз, когда присутствует поезд", "create.ponder.auto_schedule.text_3": "Имейте в виду, что к станции можно подойти только с указанного направления", @@ -2132,7 +2135,7 @@ "create.ponder.auto_schedule.text_5": "Расписание, положенное на станцию, будет автоматически скопировано для машиниста поезда", "create.ponder.auto_schedule.text_6": "В отличии от ручной выдачи, машинисты не заберут его с собой", - "create.ponder.basin.header": "Обработке предметов в Чаше", + "create.ponder.basin.header": "Обработкой предметов в Чаше", "create.ponder.basin.text_1": "Чаша может хранить предметы и жидкости для обработки", "create.ponder.basin.text_2": "После обработки, чаши пытаются вывести результат под любой из их сторон", "create.ponder.basin.text_3": "Когда предоставлен подходящий компонент, у Чаши появится выходящий кран", @@ -2143,15 +2146,15 @@ "create.ponder.basin.text_8": "Желаемые продукты должны быть в таком случае извлечены из чаши", "create.ponder.basin.text_9": "Фильтр может быть необходим для избежания извлечения необработанных предметов", - "create.ponder.bearing_modes.header": "Режимах движения Механического подшипника", + "create.ponder.bearing_modes.header": "Режимами движения Механического подшипника", "create.ponder.bearing_modes.text_1": "Когда остановлен, подшипник установит структуру на ближайшем выровненным по сетке блоков углу", "create.ponder.bearing_modes.text_2": "Он может быть настроен никогда не возвращать структуру в твёрдое состояние, или только возле начального угла", - "create.ponder.belt_casing.header": "Обрамлении ремней", + "create.ponder.belt_casing.header": "Обрамлением ремней", "create.ponder.belt_casing.text_1": "Латунный или Андезитовый корпус может быть использован для декорации Механических ремней (конвейера)", "create.ponder.belt_casing.text_2": "Используйте Ключ, чтобы убрать обрамление", - "create.ponder.belt_connector.header": "Использовании Механических ремней", + "create.ponder.belt_connector.header": "Использованием Механических ремней", "create.ponder.belt_connector.text_1": "ПКМ по двум валам предметом ремня соединит их вместе в конвейер", "create.ponder.belt_connector.text_2": "Случайные выделения могут быть отменены нажатием ПКМ Крадучись", "create.ponder.belt_connector.text_3": "Дополнительные валы могут быть добавлены по всей длине конвейера", @@ -2159,7 +2162,7 @@ "create.ponder.belt_connector.text_5": "Добавленные Валы могут быть убраны Ключом", "create.ponder.belt_connector.text_6": "Механические ремни могут быть окрашены в эстетических целях", - "create.ponder.belt_directions.header": "Возможных расположениях Механических ремней", + "create.ponder.belt_directions.header": "Возможными расположениями Механических ремней", "create.ponder.belt_directions.text_1": "Ремни не могут соединяться в произвольных направлениях", "create.ponder.belt_directions.text_2": "1. Они могут соединяться горизонтально", "create.ponder.belt_directions.text_3": "2. Они могут соединяться по диагонали", @@ -2167,23 +2170,23 @@ "create.ponder.belt_directions.text_5": "4. И они могут соединять вертикальные валы горизонтально", "create.ponder.belt_directions.text_6": "Это все возможные направления. Ремни могут достигать Длины от 2 до 20 блоков", - "create.ponder.belt_transport.header": "Использовании Механических ремней для логистики", + "create.ponder.belt_transport.header": "Использованием Механических ремней для логистики", "create.ponder.belt_transport.text_1": "Двигающиеся ремни будут перемещать Предметы и другие Сущности", "create.ponder.belt_transport.text_2": "ПКМ пустой рукой, чтобы забрать предметы с ремня", - "create.ponder.blaze_burner.header": "Кормлении Горелок всполохов", + "create.ponder.blaze_burner.header": "Кормлением Горелок всполоха", "create.ponder.blaze_burner.text_1": "Горелки всполохов дают тепло предметам, обрабатывающимся в Чаше", - "create.ponder.blaze_burner.text_2": "Для этого, Всполох должен быть накормлен воспламеняемыми предметами", + "create.ponder.blaze_burner.text_2": "Для этого, всполох должен быть накормлен воспламеняемыми предметами", "create.ponder.blaze_burner.text_3": "С Тортом всполоха, горелка может достигать ещё большего уровня нагрева", "create.ponder.blaze_burner.text_4": "Процесс кормления может быть автоматизирован, используя Автономный активатор или Механическую руку", - "create.ponder.brass_funnel.header": "Использовании Латунной воронки", + "create.ponder.brass_funnel.header": "Использованием Латунных воронок", "create.ponder.brass_funnel.text_1": "Андезитовая Воронка может извлекать только одиночные предметы", "create.ponder.brass_funnel.text_2": "Латунная Воронка может извлекать до целого стака", "create.ponder.brass_funnel.text_3": "Прокрутка на слоте фильтра позволяет точно регулировать размер извлекаемого стака", "create.ponder.brass_funnel.text_4": "Используя предмет на слоте фильтра ограничит воронку до передачи только совпадающих стаков", - "create.ponder.brass_tunnel.header": "Использовании Латунных туннелей", + "create.ponder.brass_tunnel.header": "Использованием Латунных туннелей", "create.ponder.brass_tunnel.text_1": "Латунные туннели могут быть использованы, чтобы накрывать конвейеры", "create.ponder.brass_tunnel.text_2": "Латунные туннели имеют слот для фильтра на каждой открытой стороне", "create.ponder.brass_tunnel.text_3": "Фильтр на входящих соединениях блокирует неподходящие предметы", @@ -2193,47 +2196,47 @@ "create.ponder.brass_tunnel.text_7": "Входящие предметы будут распределены между всеми соединёнными выходами", "create.ponder.brass_tunnel.text_8": "Для этого предметы также могут быть вложены в блок туннеля напрямую", - "create.ponder.brass_tunnel_modes.header": "Режимах распределения Латунных туннелей", - "create.ponder.brass_tunnel_modes.text_1": "Используя Ключ, вы можете настроить поведение распределения у Латунного туннеля", + "create.ponder.brass_tunnel_modes.header": "Режимами распределения Латунных туннелей", + "create.ponder.brass_tunnel_modes.text_1": "Используя Ключ, вы можете настроить поведение распределения Латунного туннеля", "create.ponder.brass_tunnel_modes.text_10": "«Синхронизировать входы» — уникальная настройка для Латунных туннелей", "create.ponder.brass_tunnel_modes.text_11": "Предметы могут пройти только если у каждого туннеля в группе есть ожидающий у входа предмет", "create.ponder.brass_tunnel_modes.text_12": "Это подразумевает, что все конвейеры поставляют предметы с равной скоростью", - "create.ponder.brass_tunnel_modes.text_2": "«Разделить» попытается распределить стак поровну между доступными выходами", + "create.ponder.brass_tunnel_modes.text_2": "«Разделение» попытается распределить стак поровну между доступными выходами", "create.ponder.brass_tunnel_modes.text_3": "Если выход не может принять больше предметов, он будет пропущен", - "create.ponder.brass_tunnel_modes.text_4": "«Принудительно разделить» никогда не пропустит выходы и вместо этого будет ждать пока они не освободятся", + "create.ponder.brass_tunnel_modes.text_4": "«Строгое разделение» никогда не пропустит выходы и вместо этого будет ждать пока они не освободятся", "create.ponder.brass_tunnel_modes.text_5": "«По Кругу» сохраняет цельные стаки и отдаёт их выходам по очереди", "create.ponder.brass_tunnel_modes.text_6": "Опять же, если выход не может принять больше предметов, он будет пропущен", - "create.ponder.brass_tunnel_modes.text_7": "«Принудительно по кругу» никогда не пропускает выходы", + "create.ponder.brass_tunnel_modes.text_7": "«Строго по кругу» никогда не пропускает выходы", "create.ponder.brass_tunnel_modes.text_8": "«Предпочтительно ближайшее» приоритизирует ближайшие выходы от места подачи предметов", "create.ponder.brass_tunnel_modes.text_9": "«Случайно» будет отдавать целые стаки случайно выбранным выходам", - "create.ponder.cart_assembler.header": "Движении структур при помощи Сборщика вагонеток", + "create.ponder.cart_assembler.header": "Движением структур при помощи Сборщиков вагонеток", "create.ponder.cart_assembler.text_1": "Активированные Сборщики вагонеток устанавливают прикреплённые структуры к проходящим мимо вагонеткам", "create.ponder.cart_assembler.text_2": "Без редстоун сигнала они разбирают вагонеточные штуковины обратно в блоки", "create.ponder.cart_assembler.text_3": "Использование Ключа на вагонетке позволит вам унести Штуковину куда-то ещё", - "create.ponder.cart_assembler_dual.header": "Сборке Штуковин-экипажей", + "create.ponder.cart_assembler_dual.header": "Сборкой Штуковин-экипажей", "create.ponder.cart_assembler_dual.text_1": "Всегда, когда два Сборщика вагонеток имеют общую прикреплённую структуру...", "create.ponder.cart_assembler_dual.text_2": "активация любого из них создаст Штуковину-экипаж", "create.ponder.cart_assembler_dual.text_3": "Эти вагонетки будут вести себя так, будто они соединены Соединителем вагонеток", - "create.ponder.cart_assembler_modes.header": "Настройках ориентации Вагонеточных штуковин", + "create.ponder.cart_assembler_modes.header": "Настройкой ориентации Вагонеточных штуковин", "create.ponder.cart_assembler_modes.text_1": "Вагонеточные штуковины будут поворачиваться в сторону движения их вагонеток", "create.ponder.cart_assembler_modes.text_2": "Стрелкой показано, какая сторона конструкции будет считаться передней", "create.ponder.cart_assembler_modes.text_3": "Если сборщик настроен на блокировку вращения, то ориентация штуковин никогда не изменится", - "create.ponder.cart_assembler_rails.header": "Других типах вагонеток и рельс", + "create.ponder.cart_assembler_rails.header": "Другими типами вагонеток и рельс", "create.ponder.cart_assembler_rails.text_1": "Сборщики вагонеток на обычных рельсах не будут влиять на движение проходящих вагонеток", - "create.ponder.cart_assembler_rails.text_2": "На активных Контролирующих рельсах или Энергорельсах вагонетки будут стоять на месте до тех, пока Сборщик не будет активирован", + "create.ponder.cart_assembler_rails.text_2": "На активных Контролирующих рельсах или энергорельсах вагонетки будут стоять на месте до тех, пока Сборщик не будет активирован", "create.ponder.cart_assembler_rails.text_3": "Другие типы вагонеток могут быть использованы как основание", "create.ponder.cart_assembler_rails.text_4": "Самоходные вагонетки будут поддерживать себя запитанными, используя топливо из присоединённых инвентарей", - "create.ponder.chain_drive.header": "Передаче силы вращения Цепными приводами", + "create.ponder.chain_drive.header": "Передачей силы вращения Цепными приводами", "create.ponder.chain_drive.text_1": "Цепные приводы передают силу вращения друг другу", "create.ponder.chain_drive.text_2": "Все валы соединённые таким образом будут вращаться в одном направлении", "create.ponder.chain_drive.text_3": "Любая часть в ряду может быть повёрнута на 90 градусов", - "create.ponder.chain_gearshift.header": "Управлении скоростью вращения Регулируемыми цепными механизмами", + "create.ponder.chain_gearshift.header": "Управлением скоростью вращения Регулируемыми цепными механизмами", "create.ponder.chain_gearshift.text_1": "Неактивные Цепные механизмы ведут себя точно так же, как Цепные приводы", "create.ponder.chain_gearshift.text_2": "Когда активирован, скорость, передаваемая другим Цепным механизмам в ряду удваивается", "create.ponder.chain_gearshift.text_3": "Когда активированный Цепной механизм не является источником, его скорость будет снижена вдвое", @@ -2241,63 +2244,63 @@ "create.ponder.chain_gearshift.text_5": "Используя аналоговые сигналы, это умножение может быть настроено более точно между 1 и 2", "create.ponder.chain_gearshift.text_6": "12 об./мин.", - "create.ponder.chute.header": "Транспортировке предметов вниз через Желоба", + "create.ponder.chute.header": "Транспортировкой предметов вниз через Желоба", "create.ponder.chute.text_1": "Желоба могут транспортировать предметы вертикально вниз", "create.ponder.chute.text_2": "Используя Ключ, вы можете создать окно", "create.ponder.chute.text_3": "Установка желобов на стороны других желобов сделает их диагональными", - "create.ponder.chute_upward.header": "Транспортировке предметов вверх через Желоба", + "create.ponder.chute_upward.header": "Транспортировкой предметов вверх через Желоба", "create.ponder.chute_upward.text_1": "Используя Вентилятор в корпусе внизу или наверху, Жёлоб может перемещать предметы вверх", "create.ponder.chute_upward.text_2": "Осмотр желобов в Инженерных очках показывает информацию о направлении движения", "create.ponder.chute_upward.text_3": "На «заблокированном» конце предметы должны быть введены/выведены сбоку", - "create.ponder.clockwork_bearing.header": "Оживлении структур Часовым механизмом", + "create.ponder.clockwork_bearing.header": "Оживлением структур Часовым механизмом", "create.ponder.clockwork_bearing.text_1": "Часовые механизмы прикрепляются к блокам спереди", "create.ponder.clockwork_bearing.text_2": "При получении силы вращения структура повернётся в зависимости от текущего часа", "create.ponder.clockwork_bearing.text_3": "3:00", "create.ponder.clockwork_bearing.text_4": "4:00", "create.ponder.clockwork_bearing.text_5": "ПКМ по механизму, чтобы остановить или вновь запустить структуру", "create.ponder.clockwork_bearing.text_6": "Вторая структура может быть добавлена спереди Часовой стрелки", - "create.ponder.clockwork_bearing.text_7": "Убедитесь, что две структуры не соединены между собой супер-клеем или чем-то схожим", + "create.ponder.clockwork_bearing.text_7": "Убедитесь, что две структуры не соединены между собой суперклеем или чем-то схожим", "create.ponder.clockwork_bearing.text_8": "Вторая структура станет вращаться как Минутная стрелка", - "create.ponder.clutch.header": "Управлении силой вращения с помощью Сцепления", + "create.ponder.clutch.header": "Управлением силой вращения с помощью Сцепления", "create.ponder.clutch.text_1": "Сцепление передаёт вращение по прямой", "create.ponder.clutch.text_2": "При активации Редстоуном оно разрывает соединение", - "create.ponder.cog_speedup.header": "Переключении передач Шестернями", + "create.ponder.cog_speedup.header": "Переключением передач Шестернями", "create.ponder.cog_speedup.text_1": "Большие и Маленькие шестерни могут соединяться по диагонали", "create.ponder.cog_speedup.text_2": "Переходя с больших на маленькие шестерни, переданная скорость удвоится", "create.ponder.cog_speedup.text_3": "Переходя в обратном направлении, переданная скорость сократится вдвое", - "create.ponder.cogwheel.header": "Передаче силы вращения Шестернями", + "create.ponder.cogwheel.header": "Передачей силы вращения Шестернями", "create.ponder.cogwheel.text_1": "Шестерни передают вращение другим соседним шестерням", "create.ponder.cogwheel.text_2": "Соседние валы соединённые таким образом будут вращаться в противоположных направлениях", - "create.ponder.cogwheel_casing.header": "Обрамлении Шестреней", + "create.ponder.cogwheel_casing.header": "Обрамлением Шестерней", "create.ponder.cogwheel_casing.text_1": "Латунный или Андезитовый корпус можно использовать для украшения Шестерней", "create.ponder.cogwheel_casing.text_2": "Компоненты, заключённые в корпус, не будут иметь выхода вала", "create.ponder.cogwheel_casing.text_3": "Гаечный ключ можно использовать для переключения соединений", - "create.ponder.creative_fluid_tank.header": "Творческом жидкостном баке", + "create.ponder.creative_fluid_tank.header": "Использованием Творческих жидкостных баков", "create.ponder.creative_fluid_tank.text_1": "Творческий жидкостный бак может использоваться для обеспечения бесконечного запаса жидкости", "create.ponder.creative_fluid_tank.text_2": "Щелкните ПКМ предметом, содержащим жидкость, чтобы настроить его", "create.ponder.creative_fluid_tank.text_3": "Сети труб могут бесконечно вытягивать заданную жидкость из резервуара", "create.ponder.creative_fluid_tank.text_4": "Любые жидкости, закачанные обратно в творческий жидкостный бак, будут уничтожены", - "create.ponder.creative_motor.header": "Генерации силы вращения Творческими моторами", + "create.ponder.creative_motor.header": "Генерацией силы вращения Творческими моторами", "create.ponder.creative_motor.text_1": "Творческие моторы — это компактные и настраиваемые источники Силы Вращения", "create.ponder.creative_motor.text_2": "Прокрутка по задней панели изменяет кол-во об./мин. у вращающегося вала мотора", - "create.ponder.creative_motor_mojang.header": "Загадке Моджанг", + "create.ponder.creative_motor_mojang.header": "Загадкой от Mojang", - "create.ponder.crushing_wheels.header": "Обработке предметов Колёсами дробления", + "create.ponder.crushing_wheels.header": "Обработкой предметов Колёсами дробления", "create.ponder.crushing_wheels.text_1": "Пара Колёс дробления может молоть предметы очень эффективно", "create.ponder.crushing_wheels.text_2": "Сила вращения должна вращать их друг в друга", "create.ponder.crushing_wheels.text_3": "Предметы брошенные или введённые в них сверху будут обработаны", "create.ponder.crushing_wheels.text_4": "Предметы также могут быть введены и подобраны автоматическим способом", - "create.ponder.deployer.header": "Использовании Автономного активатора", + "create.ponder.deployer.header": "Использованием Автономных активаторов", "create.ponder.deployer.text_1": "При наличии силы вращения автономный активатор может имитировать действия игрока", "create.ponder.deployer.text_10": "ПКМ спереди, чтобы дать ему предмет для использования", "create.ponder.deployer.text_11": "Предметы также могут быть введены автоматически", @@ -2314,43 +2317,43 @@ "create.ponder.deployer.text_8": "Собирать блоки;", "create.ponder.deployer.text_9": "и Атаковать мобов", - "create.ponder.deployer_contraption.header": "Использовании Автономных активаторов на штуковинах", + "create.ponder.deployer_contraption.header": "Использованием Автономных активаторов на штуковинах", "create.ponder.deployer_contraption.text_1": "Всегда, когда автономные активаторы движутся как часть движимой штуковины...", "create.ponder.deployer_contraption.text_2": "Они активируются на каждом посещённом месте, используя предметы из любых инвентарей на штуковине", "create.ponder.deployer_contraption.text_3": "Слот для Фильтра может быть использован, чтобы уточнить, какие предметы ему брать", - "create.ponder.deployer_modes.header": "Режимах Автономного активатора", - "create.ponder.deployer_modes.text_1": "По умолчанию, активатор имитирует ПКМ-взаимодейстие", + "create.ponder.deployer_modes.header": "Режимами Автономного активатора", + "create.ponder.deployer_modes.text_1": "По умолчанию, активатор имитирует ПКМ-взаимодействие", "create.ponder.deployer_modes.text_2": "Используя Ключ, вы можете установить его на имитацию ЛКМ", - "create.ponder.deployer_processing.header": "Обработке элементов с помощью Автономных активаторов", + "create.ponder.deployer_processing.header": "Обработкой предметов с помощью Автономных активаторов", "create.ponder.deployer_processing.text_1": "Держа подходящий предмет/инструмент, автономные активаторы могут обрабатывать предметы под собой", "create.ponder.deployer_processing.text_2": "Принимаемые предметы можно бросить или положить на депо под автономным активатором", "create.ponder.deployer_processing.text_3": "Когда предметы находятся на конвейере...", "create.ponder.deployer_processing.text_4": "автономный активатор будет удерживать и обрабатывать их автоматически", - "create.ponder.deployer_redstone.header": "Управлении Автономными активаторами редстоуном", + "create.ponder.deployer_redstone.header": "Управлением Автономным активатором редстоуном", "create.ponder.deployer_redstone.text_1": "При активации Редстоуном активатор перестанет работать", "create.ponder.deployer_redstone.text_2": "Перед остановкой, Активатор завершит все начатые действия", "create.ponder.deployer_redstone.text_3": "Таким образом, инвертированный импульс может быть использован для вызова ровно одного срабатывания", - "create.ponder.depot.header": "Использовании Депо", + "create.ponder.depot.header": "Использованием Депо", "create.ponder.depot.text_1": "Депо могут служить как «стационарный» элемент конвейера", "create.ponder.depot.text_2": "ПКМ, что бы самостоятельно положить или забрать предметы с них", "create.ponder.depot.text_3": "Так же, как Механические ремни, оно может предоставлять предметы для обработки", "create.ponder.depot.text_4": "...а также поставлять предметы Механическим рукам", - "create.ponder.display_board.header": "Использовании Механического табло", - "create.ponder.display_board.text_1": "Механическое табло — это масшатабируемая альтернатива табличкам", + "create.ponder.display_board.header": "Использованием Механического табло", + "create.ponder.display_board.text_1": "Механическое табло — это масштабируемая альтернатива табличкам", "create.ponder.display_board.text_2": "Для работы ему требуется вращательная сила", "create.ponder.display_board.text_3": "Текст может отображаться с помощью бирок...", "create.ponder.display_board.text_4": "...или с помощью Передатчика информации", "create.ponder.display_board.text_5": "Красители можно наносить на отдельные строки табло", - "create.ponder.display_board.text_6": "Линии можно сбросить, нажав на них пустой рукой", + "create.ponder.display_board.text_6": "Цвет строки можно убрать, нажав на них пустой рукой", - "create.ponder.display_link.header": "Настройке Передатчика информации", + "create.ponder.display_link.header": "Настройкой Передатчиков информации", "create.ponder.display_link.text_1": "Передатчик информации может использоваться для визуализации динамической информации", - "create.ponder.display_link.text_2": "Нажмите ПКМ на целевое табло...", + "create.ponder.display_link.text_2": "Нажмите ПКМ на выбранное табло...", "create.ponder.display_link.text_3": "...затем прикрепите его к блоку для чтения информации из него", "create.ponder.display_link.text_4": "Откройте интерфейс, чтобы выбрать и настроить то, какая информация будет отправляется", "create.ponder.display_link.text_5": "Теперь табло будет получать информацию от передатчика", @@ -2358,39 +2361,39 @@ "create.ponder.display_link.text_7": "Каждый совместимый блок предоставляет уникальную информацию", "create.ponder.display_link.text_8": "Передатчик информации может работать с несколькими различными дисплеями", - "create.ponder.display_link_redstone.header": "Управлении Передатчиком редстоуном", + "create.ponder.display_link_redstone.header": "Управлением Передатчиком информации редстоуном", "create.ponder.display_link_redstone.text_1": "При питании от редстоуна Передатчик информации перестаёт отправлять обновления", "create.ponder.display_link_redstone.text_2": "После отключения питания таймер сбрасывается, и новая информация отправляется немедленно", "create.ponder.display_link_redstone.text_3": "Сигналы редстоуна, отправляемые Источниками информации, не оказывают эффекта на Передатчик ", - "create.ponder.empty_blaze_burner.header": "Использовании Пустых горелок всполохов", - "create.ponder.empty_blaze_burner.text_1": "ПКМ по Всполоху с пустой горелкой, чтобы захватить его", - "create.ponder.empty_blaze_burner.text_2": "Также Всполохи могут быть захвачены из спавнера напрямую", + "create.ponder.empty_blaze_burner.header": "Поимкой всполохов в Горелку", + "create.ponder.empty_blaze_burner.text_1": "ПКМ по всполоху с пустой горелкой, чтобы захватить его", + "create.ponder.empty_blaze_burner.text_2": "Также всполохи могут быть захвачены из спавнера напрямую", "create.ponder.empty_blaze_burner.text_3": "Теперь у вас есть идеальный источник тепла для ряда машин", "create.ponder.empty_blaze_burner.text_4": "В эстетических целях, Пустые горелки могут быть зажжены огнивом", - "create.ponder.empty_blaze_burner.text_5": "Пламя можно трансформировать, используя наполненный душой предмет.", + "create.ponder.empty_blaze_burner.text_5": "Пламя можно трансформировать, используя наполненный душами предмет", "create.ponder.empty_blaze_burner.text_6": "Однако они не будут подходить для промышленного нагрева", - "create.ponder.encased_fluid_pipe.header": "Обрамлении Жидкостных труб", + "create.ponder.encased_fluid_pipe.header": "Обрамлением Жидкостных труб", "create.ponder.encased_fluid_pipe.text_1": "Медный корпус можно использовать для украшения декорации труб.", "create.ponder.encased_fluid_pipe.text_2": "Помимо того, что они скрываются, заключенные в обрамление трубы блокируются в текущем состоянии", "create.ponder.encased_fluid_pipe.text_3": "Они больше не будут реагировать на добавление или удаление каких-либо соседних блоков", - "create.ponder.fan_direction.header": "Воздушном потоке Вентиляторов в корпусе", + "create.ponder.fan_direction.header": "Воздушным потоком Вентилятора в корпусе", "create.ponder.fan_direction.text_1": "Вентиляторы в корпусе используют силу вращения для создания Воздушного потока", "create.ponder.fan_direction.text_2": "Сила и направление потока зависят от подаваемого вращения", - "create.ponder.fan_processing.header": "Обработке предметов используя Вентиляторы в корпусе", + "create.ponder.fan_processing.header": "Обработкой предметов используя Вентиляторы в корпусе", "create.ponder.fan_processing.text_1": "Проходя через лаву, Воздушный поток становится Горячим", "create.ponder.fan_processing.text_2": "Предметы в этой области будут переплавлены", "create.ponder.fan_processing.text_3": "Съедобные предметы брошенные сюда будут сожжены", "create.ponder.fan_processing.text_4": "Вместо этого, для них должна быть использована установка для Копчения с огнём", "create.ponder.fan_processing.text_5": "Поток, проходящий через Воду, создаёт Промывающую установку", "create.ponder.fan_processing.text_6": "Несколько новых вариантов обработки делаются с её помощью", - "create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность", + "create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность установки", "create.ponder.fan_processing.text_8": "Обработка Вентиляторами может быть применена к предметам на конвейерах или депо", - "create.ponder.fluid_pipe_flow.header": "Перемещении жидкостей при помощи медных Труб.", + "create.ponder.fluid_pipe_flow.header": "Перемещением жидкостей при помощи Жидкостных труб", "create.ponder.fluid_pipe_flow.text_1": "Жидкостные трубы могут соединять два или более источников и потребителей жидкости", "create.ponder.fluid_pipe_flow.text_2": "При помощи Гаечного ключа можно создать окно прямому отрезку трубы", "create.ponder.fluid_pipe_flow.text_3": "Трубы с окнами не будут соединяться ни с какими другими рядом идущими отрезками труб", @@ -2399,90 +2402,90 @@ "create.ponder.fluid_pipe_flow.text_6": "Как только поток соединит концы, они постепенно перекачают свое содержимое", "create.ponder.fluid_pipe_flow.text_7": "Таким образом, сами блоки труб никогда «физически» не содержат никакой жидкости", - "create.ponder.fluid_pipe_interaction.header": "Опустошении и наполнении Жидкостных контейнеров", + "create.ponder.fluid_pipe_interaction.header": "Опустошением и наполнением Жидкостных контейнеров", "create.ponder.fluid_pipe_interaction.text_1": "Концы сети труб могут взаимодействовать с различными блоками", "create.ponder.fluid_pipe_interaction.text_2": "Любой блок с возможностью хранения жидкости может быть заполнен или опустошен", "create.ponder.fluid_pipe_interaction.text_3": "Источники прямо перед открытым концом можно откачать...", "create.ponder.fluid_pipe_interaction.text_4": "...в то время как выливание в незаполненное пространство может создать источники", "create.ponder.fluid_pipe_interaction.text_5": "Трубы также могут извлекать жидкости непосредственно из нескольких других блоков", - "create.ponder.fluid_tank_sizes.header": "Размерах Жидкостного бака", + "create.ponder.fluid_tank_sizes.header": "Размерами Жидкостных баков", "create.ponder.fluid_tank_sizes.text_1": "Жидкостные баки можно объединить для увеличения общей вместимости", "create.ponder.fluid_tank_sizes.text_2": "Их площадь основания может составлять до 3 блоков в ширину...", "create.ponder.fluid_tank_sizes.text_3": "...и увеличиваются в высоту более чем на 30 дополнительных уровней", "create.ponder.fluid_tank_sizes.text_4": "При помощи Гаечного ключа можно создать окно на резервуаре", - "create.ponder.fluid_tank_storage.header": "Хранении жидкостей в Жидкостных баках", + "create.ponder.fluid_tank_storage.header": "Хранением жидкостей в Жидкостных баках", "create.ponder.fluid_tank_storage.text_1": "Жидкостные баки можно использовать для хранения большого количества жидкости", "create.ponder.fluid_tank_storage.text_2": "Трубы могут закачивать и выкачивать жидкости с любой стороны", "create.ponder.fluid_tank_storage.text_3": "Содержащаяся жидкость может быть измерена с помощью компаратора", "create.ponder.fluid_tank_storage.text_4": "Однако в режиме выживания жидкость нельзя добавлять или извлекать вручную", "create.ponder.fluid_tank_storage.text_5": "Вы можете использовать чаши, предметные осушители и дозаторы для опустошения или наполнения содерж. жидкость предметов", - "create.ponder.funnel_compat.header": "Совместимости Воронок", + "create.ponder.funnel_compat.header": "Совместимостью Воронок", "create.ponder.funnel_compat.text_1": "Воронки должны хорошо взаимодействовать с многими компонентами:", "create.ponder.funnel_compat.text_2": "Вертикальные пилы", "create.ponder.funnel_compat.text_3": "Депо", "create.ponder.funnel_compat.text_4": "Предметные осушители", - "create.ponder.funnel_direction.header": "Направлении передачи Воронок", + "create.ponder.funnel_direction.header": "Направлением передачи Воронок", "create.ponder.funnel_direction.text_1": "Поставленная обычным образом, она забирает предметы из инвентаря", "create.ponder.funnel_direction.text_2": "Поставленная крадучись, она кладёт предметы в инвентарь", "create.ponder.funnel_direction.text_3": "Используя Ключ, вы можете изменить направление Воронки", "create.ponder.funnel_direction.text_4": "Те же правила применяются для большинства направлений", "create.ponder.funnel_direction.text_5": "Воронки на конвейерах будут извлекать/вводить предметы в зависимости от направления их движения", - "create.ponder.funnel_intro.header": "Использовании Воронок", + "create.ponder.funnel_intro.header": "Использованием Воронок", "create.ponder.funnel_intro.text_1": "Воронки идеально подходят для перемещения предметов из и в инвентари", - "create.ponder.funnel_redstone.header": "Управлении Воронок редстоуном", + "create.ponder.funnel_redstone.header": "Управлением Воронок редстоуном", "create.ponder.funnel_redstone.text_1": "Редстоун сигнал не даст любой воронке работать", - "create.ponder.funnel_transfer.header": "Передаче Воронками напрямую", + "create.ponder.funnel_transfer.header": "Передачей Воронками напрямую", "create.ponder.funnel_transfer.text_1": "Воронки не могут перемещать предметы напрямую между закрытыми инвентарями", "create.ponder.funnel_transfer.text_2": "Желоба или Умные желоба могут лучше подходить для этих целей", "create.ponder.funnel_transfer.text_3": "То же касается и горизонтального перемещения. Механический ремень должен здесь помочь", - "create.ponder.gantry_carriage.header": "Использовании Шасси портального крана", + "create.ponder.gantry_carriage.header": "Использованием Шасси портального крана", "create.ponder.gantry_carriage.text_1": "Шасси портального крана могут прикрепляться и двигаться вдоль Вала портального крана", "create.ponder.gantry_carriage.text_2": "Крановые установки могут двигать присоединённые Блоки", - "create.ponder.gantry_cascaded.header": "Многоступенчатом портальном кране", - "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к шасси без нужды в супер-клее", + "create.ponder.gantry_cascaded.header": "Созданием Многоступенчатого портального крана", + "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к шасси без нужды в суперклее", "create.ponder.gantry_cascaded.text_2": "То же относится и к шасси на движущихся Валах портального крана", "create.ponder.gantry_cascaded.text_3": "Таким образом крановая система может покрывать несколько осей движения", - "create.ponder.gantry_direction.header": "Направлении движения крана", + "create.ponder.gantry_direction.header": "Направлением движения крана", "create.ponder.gantry_direction.text_1": "Валы портального крана могут иметь два противоположных направления", "create.ponder.gantry_direction.text_2": "Направление движения шасси зависит от ориентации их валов", "create.ponder.gantry_direction.text_3": "...а также от направления вращения вала", "create.ponder.gantry_direction.text_4": "Те же правила относятся к передаваемому вращению", - "create.ponder.gantry_redstone.header": "Подаче энергии на кран", + "create.ponder.gantry_redstone.header": "Подачей энергии на кран", "create.ponder.gantry_redstone.text_1": "Активированные редстоуном валы крана перестают двигать шасси", "create.ponder.gantry_redstone.text_2": "Вместо этого сила вращения передаётся выходному валу шасси", - "create.ponder.gantry_shaft.header": "Использовании Валов портального крана", + "create.ponder.gantry_shaft.header": "Использованием Валов портального крана", "create.ponder.gantry_shaft.text_1": "Валы портального крана составляют основу крановой установки. По ним будут двигаться присоединённые Шасси", "create.ponder.gantry_shaft.text_2": "Крановые установки могут двигать присоединённые Блоки", - "create.ponder.gearbox.header": "Передаче силы вращения с помощью Коробок передач", + "create.ponder.gearbox.header": "Передачей силы вращения с помощью Коробок передач", "create.ponder.gearbox.text_1": "Переходы между осями вращения могут быстро стать очень громоздкими", "create.ponder.gearbox.text_2": "Коробка Передач — это более компактный эквивалент этой установки", "create.ponder.gearbox.text_3": "Валы по углам поворачиваются в зеркальных направлениях", - "create.ponder.gearbox.text_4": "Прямые соединения будут реверсированы", + "create.ponder.gearbox.text_4": "Прямые соединения будут реверсированны", - "create.ponder.gearshift.header": "Управлении силой вращения при помощи Реверсивного механизма", + "create.ponder.gearshift.header": "Управлением силы вращения при помощи Реверсивного механизма", "create.ponder.gearshift.text_1": "Реверсивные механизмы передают вращение по прямой", "create.ponder.gearshift.text_2": "При активации редстоуном, они реверсируют передачу", - "create.ponder.hand_crank.header": "Генерации силы вращения при помощи Рукояток", + "create.ponder.hand_crank.header": "Генерацией силы вращения при помощи Рукояток", "create.ponder.hand_crank.text_1": "Рукоятки могут быть использованы игроками для создания силы вращения вручную", "create.ponder.hand_crank.text_2": "Держите ПКМ, чтобы повернуть их против часовой стрелки", "create.ponder.hand_crank.text_3": "Их скорость вращения относительно высока", "create.ponder.hand_crank.text_4": "Держите ПКМ крадучись, чтобы повернуть её по часовой стрелке", - "create.ponder.hose_pulley.header": "Наполнении и осушении источников при помощи Шкива со шлангом", + "create.ponder.hose_pulley.header": "Наполнением и осушением источников при помощи Шкива со шлангом", "create.ponder.hose_pulley.text_1": "Шкивы со шлангом можно использовать для заполнения или осушения больших объёмов жидкости", "create.ponder.hose_pulley.text_2": "С помощью кинетической энергии можно регулировать длину шланга", "create.ponder.hose_pulley.text_3": "Шкив сматывается, если обратить вращение", @@ -2491,66 +2494,66 @@ "create.ponder.hose_pulley.text_6": "...либо вытягивать её, осушая водоем", "create.ponder.hose_pulley.text_7": "Скорость заполнения и осушения шкивом полностью зависит от пропускной способности жидкостной сети", - "create.ponder.hose_pulley_infinite.header": "Пассивном заполнении и осушении больших объёмов жидкости", + "create.ponder.hose_pulley_infinite.header": "Пассивным заполнением и осушением больших объёмов жидкости", "create.ponder.hose_pulley_infinite.text_1": "При развертывании Шкива со шлангом в достаточно большой океан...", "create.ponder.hose_pulley_infinite.text_2": "Он будет предоставлять/поглощать жидкости без влияния на источник", "create.ponder.hose_pulley_infinite.text_3": "Сети труб могут неограниченно передавать жидкости из/в такие шкивы", - "create.ponder.hose_pulley_level.header": "Уровне заполнения и осушения Шкива со шлангом", + "create.ponder.hose_pulley_level.header": "Уровнем заполнения и осушения Шкива со шлангом", "create.ponder.hose_pulley_level.text_1": "При полностью убранном рукаве шланга — он не может работать", "create.ponder.hose_pulley_level.text_2": "Осушение происходит сверху вниз", "create.ponder.hose_pulley_level.text_3": "Уровень поверхности окажется чуть ниже того места, где заканчивается шланг", "create.ponder.hose_pulley_level.text_4": "Наполнение происходит снизу вверх", "create.ponder.hose_pulley_level.text_5": "Заполняемый бассейн не будет наполняться выше уровня конца шланга", - "create.ponder.item_drain.header": "Опустошении жидкостных резервуаров с помощью Предметных осушителей", + "create.ponder.item_drain.header": "Опустошением жидкостных резервуаров с помощью Предметных осушителей", "create.ponder.item_drain.text_1": "Предметные осушители могут извлекать жидкости из предметов", "create.ponder.item_drain.text_2": "Щелкните ПКМ по нему, чтобы перелить в него жидкость из предмета в ваших руках", "create.ponder.item_drain.text_3": "Когда предметы подаются со стороны...", "create.ponder.item_drain.text_4": "...они переворачиваются, выливая содержащуюся в них жидкость", "create.ponder.item_drain.text_5": "Трубы могут вытягивать жидкость из внутреннего хранилища осушителей", - "create.ponder.item_vault_sizes.header": "Размерах Хранилища предметов", + "create.ponder.item_vault_sizes.header": "Размерами Хранилища предметов", "create.ponder.item_vault_sizes.text_1": "Хранилища предметов можно объединять для увеличения общей вместимости", "create.ponder.item_vault_sizes.text_2": "Их базовая площадь может быть шириной до 3 блоков...", - "create.ponder.item_vault_sizes.text_3": "...и увеличиватся в длину до 3 диаметров", + "create.ponder.item_vault_sizes.text_3": "...и увеличиваться в длину до 3 диаметров", - "create.ponder.item_vault_storage.header": "Хранении предметов в Хранилищах", + "create.ponder.item_vault_storage.header": "Хранением предметов в Хранилищах", "create.ponder.item_vault_storage.text_1": "Хранилища предметов можно использовать для хранения большого количества предметов", "create.ponder.item_vault_storage.text_2": "Однако содержимое не может быть добавлено или взято вручную", "create.ponder.item_vault_storage.text_3": "Любые компоненты для передачи предметов могут как добавлять...", "create.ponder.item_vault_storage.text_4": "...так и забирать содержимое из этого контейнера", - "create.ponder.large_cogwheel.header": "Передаче силы вращения при помощи Больших шестерней", + "create.ponder.large_cogwheel.header": "Передачей силы вращения при помощи Больших шестерней", "create.ponder.large_cogwheel.text_1": "Большие шестерни могут соединяться между собой под прямым углом", "create.ponder.large_cogwheel.text_2": "Это поможет передавать скорость на другие оси вращения", - "create.ponder.linear_chassis_attachment.header": "Прикреплении блоков при помощи Линейных шасси", + "create.ponder.linear_chassis_attachment.header": "Прикреплением блоков при помощи Линейных шасси", "create.ponder.linear_chassis_attachment.text_1": "Открытые грани Линейных шасси можно сделать Липкими", "create.ponder.linear_chassis_attachment.text_2": "Кликните ещё раз, чтобы сделать противоположную сторону липкой", "create.ponder.linear_chassis_attachment.text_3": "ПКМ крадучись, пустой рукой, чтобы убрать слизь", "create.ponder.linear_chassis_attachment.text_4": "Липкие грани Линейных шасси будут прикреплять ряд блоков перед ним", "create.ponder.linear_chassis_attachment.text_5": "Используйте Ключ, чтобы настроить радиус прикрепления для этого шасси", "create.ponder.linear_chassis_attachment.text_6": "Прокрутка при удерживании Ctrl настраивает радиус всех присоединённых шасси", - "create.ponder.linear_chassis_attachment.text_7": "Прикрепление блоков на другие стороны требует использования Супер-клея", + "create.ponder.linear_chassis_attachment.text_7": "Прикрепление блоков на другие стороны требует использования Суперклея", "create.ponder.linear_chassis_attachment.text_8": "При помощи этих механик, структуры любой формы могут двигаться как Штуковина", - "create.ponder.linear_chassis_group.header": "Движении Линейных шасси группами", + "create.ponder.linear_chassis_group.header": "Движением Линейных шасси группами", "create.ponder.linear_chassis_group.text_1": "Линейные шасси соединяются с такими же блоками Шасси рядом с ними", "create.ponder.linear_chassis_group.text_2": "Когда один блок перемещается Штуковиной, другие двигаются с ним", "create.ponder.linear_chassis_group.text_3": "Шасси других типов или направленные в другом направлении не будут прикрепляться", - "create.ponder.mechanical_arm.header": "Настройке Механических рук", + "create.ponder.mechanical_arm.header": "Настройкой Механических рук", "create.ponder.mechanical_arm.text_1": "Входы и выходы для Механических рук должны быть назначены перед их установкой", - "create.ponder.mechanical_arm.text_2": "ПКМ по инвентарям, держа руку, чтобы назначить их целями", + "create.ponder.mechanical_arm.text_2": "ПКМ по компонентам, держа Механическую руку, чтобы назначить их целями", "create.ponder.mechanical_arm.text_3": "ПКМ ещё раз, для переключения между Входом (Синий) и Выходом (Оранжевый)", "create.ponder.mechanical_arm.text_4": "ЛКМ по компонентам, чтобы убрать выделение с них", "create.ponder.mechanical_arm.text_5": "После установки, Механические руки будут нацелены на ранее выбранные блоки", "create.ponder.mechanical_arm.text_6": "У них может быть неограниченное кол-во входов и выходов в зоне их досягаемости", - "create.ponder.mechanical_arm.text_7": "Однако, не каждый вид Инвентаря может взаимодействовать с ними напрямую", + "create.ponder.mechanical_arm.text_7": "Однако, не каждый вид компонента может взаимодействовать с ними напрямую", "create.ponder.mechanical_arm.text_8": "Воронки и Депо могут помочь заполнить этот пробел", - "create.ponder.mechanical_arm_filtering.header": "Фильтрации выходов Механической руки", + "create.ponder.mechanical_arm_filtering.header": "Фильтрацией выходов Механической руки", "create.ponder.mechanical_arm_filtering.text_1": "Входы", "create.ponder.mechanical_arm_filtering.text_2": "Выходы", "create.ponder.mechanical_arm_filtering.text_3": "Иногда желательно ограничить цели руки фильтром", @@ -2558,27 +2561,27 @@ "create.ponder.mechanical_arm_filtering.text_5": "Однако, Латунные воронки как цели сообщают свой фильтр руке", "create.ponder.mechanical_arm_filtering.text_6": "Рука достаточно умна, чтобы не подбирать предметы, которые она не сможет распределить", - "create.ponder.mechanical_arm_modes.header": "Режимах распределения Механической руки", + "create.ponder.mechanical_arm_modes.header": "Режимами распределения Механической руки", "create.ponder.mechanical_arm_modes.text_1": "Входы", "create.ponder.mechanical_arm_modes.text_2": "Выходы", - "create.ponder.mechanical_arm_modes.text_3": "Когда рука выбирает между несколькими доступными выходами...", + "create.ponder.mechanical_arm_modes.text_3": "Когда Рука выбирает между несколькими доступными выходами...", "create.ponder.mechanical_arm_modes.text_4": "...она сделает выбор исходя из своей настройки", "create.ponder.mechanical_arm_modes.text_5": "Прокрутка с Ключом позволит вам настроить это", - "create.ponder.mechanical_arm_modes.text_6": "Режим «по Кругу» переключается между всеми доступными выходами по очереди", + "create.ponder.mechanical_arm_modes.text_6": "Режим «По кругу» переключается между всеми доступными выходами по очереди", "create.ponder.mechanical_arm_modes.text_7": "Если выход не может принять больше предметов, он будет пропущен", - "create.ponder.mechanical_arm_modes.text_8": "«Принудительно по кругу» никогда не пропускает выходы, а ждёт пока они не освободятся", + "create.ponder.mechanical_arm_modes.text_8": "«Строго по кругу» никогда не пропускает выходы, а ждёт пока они не освободятся", "create.ponder.mechanical_arm_modes.text_9": "«Предпочитать первичную цель» приоритизирует выходы, выбранные ранее при настройке этой Руки", - "create.ponder.mechanical_arm_redstone.header": "Управлении Механическими руками редстоуном", + "create.ponder.mechanical_arm_redstone.header": "Управлением Механической рукой редстоуном", "create.ponder.mechanical_arm_redstone.text_1": "При активации редстоуном, Механические руки перестают работать", "create.ponder.mechanical_arm_redstone.text_2": "Перед остановкой, они завершат все начатые действия", "create.ponder.mechanical_arm_redstone.text_3": "Таким образом, инвертированный импульс может использоваться для вызова ровно одного срабатывания", - "create.ponder.mechanical_bearing.header": "Передвижении структур при помощи Механического подшипника", + "create.ponder.mechanical_bearing.header": "Передвижением структур при помощи Механического подшипника", "create.ponder.mechanical_bearing.text_1": "Механические подшипники прикрепляют блоки перед ними", "create.ponder.mechanical_bearing.text_2": "При получении силы вращения, они соберутся во Вращающуюся штуковину", - "create.ponder.mechanical_crafter.header": "Настройке Механических крафтеров", + "create.ponder.mechanical_crafter.header": "Настройкой Механических крафтеров", "create.ponder.mechanical_crafter.text_1": "Массив из Механических крафтеров можно использовать для автоматизации создания любого рецепта", "create.ponder.mechanical_crafter.text_2": "Можно настроить пути крафтеров при помощи Ключа", "create.ponder.mechanical_crafter.text_3": "Для правильной установки все пути должны сходиться в один выход с любой стороны", @@ -2588,62 +2591,62 @@ "create.ponder.mechanical_crafter.text_7": "Когда каждый слот на пути содержит предмет, процесс создания начнётся", "create.ponder.mechanical_crafter.text_8": "Для рецептов, не полностью занимающих крафтер-установку, старт можно спровоцировать Редстоун импульсом", - "create.ponder.mechanical_crafter_connect.header": "Объединении инвентарей Механических крафтеров", + "create.ponder.mechanical_crafter_connect.header": "Объединением инвентарей Механических крафтеров", "create.ponder.mechanical_crafter_connect.text_1": "Предметы можно поместить в крафтеры автоматически", "create.ponder.mechanical_crafter_connect.text_2": "При помощи ключа сзади крафтеров, их инвентари можно объединить", "create.ponder.mechanical_crafter_connect.text_3": "Все соединённые крафтеры теперь будут доступны из одного места ввода", - "create.ponder.mechanical_crafter_covers.header": "Закрытии слотов Механических крафтеров", + "create.ponder.mechanical_crafter_covers.header": "Закрытием слотов Механических крафтеров", "create.ponder.mechanical_crafter_covers.text_1": "Некоторые рецепты требуют дополнительных крафтеров, чтобы закрыть пробелы на пути", "create.ponder.mechanical_crafter_covers.text_2": "При помощи Заглушек на слоты, крафтеры могут играть роль пустых слотов в схеме", "create.ponder.mechanical_crafter_covers.text_3": "Общие входы созданные ключом сзади также могут быть доступны через закрытые крафтеры", - "create.ponder.mechanical_drill.header": "Ломании блоков Механической Дрелью", + "create.ponder.mechanical_drill.header": "Ломанием блоков Механической Дрелью", "create.ponder.mechanical_drill.text_1": "При подаче вращения, Механическая дрель будет ломать блоки перед ней", "create.ponder.mechanical_drill.text_2": "Скорость добычи зависит от подаваемой скорости", - "create.ponder.mechanical_drill_contraption.header": "Использовании Механических дрелей на штуковинах", + "create.ponder.mechanical_drill_contraption.header": "Использованием Механических дрелей на штуковинах", "create.ponder.mechanical_drill_contraption.text_1": "Когда дрели движутся как часть движимой штуковины...", "create.ponder.mechanical_drill_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", - "create.ponder.mechanical_harvester.header": "Использование Механических комбайнов на штуковинах", + "create.ponder.mechanical_harvester.header": "Использованием Механических комбайнов на штуковинах", "create.ponder.mechanical_harvester.text_1": "Когда комбайны движутся как часть движимой штуковины...", "create.ponder.mechanical_harvester.text_2": "Они будут убирать зрелый урожай на своём пути и высаживать его снова", - "create.ponder.mechanical_mixer.header": "Обработке предметов Механическим миксером", + "create.ponder.mechanical_mixer.header": "Обработкой предметов Механическим миксером", "create.ponder.mechanical_mixer.text_1": "При помощи Миксера и Чаши можно автоматизировать некоторые рецепты крафта", "create.ponder.mechanical_mixer.text_2": "Доступные рецепты включают любые бесформенные рецепты крафта и некоторые другие", "create.ponder.mechanical_mixer.text_3": "Некоторые из них требуют тепло от Горелки всполоха", "create.ponder.mechanical_mixer.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", - "create.ponder.mechanical_piston.header": "Перемещении структур при помощи Механических поршней", + "create.ponder.mechanical_piston.header": "Перемещением структур при помощи Механических поршней", "create.ponder.mechanical_piston.text_1": "Механические поршни могут двигать блоки перед ними", "create.ponder.mechanical_piston.text_2": "Скорость и Направление движения зависят от исходного вращения", "create.ponder.mechanical_piston.text_3": "Липкие Механические поршни могут тянуть назад присоединённые блоки", - "create.ponder.mechanical_piston_modes.header": "Режимах движения Механического поршня", + "create.ponder.mechanical_piston_modes.header": "Режимами движения Механического поршня", "create.ponder.mechanical_piston_modes.text_1": "Когда поршень останавливается, сдвинутая структура обратно становится блоками", "create.ponder.mechanical_piston_modes.text_2": "Можно настроить его так, чтобы структура никогда не становилась блоками или только на начальной позиции", - "create.ponder.mechanical_plough.header": "Использование Механических плугов на штуковинах", + "create.ponder.mechanical_plough.header": "Использованием Механических плугов на штуковинах", "create.ponder.mechanical_plough.text_1": "Когда плуги движутся как часть движимой штуковины...", "create.ponder.mechanical_plough.text_2": "...они будут ломать блоки без твёрдого хитбокса", "create.ponder.mechanical_plough.text_3": "К тому же, плуги могут создавать пашню", "create.ponder.mechanical_plough.text_4": "...они также могут толкать сущностей не причиняя им вреда", - "create.ponder.mechanical_press.header": "Обработке предметов Механическим прессом", + "create.ponder.mechanical_press.header": "Обработкой предметов Механическим прессом", "create.ponder.mechanical_press.text_1": "Механический пресс может обрабатывать предметы под собой", "create.ponder.mechanical_press.text_2": "Подаваемые предметы должны быть брошены или помещены на Депо под Прессом", "create.ponder.mechanical_press.text_3": "Когда предметы подаются на конвейере...", "create.ponder.mechanical_press.text_4": "Пресс будет задерживать и наполнять их автоматически", - "create.ponder.mechanical_press_compacting.header": "Спрессовании предметов Механическим прессом", + "create.ponder.mechanical_press_compacting.header": "Спрессовыванием предметов Механическим прессом", "create.ponder.mechanical_press_compacting.text_1": "Спрессовывание предметов в Чаше упакует их", - "create.ponder.mechanical_press_compacting.text_2": "Спрессование включает любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", + "create.ponder.mechanical_press_compacting.text_2": "Спрессовывание включает любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", "create.ponder.mechanical_press_compacting.text_3": "Некоторым рецептам может потребоваться тепло от Горелки всполоха", "create.ponder.mechanical_press_compacting.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", - "create.ponder.mechanical_pump_flow.header": "Транспортировке жидкостей при помощи Механических помп", + "create.ponder.mechanical_pump_flow.header": "Транспортировкой жидкостей при помощи Механических помп", "create.ponder.mechanical_pump_flow.text_1": "Механические помпы направляют поток в присоединённые сети из труб", "create.ponder.mechanical_pump_flow.text_2": "Когда работает, стрелка указывает направление потока", "create.ponder.mechanical_pump_flow.text_3": "Часть сети сзади теперь качает жидкости...", @@ -2651,45 +2654,45 @@ "create.ponder.mechanical_pump_flow.text_5": "Смена направления вращения изменяет направление потока", "create.ponder.mechanical_pump_flow.text_6": "Используйте гаечный ключ, чтобы изменить направление помпы вручную", - "create.ponder.mechanical_pump_speed.header": "Производительности Механических помп", + "create.ponder.mechanical_pump_speed.header": "Производительностью Механических помп", "create.ponder.mechanical_pump_speed.text_1": "Независимо от скорости, Механические помпы оказывают влияние на трубы в радиусе 16 блоков", "create.ponder.mechanical_pump_speed.text_2": "Ускорение подаваемого вращения изменяет скорость распространения потоков...", "create.ponder.mechanical_pump_speed.text_3": "...также, как и скорость передачи жидкостей", "create.ponder.mechanical_pump_speed.text_4": "Помпы могут объединять свою производительность в общих сетях труб", "create.ponder.mechanical_pump_speed.text_5": "Изменение их направления может помочь сонаправить направление их потоков", - "create.ponder.mechanical_saw_breaker.header": "Спиливании деревьев Механической пилой", + "create.ponder.mechanical_saw_breaker.header": "Спиливанием деревьев Механической пилой", "create.ponder.mechanical_saw_breaker.text_1": "При подаче вращения, Механическая пила будет пилить деревья прямо перед ней", "create.ponder.mechanical_saw_breaker.text_2": "Для спиливания дерева полностью пила должна ломать последний блок дерева, соединённый с землёй", - "create.ponder.mechanical_saw_contraption.header": "Использовании Механических пил на штуковинах", + "create.ponder.mechanical_saw_contraption.header": "Использованием Механических пил на штуковинах", "create.ponder.mechanical_saw_contraption.text_1": "Когда пилы движутся как часть движимой штуковины...", "create.ponder.mechanical_saw_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", - "create.ponder.mechanical_saw_processing.header": "Обработке предметов на Механической пиле", + "create.ponder.mechanical_saw_processing.header": "Обработкой предметов на Механической пиле", "create.ponder.mechanical_saw_processing.text_1": "Направленные вверх Механические пилы могут обрабатывать множество предметов", "create.ponder.mechanical_saw_processing.text_2": "Обработанные предметы всегда движутся против подаваемого на пилу вращения", "create.ponder.mechanical_saw_processing.text_3": "Пилы могут работать с Механическими ремнями (конвейером)", "create.ponder.mechanical_saw_processing.text_4": "Когда из ингредиента можно получить несколько результатов, фильтр может уточнить его", "create.ponder.mechanical_saw_processing.text_5": "Без фильтра пила будет выбирать все возможные результаты по очереди", - "create.ponder.millstone.header": "Обработке предметов в Жерновах", + "create.ponder.millstone.header": "Обработкой предметов Жерновами", "create.ponder.millstone.text_1": "Жернова обрабатывают предметы перемалывая их", "create.ponder.millstone.text_2": "Их можно запустить при помощи шестерней с любой стороны", "create.ponder.millstone.text_3": "Бросьте или внесите предметы сверху", "create.ponder.millstone.text_4": "После некоторого времени результат можно забрать при помощи ПКМ", "create.ponder.millstone.text_5": "Продукты также можно вывести автоматически", - "create.ponder.nixie_tube.header": "Использовании Газоразрядных индикаторов", + "create.ponder.nixie_tube.header": "Использованием Газоразрядных индикаторов", "create.ponder.nixie_tube.text_1": "При подаче редстоун сигнала, Газоразрядные индикаторы отобразят его силу.", "create.ponder.nixie_tube.text_2": "С помощью бирок, отредактированных на наковальне, вы можете отобразить любой текст.", "create.ponder.nixie_tube.text_3": "Щелкните ПКМ с красителем, чтобы изменить цвет их дисплея", - "create.ponder.piston_pole.header": "Удлинителях Механического поршня", + "create.ponder.piston_pole.header": "Удлинителями Механического поршня", "create.ponder.piston_pole.text_1": "Без присоединённых Удлинителей, Механический поршень не может двигаться", "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к его задней части, определяет Диапазон выдвижения.", - "create.ponder.portable_fluid_interface.header": "Портативном жидкостном интерфейсе на штуковинах", + "create.ponder.portable_fluid_interface.header": "Портативным жидкостным интерфейсом на штуковинах", "create.ponder.portable_fluid_interface.text_1": "Жидкостные баки на движущихся штуковинах не могут быть доступны никаким трубам", "create.ponder.portable_fluid_interface.text_2": "Этот интерфейс может взаимодействовать с жидкостными баками без необходимости останавливать штуковину", "create.ponder.portable_fluid_interface.text_3": "Установите второй с промежутком в 1 или 2 блока между ними", @@ -2699,7 +2702,7 @@ "create.ponder.portable_fluid_interface.text_7": "...или выкачать их из штуковины", "create.ponder.portable_fluid_interface.text_8": "Если на какое-то время прекратится обмен содержимым — штуковина продолжит свой путь", - "create.ponder.portable_storage_interface.header": "Портативном интерфейсе хранения на штуковинах", + "create.ponder.portable_storage_interface.header": "Портативным интерфейсом хранения на штуковинах", "create.ponder.portable_storage_interface.text_1": "Инвентари на двигающихся штуковинах не могут быть открыты игроками", "create.ponder.portable_storage_interface.text_2": "Этот компонент может взаимодействовать с хранилищем без необходимости останавливать штуковину", "create.ponder.portable_storage_interface.text_3": "Установите второй с промежутком в 1 или 2 блока между ними", @@ -2709,34 +2712,34 @@ "create.ponder.portable_storage_interface.text_7": "...или вывести их из штуковины", "create.ponder.portable_storage_interface.text_8": "Если на какое-то время прекратится обмен предметами — штуковина продолжит свой путь", - "create.ponder.portable_storage_interface_redstone.header": "Управлении редстоуном", + "create.ponder.portable_storage_interface_redstone.header": "Управлением Портативного интерфейса редстоуном", "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал предотвратит включение стационарного интерфейса", - "create.ponder.powered_latch.header": "Управлении сигналами при помощи Питаемого рычага", + "create.ponder.powered_latch.header": "Управлением сигналами при помощи Питаемого рычага", "create.ponder.powered_latch.text_1": "Питаемый рычаг — управляемый редстоуном рычаг", "create.ponder.powered_latch.text_2": "Сигнал сзади включает его", "create.ponder.powered_latch.text_3": "Сигналы сбоку обратно выключают его", "create.ponder.powered_latch.text_4": "Питаемые рычаги также можно переключать вручную", - "create.ponder.powered_toggle_latch.header": "Управлении сигналами при помощи Питаемого рычага-переключателя", + "create.ponder.powered_toggle_latch.header": "Управлением сигналами при помощи Питаемого рычага-переключателя", "create.ponder.powered_toggle_latch.text_1": "Питаемый рычаг-переключатель — управляемый редстоуном рычаг", "create.ponder.powered_toggle_latch.text_2": "Сигналы сзади переключают его состояние", "create.ponder.powered_toggle_latch.text_3": "...включают и снова выключают", "create.ponder.powered_toggle_latch.text_4": "Питаемые рычаги-переключатели также можно переключать вручную", - "create.ponder.pulse_extender.header": "Использовании Редстоуновых удлинителей импульса", - "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность сигнала редстуона, проходящего через него", + "create.ponder.pulse_extender.header": "Использованием Редстоуновых удлинителей импульса", + "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность сигнала редстоуна, проходящего через него", "create.ponder.pulse_extender.text_2": "Он активируется после небольшой задержки...", - "create.ponder.pulse_extender.text_3": "...и выключается через настраеваемое время", + "create.ponder.pulse_extender.text_3": "...и выключается через настраиваемое время", "create.ponder.pulse_extender.text_4": "С помощь прокрутки можно настроить время Удлинителя", "create.ponder.pulse_extender.text_5": "Можно настроить задержку вплоть до 30 минут", - "create.ponder.pulse_repeater.header": "Использовании Редстоуновых повторителей импульса", - "create.ponder.pulse_repeater.text_1": "Импульсные повторители укоротят любой поступающий сигнал редстуона до одного импульса", + "create.ponder.pulse_repeater.header": "Использованием Редстоуновых повторителей импульса", + "create.ponder.pulse_repeater.text_1": "Импульсные повторители укоротят любой поступающий сигнал редстоуна до одного импульса", "create.ponder.pulse_repeater.text_2": "С помощь колёсика мыши можно настроить время Импульсного повторителя", "create.ponder.pulse_repeater.text_3": "Можно настроить задержку вплоть до 30 минут", - "create.ponder.radial_chassis.header": "Присоединении блоков при помощи Радиальных шасси", + "create.ponder.radial_chassis.header": "Присоединением блоков при помощи Радиальных шасси", "create.ponder.radial_chassis.text_1": "Радиальное шасси соединяются с идентичными блоками шасси в ряд", "create.ponder.radial_chassis.text_2": "Когда один блок перемещается штуковиной, остальные двигаются с ним", "create.ponder.radial_chassis.text_3": "Боковые грани Радиального шасси можно сделать липкими", @@ -2747,11 +2750,11 @@ "create.ponder.radial_chassis.text_8": "При помощи ключа можно указать точный радиус для этого шасси", "create.ponder.radial_chassis.text_9": "Блоки не достижимые ни одной липкой гранью не прикрепятся", - "create.ponder.redstone_contact.header": "Контактах редстоун сигнала", - "create.ponder.redstone_contact.text_1": "Контакты редстоун сигнала направленные друг на друга будут излучать редстоун сигнал", - "create.ponder.redstone_contact.text_2": "Также применимо, когда один из них — часть двигающейся штуковины", + "create.ponder.redstone_contact.header": "Использованием Редстоуновых контактов", + "create.ponder.redstone_contact.text_1": "Редстоуновые контакты направленные друг на друга будут излучать редстоун сигнал", + "create.ponder.redstone_contact.text_2": "Также работает, когда один из них — часть двигающейся штуковины", - "create.ponder.redstone_link.header": "Использовании Редстоунового беспроводного передатчика сигнала", + "create.ponder.redstone_link.header": "Использованием Редстоунового беспроводного передатчика сигнала", "create.ponder.redstone_link.text_1": "Редстоуновые передатчики сигнала могут передавать редстоун сигнал без проводов", "create.ponder.redstone_link.text_2": "Нажмите Shift+ПКМ, чтобы переключить режим приёмника", "create.ponder.redstone_link.text_3": "ПКМ ключом сделает то же самое", @@ -2759,20 +2762,20 @@ "create.ponder.redstone_link.text_5": "Положите предметы в два слота, чтобы указать частоту", "create.ponder.redstone_link.text_6": "Передатчики только одной частоты могут сообщаться", - "create.ponder.rope_pulley.header": "Перемещении структур при помощи Лебёдки", + "create.ponder.rope_pulley.header": "Перемещением структур при помощи Лебёдки", "create.ponder.rope_pulley.text_1": "Лебёдки могут двигать блоки вертикально при подаче вращения", "create.ponder.rope_pulley.text_2": "Направление и скорость движения зависят от исходного вращения", - "create.ponder.rope_pulley_attachment.header": "Перемещении Лебёдок как частей штуковины", + "create.ponder.rope_pulley_attachment.header": "Перемещением Лебёдок как частей штуковины", "create.ponder.rope_pulley_attachment.text_1": "Когда лебёдки перемещаются штуковиной...", "create.ponder.rope_pulley_attachment.text_2": "...их присоединённая структура движется с ними", "create.ponder.rope_pulley_attachment.text_3": "Учитывайте, что лебёдки можно выдвигать только пока они простаивают", - "create.ponder.rope_pulley_modes.header": "Режимах движения Лебёдки", + "create.ponder.rope_pulley_modes.header": "Режимами движения Лебёдки", "create.ponder.rope_pulley_modes.text_1": "Когда лебёдка останавливается, сдвинутая структура обратно становится блоками", "create.ponder.rope_pulley_modes.text_2": "Можно настроить её так, чтобы структура никогда не становилась блоками или только на начальной позиции", - "create.ponder.rose_quartz_lamp.header": "Особенностях Фонаря из розового кварца", + "create.ponder.rose_quartz_lamp.header": "Особенностями Фонаря из розового кварца", "create.ponder.rose_quartz_lamp.text_1": "Фонарь из розового кварца активируются по сигналу редстоуна", "create.ponder.rose_quartz_lamp.text_2": "После этого он сам станет источником сигнала", "create.ponder.rose_quartz_lamp.text_3": "Когда несколько Фонарей расположены в группе...", @@ -2780,51 +2783,51 @@ "create.ponder.rose_quartz_lamp.text_5": "Компараторы выводят сигнал исходя из дистанции до ближайшего включённого Фонаря", "create.ponder.rose_quartz_lamp.text_6": "Фонари также можно переключать вручную с помощью Гаечного ключа", - "create.ponder.rotation_speed_controller.header": "Использовании Регулятора скорости вращения", + "create.ponder.rotation_speed_controller.header": "Использованием Регулятора скорости вращения", "create.ponder.rotation_speed_controller.text_1": "Регуляторы скорости вращения передают вращение от своих осей на Большую шестерню выше них", "create.ponder.rotation_speed_controller.text_2": "Можно настроить передаваемую скорость при помощи прокрутки по соответствующему месту сбоку", - "create.ponder.sail.header": "Сборке Мельниц при помощи Парусов", + "create.ponder.sail.header": "Сборкой Мельниц при помощи Парусов", "create.ponder.sail.text_1": "Паруса — удобные блоки для создания мельниц", "create.ponder.sail.text_2": "Они будут прикрепляться к блокам и друг к другу без использования суперклея или блоков шасси", "create.ponder.sail.text_3": "ПКМ красителем, чтобы покрасить их", "create.ponder.sail.text_4": "ПКМ ножницами, чтобы превратить их снова в раму", - "create.ponder.sail_frame.header": "Сборке Мельниц при помощи Рам парусов", + "create.ponder.sail_frame.header": "Сборкой Мельниц при помощи Рам парусов", "create.ponder.sail_frame.text_1": "Рамы парусов — удобные блоки для создания мельниц", "create.ponder.sail_frame.text_2": "Они будут прикрепляться к блокам и друг к другу без использования суперклея или блоков шасси", - "create.ponder.sequenced_gearshift.header": "Использовании Последовательной коробки передач", + "create.ponder.sequenced_gearshift.header": "Использованием Последовательной коробки передач", "create.ponder.sequenced_gearshift.text_1": "Последовательная коробка передач передает вращение по списку заданных инструкций", "create.ponder.sequenced_gearshift.text_2": "ПКМ, чтобы отрыть интерфейс для настройки", "create.ponder.sequenced_gearshift.text_3": "При получении Редстоун сигнала, он начнёт выполнять заданные инструкции по порядку", "create.ponder.sequenced_gearshift.text_4": "По завершению она будет дожидаться следующего Редстоун сигнала и начнёт сначала", "create.ponder.sequenced_gearshift.text_5": "Редстоун компаратор можно использовать для считывания текущего прогресса выполнения инструкций", - "create.ponder.shaft.header": "Передаче вращения при помощи Валов", + "create.ponder.shaft.header": "Передачей силы вращения при помощи Валов", "create.ponder.shaft.text_1": "Валы передают вращение по прямой", - "create.ponder.shaft_casing.header": "Обрамлении Валов", + "create.ponder.shaft_casing.header": "Обрамлением Валов", "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для декорации Валов", - "create.ponder.smart_chute.header": "Фильтрации предметов при помощи Умных желобов", + "create.ponder.smart_chute.header": "Фильтрацией предметов при помощи Умных желобов", "create.ponder.smart_chute.text_1": "Умные желоба — вертикальные желоба с дополнительным контролем", "create.ponder.smart_chute.text_2": "Предметы в слоте фильтра уточняют, что они могут забирать и передавать", "create.ponder.smart_chute.text_3": "Используйте Колесо Мыши для уточнения размера забираемого стака", "create.ponder.smart_chute.text_4": "Редстоун сигнал выключает их", - "create.ponder.smart_pipe.header": "Управлении жидкостным потоком с помощью Умных труб", + "create.ponder.smart_pipe.header": "Управлением жидкостным потоком с помощью Умных труб", "create.ponder.smart_pipe.text_1": "Умные трубы могут помочь управлять потоками по типам жидкостей", "create.ponder.smart_pipe.text_2": "Размещенные непосредственно у источника, они могут указывать тип извлекаемой жидкости", "create.ponder.smart_pipe.text_3": "Просто щелкните ПКМ на слоте фильтра с любым предметом, содержащим нужную жидкость", "create.ponder.smart_pipe.text_4": "И при размещении глубже по сети труб умные трубы будут пропускать только подходящие жидкости.", - "create.ponder.speedometer.header": "Мониторинге Кинетической информации при помощи Спидометра", + "create.ponder.speedometer.header": "Мониторингом кинетической информации при помощи Спидометра", "create.ponder.speedometer.text_1": "Спидометры отображают текущую скорость присоединённых компонентов", "create.ponder.speedometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", "create.ponder.speedometer.text_3": "Компараторы могут испускать аналоговый Редстоун сигнал относительно измерений спидометра", - "create.ponder.spout_filling.header": "Наполнении предметов при помощи Дозатора", + "create.ponder.spout_filling.header": "Наполнением предметов при помощи Дозатора", "create.ponder.spout_filling.text_1": "Дозатор может заполнять подходящие предметы, расположенные под ним", "create.ponder.spout_filling.text_2": "К содержимому дозатора невозможно получить доступ вручную", "create.ponder.spout_filling.text_3": "Вместо этого можно использовать трубы для подачи в него жидкостей", @@ -2832,14 +2835,14 @@ "create.ponder.spout_filling.text_5": "Когда предметы подаются конвейером...", "create.ponder.spout_filling.text_6": "Дозатор будет удерживать и обрабатывать их автоматически", - "create.ponder.stabilized_bearings.header": "Стабилизации Штуковин", + "create.ponder.stabilized_bearings.header": "Стабилизацией Штуковин", "create.ponder.stabilized_bearings.text_1": "Когда Механические подшипники являются частью двигающейся структуры...", "create.ponder.stabilized_bearings.text_2": "...они будут пытаться держаться ровно", "create.ponder.stabilized_bearings.text_3": "Опять же, подшипники присоединяют блоки перед ними", "create.ponder.stabilized_bearings.text_4": "И в результате целая под-структура будет держаться ровно", - "create.ponder.steam_engine.header": "Настройке Паровых двигателей", - "create.ponder.steam_engine.text_1": "Паровые двигатели можно разместить на баке с жидкостью", + "create.ponder.steam_engine.header": "Настройкой Паровых двигателей", + "create.ponder.steam_engine.text_1": "Паровые двигатели можно разместить на Жидкостном баке", "create.ponder.steam_engine.text_10": "4 уровень", "create.ponder.steam_engine.text_11": "4 двигателя", "create.ponder.steam_engine.text_12": "8 уровень", @@ -2848,83 +2851,83 @@ "create.ponder.steam_engine.text_3": "С достаточным количеством воды, уровнем нагрева и размером котла...", "create.ponder.steam_engine.text_4": "...они будут генерировать вращательную силу", "create.ponder.steam_engine.text_5": "Для минимальной установки требуется 4 Жидкостных бака", - "create.ponder.steam_engine.text_6": "С помощью Горелки Всполоха можно увеличить выходную мощность", - "create.ponder.steam_engine.text_7": "Более высокие уровни мощности требуют больше воды, размера котельной и нагрева", + "create.ponder.steam_engine.text_6": "С помощью Горелки всполоха можно увеличить выходную мощность", + "create.ponder.steam_engine.text_7": "Более высокие уровни мощности требуют больше воды, размера котла и уровня нагрева", "create.ponder.steam_engine.text_8": "Текущий уровень мощности котла можно проверить с помощью Инженерных очков", - "create.ponder.steam_engine.text_9": "С каждым добавленным уровнем мощности, дополнительный Двигатель может работать на полную мощность", + "create.ponder.steam_engine.text_9": "С каждым добавленным уровнем мощности, каждый дополнительный Двигатель может работать на полную мощность", - "create.ponder.steam_whistle.header": "Настройки Паровых свистков", + "create.ponder.steam_whistle.header": "Использованием Паровых свистков", "create.ponder.steam_whistle.text_1": "Паровые свистки можно разместить на Жидкостном баке", "create.ponder.steam_whistle.text_2": "Если Бак получает достаточно тепла...", "create.ponder.steam_whistle.text_3": "...Свисток будет играть определённую ноту при активации", "create.ponder.steam_whistle.text_4": "Используйте дополнительный Свисток на блоке, чтобы понизить высоту его звука", "create.ponder.steam_whistle.text_5": "Переключайтесь между тремя разными октавами с помощью Гаечного ключа", - "create.ponder.steam_whistle.text_6": "Инженерные очки могут помочь узнать текущую высоту звука", + "create.ponder.steam_whistle.text_6": "Инженерные очки помогут узнать текущую высоту звука", - "create.ponder.sticker.header": "Прикреплении блоков при помощи Липучки", + "create.ponder.sticker.header": "Прикреплением блоков при помощи Липучки", "create.ponder.sticker.text_1": "Липучки идеально подходят для Редстоун-управляемого присоединения блоков", "create.ponder.sticker.text_2": "При получении сигнала они переключают своё состояние", "create.ponder.sticker.text_3": "Если он теперь движется в штуковине, то блок будет двигаться с ним", "create.ponder.sticker.text_4": "При повторном переключении блок больше не будет прикреплён", - "create.ponder.stressometer.header": "Мониторинге кинетической информации при помощи Стрессометра", + "create.ponder.stressometer.header": "Мониторингом кинетической информации при помощи Стрессометра", "create.ponder.stressometer.text_1": "Стрессометр отображает текущую допустимую нагрузку присоединённой кинетической сети", "create.ponder.stressometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", "create.ponder.stressometer.text_3": "Компараторы могут испускать аналоговый редстоун сигнал относительно измерений стрессометра", - "create.ponder.super_glue.header": "Присоединении блоков при помощи Супер-клея", - "create.ponder.super_glue.text_1": "Супер-клей можно использовать между двумя любыми блоками", - "create.ponder.super_glue.text_2": "Скреплённые блоки будут двигаться вместе при сборке в штуковну", - "create.ponder.super_glue.text_3": "Когда вы супер-клей во второй руке...", + "create.ponder.super_glue.header": "Присоединением блоков при помощи Суперклея", + "create.ponder.super_glue.text_1": "Суперклей можно использовать между двумя любыми блоками", + "create.ponder.super_glue.text_2": "Скреплённые блоки будут двигаться вместе при сборке в штуковину", + "create.ponder.super_glue.text_3": "Когда вы суперклей во второй руке...", "create.ponder.super_glue.text_4": "...добавленные блоки будут сразу приклеены к грани, на которую они были поставлены", - "create.ponder.super_glue.text_5": "Супер-клей можно удалить левым кликом", + "create.ponder.super_glue.text_5": "Суперклей можно удалить левым кликом", "create.ponder.super_glue.text_6": "Блоки, висящие на других, обычно не требуют клея", - "create.ponder.track_chunks.header": "Пересечении незагруженных чанков", + "create.ponder.track_chunks.header": "Пересечением поездом незагруженных чанков", "create.ponder.track_chunks.text_1": "Железнодорожные пути остаются функциональными вне загруженных чанков", "create.ponder.track_chunks.text_2": "Поезда будут путешествовать по неактивным участкам мира без каких либо проблем", "create.ponder.track_chunks.text_3": "Они по-прежнему будут останавливаться на станциях или красных сигналах Светофора", "create.ponder.track_chunks.text_4": "Однако дрели и другие машины на борту работать не будут", "create.ponder.track_chunks.text_5": "Оказавшись рядом с игроком, поезд снова появится", - "create.ponder.track_observer.header": "Обнаружении поездов", + "create.ponder.track_observer.header": "Обнаружением проходящих поездов", "create.ponder.track_observer.text_1": "Выберите Путь, затем поместите Железнодорожный наблюдатель рядом", "create.ponder.track_observer.text_2": "Наблюдатель обнаружит любые поезда, проходящие через маркер на рельсах", "create.ponder.track_observer.text_3": "Наблюдатели могут быть настроены для обнаружения определённого груза", - "create.ponder.track_placement.header": "Размещении Железнодорожных путей", - "create.ponder.track_placement.text_1": "Встречайте новый тип рельсов, разработанный для Железнодорожных штуковин", + "create.ponder.track_placement.header": "Размещением Железнодорожных путей", + "create.ponder.track_placement.text_1": "Встречайте новый тип рельсов, разработанный для Железнодорожных штуковин!", "create.ponder.track_placement.text_2": "Чтобы разместить несколько путей сразу, нажмите на существующие Пути", "create.ponder.track_placement.text_3": "Затем разместите или выберите вторые Пути", "create.ponder.track_placement.text_4": "Железнодорожные пути также могут быть размещены в виде поворотов или склонов", "create.ponder.track_placement.text_5": "При соединении дорожки будут пытаться сделать каждый поворот одинакового размера", "create.ponder.track_placement.text_6": "Удержание Ctrl при размещении...", "create.ponder.track_placement.text_7": "...создаст самый длинный возможный изгиб", - "create.ponder.track_placement.text_8": "Материалы во второй руке будут подкадыватся под Пути автоматически", + "create.ponder.track_placement.text_8": "Материалы во второй руке будут подкладываться под Пути автоматически", - "create.ponder.track_portal.header": "Железнодорожных путях и портале в Незер", - "create.ponder.track_portal.text_1": "Пути, размещёные напротив портала в Незер...", - "create.ponder.track_portal.text_2": "...попытаютя создать Пути на другой стороне", + "create.ponder.track_portal.header": "Железнодорожными путями и портале Незера", + "create.ponder.track_portal.text_1": "Пути, размещённые напротив портала Незера...", + "create.ponder.track_portal.text_2": "...попытаются создать Пути на другой стороне", "create.ponder.track_portal.text_3": "Поезда на этом пути теперь могут путешествовать по измерениям", - "create.ponder.train_assembly.header": "Сборке поездов", - "create.ponder.train_assembly.text_1": "Выберите Железнодорожный путь, затем разместите рядом Станцию", + "create.ponder.train_assembly.header": "Сборкой поездов", + "create.ponder.train_assembly.text_1": "Выберите участок Железнодорожных путей, затем разместите рядом Станцию", "create.ponder.train_assembly.text_10": "Каждый поезд требует Контроллер поезда на борту", "create.ponder.train_assembly.text_11": "Дополнительный Контроллер позволяет отправляться со Станций в обоих направлениях", "create.ponder.train_assembly.text_12": "Откройте интерфейс Станции и подтвердите процесс сборки", "create.ponder.train_assembly.text_13": "Поезда можно разобрать обратно на блоки только на Станциях", - "create.ponder.train_assembly.text_14": "При использовании на Станции карты, добавит маркер этого места", + "create.ponder.train_assembly.text_14": "При использовании на Станции карты, добавит на неё маркер этого места", "create.ponder.train_assembly.text_15": "Собранные поезда можно перемещать на ближайшие пути с помощью Гаечного ключа", "create.ponder.train_assembly.text_2": "Станции — это путевые точки вашей железнодорожной сети", "create.ponder.train_assembly.text_3": "Чтобы создать новый поезд, откройте интерфейс Станции и переключитесь в режим сборки", "create.ponder.train_assembly.text_4": "Во время сборки к этой Станции не будут подъезжать поезда, следующие по Расписанию", "create.ponder.train_assembly.text_5": "Создавайте новые вагонные тележки, используя Железнодорожный корпус на путях", "create.ponder.train_assembly.text_6": "Нажмите на тележку ещё раз, чтобы переключаться между их вариациями внешнего вида", - "create.ponder.train_assembly.text_7": "Приклейте блоки с помощью Супер-клея", + "create.ponder.train_assembly.text_7": "Приклейте блоки с помощью Суперклея", "create.ponder.train_assembly.text_8": "Собранные поезда будут двигаться быстрее, если они смогут найти топливо в прикреплённых сундуках или бочках", "create.ponder.train_assembly.text_9": "Топливо, находящееся в Хранилищах, не будет потребляться поездом", - "create.ponder.train_controls.header": "Управлении поездами", + "create.ponder.train_controls.header": "Управлением поездами", "create.ponder.train_controls.text_1": "Контроллер поезда требуются на каждой Железнодорожной штуковине", "create.ponder.train_controls.text_2": "После сборки щёлкните ПКМ по блоку, чтобы начать движение", "create.ponder.train_controls.text_3": "Ускоряйте и управляйте поездом, используя клавиши движения", @@ -2934,56 +2937,56 @@ "create.ponder.train_controls.text_7": "Прикреплённые Свистки можно активировать клавишей бега", "create.ponder.train_controls.text_8": "Нажмите Shift или кликните снова, чтобы перестать управлять поездом", - "create.ponder.train_schedule.header": "Использовании Расписаний поездов", + "create.ponder.train_schedule.header": "Использованием Расписаний поездов", "create.ponder.train_schedule.text_1": "Расписания позволяют другим машинистам управлять поездами", "create.ponder.train_schedule.text_2": "Щелкните ПКМ с предметом в руке, чтобы открыть его интерфейс", "create.ponder.train_schedule.text_3": "После составления расписание может быть передано машинисту поезда", - "create.ponder.train_schedule.text_4": "Любой моб или Горелка Всполоха, сидящий перед Контроллером поезда, является подходящим кандидатом в машинисты", + "create.ponder.train_schedule.text_4": "Любой моб или Горелка всполоха, сидящий перед Контроллером поезда, является подходящим кандидатом в машинисты", "create.ponder.train_schedule.text_5": "С помощью поводка можно легче усадить потенциального машиниста на его место", "create.ponder.train_schedule.text_6": "Расписания можно забирать у машинистов в любой момент времени", - "create.ponder.train_signal_placement.header": "Размещении Железнодорожных светофоров", + "create.ponder.train_signal_placement.header": "Размещением Железнодорожных светофоров", "create.ponder.train_signal_placement.text_1": "Выберите Железнодорожный путь, затем разместите Светофор поблизости", "create.ponder.train_signal_placement.text_2": "Светофоры регулируют поток поездов, которые управляются не игроками", "create.ponder.train_signal_placement.text_3": "Поезда следующие по расписанию никогда не будут пересекать сигналы в противоположном направлении", "create.ponder.train_signal_placement.text_4": "...если не добавлен второй Светофор, направленный в противоположную сторону", - "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать сигналные огни более заметными", + "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать сигнальные огни более заметными", - "create.ponder.train_signal_redstone.header": "Железнодорожных светофорах и редстоуне", + "create.ponder.train_signal_redstone.header": "Железнодорожными светофорами и редстоуне", "create.ponder.train_signal_redstone.text_1": "Сигнал Светофора может быть переключен вручную с помощью редстоуна", - "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора испускает сигнал редстоуна, получаемый компаратором", + "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора, испускает сигнал редстоуна, получаемый компаратором", - "create.ponder.train_signal_signaling.header": "Предотвращении аварий с помощью Железнодорожных светофоров", + "create.ponder.train_signal_signaling.header": "Предотвращением аварий с помощью Железнодорожных светофоров", "create.ponder.train_signal_signaling.text_1": "Светофоры делят пути на сегменты", - "create.ponder.train_signal_signaling.text_2": "Если сегмент занят, проезд другим поездам запрещён", + "create.ponder.train_signal_signaling.text_2": "Если сегмент занят — проезд другим поездам запрещён", "create.ponder.train_signal_signaling.text_3": "Таким образом, каждый сегмент будет содержать только один поезд одновременно", "create.ponder.train_signal_signaling.text_4": "Второй режим Светофора доступен через переключение Гаечным ключом", - "create.ponder.train_signal_signaling.text_5": "Сегменты латунного сигнала обычно переходят в стандартные сигналы", - "create.ponder.train_signal_signaling.text_6": "Этот специальный сигнал может останавливать поезда при втором условии", + "create.ponder.train_signal_signaling.text_5": "Сегменты жёлтого сигнала обычно переходят в стандартные сигналы", + "create.ponder.train_signal_signaling.text_6": "Этот особый сигнал может останавливать поезда при втором условии", "create.ponder.train_signal_signaling.text_7": "Он остановит поезда, которые при подъезде...", "create.ponder.train_signal_signaling.text_8": "...не смогут сразу покинуть сегмент", "create.ponder.train_signal_signaling.text_9": "Это помогает удерживать поезда, стоящие в очереди, вне загруженного сегмента", - "create.ponder.valve_handle.header": "Генерации силы вращения при помощи Вентилей", + "create.ponder.valve_handle.header": "Генерацией силы вращения при помощи Вентилей", "create.ponder.valve_handle.text_1": "Игроки могут использовать вентили для применения силы вращения вручную", "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения против Часовой стрелки", "create.ponder.valve_handle.text_3": "Передаваемая ими скорость медленная и точная", "create.ponder.valve_handle.text_4": "Держите ПКМ крадучись для вращения по Часовой стрелке", "create.ponder.valve_handle.text_5": "Вентили можно окрашивать в эстетических целях", - "create.ponder.valve_pipe.header": "Управлении потоком жидкости с помощью Жидкостных клапанов", + "create.ponder.valve_pipe.header": "Управлением потоком жидкости с помощью Жидкостных клапанов", "create.ponder.valve_pipe.text_1": "Жидкостные клапаны помогают контролировать распространение жидкостей по трубопроводу", "create.ponder.valve_pipe.text_2": "Их входной вал контролирует, разрешена ли подача жидкости в данный момент", "create.ponder.valve_pipe.text_3": "При вращении в нужном направлении — клапан откроется", "create.ponder.valve_pipe.text_4": "Его можно снова закрыть, изменив направление вращения", - "create.ponder.water_wheel.header": "Генерации силы вращения при помощи Водяных колёс", + "create.ponder.water_wheel.header": "Генерацией силы вращения при помощи Водяных колёс", "create.ponder.water_wheel.text_1": "Водяные колёса берут силу соседних потоков воды", "create.ponder.water_wheel.text_2": "Чем больше сторон запитано, тем быстрее будет вращаться Водяное колесо", "create.ponder.water_wheel.text_3": "Лопасти колеса должны быть направлены против течения", "create.ponder.water_wheel.text_4": "Направленное в противоположную сторону, не будет так же эффективно", - "create.ponder.weighted_ejector.header": "Использовании Взвешенных катапульт", + "create.ponder.weighted_ejector.header": "Использованием Взвешенных катапульт", "create.ponder.weighted_ejector.text_1": "Нажмите ПКМ крадучись, держа катапульту, чтобы выбрать место цели", "create.ponder.weighted_ejector.text_10": "Теперь она ограниченна этим размера стака и будет активироваться только тогда, когда удерживаемый стак достигнет этого количества", "create.ponder.weighted_ejector.text_11": "Другие сущности, встав на катапульту, будут всегда активировать её", @@ -2996,18 +2999,18 @@ "create.ponder.weighted_ejector.text_8": "Если целью был выбран инвентарь, то катапульта будет ждать, пока в нём не появится место.", "create.ponder.weighted_ejector.text_9": "При помощи Ключа можно настроить необходимый размер стака", - "create.ponder.weighted_ejector_redstone.header": "Управлении Взвешенными катапультами редстоуном", + "create.ponder.weighted_ejector_redstone.header": "Управлением Взвешенными катапультами редстоуном", "create.ponder.weighted_ejector_redstone.text_1": "При подаче редстоун сигнала катапульты не будут активироваться", "create.ponder.weighted_ejector_redstone.text_2": "Кроме того, наблюдатели могут определить, когда катапульты срабатывают", - "create.ponder.weighted_ejector_tunnel.header": "Разделении стаков предметов при помощи Взвешенных катапульт", + "create.ponder.weighted_ejector_tunnel.header": "Разделением стаков предметов при помощи Взвешенных катапульт", "create.ponder.weighted_ejector_tunnel.text_1": "Объединённые с Латунными туннелями, катапульты могут делить стаки предметов по определённому количеству", "create.ponder.weighted_ejector_tunnel.text_2": "Сперва, настройте Латунный туннель на режим «Предпочтительно ближайшее», чтобы приоритизировать выход сбоку", "create.ponder.weighted_ejector_tunnel.text_3": "Размер стака, установленный на катапульте, теперь определяет отделяемое количество", "create.ponder.weighted_ejector_tunnel.text_4": "Пока новый стак нужного количества лежит на боковом выходе...", "create.ponder.weighted_ejector_tunnel.text_5": "...остаток продолжит свой путь", - "create.ponder.windmill_source.header": "Генерации силы вращения при помощи Подшипников ветряной мельницы", + "create.ponder.windmill_source.header": "Генерацией силы вращения при помощи Подшипников ветряной мельницы", "create.ponder.windmill_source.text_1": "Подшипники ветряной мельницы прикрепляются к блокам перед ними", "create.ponder.windmill_source.text_2": "Если прикреплено достаточно парусоподобных блоков, он может стать мельницей", "create.ponder.windmill_source.text_3": "Активированный при помощи ПКМ, Подшипник ветр. мельницы начнёт вырабатывать силу вращения", @@ -3016,7 +3019,7 @@ "create.ponder.windmill_source.text_6": "ПКМ по подшипнику в любое время, чтобы остановить его и изменить структуру", "create.ponder.windmill_source.text_7": "Щелкните ПКМ по подшипнику в любое время, чтобы остановить и снова изменить структуру", - "create.ponder.windmill_structure.header": "Установке Ветрянных мельниц", + "create.ponder.windmill_structure.header": "Установкой Ветряных мельниц", "create.ponder.windmill_structure.text_1": "Любая структура может считаться мельницей, пока она содержит как минимум 8 парусоподобных блоков", "_": "Thank you for translating Create!" From 67fa323637a6fdab3e97b9973a2e6d54967607ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=92=80=E5=A2=83=E7=9F=B3?= Date: Sat, 13 Aug 2022 20:35:23 +0800 Subject: [PATCH 15/32] Updates to zh_cn.json by Demonese (#3557) --- src/main/resources/assets/create/lang/zh_cn.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/create/lang/zh_cn.json b/src/main/resources/assets/create/lang/zh_cn.json index 973109b8b..459b5f282 100644 --- a/src/main/resources/assets/create/lang/zh_cn.json +++ b/src/main/resources/assets/create/lang/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 644", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -1366,6 +1366,10 @@ "create.tooltip.chute.fans_pull_up": "鼓风机从上方进行吸引", "create.tooltip.chute.fans_pull_down": "鼓风机从下方进行吸引", "create.tooltip.chute.contains": "内含物品:%1$s x%2$s", + "create.tooltip.deployer.header": "机械手信息", + "create.tooltip.deployer.using": "模式:使用", + "create.tooltip.deployer.punching": "模式:攻击", + "create.tooltip.deployer.contains": "物品:%1$s x%2$s", "create.tooltip.brass_tunnel.contains": "目前分配:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "右击取出", @@ -1693,7 +1697,7 @@ "create.display_source.kinetic_stress.current": "应力(SU)", "create.display_source.kinetic_stress.max": "总应力", "create.display_source.kinetic_stress.remaining": "剩余应力", - "create.display_source.redstone_power":"红石信号", + "create.display_source.redstone_power": "红石信号", "create.display_source.redstone_power.display": "显示格式", "create.display_source.redstone_power.number": "数字", "create.display_source.redstone_power.progress_bar": "进度条", From a1431c0995bc01ce777fc0d58f6cf69da0d7f4bf Mon Sep 17 00:00:00 2001 From: Borusu1 <110524278+Borusu1@users.noreply.github.com> Date: Sat, 13 Aug 2022 15:38:18 +0300 Subject: [PATCH 16/32] Added uk_ua.json by Borusu1 (#3570) --- src/main/resources/assets/create/lang/uk_ua | 2347 +++++++++++++++++++ 1 file changed, 2347 insertions(+) create mode 100644 src/main/resources/assets/create/lang/uk_ua diff --git a/src/main/resources/assets/create/lang/uk_ua b/src/main/resources/assets/create/lang/uk_ua new file mode 100644 index 000000000..cefaa2f97 --- /dev/null +++ b/src/main/resources/assets/create/lang/uk_ua @@ -0,0 +1,2347 @@ +{ + + "_": "->------------------------] Ігрові елементи [------------------------<-", + + "block.create.acacia_window": "Скло з акацією", + "block.create.acacia_window_pane": "Склянна панель з акацією", + "block.create.adjustable_chain_gearshift": "Регульований коробка передач", + "block.create.adjustable_crate": "Регульований ящик", + "block.create.adjustable_pulse_repeater": "Регульований повторювач пульсу", + "block.create.adjustable_repeater": "Регульований повторювач", + "block.create.analog_lever": "Аналоговий важіль", + "block.create.andesite_belt_funnel": "Андезитова воронка на конвеєрі", + "block.create.cut_andesite_bricks": "Цегла з тесаного андезиту", + "block.create.cut_andesite_slab": "Плита з тесаного андезиту", + "block.create.andesite_bricks_stairs": "Сходи з андезитової цегли", + "block.create.andesite_bricks_wall": "Стіна з андезитової цегли", + "block.create.andesite_casing": "Андезитовий корпус", + "block.create.andesite_cobblestone": "Андезитовий кругляк", + "block.create.andesite_cobblestone_slab": "Плита з андезитового кругляка", + "block.create.andesite_cobblestone_stairs": "Сходи з андезитового кругляка", + "block.create.andesite_cobblestone_wall": "Стіна з андезитового кругляка", + "block.create.andesite_encased_shaft": "Облицьований андезитовий вал", + "block.create.andesite_funnel": "Андезитова воронка", + "block.create.andesite_pillar": "Андезитова колона", + "block.create.andesite_tunnel": "Андезитовий тунель", + "block.create.basin": "Чаша", + "block.create.belt": "Конвеєр", + "block.create.birch_window": "Скло з березою", + "block.create.birch_window_pane": "Склянна панель з березою", + "block.create.black_nixie_tube": "Чорна ніксі-труба", + "block.create.black_sail": "Чорне вітрило", + "block.create.black_seat": "Чорне сидіння", + "block.create.black_toolbox": "Чорний ящик для інструментів", + "block.create.black_valve_handle": "Чорний ручний клапан", + "block.create.blaze_burner": "Пальник блейза", + "block.create.blue_nixie_tube": "Синя ніксі-труба", + "block.create.blue_sail": "Синє вітрило", + "block.create.blue_seat": "Синє сидіння", + "block.create.blue_toolbox": "Синій ящик для інструментів", + "block.create.blue_valve_handle": "Синій ручний клапан", + "block.create.brass_belt_funnel": "Латунна воронка на конвеєрі", + "block.create.brass_block": "Латунний блок", + "block.create.brass_casing": "Латунний корпус", + "block.create.brass_encased_shaft": "Вал у латунному корпусі", + "block.create.brass_funnel": "Латунна воронка", + "block.create.brass_tunnel": "Латунний тунель", + "block.create.brown_nixie_tube": "Коричнева ніксі-труба", + "block.create.brown_sail": "Коричневе вітрило", + "block.create.brown_seat": "Коричневе сидіння", + "block.create.brown_toolbox": "Коричневий ящик для інструментів", + "block.create.brown_valve_handle": "Коричневий ручний клапан", + "block.create.cart_assembler": "Складальник вагонеток", + "block.create.chiseled_dark_scoria": "Різьблений темний попіл", + "block.create.chiseled_dolomite": "Точений доломіт", + "block.create.chiseled_gabbro": "Точене габро", + "block.create.chiseled_limestone": "Точений вапняк", + "block.create.chiseled_scoria": "Точений попіл", + "block.create.chiseled_weathered_limestone": "Точений вивітрений вапняк", + "block.create.chocolate": "Шоколад", + "block.create.chute": "Жолоб", + "block.create.clockwork_bearing": "Підшипник годинника", + "block.create.clutch": "Зчеплення", + "block.create.cogwheel": "Шестірня", + "block.create.content_observer": "Спостерігач вмісту", + "block.create.controller_rail": "Контролерна рейка", + "block.create.copper_backtank": "Мідний резервуар", + "block.create.copper_block": "Блок міді", + "block.create.copper_casing": "Мідний корпус", + "block.create.copper_ore": "Мідна руда", + "block.create.copper_shingles": "Мідна черепиця", + "block.create.copper_tiles": "Мідна плитка", + "block.create.copper_valve_handle": "Мідний ручний клапан", + "block.create.creative_crate": "Творчий ящик", + "block.create.creative_fluid_tank": "Творчий бак для рідини", + "block.create.creative_motor": "Творчий мотор", + "block.create.crimson_window": "Скло з багряним деревом", + "block.create.crimson_window_pane": "Склянна панель з багряним деревом", + "block.create.crushing_wheel": "Дробильне колесо", + "block.create.crushing_wheel_controller": "Контролер дробильного колеса", + "block.create.cuckoo_clock": "Годинник із зозулею", + "block.create.cyan_nixie_tube": "Бірюзова ніксі-труба", + "block.create.cyan_sail": "Бірюзове вітрило", + "block.create.cyan_seat": "Бірюзове сидіння", + "block.create.cyan_toolbox": "Бірюзовий ящик для інструментів", + "block.create.cyan_valve_handle": "Бірюзовий ручний клапан", + "block.create.dark_oak_window": "Скло з темним дубом", + "block.create.dark_oak_window_pane": "Склянна панель з темним дубом", + "block.create.dark_scoria": "Темний попіл", + "block.create.dark_scoria_bricks": "Цегла з темного попелу", + "block.create.dark_scoria_bricks_slab": "Плита з цегли темного попелу", + "block.create.dark_scoria_bricks_stairs": "Сходи з цегли темного попелу", + "block.create.dark_scoria_bricks_wall": "Стіна з цегли темного попелу", + "block.create.dark_scoria_cobblestone": "Темний попіл-кругляк", + "block.create.dark_scoria_cobblestone_slab": "Плита з темного попелу-кругляку", + "block.create.dark_scoria_cobblestone_stairs": "Сходи з темного попелу-кругляку", + "block.create.dark_scoria_cobblestone_wall": "Стіна з темного попелу-кругляку", + "block.create.dark_scoria_pillar": "Колона з темного попелу", + "block.create.deployer": "Автономний активатор", + "block.create.depot": "Депо", + "block.create.cut_diorite_bricks": "Цегла з тесаного діориту", + "block.create.diorite_bricks_slab": "Плита з діоритової цегли", + "block.create.diorite_bricks_stairs": "Сходи з діоритової цегли", + "block.create.diorite_bricks_wall": "Стіна з діоритової цегли", + "block.create.diorite_cobblestone": "Діоритовий кругляк", + "block.create.diorite_cobblestone_slab": "Плита з діоритового кругляка", + "block.create.diorite_cobblestone_stairs": "Сходи з діоритового кругляка", + "block.create.diorite_cobblestone_wall": "Стіна з діоритового кругляка", + "block.create.diorite_pillar": "Колона з діоритового кругляка", + "block.create.dolomite": "Доломіт", + "block.create.dolomite_bricks": "Доломітова цегла", + "block.create.dolomite_bricks_slab": "Плита з доломітової цегли", + "block.create.dolomite_bricks_stairs": "Сходи з доломітової цегли", + "block.create.dolomite_bricks_wall": "Стіна з доломітової цегли", + "block.create.dolomite_cobblestone": "Доломітовий кругляк", + "block.create.dolomite_cobblestone_slab": "Плита з доломітового кругляка", + "block.create.dolomite_cobblestone_stairs": "Сходи з доломітового кругляка", + "block.create.dolomite_cobblestone_wall": "Стіна з доломітового кругляка", + "block.create.dolomite_pillar": "Колона з доломітового кругляка", + "block.create.encased_chain_drive": "Ланцюговий привід у корпусі", + "block.create.encased_fan": "Вентилятор у корпусі", + "block.create.encased_fluid_pipe": "Труба для рідини в корпусі", + "block.create.fancy_andesite_bricks": "Вишукана андезитова цегла", + "block.create.fancy_andesite_bricks_slab": "Плита з вишуканої андезитової цегли", + "block.create.fancy_andesite_bricks_stairs": "Сходи з вишуканої андезитової цегли", + "block.create.fancy_andesite_bricks_wall": "Стіна з вишуканої андезитової цегли", + "block.create.fancy_dark_scoria_bricks": "Вишукана темна пепельна цегла", + "block.create.fancy_dark_scoria_bricks_slab": "Плита з вишуканої темної пепельної цегли", + "block.create.fancy_dark_scoria_bricks_stairs": "Сходи з вишуканої темної пепельної цегли", + "block.create.fancy_dark_scoria_bricks_wall": "Стіна з вишуканої темної пепельної цегли", + "block.create.fancy_diorite_bricks": "Вишукана діоритова цегла", + "block.create.fancy_diorite_bricks_slab": "Плита з вишуканої діоритової цегли", + "block.create.fancy_diorite_bricks_stairs": "Сходи з вишуканої діоритової цегли", + "block.create.fancy_diorite_bricks_wall": "Стіна з вишуканої андезитової цегли", + "block.create.fancy_dolomite_bricks": "Вишукана доломітова цегла", + "block.create.fancy_dolomite_bricks_slab": "Плита з вищуканої доломотової цегли", + "block.create.fancy_dolomite_bricks_stairs": "Сходи з вищуканої доломотової цегли", + "block.create.fancy_dolomite_bricks_wall": "Стіна з вищуканої доломотової цегли", + "block.create.fancy_gabbro_bricks": "Вишукана габрова цегла", + "block.create.fancy_gabbro_bricks_slab": "Плита з вишуканої габрової цегли", + "block.create.fancy_gabbro_bricks_stairs": "Сходи вишуканої габрової цегли", + "block.create.fancy_gabbro_bricks_wall": "Стіна вишуканої габрової цегли", + "block.create.fancy_granite_bricks": "Вишукана гранітна цегла", + "block.create.fancy_granite_bricks_slab": "Плита з вишуканої гранітної цегли", + "block.create.fancy_granite_bricks_stairs": "Сходи з вишуканої гранітної цегли", + "block.create.fancy_granite_bricks_wall": "Стіна з вишуканої гранітної цегли", + "block.create.fancy_limestone_bricks": "Вишукана вапнякова цегла", + "block.create.fancy_limestone_bricks_slab": "Плита з вишуканої вапнякової цегли", + "block.create.fancy_limestone_bricks_stairs": "Сходи з вишуканої вапнякової цегли", + "block.create.fancy_limestone_bricks_wall": "Стіна з вишуканої вапнякової цегли", + "block.create.fancy_scoria_bricks": "Вишукана пепельна цегла", + "block.create.fancy_scoria_bricks_slab": "Плита з вишуканої пепельної цегли", + "block.create.fancy_scoria_bricks_stairs": "Сходи з вишуканої пепельної цегли", + "block.create.fancy_scoria_bricks_wall": "Стіна з вишуканої пепельної цегли", + "block.create.fancy_weathered_limestone_bricks": "Вишукана вивітряна вапнякова цегла", + "block.create.fancy_weathered_limestone_bricks_slab": "Плита з вишуканої вивітряної вапнякової цегли", + "block.create.fancy_weathered_limestone_bricks_stairs": "Сходи з вишуканої вивітряної вапнякової цегли", + "block.create.fancy_weathered_limestone_bricks_wall": "Стіна з вишуканої вивітряної вапнякової цегли", + "block.create.fluid_pipe": "Труба для рідини", + "block.create.fluid_tank": "Резервуар для рідини", + "block.create.fluid_valve": "Клапан для рідини", + "block.create.flywheel": "Маховик", + "block.create.framed_glass": "Скло в рамі", + "block.create.framed_glass_pane": "Склнна панель в рамі", + "block.create.furnace_engine": "Двигун на печі", + "block.create.gabbro": "Габро", + "block.create.gabbro_bricks": "Габра цегла", + "block.create.gabbro_bricks_slab": "Плита з габрової цегли", + "block.create.gabbro_bricks_stairs": "Сходи з габрової цегли", + "block.create.gabbro_bricks_wall": "Стіна з габрової цегли", + "block.create.gabbro_cobblestone": "Габровий кругляк", + "block.create.gabbro_cobblestone_slab": "Плита з габрового кругляка", + "block.create.gabbro_cobblestone_stairs": "Сходи з габрового кругляка", + "block.create.gabbro_cobblestone_wall": "Стіна з габрового кругляка", + "block.create.gabbro_pillar": "Колона з габрового кругляка", + "block.create.gantry_carriage": "Шасі портального крана", + "block.create.gantry_shaft": "Портальний вал", + "block.create.gearbox": "Коробка", + "block.create.gearshift": "Перемикач передач", + "block.create.glass_fluid_pipe": "Скляна трубка для рідини", + "block.create.granite_bricks": "Гранітова цегла", + "block.create.granite_bricks_slab": "Плита з гранітової цегли", + "block.create.granite_bricks_stairs": "Сходи з гранітової цегли", + "block.create.granite_bricks_wall": "Стіна з гранітової цегли", + "block.create.granite_cobblestone": "Гранітовий кругляк", + "block.create.granite_cobblestone_slab": "Плита з гранітового кругляку", + "block.create.granite_cobblestone_stairs": "Сходи з гранітового кругляку", + "block.create.granite_cobblestone_wall": "Стіна з гранітового кругляку", + "block.create.granite_pillar": "Колона з гранітового кругляку", + "block.create.gray_nixie_tube": "Сіра ніксі-труба", + "block.create.gray_sail": "Сіре вітрило", + "block.create.gray_seat": "Сіре сидіння", + "block.create.gray_toolbox": "Сірий ящик для інструментів", + "block.create.gray_valve_handle": "Сірий ручний клапан", + "block.create.green_nixie_tube": "Зелена ніксі-труба", + "block.create.green_sail": "Зелене вітрило", + "block.create.green_seat": "Зелене сидіння", + "block.create.green_toolbox": "Зелений ящик для інструментів", + "block.create.green_valve_handle": "Зелений ручний клапан", + "block.create.hand_crank": "Ручна рукоятка", + "block.create.haunted_bell": "Примарний дзвін", + "block.create.honey": "Мед", + "block.create.horizontal_framed_glass": "Скло в горизонтальній рамці", + "block.create.horizontal_framed_glass_pane": "Склянна панель в горизонтальній рамі", + "block.create.hose_pulley": "Шків шланга", + "block.create.item_drain": "Осушувач предметів", + "block.create.jungle_window": "Скло з тропічним деревом", + "block.create.jungle_window_pane": "Склянна панель з тропічним деревом", + "block.create.large_cogwheel": "Велика шестірня", + "block.create.layered_andesite": "Багатошаровий андезит", + "block.create.layered_dark_scoria": "Багатошаровий темний попіл", + "block.create.layered_diorite": "Багатошаровий діорит", + "block.create.layered_dolomite": "Багатошаровий доломіт", + "block.create.layered_gabbro": "Багатошаровий габро", + "block.create.layered_granite": "Багатошаровий граніт", + "block.create.layered_limestone": "Багатошаровий вапняк", + "block.create.layered_scoria": "Багатошаровий попіл", + "block.create.layered_weathered_limestone": "Багатошаровий вивітрений вапняк", + "block.create.lectern_controller": "Багатошаровий контролер", + "block.create.light_blue_nixie_tube": "Блакитна ніксі-труба", + "block.create.light_blue_sail": "Блакитне вітрило", + "block.create.light_blue_seat": "Блакитне сидіння", + "block.create.light_blue_toolbox": "Блакитний ящик для інструментів", + "block.create.light_blue_valve_handle": "Блакитний ручний клапан", + "block.create.light_gray_nixie_tube": "Світло-сіра ніксі-труба", + "block.create.light_gray_sail": "Світло-сіре вітрило", + "block.create.light_gray_seat": "Світло-сіре сидіння", + "block.create.light_gray_toolbox": "Світло-сірий ящик для інструментів", + "block.create.light_gray_valve_handle": "Світло-сірий ручний клапан", + "block.create.lime_nixie_tube": "Лаймова ніксі-труба", + "block.create.lime_sail": "Лаймове вітрило", + "block.create.lime_seat": "Лаймове сидіння", + "block.create.lime_toolbox": "Лаймовий ящик для інструментів", + "block.create.lime_valve_handle": "Лаймовий ручний клапан", + "block.create.limesand": "Вапняний пісок", + "block.create.limestone": "Вапняк", + "block.create.limestone_bricks": "Вапнякова цегла", + "block.create.limestone_bricks_slab": "Плита з вапняковох цегли", + "block.create.limestone_bricks_stairs": "Сходи з вапняковох цегли", + "block.create.limestone_bricks_wall": "Стіна з вапняковох цегли", + "block.create.limestone_cobblestone": "Вапнякорвий кругляк", + "block.create.limestone_cobblestone_slab": "Плита з вапняковох цегли", + "block.create.limestone_cobblestone_stairs": "Сходи з вапняковох цегли", + "block.create.limestone_cobblestone_wall": "Стіна з вапняковох цегли", + "block.create.limestone_pillar": "Вапнякова колона", + "block.create.linear_chassis": "Лінійне шасі", + "block.create.lit_blaze_burner": "Запалений пальник блейза", + "block.create.magenta_nixie_tube": "Пурпурна ніксі-труба", + "block.create.magenta_sail": "Пурпурне вітрило", + "block.create.magenta_seat": "Пурпурне сидіння", + "block.create.magenta_toolbox": "Пурпурний ящик для інструментів", + "block.create.magenta_valve_handle": "Пурпурний ручний клапан", + "block.create.mechanical_arm": "Механічна рука", + "block.create.mechanical_bearing": "Механічний підшипник", + "block.create.mechanical_crafter": "Механічний крафтер", + "block.create.mechanical_drill": "Механічна дриль", + "block.create.mechanical_harvester": "Механічний комбайн", + "block.create.mechanical_mixer": "Механічний міксер", + "block.create.mechanical_piston": "Механічний поршень", + "block.create.mechanical_piston_head": "Головка Механічного поршня", + "block.create.mechanical_plough": "Механічний плуг", + "block.create.mechanical_press": "Механічний прес", + "block.create.mechanical_pump": "Механічний насос", + "block.create.mechanical_saw": "Механічна пила", + "block.create.metal_bracket": "Металевий кронштейн", + "block.create.millstone": "Жорна", + "block.create.minecart_anchor": "Якір вагонетки", + "block.create.mossy_andesite": "Моховий андезит", + "block.create.mossy_dark_scoria": "Моховий темний попіл", + "block.create.mossy_diorite": "Моховий діорит", + "block.create.mossy_dolomite": "Моховий доломіт", + "block.create.mossy_gabbro": "Моховий габро", + "block.create.mossy_granite": "Моховий граніт", + "block.create.mossy_limestone": "Моховий вапняк", + "block.create.mossy_scoria": "Моховий попіл", + "block.create.mossy_weathered_limestone": "Моховий вивітрюваний вапняк", + "block.create.mysterious_cuckoo_clock": "Годинник із зозулею", + "block.create.natural_scoria": "Природний попіл", + "block.create.nixie_tube": "Ніксі-труба", + "block.create.nozzle": "Насадка", + "block.create.oak_window": "Скло з дубом", + "block.create.oak_window_pane": "Склянна панель з дубом", + "block.create.orange_sail": "Помаранчеве вітрило", + "block.create.orange_seat": "Помаранчеве сидіння", + "block.create.orange_toolbox": "Помаранчевий ящик для інструментів", + "block.create.orange_valve_handle": "Помаранчевий ручний клапан", + "block.create.ornate_iron_window": "Вишукане залізне скло", + "block.create.ornate_iron_window_pane": "Вишукане залізна склянна панель", + "block.create.overgrown_andesite": "Зарослий андезит", + "block.create.overgrown_dark_scoria": "Зарослий темний попіл", + "block.create.overgrown_diorite": "Зарослий діорит", + "block.create.overgrown_dolomite": "Зарослий доломіт", + "block.create.overgrown_gabbro": "Зарослий габро", + "block.create.overgrown_granite": "Зарослий граніт", + "block.create.overgrown_limestone": "Зарослий вапняк", + "block.create.overgrown_scoria": "Зарослий попіл", + "block.create.overgrown_weathered_limestone": "Зарослий вивітрений вапняк", + "block.create.paved_andesite": "Мощений андезит", + "block.create.paved_andesite_slab": "Плита з мощеного андезиту", + "block.create.paved_andesite_stairs": "Сходи з мощеного андезиту", + "block.create.paved_andesite_wall": "Стіна з мощеного андезиту", + "block.create.paved_dark_scoria": "Мощений темний попіл", + "block.create.paved_dark_scoria_slab": "Плита з мощеного темного попелу", + "block.create.paved_dark_scoria_stairs": "Сходи з мощеного темного попелу", + "block.create.paved_dark_scoria_wall": "Стіна з мощеного темного попелу", + "block.create.paved_diorite": "Мощений діорит", + "block.create.paved_diorite_slab": "Плита з мощеного діориту", + "block.create.paved_diorite_stairs": "Сходи з мощеного діориту", + "block.create.paved_diorite_wall": "Стіна з мощеного діориту", + "block.create.paved_dolomite": "Мощений доломіт", + "block.create.paved_dolomite_slab": "Плита з мощеного доломіту", + "block.create.paved_dolomite_stairs": "Сходжи з мощеного доломіту", + "block.create.paved_dolomite_wall": "Стіна з мощеного доломіту", + "block.create.paved_gabbro": "Мощений габро", + "block.create.paved_gabbro_slab": "Плита з мощеного габро", + "block.create.paved_gabbro_stairs": "Сходи з мощеного габро", + "block.create.paved_gabbro_wall": "Стіна з мощеного габро", + "block.create.paved_granite": "Мощений граніт", + "block.create.paved_granite_slab": "Плита з мощеного граніту", + "block.create.paved_granite_stairs": "Сходи з мощеного граніту", + "block.create.paved_granite_wall": "Стіна з мощеного граніту", + "block.create.paved_limestone": "Мощений вапняк", + "block.create.paved_limestone_slab": "Плитьа з мощеного вапняку", + "block.create.paved_limestone_stairs": "Сходи з мощеного вапняку", + "block.create.paved_limestone_wall": "Стіна з мощеного вапняку", + "block.create.paved_scoria": "Мощений попіл", + "block.create.paved_scoria_slab": "Плита з мощеного попелу", + "block.create.paved_scoria_stairs": "Сходи з мощеного попелу", + "block.create.paved_scoria_wall": "Стіна з мощеного попелу", + "block.create.paved_weathered_limestone": "Мощений вивітрений вапняк", + "block.create.paved_weathered_limestone_slab": "Плита з мощеного вивітряного вапняку", + "block.create.paved_weathered_limestone_stairs": "Сходи з мощеного вивітряного вапняку", + "block.create.paved_weathered_limestone_wall": "Стіна з мощеного вивітряного вапняку", + "block.create.peculiar_bell": "Дивний дзвін", + "block.create.pink_nixie_tube": "Рожева ніксі-труба", + "block.create.pink_sail": "Рожеве вітрило", + "block.create.pink_seat": "Рожеве сидіння", + "block.create.pink_toolbox": "Рожевий ящик для інструментів", + "block.create.pink_valve_handle": "Рожевий ручний клапан", + "block.create.piston_extension_pole": "Поршневий подовжувач", + "block.create.polished_dark_scoria": "Полірований темний попіл", + "block.create.polished_dark_scoria_slab": "Плита з полірованого темного попелу", + "block.create.polished_dark_scoria_stairs": "Сходи з полірованого темного попелу", + "block.create.polished_dark_scoria_wall": "Стіна з полірованого темного попелу", + "block.create.polished_dolomite": "Полірований доломіт", + "block.create.polished_dolomite_slab": "Плита з полірованого доломіту", + "block.create.polished_dolomite_stairs": "Сходи з полірованого доломіту", + "block.create.polished_dolomite_wall": "Стіна з полірованого доломіту", + "block.create.polished_gabbro": "Полірований габро", + "block.create.polished_gabbro_slab": "Плита з полірованого габро", + "block.create.polished_gabbro_stairs": "Сходи з полірованого габро", + "block.create.polished_gabbro_wall": "Стіна з полірованого габро", + "block.create.polished_limestone": "Полірований вапняк", + "block.create.polished_limestone_slab": "Плита з полірованого габро", + "block.create.polished_limestone_stairs": "Сходи з полірованого габро", + "block.create.polished_limestone_wall": "Стіна з полірованого габро", + "block.create.polished_scoria": "Полірований попіл", + "block.create.polished_scoria_slab": "Плита з полірованого попелу", + "block.create.polished_scoria_stairs": "Сходи з полірованого попелу", + "block.create.polished_scoria_wall": "Стіна з полірованого попелу", + "block.create.polished_weathered_limestone": "Полірований вивітрений вапняк", + "block.create.polished_weathered_limestone_slab": "Плита з полірованого вивітреного вапняку", + "block.create.polished_weathered_limestone_stairs": "Сходи з полірованого вивітреного вапняку", + "block.create.polished_weathered_limestone_wall": "Стіна з полірованого вивітреного вапняку", + "block.create.portable_fluid_interface": "Портативний рідинний інтерфейс", + "block.create.portable_storage_interface": "Портативний інтерфейс зберігання", + "block.create.powered_latch": "Живлений важіль", + "block.create.powered_toggle_latch": "Живлюваний важіль-перемикач", + "block.create.pulley_magnet": "Магніт для шківа", + "block.create.pulse_repeater": "Повторювач імпульсів", + "block.create.purple_nixie_tube": "Фіолетова ніксі-труба", + "block.create.purple_sail": "Фіолетове вітрило", + "block.create.purple_seat": "Фіолетове сидіння", + "block.create.purple_toolbox": "Фіолетовий ящик для інструментів", + "block.create.purple_valve_handle": "Фіолетове ручний клапан", + "block.create.radial_chassis": "Радіальне шасі", + "block.create.red_nixie_tube": "Червона ніксі-труба", + "block.create.red_sail": "Червоне вітрило", + "block.create.red_seat": "Червоне сидіння", + "block.create.red_toolbox": "Червоний ящик для інструментів", + "block.create.red_valve_handle": "Червоний ручний клапан", + "block.create.redstone_contact": "Редстоун контакт", + "block.create.redstone_link": "Редстоун посилання", + "block.create.refined_radiance_casing": "Сяючий корпус", + "block.create.reinforced_rail": "Посилена рейка", + "block.create.rope": "Канат", + "block.create.rope_pulley": "Лебідка", + "block.create.rotation_speed_controller": "Контролер швидкості обертання", + "block.create.sail_frame": "Каркас вітрила", + "block.create.schematic_table": "Схематичний стіл", + "block.create.schematicannon": "Схематична гармата", + "block.create.scoria": "Попіл", + "block.create.scoria_bricks": "Пепельна цегла", + "block.create.scoria_bricks_slab": "Плита з пепельної цегли", + "block.create.scoria_bricks_stairs": "Сходи з пепельної цегли", + "block.create.scoria_bricks_wall": "Стіна з пепельної цегли", + "block.create.scoria_cobblestone": "Пепельний кругляк", + "block.create.scoria_cobblestone_slab": "Плита з пепельного кругляку", + "block.create.scoria_cobblestone_stairs": "Сходи з пепельного кругляку", + "block.create.scoria_cobblestone_wall": "Стіна з пепельного кругляку", + "block.create.scoria_pillar": "Колона з пепельного кругляку", + "block.create.secondary_linear_chassis": "Вторинне лінійне шасі", + "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": "Стресометр", + "block.create.tiled_glass": "Кахельне скло", + "block.create.tiled_glass_pane": "Кахельне склянна панель", + "block.create.turntable": "Поворотний стіл", + "block.create.vertical_framed_glass": "Скло у вертикальній рамі", + "block.create.vertical_framed_glass_pane": "Склянна панель у вертикальній рамі", + "block.create.warped_window": "Скло з багряного дерева", + "block.create.warped_window_pane": "Склянна панель з багряного дерева", + "block.create.water_wheel": "Водяне колесо", + "block.create.weathered_limestone": "Вивітрений вапняк", + "block.create.weathered_limestone_bricks": "Вивітряна вапнякова цегла", + "block.create.weathered_limestone_bricks_slab": "Плита з вивітряної вапнякової цегли", + "block.create.weathered_limestone_bricks_stairs": "Сходи з вивітряної вапнякової цегли", + "block.create.weathered_limestone_bricks_wall": "Стіна з вивітряної вапнякової цегли", + "block.create.weathered_limestone_cobblestone": "Вивітрений вапняковий кругляк", + "block.create.weathered_limestone_cobblestone_slab": "Плита з вивітряного вапняковогро кругляка", + "block.create.weathered_limestone_cobblestone_stairs": "Сходи з вивітряного вапняковогро кругляка", + "block.create.weathered_limestone_cobblestone_wall": "Стіна з вивітряного вапняковогро кругляка", + "block.create.weathered_limestone_pillar": "Колона з вивітреного вапняку", + "block.create.weighted_ejector": "Зважена катапульта", + "block.create.white_nixie_tube": "Біла ніксі-труба", + "block.create.white_sail": "Біле вітрило", + "block.create.white_seat": "Біле сидіння", + "block.create.white_toolbox": "Білий ящик для інструментів", + "block.create.white_valve_handle": "Білий ручний клапан", + "block.create.windmill_bearing": "Підшипник вітряка", + "block.create.wooden_bracket": "Дерев'яний кронштейн", + "block.create.yellow_nixie_tube": "Жовта ніксі-труба", + "block.create.yellow_sail": "Жовте вітрило", + "block.create.yellow_seat": "Жовте сидіння", + "block.create.yellow_toolbox": "Жовтий ящик для інструментів", + "block.create.yellow_valve_handle": "Жовтий ручний клапан", + "block.create.zinc_block": "Цинковий блок", + "block.create.zinc_ore": "Цинкова руда", + + "enchantment.create.capacity": "Ємність", + "enchantment.create.potato_recovery": "Відновлення картоплі", + + "entity.create.contraption": "Пристосування", + "entity.create.crafting_blueprint": "Створення креслення", + "entity.create.gantry_contraption": "Gantry Contraption", + "entity.create.potato_projectile": "Картопляний снаряд", + "entity.create.seat": "Сідло", + "entity.create.stationary_contraption": "Стаціонарне пристосування", + "entity.create.super_glue": "Суперклей", + + "fluid.create.potion": "Зілля", + "fluid.create.tea": "Чай будівельника", + + "item.create.andesite_alloy": "Андезитовий сплав", + "item.create.attribute_filter": "Фільтр атрибутів", + "item.create.bar_of_chocolate": "Плитка шоколаду", + "item.create.belt_connector": "Конвеєр", + "item.create.blaze_cake": "Торт «Вогняний».", + "item.create.blaze_cake_base": "Основа для «Вогняного» торта", + "item.create.brass_hand": "Латунна рука", + "item.create.brass_ingot": "Латунний злиток", + "item.create.brass_nugget": "Латунний самородок", + "item.create.brass_sheet": "Латунний лист", + "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_backtank": "Мідний балон", + "item.create.copper_ingot": "Мідний злиток", + "item.create.copper_nugget": "Мідний самородок", + "item.create.copper_sheet": "Мідний лист", + "item.create.crafter_slot_cover": "Кришка слота крафта", + "item.create.crafting_blueprint": "Створення креслення", + "item.create.creative_blaze_cake": "Творчий «Вогняний» торт", + "item.create.crushed_aluminum_ore": "Подрібнена алюмінієва руда", + "item.create.crushed_brass": "Подрібнена латунь", + "item.create.crushed_copper_ore": "Подрібнена мідна руда", + "item.create.crushed_gold_ore": "Подрібнена мідна руда", + "item.create.crushed_iron_ore": "Подрібнена залізна руда", + "item.create.crushed_lead_ore": "Подрібнена свинцева руда", + "item.create.crushed_nickel_ore": "Подрібнена нікелева руда", + "item.create.crushed_osmium_ore": "Подрібнена осмієва руда", + "item.create.crushed_platinum_ore": "Подрібнена платинова руда", + "item.create.crushed_quicksilver_ore": "Подрібнена ртутна руда", + "item.create.crushed_silver_ore": "Подрібнена Срібна руда", + "item.create.crushed_tin_ore": "Подрібнена олов'яна руда", + "item.create.crushed_uranium_ore": "Подрібнена уранова руда", + "item.create.crushed_zinc_ore": "Подрібнена цинкова руда", + "item.create.diving_boots": "Чоботи для дайвінгу", + "item.create.diving_helmet": "Шолом для дайвінгу", + "item.create.dough": "Тісто", + "item.create.electron_tube": "Електронна лампа", + "item.create.empty_blaze_burner": "Пустий пальник блейза", + "item.create.empty_schematic": "Порожня схема", + "item.create.extendo_grip": "Довга рука", + "item.create.filter": "Фільтер", + "item.create.furnace_minecart_contraption": "Штуковина самоходной вагонетки", + "item.create.goggles": "Інженерні окуляри", + "item.create.golden_sheet": "Золотий лист", + "item.create.handheld_worldshaper": "Творчий світотворець", + "item.create.honey_bucket": "Відро з медом", + "item.create.honeyed_apple": "Яблуко з медом", + "item.create.incomplete_cogwheel": "Неповна шестірня", + "item.create.incomplete_large_cogwheel": "Неповна велика шестірня", + "item.create.incomplete_precision_mechanism": "Неповний прецизійний механізм", + "item.create.iron_sheet": "Залізний лист", + "item.create.linked_controller": "Підключений контролер", + "item.create.minecart_contraption": "Вагонеточна штуковина", + "item.create.minecart_coupling": "З'єднувач вагонеток", + "item.create.polished_rose_quartz": "Полірований рожевий кварц", + "item.create.potato_cannon": "Картопляна гармата", + "item.create.powdered_obsidian": "Обсідіановий порошок", + "item.create.precision_mechanism": "Прецизійний механізм", + "item.create.propeller": "Пропеллер", + "item.create.red_sand_paper": "Червоний наждачний папір", + "item.create.refined_radiance": "Вишукане сяйво", + "item.create.rose_quartz": "Hожевий кварц", + "item.create.sand_paper": "Наждачний папір", + "item.create.schematic": "Схема", + "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": "Палиця симетрії", + "item.create.wheat_flour": "Пшеничне борошно", + "item.create.whisk": "Віничок для збивання", + "item.create.wrench": "Гайковий ключ", + "item.create.zinc_ingot": "Цинковий злиток", + "item.create.zinc_nugget": "Цинковий самородок", + + + "_": "->------------------------] Досягнення [------------------------<-", + + "advancement.create.root": "Ласкаво просимо до Create", + "advancement.create.root.desc": "Настав час почати будувати дивовижні пристрої!", + "advancement.create.andesite_alloy": "Повторення - мати навчання", + "advancement.create.andesite_alloy.desc": "Матеріали Create мають дивні назви, одна з них – Андезитовий сплав..", + "advancement.create.its_alive": "Воно живе!", + "advancement.create.its_alive.desc": "Спостерігайте, як обертається ваш перший кінетичний компонент.", + "advancement.create.shifting_gears": "Перемикання передач", + "advancement.create.shifting_gears.desc": "З’єднайте велику шестірню з малою шестернею, щоб змінити швидкість вашого пристрою.", + "advancement.create.overstressed": "Перенапружений", + "advancement.create.overstressed.desc": "Зіткніться з граничним навантаженням віч-на-віч.", + "advancement.create.belt": "Передайте за проїзд", + "advancement.create.belt.desc": "З'єднайте два вали за допомогою конвеєру.", + "advancement.create.tunnel": "В укриття!", + "advancement.create.tunnel.desc": "Прикрасьте свій конвеєр тунелем.", + "advancement.create.splitter_tunnel": "Розділяй і володарюй", + "advancement.create.splitter_tunnel.desc": "Створіть роздільник із групою латунних тунелів.", + "advancement.create.chute": "Впало", + "advancement.create.chute.desc": "Розмістіть жолоб, вертикальний аналог конвеєра.", + "advancement.create.upward_chute": "Повітряне викрадення", + "advancement.create.upward_chute.desc": "Спостерігайте, як кинутий предмет злітає в жолоб, що працює від вентилятора.", + "advancement.create.belt_funnel": "Воронки, що бовтаються", + "advancement.create.belt_funnel.desc": "Помістіть воронку боком, зверху конвеєра або депо, щоб створити її спеціальний тип.", + "advancement.create.belt_funnel_kiss": "Папуги і клапті", + "advancement.create.belt_funnel_kiss.desc": "Зробіть поцілунок двох воронок, встановлених на конвеєрі.", + "advancement.create.fan": "Механічний маг повітря", + "advancement.create.fan.desc": "Осідлайте потік повітря від Вентилятора.", + "advancement.create.fan_lava": "Геотермальний обігрівач простору", + "advancement.create.fan_lava.desc": "Потрапте в потік повітря, що плавить речі.", + "advancement.create.fan_water": "Божевільна мийка", + "advancement.create.fan_water.desc": "Потрапте в потік повітря, що миє речі", + "advancement.create.fan_smoke": "Коптильна 2.0", + "advancement.create.fan_smoke.desc": "Потрапте в потік повітря, що коптить речі.", + "advancement.create.wrench": "Зручне налаштування", + "advancement.create.wrench.desc": "Створіть гайковий ключ, який допоможе вам створювати свої пристрої.", + "advancement.create.goggles": "Стрес-О-Бачення", + "advancement.create.goggles.desc": "Створіть окуляри інженера, які допоможуть вам отримувати більше кінетичної інформації від компонентів.", + "advancement.create.speedometer": "Так швидко?", + "advancement.create.speedometer.desc": "Розмістіть і підключіть спідометр. Подивіться на нього крізь окуляри, щоб прочитати його точне значення.", + "advancement.create.stressometer": "Так сильно?", + "advancement.create.stressometer.desc": "Розмістіть і підключіть стресометр. Подивіться на нього крізь окуляри, щоб прочитати його точне значення.", + "advancement.create.aesthetics": "Бум, Естетично!", + "advancement.create.aesthetics.desc": "Встановіть кронштейни на вал, трубу та конвеєр.", + "advancement.create.reinforced": "Бум, Посилено!", + "advancement.create.reinforced.desc": "Використовуйте Корпус на Валі, Трубі та конвеєрі.", + "advancement.create.water_wheel": "Підключення гідравліки", + "advancement.create.water_wheel.desc": "Поставте Водяне колесо та спробуйте змусити його обертатися!", + "advancement.create.chocolate_wheel": "Смачна сила", + "advancement.create.chocolate_wheel.desc": "Запустіть Водяне колесо розплавленим шоколадом.", + "advancement.create.lava_wheel": "Магматичне колесо", + "advancement.create.lava_wheel.desc": "Це не повинно було спрацювати.", + "advancement.create.cuckoo": "Уже?", + "advancement.create.cuckoo.desc": "Станьте свідком того, як Годинник з зозулею оголошує час сну.", + "advancement.create.millstone": "Кишеньковий подрібнювач", + "advancement.create.millstone.desc": "Розмістіть і заставте Жорна крутитись", + "advancement.create.windmill": "Легкий вітерець", + "advancement.create.windmill.desc": "Зберіть Вітряк.", + "advancement.create.maxed_windmill": "Сильний вітерець", + "advancement.create.maxed_windmill.desc": "Зберіть Вітряк максимальної сили.", + "advancement.create.andesite_casing": "Андезитова епоха", + "advancement.create.andesite_casing.desc": "Використовуйте трохи Андезитового Сплаву та дерева, щоб створити Корпус.", + "advancement.create.mechanical_drill": "Стаціонарні рубалки", + "advancement.create.mechanical_drill.desc": "Розмістіть і запустіть механічну дриль.", + "advancement.create.press": "Прес робить боньк!'", + "advancement.create.press.desc": "Увімкніть Механічний Прес і використовуйте його для створення листів.", + "advancement.create.polished_rose_quartz": "Рожеві діаманти", + "advancement.create.polished_rose_quartz.desc": "Використовуйте шматок Наждачного Паперу для полірування Рожевого Кварцу, доки він не стане прозорим.", + "advancement.create.electron_tube": "Біп Буп", + "advancement.create.electron_tube.desc": "Зробіть кілька Електронних Трубок, корисних для створення менш примітивних механізмів.", + "advancement.create.mechanical_saw": "Стаціонарна рубка", + "advancement.create.mechanical_saw.desc": "Розмістіть і приведіть в дію механічну пилу.", + "advancement.create.basin": "Басейнова операція", + "advancement.create.basin.desc": "Поставте Чашу і спробуйте кинути в нього предмети.", + "advancement.create.mixer": "Змішати, але не збовтувати", + "advancement.create.mixer.desc": "Поставте Механічний Міксер над Чашею, увімкніть його та почніть змішувати деякі інгредієнти.", + "advancement.create.blaze_burner": "Живий камін", + "advancement.create.blaze_burner.desc": "Зродіть Пальник блейза.", + "advancement.create.compact": "Автоматизоване ущільнення", + "advancement.create.compact.desc": "Використовуйте Прес і Чашу, щоб ущільнити деякі предмети.", + "advancement.create.brass": "Фактичні сплави", + "advancement.create.brass.desc": "Використовуйте Подрібнену мідь і Подрібнений цинк, щоб створити трохи Латуні.", + "advancement.create.brass_casing": "Латунна епоха", + "advancement.create.brass_casing.desc": "Використовуйте щойно отриману латунь і трохи дерева, щоб створити більш досконалий корпус.", + "advancement.create.copper_casing": "Мідна епоха", + "advancement.create.copper_casing.desc": "Використовуйте Мідні листи та деревину, щоб створити кілька Мідних корпусів.", + "advancement.create.spout": "Буль", + "advancement.create.spout.desc": "Спостерігайте, як рідина наповнюється за допомогою носика.", + "advancement.create.spout_potion": "Ґрунтовна пивоварня", + "advancement.create.spout_potion.desc": "Подивіться як Дозатор наповнює пляшку зіллям.", + "advancement.create.chocolate": "Світ фантазії", + "advancement.create.chocolate.desc": "Отримайте відро Розплавленого шоколаду.", + "advancement.create.item_drain": "Осушення", + "advancement.create.item_drain.desc": "Подивіться, як рідкий предмет спорожняється за допомогою Осушувача предметів.", + "advancement.create.chained_item_drain": "Нехай воно котиться!", + "advancement.create.chained_item_drain.desc": "Спостерігайте за тим, як предмет їде через кілька з'єднаних предметних осушувачів.", + "advancement.create.glass_pipe": "Шпигун за потоками", + "advancement.create.glass_pipe.desc": "Спостерігайте через вікно у трубі за тим, як поширюється рідина. Вікно з'явиться на трубі під час використання гайкового ключа.", + "advancement.create.pipe_collision": "Ніколи не змінюйте потоки!", + "advancement.create.pipe_collision.desc": "Подивіться, як дві рідини зустрічаються у вашій трубопровідній мережі.", + "advancement.create.pipe_spill": "Протікання!", + "advancement.create.pipe_spill.desc": "Спостерігайте, як відкритий кінець труби забирає або виливає рідини у світ.", + "advancement.create.hose_pulley": "Промисловий розлив", + "advancement.create.hose_pulley.desc": "Опустіть шків шланга та спостерігайте, як він стікає або наповнює тіло рідиною.", + "advancement.create.infinite_water": "Осушення океану", + "advancement.create.infinite_water.desc": "Викачуйте воду з резервуара, який вважається нескінченним.", + "advancement.create.infinite_lava": "Осушення ядра планети", + "advancement.create.infinite_lava.desc": "Викачуйте лаву з басейну, який вважається нескінченним.", + "advancement.create.infinite_chocolate": "Потопаючи в уяві", + "advancement.create.infinite_chocolate.desc": "Насос із тіла з розплавленого шоколаду досить великий, щоб вважатися нескінченним.", + "advancement.create.crafter": "Автоматизоване складання", + "advancement.create.crafter.desc": "Розмістіть і надайте силу деяким Механічним крафтерам.", + "advancement.create.clockwork_bearing": "Хитрий годинник", + "advancement.create.clockwork_bearing.desc": "Зберіть структуру, розташовану на годинниковому механізмі.", + "advancement.create.nixie_tube": "Ознака стилю", + "advancement.create.nixie_tube.desc": "Отримайте та розмістіть пару Ніксі-труб.", + "advancement.create.deployer": "Тикай, клади та атакуй", + "advancement.create.deployer.desc": "Приведіть у дію Автономний активатор, ідеальне відображення вас самих.", + "advancement.create.speed_controller": "Інженери його ненавидять!", + "advancement.create.speed_controller.desc": "Розмістіть регулятор швидкості обертання, найкращий пристрій для перемикання передач.", + "advancement.create.flywheel": "Серце Фабрики", + "advancement.create.flywheel.desc": "Успішно підключіть двигун до Маховика.", + "advancement.create.overstress_flywheel": "Високий рівень стресу", + "advancement.create.overstress_flywheel.desc": "Перенапружте двигун печі.", + "advancement.create.precision_mechanism": "Складні цікавості", + "advancement.create.precision_mechanism.desc": "Зберіть Прецизійний механізм.", + "advancement.create.mechanical_arm": "Золоті руки!", + "advancement.create.mechanical_arm.desc": "Зробіть Механічну руку, виберіть входи та виходи, розмістіть та приведіть у дію; потім спостерігайте, як вона виконує всю роботу за вас.", + "advancement.create.musical_arm": "Зіграй мені мою мелодію!", + "advancement.create.musical_arm.desc": "Подивіться, як Механічна рука міняє пластинки.", + "advancement.create.arm_many_targets": "Організа-трон", + "advancement.create.arm_many_targets.desc": "Запрограмуйте механічну руку з десятьма або більше виходів.", + "advancement.create.arm_blaze_burner": "Підпаль-трон", + "advancement.create.arm_blaze_burner.desc": "Доручіть Механічній руці живити ваш Пальник блейза.", + "advancement.create.fist_bump": "Розбий це, брате!", + "advancement.create.fist_bump.desc": "Зробіть два удари кулаками Автономних активаторів.", + "advancement.create.crushing_wheel": "Пара гігантів", + "advancement.create.crushing_wheel.desc": "Створіть Дробильні колеса, щоб ефективніше руйнувати більше матеріалів.", + "advancement.create.blaze_cake": "Цукрова лихоманка", + "advancement.create.blaze_cake.desc": "Спечіть для свого Пальника блейза особливий пиріг.", + "advancement.create.chromatic_compound": "Таємничі мінерали", + "advancement.create.chromatic_compound.desc": "Створіть Хроматичну сполуку.", + "advancement.create.shadow_steel": "Повернення порожнечі", + "advancement.create.shadow_steel.desc": "Створіть Тіньову сталь, металевий злиток небуття.", + "advancement.create.refined_radiance": "Яскравий і надихаючий", + "advancement.create.refined_radiance.desc": "Створіть Вишукане сяйво, потужну хроматичну речовину.", + "advancement.create.chromatic_age": "Хроматична епоха", + "advancement.create.chromatic_age.desc": "Створіть Тіньовий і Сяючий корпусні блоки.", + "advancement.create.wand_of_symmetry": "Сяючі дзеркала", + "advancement.create.wand_of_symmetry.desc": "Зробіть посох симетрії.", + "advancement.create.extendo_grip": "Боіоіоіпг!", + "advancement.create.extendo_grip.desc": "Отримайте Довгу руку.", + "advancement.create.potato_cannon": "Свомп!", + "advancement.create.potato_cannon.desc": "Переможіть ворога за допомогою Картопляної гармати.", + "advancement.create.dual_extendo_grip": "Ультимативна Боінг-ера", + "advancement.create.dual_extendo_grip.desc": "Дві подовжені руки для надлюдського охоплення.", + "advancement.create.eob": "EКінець бета-версії", + "advancement.create.eob.desc": "Очікуйте більше вмісту тут у майбутньому. <3", + + + "_": "->------------------------] UI & Повідомлення [------------------------<-", + + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Create Палітри", + + "death.attack.create.crush": "%1$s був передроблений", + "death.attack.create.crush.player": "%1$s був кинутий у Дробильне колесо %2$s", + "death.attack.create.fan_fire": "%1$s був спалений до смерті гарячим повітрям", + "death.attack.create.fan_fire.player": "%2$s скинув%1$s в коптильну", + "death.attack.create.fan_lava": "%1$s був спалений Вентилятором", + "death.attack.create.fan_lava.player": "%2$s скинув %1$s в плавильну", + "death.attack.create.mechanical_drill": "%1$s був проколений Механічною дрелью", + "death.attack.create.mechanical_drill.player": "%2$s скинув %1$s під Механічну дрель", + "death.attack.create.mechanical_saw": "%1$s був розрізаний навпіл Механічною пилою", + "death.attack.create.mechanical_saw.player": "%2$s скинув %1$s у пилу ", + "death.attack.create.potato_cannon": "%1$s був вбитий %2$s за допомогою Картопляної гармати", + "death.attack.create.potato_cannon.item": "%1$s був вбитий %2$s використовуючи %3$s", + "death.attack.create.cuckoo_clock_explosion": "%1$s підірвали підробленим годинником з зозулею", + "death.attack.create.cuckoo_clock_explosion.player": "%1$s був підірваний підробленим годинником з зозулею", + + "create.block.deployer.damage_source_name": "автономним активатором", + "create.block.cart_assembler.invalid": "Помістіть свій Збирач вагонеток на блок рейок", + + "create.menu.return": "Повернутись у меню", + "create.menu.configure": "Налаштувати...", + "create.menu.ponder_index": "Зміст роздумів", + "create.menu.only_ingame": "Доступно в Меню Паузи", + "create.menu.project_page": "Сторінка Проекту", + "create.menu.report_bugs": "Повідомити про проблеми", + "create.menu.support": "Підтримати нас", + + "create.recipe.crushing": "Дроблення", + "create.recipe.milling": "Помел", + "create.recipe.fan_washing": "Масове вимивання", + "create.recipe.fan_washing.fan": "Вентилятор за Текучою водою", + "create.recipe.fan_smoking": "Масове копчення", + "create.recipe.fan_smoking.fan": "Вентилятор за Вогнем", + "create.recipe.fan_blasting": "Bulk Blasting", + "create.recipe.fan_blasting.fan": "Вентилятор за Лавоб", + "create.recipe.pressing": "Пресування", + "create.recipe.mixing": "Змішування", + "create.recipe.deploying": "Автономна активація", + "create.recipe.automatic_shapeless": "Автоматизоване безформне виготовлення", + "create.recipe.automatic_brewing": "Автоматичне зіллє-варіння", + "create.recipe.packing": "Ущільнення", + "create.recipe.automatic_packing": "Автопатичне пакування", + "create.recipe.sawing": "Пиляння", + "create.recipe.mechanical_crafting": "Механічне виготовлення", + "create.recipe.automatic_shaped": "Автоматизоване формне виготовлення", + "create.recipe.block_cutting": "Різання блоків", + "create.recipe.wood_cutting": "Розпилювання деревини", + "create.recipe.sandpaper_polishing": "Полірування наждачним папером", + "create.recipe.mystery_conversion": "Таємниче перетворення", + "create.recipe.spout_filling": "Наповнення носиком", + "create.recipe.draining": "Осушуванян предметів", + "create.recipe.sequenced_assembly": "Послідовне складання", + "create.recipe.assembly.next": "Далі: %1$s", + "create.recipe.assembly.step": "Крок %1$s:", + "create.recipe.assembly.progress": "Прогрес: %1$s/%2$s", + "create.recipe.assembly.pressing": "Процес у пресі", + "create.recipe.assembly.spout_filling_fluid": "Налийте %1$s", + "create.recipe.assembly.deploying_item": "Добавте %1$s", + "create.recipe.assembly.cutting": "Розріжте пилою", + "create.recipe.assembly.repeat": "Повторіть послідовність %1$s раз", + "create.recipe.assembly.junk": "Випадкове сміття", + "create.recipe.processing.chance": "%1$s%% Шанс", + "create.recipe.deploying.not_consumed": "Не спожито", + "create.recipe.heat_requirement.none": "Не потребує нагрівання", + "create.recipe.heat_requirement.heated": "Нагріте", + "create.recipe.heat_requirement.superheated": "Дуже нагрітий", + + "create.generic.range": "Діапазон", + "create.generic.radius": "Радіус", + "create.generic.width": "Ширина", + "create.generic.height": "Висота", + "create.generic.length": "Довжина", + "create.generic.speed": "Швидкість", + "create.generic.delay": "Затримка", + "create.generic.unit.ticks": "Тіків", + "create.generic.unit.seconds": "Секунд", + "create.generic.unit.minutes": "Хвилин", + "create.generic.unit.rpm": "об./хв", + "create.generic.unit.stress": "su(одиниця напруги)", + "create.generic.unit.degrees": "°", + "create.generic.unit.millibuckets": "%1$smB", + "create.generic.clockwise": "За годинниковою стрілкою", + "create.generic.counter_clockwise": "Проти годинникової стрілки", + + "create.action.scroll": "Прокрутка", + "create.action.confirm": "Підтвердити", + "create.action.abort": "Перервати", + "create.action.saveToFile": "Зберегти", + "create.action.discard": "Відкинути", + + "create.keyinfo.toolmenu": "Меню інструмента фокусування", + "create.keyinfo.toolbelt": "Доступ до Ящиків інструментів поблизу", + "create.keyinfo.scrollup": "Імітація руху миші вверх (в світі)", + "create.keyinfo.scrolldown": "Імітація руху миші вниз (в світі)", + + "create.gui.scrollInput.defaultTitle": "Виберіть опцію:", + "create.gui.scrollInput.scrollToModify": "Прокрутіть щоб змінити", + "create.gui.scrollInput.scrollToAdjustAmount": "Прокрутіть щоб налаштувати кількість", + "create.gui.scrollInput.scrollToSelect": "Прокрутіть щоб вибрати", + "create.gui.scrollInput.shiftScrollsFaster": "Shift шоб прокручувати швидше", + "create.gui.toolmenu.focusKey": "Зажміть [%1$s] щоб зосередитися", + "create.gui.toolmenu.cycle": "[SCROLL] для переключения", + + "create.toolbox.unequip": "Зняти спорядження: %1$s", + "create.toolbox.outOfRange": "Ящик для інструментів з утримуваним предметом задалеко", + "create.toolbox.detach": "Припинити збереження та відстеження предметів", + "create.toolbox.depositAll": "Повернути предмети до найближчих Ящиків з інструментами", + "create.toolbox.depositBox": "Повернути предмети до Ящику з інструментами", + + "create.gui.symmetryWand.mirrorType": "Дзеркало", + "create.gui.symmetryWand.orientation": "Орієнтація", + + "create.symmetry.mirror.plane": "Одинарне", + "create.symmetry.mirror.doublePlane": "Двойне", + "create.symmetry.mirror.triplePlane": "Тройне", + + "create.orientation.orthogonal": "Перпендикуляр", + "create.orientation.diagonal": "Діагональ", + "create.orientation.horizontal": "Горизонталь", + "create.orientation.alongZ": "Уздовж Z", + "create.orientation.alongX": "Уздовж X", + + "create.gui.terrainzapper.title": "Ручний редактор світу", + "create.gui.terrainzapper.searchDiagonal": "Слідування діагоналям", + "create.gui.terrainzapper.searchFuzzy": "Ігнорувати границі матеріала", + "create.gui.terrainzapper.patternSection": "Шаблон", + "create.gui.terrainzapper.pattern.solid": "Суцільний", + "create.gui.terrainzapper.pattern.checkered": "Шахматний порядок", + "create.gui.terrainzapper.pattern.inversecheckered": "Зворотний шаховий порядок", + "create.gui.terrainzapper.pattern.chance25": "25% заповнення", + "create.gui.terrainzapper.pattern.chance50": "50% заповнення", + "create.gui.terrainzapper.pattern.chance75": "75% заповнення", + "create.gui.terrainzapper.placement": "Розміщення", + "create.gui.terrainzapper.placement.merged": "Злитий", + "create.gui.terrainzapper.placement.attached": "Прикріплений", + "create.gui.terrainzapper.placement.inserted": "Вставлений", + "create.gui.terrainzapper.brush": "Простий", + "create.gui.terrainzapper.brush.cuboid": "Куб", + "create.gui.terrainzapper.brush.sphere": "Сфера", + "create.gui.terrainzapper.brush.cylinder": "Циліндр", + "create.gui.terrainzapper.brush.surface": "Поверхність", + "create.gui.terrainzapper.brush.cluster": "Скупчення", + "create.gui.terrainzapper.tool": "Інструмент", + "create.gui.terrainzapper.tool.fill": "Заповнити", + "create.gui.terrainzapper.tool.place": "Поставити", + "create.gui.terrainzapper.tool.replace": "Замінити", + "create.gui.terrainzapper.tool.clear": "Очистити", + "create.gui.terrainzapper.tool.overlay": "Накладення", + "create.gui.terrainzapper.tool.flatten": "Вирівнювання", + + "create.terrainzapper.shiftRightClickToSet": "ПКМ щоб вибрати форму", + "create.terrainzapper.usingBlock": "Використовується: %1$s", + "create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material", + + "create.minecart_coupling.two_couplings_max": "Вагонетки можуть мати лише два зв'язки", + "create.minecart_coupling.unloaded": "Здається, частина вашого поїзда у незавантажених чанках", + "create.minecart_coupling.no_loops": "З'єднувачі не можуть утворювати петлю", + "create.minecart_coupling.removed": "Прибрано всі зв'язки між вагонетками", + "create.minecart_coupling.too_far": "Вагонетки надто далеко один від одного", + + "create.contraptions.movement_mode": "Режим руху", + "create.contraptions.movement_mode.move_place": "Завжди розміщувати, коли Зупинено", + "create.contraptions.movement_mode.move_place_returned": "Розміщуйте лише у Вихідному положенні", + "create.contraptions.movement_mode.move_never_place": "Розміщувати лише після Знищення якоря", + "create.contraptions.movement_mode.rotate_place": "Завжди розміщувати, коли Зупинено", + "create.contraptions.movement_mode.rotate_place_returned": "Розміщуйте лише біля Початкового Кута", + "create.contraptions.movement_mode.rotate_never_place": "Розміщувати лише після Знищення якоря", + "create.contraptions.cart_movement_mode": "Режим руху вагонетки", + "create.contraptions.cart_movement_mode.rotate": "Завжди обличчям до руху", + "create.contraptions.cart_movement_mode.rotate_paused": "Пауза під час обертання", + "create.contraptions.cart_movement_mode.rotation_locked": "Завблокувати обертання", + "create.contraptions.windmill.rotation_direction": "Напрям обертання", + "create.contraptions.clockwork.clock_hands": "Стрілки годинника", + "create.contraptions.clockwork.hour_first": "Спочатку годинна стрілка", + "create.contraptions.clockwork.minute_first": "Спочатку хвилинна стрілка", + "create.contraptions.clockwork.hour_first_24": "Спочатку 24-годинна стрілка", + + "create.logistics.filter": "Фільтр", + "create.logistics.recipe_filter": "Фільтр рецептів", + "create.logistics.fluid_filter": "Фільтр рідини", + "create.logistics.firstFrequency": "Частота #1", + "create.logistics.secondFrequency": "Частота #2", + "create.logistics.filter.apply": "Фільтр використаний до %1$s.", + "create.logistics.filter.apply_click_again": "Фільтр використаний до %1$s, нажміть ще раз, щоб скопіювати кількість.", + "create.logistics.filter.apply_count": "Застосовано кількість, що витягується до фільтра.", + + "create.gui.goggles.generator_stats": "Статистика генератора:", + "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": "Надто багато Подовжувачів прикріплено до цього поршня.\nПоточний максимум: %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": "Нагрузка на мережу", + "create.gui.stressometer.capacity": "Місткість, що залишилася", + "create.gui.stressometer.overstressed": "Перегрузка", + "create.gui.stressometer.no_rotation": "Немає обертання", + "create.gui.contraptions.not_fast_enough": "Похоже що цей %1$s is _не_ обертається _достатньою_ _швидкістю_.", + "create.gui.contraptions.network_overstressed": "Здається ця штуковина _перегружена_. Додати більше джерел або _зменшіть_ _швидкість_ компонентів які створюють велику _нагрузку_.", + "create.gui.adjustable_crate.title": "Регульований ящик", + "create.gui.adjustable_crate.storageSpace": "Ємність", + "create.gui.stockpile_switch.title": "Налаштований компаратор", + "create.gui.stockpile_switch.invert_signal": "Інвертувати сигнал", + "create.gui.stockpile_switch.move_to_lower_at": "Рухатися до нижньої лінії при %1$s%%", + "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.descriptive": "Пверніть для руху Поршня/Pulley/Gantry", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Відстань", + "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": "Двойна швидкість, вперед", + "create.gui.sequenced_gearshift.speed.back": "Швидкість введення, реверс", + "create.gui.sequenced_gearshift.speed.back_fast": "Двойна швидкість, реверс", + + "create.schematicAndQuill.dimensions": "Розмір схематики: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Перша позиція установлена.", + "create.schematicAndQuill.secondPos": "Друга позиція установлена.", + "create.schematicAndQuill.noTarget": "Утримуйте [Ctrl], щоб вибрати пусті блоки.", + "create.schematicAndQuill.abort": "Виділення прибрано.", + "create.schematicAndQuill.title": "Ім'я схематики:", + "create.schematicAndQuill.convert": "Зберегти та розгорнути негайно", + "create.schematicAndQuill.fallbackName": "Моя схематика", + "create.schematicAndQuill.saved": "Збережено як %1$s", + + "create.schematic.invalid": "[!] Неприпустимий предмет — натомість використовуйте схематичний стіл", + "create.schematic.position": "Позизія", + "create.schematic.rotation": "Обертання", + "create.schematic.rotation.none": "Немає", + "create.schematic.rotation.cw90": "За год. стрілкою 90", + "create.schematic.rotation.cw180": "За год. стрілкою 180", + "create.schematic.rotation.cw270": "За год. стрілкою 270", + "create.schematic.mirror": "Відзеркалити", + "create.schematic.mirror.none": "Немає", + "create.schematic.mirror.frontBack": "Спереду-Ззаду", + "create.schematic.mirror.leftRight": "Зліва-Справа", + "create.schematic.tool.deploy": "Розгортання", + "create.schematic.tool.move": "Посунути XZ", + "create.schematic.tool.movey": "Посунути Y", + "create.schematic.tool.rotate": "Обертати", + "create.schematic.tool.print": "Друк", + "create.schematic.tool.flip": "Перевернути", + "create.schematic.tool.deploy.description.0": "Переміщує структуру у локації.", + "create.schematic.tool.deploy.description.1": "Натисніть ПКМ на землі, щоб розмістити.", + "create.schematic.tool.deploy.description.2": "Утримуйте [Ctrl], щоб вибрати фіксовану відстань.", + "create.schematic.tool.deploy.description.3": "[Ctrl] та прокручування, щоб змінити відстань", + "create.schematic.tool.move.description.0": "Зрушити схему по горизонталі.", + "create.schematic.tool.move.description.1": "Наведіть курсор на схему та натисніть [CTRL] та прокрутіть, щоб натиснути на неї.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Зсув схеми по вертикалі.", + "create.schematic.tool.movey.description.1": "[CTRL] та прокручування - перемістити вгору/вниз.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Обертає схематику навколо її центру.", + "create.schematic.tool.rotate.description.1": "[CTRL] та прокрутка щоб обертати на 90 градусів.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Миттєво розміщує структуру у світі.", + "create.schematic.tool.print.description.1": "[ПКМ], щоб підтвердити розміщення у поточному місці.", + "create.schematic.tool.print.description.2": "Цей інструмент призначений лише для творчого режиму.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Переверніть схему вздовж обраної сторони.", + "create.schematic.tool.flip.description.1": "Наведіть курсор на схему та [CTRL] + прокручування, щоб перевернути її.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Синхронізація...", + "create.schematics.uploadTooLarge": "Ваша схема занадто велика.", + "create.schematics.maxAllowedSize": "Максимальний розмір файла:", + + "create.gui.schematicTable.refresh": "Обновити файли", + "create.gui.schematicTable.open_folder": "Відкрити папку", + "create.gui.schematicTable.title": "Схематичний стіл", + "create.gui.schematicTable.availableSchematics": "Доступні схеми", + "create.gui.schematicTable.noSchematics": "Схеми не збережені", + "create.gui.schematicTable.uploading": "Загрузка...", + "create.gui.schematicTable.finished": "Загрузка завершена!", + "create.gui.schematicannon.title": "Схематична гармата", + "create.gui.schematicannon.listPrinter": "Список матеріалів", + "create.gui.schematicannon.gunpowderLevel": "Порох на %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Пострілів залишилося: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "З резервним копіюванням: %1$s", + "create.gui.schematicannon.optionEnabled": "В даний час включено", + "create.gui.schematicannon.optionDisabled": "В даний час виключено", + "create.gui.schematicannon.showOptions": "Показати налаштування друку", + "create.gui.schematicannon.option.dontReplaceSolid": "Не замінювати цілі блоки", + "create.gui.schematicannon.option.replaceWithSolid": "Замінювати цілі блоки цілими блоками", + "create.gui.schematicannon.option.replaceWithAny": "Замінювати цілі блоки чим завгодно", + "create.gui.schematicannon.option.replaceWithEmpty": "Замінювати цілі блоки пустотою", + "create.gui.schematicannon.option.skipMissing": "Пропускати відсутні блоки", + "create.gui.schematicannon.option.skipTileEntities": "Захистити майно", + "create.gui.schematicannon.slot.gunpowder": "Додати порох щоб запитати гармату", + "create.gui.schematicannon.slot.listPrinter": "Покладіть книгу, щоб створити список предметів для схематики", + "create.gui.schematicannon.slot.schematic": "Покладіть власну схематику тут. Переконайтеся, що вона розміщена у правильному місці.", + "create.gui.schematicannon.option.skipMissing.description": "Якщо гармата не може знайти необхідний блок, вона будуватиме в наступному місці.", + "create.gui.schematicannon.option.skipTileEntities.description": "Гармата не замінюватиме блоки зберігання, такі як скрині.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Гармата ніколи не замінить цілі блоки, тільки не цілі та повітря.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Гармата замінюватиме цілий блок лише у випадку, якщо у схемі в цьому місці розташований цілий блок.", + "create.gui.schematicannon.option.replaceWithAny.description": "Гармата буде замінювати цілі блоки, якщо в схемі є що-небудь.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Гармата відчистить всі блоки, включаючи заміну повітря.", + + "create.schematicannon.status.idle": "Не діє", + "create.schematicannon.status.ready": "Готова", + "create.schematicannon.status.running": "Працює", + "create.schematicannon.status.finished": "Закінчила", + "create.schematicannon.status.paused": "Припинено", + "create.schematicannon.status.stopped": "Зупинено", + "create.schematicannon.status.noGunpowder": "Потрібен порох", + "create.schematicannon.status.targetNotLoaded": "Ціль не завантажена", + "create.schematicannon.status.targetOutsideRange": "Ціль занадто далеко", + "create.schematicannon.status.searching": "Пошук", + "create.schematicannon.status.skipping": "Пропуск", + "create.schematicannon.status.missingBlock": "Потребує блок:", + "create.schematicannon.status.placing": "Будівництво", + "create.schematicannon.status.clearing": "Очистка блоків", + "create.schematicannon.status.schematicInvalid": "Неправильна схема", + "create.schematicannon.status.schematicNotPlaced": "Схема не завантажена", + "create.schematicannon.status.schematicExpired": "Термін дії файлу схеми минув", + + "create.materialChecklist": "Список матеріалів", + "create.materialChecklist.blocksNotLoaded": "* Дисклеймер *\n\nСписок матеріалів може бути неточним через незавантажені чанки.", + + "create.gui.filter.deny_list": "Чорний список", + "create.gui.filter.deny_list.description": "Предмети проходять, якщо вони не відповідають жодному з перерахованих вище. Порожній чорний список приймає все..", + "create.gui.filter.allow_list": "Білий список", + "create.gui.filter.allow_list.description": "Предмети проходять, якщо вони відповідають будь-якому з перерахованих вище. Порожній білий список відкидає все.", + "create.gui.filter.respect_data": "Використання даних", + "create.gui.filter.respect_data.description": "Предмети збігаються тільки в тому випадку, якщо їхня міцність, чари та інші атрибути збігаються.", + "create.gui.filter.ignore_data": "Ігнорування даних", + "create.gui.filter.ignore_data.description": "Предмети збігаються незалежно від своїх атрибутів.", + + "create.item_attributes.placeable": "Можна розмістити", + "create.item_attributes.placeable.inverted": "не можна розмістити", + "create.item_attributes.consumable": "можна з'їсти", + "create.item_attributes.consumable.inverted": "не можна з'їсти", + "create.item_attributes.fluid_container": "може зберігати рідини", + "create.item_attributes.fluid_container.inverted": "не може зберігати рідини", + "create.item_attributes.enchanted": "зачарований", + "create.item_attributes.enchanted.inverted": "не зачарований", + "create.item_attributes.max_enchanted": "зачаровано на максимальному рівні", + "create.item_attributes.max_enchanted.inverted": "не зачаровано на максимальному рівні", + "create.item_attributes.renamed": "має спеціальну назву", + "create.item_attributes.renamed.inverted": "не має спеціальної назви", + "create.item_attributes.damaged": "пошкоджено", + "create.item_attributes.damaged.inverted": "не пошкоджено", + "create.item_attributes.badly_damaged": "сильно пошкоджений", + "create.item_attributes.badly_damaged.inverted": "не сильно пошкоджений", + "create.item_attributes.not_stackable": "не може складатися", + "create.item_attributes.not_stackable.inverted": "може складатися", + "create.item_attributes.equipable": "може бути одягнений", + "create.item_attributes.equipable.inverted": "не може бути одягнений", + "create.item_attributes.furnace_fuel": "є паливом", + "create.item_attributes.furnace_fuel.inverted": "не є паливом", + "create.item_attributes.washable": "може бути Вимитим", + "create.item_attributes.washable.inverted": "не може бути Вимитим", + "create.item_attributes.crushable": "можна Подрібнити", + "create.item_attributes.crushable.inverted": "не можна Подрібнити", + "create.item_attributes.smeltable": "можна Виплавити", + "create.item_attributes.smeltable.inverted": "не можна Виплавити", + "create.item_attributes.smokable": "можна Коптити", + "create.item_attributes.smokable.inverted": "не можна Коптити", + "create.item_attributes.blastable": "плавиться в Плавильній печі", + "create.item_attributes.blastable.inverted": "не плавиться в Плавильній печі", + "create.item_attributes.shulker_level": "шалкер %1$s", + "create.item_attributes.shulker_level.inverted": "шалкер не %1$s", + "create.item_attributes.shulker_level.full": "повний", + "create.item_attributes.shulker_level.empty": "пустий", + "create.item_attributes.shulker_level.partial": "частично заповнений", + "create.item_attributes.in_tag": "позначено тегами %1$s", + "create.item_attributes.in_tag.inverted": "не позначено тегами %1$s", + "create.item_attributes.in_item_group": "знаходиться в групі '%1$s'", + "create.item_attributes.in_item_group.inverted": "не знаходиться в групі '%1$s'", + "create.item_attributes.added_by": "були добавлені: %1$s", + "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.has_fluid": "містить %1$s", + "create.item_attributes.has_fluid.inverted": "не містить %1$s", + "create.item_attributes.has_name": "має нестандартне ім'я %1$s", + "create.item_attributes.has_name.inverted": "не має нестандарного імені %1$s", + "create.item_attributes.book_author": "підписана %1$s", + "create.item_attributes.book_author.inverted": "не підписана %1$s", + "create.item_attributes.book_copy_original": "оригінал", + "create.item_attributes.book_copy_original.inverted": "не оригінал", + "create.item_attributes.book_copy_first": "копія першого порядку", + "create.item_attributes.book_copy_first.inverted": "не копія першого порядку", + "create.item_attributes.book_copy_second": "копія другого порядку", + "create.item_attributes.book_copy_second.inverted": "не копія другого порядку", + "create.item_attributes.book_copy_tattered": "повний безлад", + "create.item_attributes.book_copy_tattered.inverted": "не повний безлад", + "create.item_attributes.astralsorcery_amulet": "виправляє %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "не виправляє %1$s", + "create.item_attributes.astralsorcery_constellation": "настроено на %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "не настроено на %1$s", + "create.item_attributes.astralsorcery_crystal": "має характеристики кристала %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "не має характеристики кристала %1$s", + "create.item_attributes.astralsorcery_perk_gem": "має характеристики перку %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "не має характеристики перку %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Атрибути не вибрані", + "create.gui.attribute_filter.selected_attributes": "Вибрані атрибути:", + "create.gui.attribute_filter.add_attribute": "Добавлені атрибути", + "create.gui.attribute_filter.add_inverted_attribute": "Додані протилежні атрибути до списку", + "create.gui.attribute_filter.allow_list_disjunctive": "Біоий список (Любий)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Предмети проходять, якщо вони мають будь-який з обраних атрибутів.", + "create.gui.attribute_filter.allow_list_conjunctive": "Білий список (Всі)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Предмети проходять, тільки якщо вони мають ВСІ вибрані атрибути.", + "create.gui.attribute_filter.deny_list": "Чорний список", + "create.gui.attribute_filter.deny_list.description": "Предмети проходять, якщо вони НЕ мають жодного з вибраних атрибутів.", + "create.gui.attribute_filter.add_reference_item": "Додати предмет", + + "create.tooltip.holdForDescription": "Утримуйте [%1$s] для Зведення", + "create.tooltip.holdForControls": "Утримуйте [%1$s] для Управління", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Вимога до швидкості: %1$s", + "create.tooltip.speedRequirement.none": "Немає", + "create.tooltip.speedRequirement.medium": "Помірна", + "create.tooltip.speedRequirement.high": "Швидка", + "create.tooltip.stressImpact": "Навантаження, що створюється: %1$s", + "create.tooltip.stressImpact.low": "Низька", + "create.tooltip.stressImpact.medium": "Середня", + "create.tooltip.stressImpact.high": "Висока", + "create.tooltip.stressImpact.overstressed": "Перевантаження", + "create.tooltip.capacityProvided": "Допустиме навантаження: %1$s", + "create.tooltip.capacityProvided.low": "Маленький", + "create.tooltip.capacityProvided.medium": "Середній", + "create.tooltip.capacityProvided.high": "Великий", + "create.tooltip.generationSpeed": "Створює %1$s %2$s", + "create.tooltip.analogStrength": "Аналогова сила: %1$s/15", + + "create.mechanical_arm.extract_from": "Бере предмети з %1$s", + "create.mechanical_arm.deposit_to": "Складає предмети в %1$s", + "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": "По колу", + "create.mechanical_arm.selection_mode.forced_round_robin": "Примусово по колу", + "create.mechanical_arm.selection_mode.prefer_first": "Віддавати перевагу первинній цілі", + + "create.tunnel.selection_mode.split": "Розділити", + "create.tunnel.selection_mode.forced_split": "Примусово поділити", + "create.tunnel.selection_mode.round_robin": "По колу", + "create.tunnel.selection_mode.forced_round_robin": "Примусово по колу", + "create.tunnel.selection_mode.prefer_nearest": "Переважно найближче", + "create.tunnel.selection_mode.randomize": "Випадковий", + "create.tunnel.selection_mode.synchronize": "Синхронізувати входи", + + "create.tooltip.chute.header": "Інформація про жолоб", + "create.tooltip.chute.items_move_down": "Предмети рухаються вниз", + "create.tooltip.chute.items_move_up": "Предмети рухаються вверх", + "create.tooltip.chute.no_fans_attached": "Немає підключених вентиляторів", + "create.tooltip.chute.fans_push_up": "Вентилятор штовхає знизу", + "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.tooltip.brass_tunnel.contains": "На даний момент роздає (видає):", + "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", + "create.tooltip.brass_tunnel.retrieve": "ПКМ, щоб отримати", + + "create.linked_controller.bind_mode": "Режим прив'язки активовано", + "create.linked_controller.press_keybind": "Нажміть %1$s, %2$s, %3$s, %4$s, %5$s або %6$s, щоб прив'язати цю частоту до відповідної кнопки", + "create.linked_controller.key_bound": "Частота прив'язана до' %1$s", + "create.linked_controller.frequency_slot_1": "Клавіша: %1$s, Частота #1", + "create.linked_controller.frequency_slot_2": "Клавіша: %1$s, Частота #2", + + "create.crafting_blueprint.crafting_slot": "Слот для інгредієнтів", + "create.crafting_blueprint.filter_items_viable": "Розвинені фільтри предметів застосовні", + "create.crafting_blueprint.display_slot": "Відображувана комірка", + "create.crafting_blueprint.inferred": "Похідні від рецепту", + "create.crafting_blueprint.manually_assigned": "Призначений вручну", + "create.crafting_blueprint.secondary_display_slot": "Додаткова комірка, що відображається", + "create.crafting_blueprint.optional": "Опціональна", + + "create.potato_cannon.ammo.attack_damage": "%1$s Пошкодження від атаки", + "create.potato_cannon.ammo.reload_ticks": "%1$s тіків перезавантаження", + "create.potato_cannon.ammo.knockback": "%1$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.empty_bearing.title": "Оновити підшипник", + "create.hint.empty_bearing": "_Права кнопка миші_ по підшипнику _пустою_ _рукою_ щоб _приєднати_ до нього структуру, яку ви щойно збудували перед ним.", + "create.hint.full_deployer.title": "Переполнение автономного активатора", + "create.hint.full_deployer": "Похоже цей _Автономний_ _активатор_ містить _лищні_ _предмети_ які необхідно _вилучити._ Використовуйте _воронку,_ или _інші способи_ to free it from its overflow.", + + "create.gui.config.overlay1": "Привіт :)", + "create.gui.config.overlay2": "Це зразок оверлея", + "create.gui.config.overlay3": "Клацніть та тягни за допомогою миші", + "create.gui.config.overlay4": "щоб перемістити його", + "create.gui.config.overlay5": "Нажіміть ESC щоб вийти", + "create.gui.config.overlay6": "або зберегти нову позицію", + "create.gui.config.overlay7": "Введи /create overlay reset", + "create.gui.config.overlay8": "щоб скинути позицію до стандартної", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Тіки сервера в даний час уповільнені на %s мс :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Тіки сервера тепер уповільнені на %s мс >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Тіки сервера повернулися в норму :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: використовуйте /killtps stop щоб повернути тик сервера на звичайну швидкість", + "create.command.killTPSCommand.status.usage.1": "[Create]: використовуйте /killtps start щоб штучно уповільнити тік сервера", + "create.command.killTPSCommand.argument.tickTime": "Час тіку", + + "create.contraption.minecart_contraption_too_big": "Ця вагонеткова штуковина здається занадто великою, щоб її можна було підняти", + "create.contraption.minecart_contraption_illegal_pickup": "Містична сила пов'язує цю вагонеткову штуковину зі світом", + + + "_": "->------------------------] Субтитри [------------------------<-", + + "create.subtitle.contraption_disassemble": "Штуковина зупиняється", + "create.subtitle.peculiar_bell_use": "Дивний дзвін дзвонить", + "create.subtitle.mixing": "Шум змішування", + "create.subtitle.mechanical_press_activation_belt": "Механічний прес робить«боньк» ", + "create.subtitle.fwoomp": "Картопельна гармата робить «Свомп»»", + "create.subtitle.worldshaper_place": "Ручний редактор світу робить «Зап»", + "create.subtitle.crushing_1": "Шум руйнування", + "create.subtitle.depot_slide": "Шелест предметів", + "create.subtitle.saw_activate_stone": "Активується механічна пила", + "create.subtitle.blaze_munch": "Блейз радісно жує", + "create.subtitle.funnel_flap": "Фіранки воронок ляскають", + "create.subtitle.schematicannon_finish": "Схематична гармата закінчила роботу", + "create.subtitle.haunted_bell_use": "Примарний дзвін дзвонить", + "create.subtitle.scroll_value": "Клацання колеса прокручування", + "create.subtitle.crafter_craft": "Крафтер створює", + "create.subtitle.controller_put": "Контролер стукає", + "create.subtitle.cranking": "Обертається рукоятка", + "create.subtitle.wrench_remove": "Компонент ламається", + "create.subtitle.cogs": "Шестерні гуркочуть", + "create.subtitle.slime_added": "Намазування слизу", + "create.subtitle.wrench_rotate": "Використано гайковий ключ", + "create.subtitle.potato_hit": "Овочі врізаються", + "create.subtitle.saw_activate_wood": "Активується Механічна пила", + "create.subtitle.haunted_bell_convert": "Примарний дзвін прокидається", + "create.subtitle.deployer_polish": "Автономний активатор полірує", + "create.subtitle.deny": "Від'ємний «Буп»", + "create.subtitle.controller_click": "Кліки контролера", + "create.subtitle.schematicannon_launch_block": "Постріли схематичної гармати", + "create.subtitle.copper_armor_equip": "Дзвінкування спорядження для дайвінгу", + "create.subtitle.controller_take": "Кафедра спустошується", + "create.subtitle.mechanical_press_activation": "Механічний прес активовано", + "create.subtitle.contraption_assemble": "Штуковина рухається", + "create.subtitle.crafter_click": "Крафтер клікає", + "create.subtitle.depot_plop": "Предмет падає", + "create.subtitle.confirm": "Стверджувальний «Дінь»", + + + "_": "->------------------------] Опис Предметів [------------------------<-", + + "item.create.example_item.tooltip": "ПРИКЛАД ПРЕДМЕТА (лише маркер того, що ця підказка існує)", + "item.create.example_item.tooltip.summary": "Короткий опис предмета. _Підкреслення_ виділяють слово.", + "item.create.example_item.tooltip.condition1": "Коли це", + "item.create.example_item.tooltip.behaviour1": "Тоді цей предмет робить це. (поведінка показує на зміну)", + "item.create.example_item.tooltip.condition2": "І коли це", + "item.create.example_item.tooltip.behaviour2": "Ви можете додати скільки завгодно способів поведінки", + "item.create.example_item.tooltip.control1": "При натисканні Ctrl", + "item.create.example_item.tooltip.action1": "Відображаються ці елементи керування.", + + "block.create.wooden_bracket.tooltip": "ДЕРЕВ'ЯНА СКОБА", + "block.create.wooden_bracket.tooltip.summary": "_Прикраште_ ваші _вали, _шестерні_ і _труби_ використовуючи затишне дерев'яне укріплення.", + + "block.create.metal_bracket.tooltip": "МЕТАЛІЧНА СКОБА", + "block.create.metal_bracket.tooltip.summary": "_Прикраште_ your ваші _Вали, _Шестерні_ і _Труби_ використовуючи міцне індустріальне зміцнення.", + + "block.create.seat.tooltip": "СІДЛО", + "block.create.seat.tooltip.summary": "Сідайте і насолоджуйтеся поїздкою! Прив'язує гравців до зібраних _пристроям_. Відмінно виглядають як прості меблі! Можна пофарбувати у різні кольори.", + "block.create.seat.tooltip.condition1": "ПКМ по сидінню", + "block.create.seat.tooltip.behaviour1": "Садить гравця на _Сідло_. Нажміть L-shift щоб злізти з _Сідло_.", + + "item.create.blaze_cake.tooltip": "ТОРТ «ВОГНЯНИЙ»", + "item.create.blaze_cake.tooltip.summary": "Смачне частування для вашої трудяги _Пальник брейза_. Запалює їх усіх!", + + "item.create.wand_of_symmetry.tooltip": "ПАЛИЦЯ СИМЕТРІЇ", + "item.create.wand_of_symmetry.tooltip.summary": "Ідеально відзеркалює блоки, що розміщуються за налаштованими площинами.", + "item.create.wand_of_symmetry.tooltip.condition1": "На панелі щвидкого доступу", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Залишається активним", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ по землі", + "item.create.wand_of_symmetry.tooltip.action1": "_Створює_ або _Передміщає_ зеркало", + "item.create.wand_of_symmetry.tooltip.control2": "ПКМ по повітрю", + "item.create.wand_of_symmetry.tooltip.action2": "_Забирає_ зеркало", + "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадькома", + "item.create.wand_of_symmetry.tooltip.action3": "Відкриває _Інтерфейс конфігурації_", + + "item.create.handheld_worldshaper.tooltip": "РУЧНИЙ РЕДАКТОР СВІТУ", + "item.create.handheld_worldshaper.tooltip.summary": "Зручний інструмент для створення _ландшафтів_ і _рельєфу місцевості_.", + "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ по блоку", + "item.create.handheld_worldshaper.tooltip.action1": "Встановлює блоки, поміщені в інструмент, у цільовий блок.", + "item.create.handheld_worldshaper.tooltip.control2": "ПКМ по блоку", + "item.create.handheld_worldshaper.tooltip.action2": "Застосовує вибрану _Пензлик_ і _Інструмент_ в вибраному місці.", + "item.create.handheld_worldshaper.tooltip.control3": "ПКМ крадькома", + "item.create.handheld_worldshaper.tooltip.action3": "Відкриває _Інтерфейс конфігурації_", + + "item.create.tree_fertilizer.tooltip": "ПОДОБРЕННЯ ДЛЯ ДЕРЕВ", + "item.create.tree_fertilizer.tooltip.summary": "Потужна комбінація мінералів підходить для прискорення зростання поширених типів дерев.", + "item.create.tree_fertilizer.tooltip.condition1": "При використанні на Саджанці", + "item.create.tree_fertilizer.tooltip.behaviour1": "Вирощує дерева _rнезадежно_ від _умов розміщення_", + + "item.create.extendo_grip.tooltip": "ДОВГА РУКА", + "item.create.extendo_grip.tooltip.summary": "Бойойоїнг! Значно _збільшує досяжність_ власника. Може працювати за допомогою тиску повітря від _Мідного балону_", + "item.create.extendo_grip.tooltip.condition1": "Перебуваючи в іншій руці", + "item.create.extendo_grip.tooltip.behaviour1": "Збільшує _збільшує досяжність_ предметів, що використовуються в _Головній руці_.", + "item.create.extendo_grip.tooltip.condition2": "Коли одягнений Мідний балон", + "item.create.extendo_grip.tooltip.behaviour2": "_Не_ тратиться _Міцність_. Натомість буде витрачатися _Повітря_ з балону", + + "item.create.potato_cannon.tooltip": "КАРТОПЛЯНА ГРАМАТА", + "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте вирощені вами овочі у своїх ворогів. Може працювати від тиску повітря з _Мідного балону_", + "item.create.potato_cannon.tooltip.condition1": "Натискаючи ПКМ", + "item.create.potato_cannon.tooltip.behaviour1": "_Вистрілює_ відповідним предметом з вашого _інвентара_.", + "item.create.potato_cannon.tooltip.condition2": "Коли одягнений Мідний балон", + "item.create.potato_cannon.tooltip.behaviour2": "_Не_ тратиться _Міцність_. Натомість буде витрачатися _Повітря_ з балону", + + "item.create.filter.tooltip": "ФІЛЬТР", + "item.create.filter.tooltip.summary": "_Керує виходами_ і _входами_ логістичних пристроїв з _більшою точністю_, _зіставляючи_ їх зі _списком предметів_ або кількома _вкладеними фільтрами_.", + "item.create.filter.tooltip.condition1": "Коли в слоті фільтра", + "item.create.filter.tooltip.behaviour1": "_Керує_ потоком предметів відповідно до його _Конфігурації_.", + "item.create.filter.tooltip.condition2": "Коли ПКМ", + "item.create.filter.tooltip.behaviour2": "Відкриває _інтерфейс конфігурації_.", + + "item.create.attribute_filter.tooltip": "ФІЛЬТР АТРИБУТІВ", + "item.create.attribute_filter.tooltip.summary": "_Керує виходами_ і _входами_ логістичних пристроїв з більшою _точністю_, зіставлення їх із a _набором_ предметних _атрибутів_ і _категорій_.", + "item.create.attribute_filter.tooltip.condition1": "Коли в слоті фільтра", + "item.create.attribute_filter.tooltip.behaviour1": "_Керує_ потоком предметів відповідно до його _Конфігурації_.", + "item.create.attribute_filter.tooltip.condition2": "Коли ПКМ", + "item.create.attribute_filter.tooltip.behaviour2": "Відкриває _інтерфейс конфігурації_.", + + "item.create.empty_schematic.tooltip": "ПУСТА СХЕМАТИКА", + "item.create.empty_schematic.tooltip.summary": "Використовується як інгредієнт рецепту і для запису в _Схематичному столі_.", + + "item.create.schematic.tooltip": "СХЕМАТИКА", + "item.create.schematic.tooltip.summary": "Містить структуру, яка позиціонуватиметься і поміщатиметься у світ. Розташуйте голограму на свій розсуд і використовуйте _схематичну гармату_ для її побудови.", + "item.create.schematic.tooltip.condition1": "При утриманні", + "item.create.schematic.tooltip.behaviour1": "Може бути позиціонований за допомогою інструментів на екрані.", + "item.create.schematic.tooltip.control1": "ПКМ крадькома", + "item.create.schematic.tooltip.action1": "Відкриває _інтерфейс_ для введення _точних координат_.", + + "item.create.schematic_and_quill.tooltip": "СХЕМАТИКА І ПЕРО", + "item.create.schematic_and_quill.tooltip.summary": "Використовується для збереження структури у вашому світі у файл .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Крок 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Виберіть дві кутові точки за допомогою ПКМ..", + "item.create.schematic_and_quill.tooltip.condition2": "Крок 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl та прокручування_ на голограмі для зміни розміру. Натисніть ПКМ, щоб зберегти.", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.action1": "Виберіть кутові точки / підтвердіть збереження.", + "item.create.schematic_and_quill.tooltip.control2": "Утримуйте Ctrl", + "item.create.schematic_and_quill.tooltip.action2": "Виберіть точки в _повітрі_. _Прокрутка_ для настройки дистанції.", + "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадькомаg", + "item.create.schematic_and_quill.tooltip.action3": "_Скидує_ і _видаляє_ виділення.", + + "block.create.schematicannon.tooltip": "СХЕМАТИЧНА ГАРРМАТА", + "block.create.schematicannon.tooltip.summary": "_Ставить блоки_ для відтворення _схематики_ у світі. Використовує предмети з _сусіднього інвентаря_ і _порох_ як _паливо_.", + "block.create.schematicannon.tooltip.condition1": "ПКМ", + "block.create.schematicannon.tooltip.behaviour1": "Відкриває _Інтерфейс_", + + "block.create.schematic_table.tooltip": "СХЕМАТИЧНИЙ СТІЛ", + "block.create.schematic_table.tooltip.summary": "Записує збережені схематики в _Пусті схематики_.", + "block.create.schematic_table.tooltip.condition1": "Коли дана схема порожня", + "block.create.schematic_table.tooltip.behaviour1": "Завантажує вибраний файл із папки Schematics.", + + "item.create.goggles.tooltip": "ІНЖЕНЕРНІ ОКУЛЯРИ", + "item.create.goggles.tooltip.summary": "Окуляри для покращення зору за допомогою корисної _кінетичної інформації_.", + "item.create.goggles.tooltip.condition1": "Коли одіто", + "item.create.goggles.tooltip.behaviour1": "Показує _кольорові індикатори_ відповідно _рівню швидкості_ розміщеного кінетичного компонента, а також _створюваному навантаженні_ і _потужності_ окремих компонентів.", + "item.create.goggles.tooltip.condition2": "При погляді на датчик", + "item.create.goggles.tooltip.behaviour2": "Показує детальну інформацію про _швидкість_ або _навантаження_ мережі, до якої підключено датчик.", + "item.create.goggles.tooltip.condition3": "При погляді на рідинні контейнери", + "item.create.goggles.tooltip.behaviour3": "Показує детальну інформацію про _МІсткість_ блоку і про _Рідини_ які в ньому зберігаються.", + + "item.create.wrench.tooltip": "ГАЙКОВИЙ КЛЮЧ", + "item.create.wrench.tooltip.summary": "Корисний інструмент для роботи з кінетичними пристосуваннями. Може використовуватись для _оберту_, _демонтажа_ та to _настройки_ каомпонентів.", + "item.create.wrench.tooltip.control1": "ПКМ по кінетичному блоку", + "item.create.wrench.tooltip.action1": "_Повертає компонент_ у бік або від обличчя, з яким ви взаємодіяли.", + "item.create.wrench.tooltip.control2": "ПКМ крадькома", + "item.create.wrench.tooltip.action2": "_Розбирає кінетичні компоненти_ і розміщує їх назад в _ваш інвентар_.", + + "block.create.nozzle.tooltip": "НАСАДКА", + "block.create.nozzle.tooltip.summary": "Прикріпіть до передньої частини _Вентилятора у корпусіn_щоб розподілити його вплив на Сутності в _всіх напрямах_.", + + "block.create.cuckoo_clock.tooltip": "ГОДИННИК З ЗОЗУЛЕЮ", + "block.create.cuckoo_clock.tooltip.summary": "Прекрасна майстерність для _дукорування_ простору і _відстеження часу_.", + "block.create.cuckoo_clock.tooltip.condition1": "При обертанні", + "block.create.cuckoo_clock.tooltip.behaviour1": "Показує _поточний час_ і грає мелодію двічі на день. _Активується_ один раз в _полудні_ і у сутінках, як тільки _гравець може спати_.", + + "block.create.turntable.tooltip": "ПОВОРОТНИЙ СТІЛ", + "block.create.turntable.tooltip.summary": "Повертає _силу обертання_ у вишукану морську хворобу.", + + "block.create.toolbox.tooltip": "ЯЩИК ДЛЯ ІНСТРУМЕНТІВ", + "block.create.toolbox.tooltip.summary": "Найдорожчий супутник кожного винахідника. Зручно _зберігає_ велику кількість _восьми різних_ типів предметів.", + "block.create.toolbox.tooltip.condition1": "Коли підібрано", + "block.create.toolbox.tooltip.behaviour1": "_Зберігає вміст_ Інвентарю.", + "block.create.toolbox.tooltip.condition2": "При розміщенні в діапазоні", + "block.create.toolbox.tooltip.behaviour2": "_Найближчі гравці_ можуть тримати _клавішу ящику для інструментів_, щоб отримати доступ до його вмісту _Дистанційно_.", + "block.create.toolbox.tooltip.condition3": "При клацанні ПКМ", + "block.create.toolbox.tooltip.behaviour3": "Відкриває _Інтерфейс контейнеру_.", + + "block.create.stockpile_switch.tooltip": "НАСТРОЄНИЙ КОМПАРАТОР", + "block.create.stockpile_switch.tooltip.summary": "Перемикає сигнал редстоуну залежно від кількості _Збережених предметів_ чи _Рідин_ у доданому контейнері. У комплект входить зручний фільтр. На відміну від a _Редстоунового Компаратора,_ _Настроєний компаратор_ дозволяє конфігурувати _поріг,_ при якому сигнали інвертуються.", + "block.create.stockpile_switch.tooltip.condition1": "При клацанні ПКМ", + "block.create.stockpile_switch.tooltip.behaviour1": "Відкриває _Інтерфейс конфігурації_.", + + "block.create.content_observer.tooltip": "CСПОСТЕРІГАЧ ВМІСТУ", + "block.create.content_observer.tooltip.summary": "_Розпізнає Предмети_ або _Рідини_ всередині _контейнерів_, _труб_ чи _конвеєрів_ відповідно налаштованому _фільтру_.", + "block.create.content_observer.tooltip.condition1": "При спостереженні за контейнером", + "block.create.content_observer.tooltip.behaviour1": "Випромінює _Редстоун сигнал_ коли спостережуваний контейнер має _відповідний вміст_.", + "block.create.content_observer.tooltip.condition2": "При спостереженні за Воронкою", + "block.create.content_observer.tooltip.behaviour2": "Випромінює _Імпульс редстоуну_ коли _відповідний_ предмет _передається_.", + + "block.create.adjustable_crate.tooltip": "РЕГУЛЬОВАНИЙ ЯКЩИК", + "block.create.adjustable_crate.tooltip.summary": "Цей _Контейнер предметів_ дозволяє вручну контролювати його місткість. Він може вмістити до _16 стаків_ будь-якого предмета. Підтримує _Редсттоун компаратори_.", + "block.create.adjustable_crate.tooltip.condition1": "При клацанні ПКМ", + "block.create.adjustable_crate.tooltip.behaviour1": "Відкриває _Інтерфейс_.", + + "block.create.creative_crate.tooltip": "ТВОРЧИЙ ЯЩИК", + "block.create.creative_crate.tooltip.summary": "Цей _Контейнер для зберігання_ дозволяє нескінченно копіювати будь-який елемент. Розмістіть поруч із _Схематичною гарматою_, щоб видалити будь-які вимоги до матеріалів.", + "block.create.creative_crate.tooltip.condition1": "Коли предмет в Слоті для Фільтра", + "block.create.creative_crate.tooltip.behaviour1": "Усе, що _витягується_ з цього контейнера, забезпечить _нескінченну поставку_ зазначеного елемента. Предмети, _вставлені_ в цей ящик, будуть _анульовані_.", + + "item.create.creative_blaze_cake.tooltip": "ТВОРЧИЙ «ВОГНЯНИЙ» ТОРТ", + "item.create.creative_blaze_cake.tooltip.summary": "Дуже особливе задоволення для _Пальника блейза_, котре дозволяє контролювати рівень їх нагріву. Після того, з’їдання цього пиріга, у _Пальника блейза_ _ніколи не закінчиться паливо_.", + "item.create.creative_blaze_cake.tooltip.condition1": "При клацанні ПКМ по Пальнику блейза", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_Блокує_ рівень нагрівання Пальника блейза. У разі повторного використання _циклує_ рівень нагрівання Пальника блейза.", + + "block.create.controller_rail.tooltip": "КОНТРОЛЕРНА РЕЙКА", + "block.create.controller_rail.tooltip.summary": "_Односпрямована рейка з електроприводом, здатна _точно контролювати швидкість руху вагонеток.", + "block.create.controller_rail.tooltip.condition1": "Коли живиться від Редстоуну", + "block.create.controller_rail.tooltip.behaviour1": "_Прискорює_ або _Сповільнює_ проходження _вагонеток_ відповідно до _потужності_ сигналу. Поширює потужність червоного каменю на сусідні рейки контролера. Живлення двох рейок контролера з різною потужністю призведе до інтерполяції сигналу на доріжках між ними.", + + "item.create.sand_paper.tooltip": "НАЖДАЧНИЙ ПАПІР", + "item.create.sand_paper.tooltip.summary": "Грубий папір, який можна використовувати для _полірування матеріалів_. Може застосовуватися автоматично за допомогою Автономний активатор.", + "item.create.sand_paper.tooltip.condition1": "При використанні", + "item.create.sand_paper.tooltip.behaviour1": "Полірує предмети у _другій руці_, або лежачі _на підлозі_, якщо _подивитися на них_", + + "item.create.builders_tea.tooltip": "ЧАЙ БУДІВЕЛТНИКА", + "item.create.builders_tea.tooltip.summary": "Ідеальний напіток для початку дня. _Мотивує_ і _Насищає_", + + "item.create.refined_radiance.tooltip": "ВИШУКАНЕ СЯЙВО", + "item.create.refined_radiance.tooltip.summary": "Хроматичний матеріал, _добутий з поглиненого світла_.", + "item.create.refined_radiance.tooltip.condition1": "Робота в процесі", + "item.create.refined_radiance.tooltip.behaviour1": "Використання цього матеріалу буде доступним у майбутніх оновленнях.", + + "item.create.shadow_steel.tooltip": "ТІНЬОВА СТАЛЬ", + "item.create.shadow_steel.tooltip.summary": "Хроматичний матеріал, _добутий в пустоті_.", + "item.create.shadow_steel.tooltip.condition1": "Робота в процесі", + "item.create.shadow_steel.tooltip.behaviour1": "Використання цього матеріалу буде доступним у майбутніх оновленнях.", + + "item.create.linked_controller.tooltip": "ПІДКЛЮЧЕНИЙ КОНТРОЛЕР", + "item.create.linked_controller.tooltip.summary": "Надає _ручний контроль_ над частотами _Бездротового передавача редстоун сигналу_, присвоєні його _шести_ кнопкам.", + "item.create.linked_controller.tooltip.condition1": "ПКМ", + "item.create.linked_controller.tooltip.behaviour1": "Вмикає контролер. _Управління рухом_ перехоплено, доки він активний.", + "item.create.linked_controller.tooltip.condition2": "ПКМ крадьдома", + "item.create.linked_controller.tooltip.behaviour2": "Відкриває ручний _Інтерфейс конфігурації_.", + "item.create.linked_controller.tooltip.condition3": "ПКМ по приймачеві сигналу редстоуна", + "item.create.linked_controller.tooltip.behaviour3": "Включає _режим прив'язки_, натисніть одну з _шести кнопок_, щоб прив'язати його до _частоти передавача_.", + "item.create.linked_controller.tooltip.condition4": "ПКМ по Аналою", + "item.create.linked_controller.tooltip.behaviour4": "Поміщає контролер на Аналой для зручності використання. (ПКМ крадучись, щоб забрати його)", + + "item.create.diving_helmet.tooltip": "ШОЛОМ ДЛЯ ДАЙВІНГУ", + "item.create.diving_helmet.tooltip.summary": "Разом з _Мідним балоном_, дозволяє володарю _дихати під водою_ протягом тривалого періоду часу.", + "item.create.diving_helmet.tooltip.condition1": "При носінні", + "item.create.diving_helmet.tooltip.behaviour1": "Дає ефект _Водяного Дихання_, повільно витрачаючи _повітря_ з балона.", + + "item.create.copper_backtank.tooltip": "МІДНИЙ БАЛОН", + "item.create.copper_backtank.tooltip.summary": "_Носити резервуар_ для транспортування повітря під тиском.", + "item.create.copper_backtank.tooltip.condition1": "При носінні", + "item.create.copper_backtank.tooltip.behaviour1": "Забезпечує подачу _повітря_ під _тиском_ до обладнання, яке цього потребує.", + "item.create.copper_backtank.tooltip.condition2": "При розміщенні та живленні від кінетичної енергії", + "item.create.copper_backtank.tooltip.behaviour2": "_Збирає та стискає повітря_ зі швидкістю, яка залежить від швидкості обертання_.", + + "item.create.diving_boots.tooltip": "ЧОБОТИ ДЛЯ ДАЙВІНГУ", + "item.create.diving_boots.tooltip.summary": "Пара _важких черевиків_, дозволяючи краще проходити дно океану.", + "item.create.diving_boots.tooltip.condition1": "При носінні", + "item.create.diving_boots.tooltip.behaviour1": "Власник _тоне швидше_ і _не_ може _плавати_. Черевики дають можливість _ходити_ і _стрибати_ під водою. На власника також більше не впливають _Конвеєри_ (пересування конвеєром).", + + "item.create.crafting_blueprint.tooltip": "СТВОРЕННЯ КРУСЕННЯ", + "item.create.crafting_blueprint.tooltip.summary": "_Розмістивши_ на стіні, його можна використовувати для _визначення розташування компонентів_ (блоків) для більш простого ручного створення предметів. Кожен слот показує Рецепт.", + "item.create.crafting_blueprint.condition1": "ПКМ по пустому Слоту", + "item.create.crafting_blueprint.behaviour1": "Відкриває _Меню крафта_ дозволяючи вам _налаштувати рецепт_ і предмети для відображення.", + "item.create.crafting_blueprint.condition2": "ПКМ по налаштованому слоту", + "item.create.crafting_blueprint.behaviour2": "_Застосовує_ _заданий_ _рецепт_ з відповідними інгредієнтами, з вашого _інвентаря_. _Shift_, щоб створити цілого _стак_ предметів.", + + "item.create.minecart_coupling.tooltip": "З'ЄДНУВАЧ ВАГОНЕТОК", + "item.create.minecart_coupling.tooltip.summary": "_З'єднує_ всі ваші _Вагонетки_ або _Перевізні пристрої_ разом, щоб утворити величний поїзд.", + "item.create.minecart_coupling.tooltip.condition1": "При використанні на Вагонетці", + "item.create.minecart_coupling.tooltip.behaviour1": "_З'єднує_ дві Вагонетки разом, намагаючись утримати їх на _певній відстані_ під час руху.", + + "block.create.peculiar_bell.tooltip": "ДИВНИЙ ДЗВІН", + "block.create.peculiar_bell.tooltip.summary": "Декоративний _Латунний дзвін_. Розмістіть його прямо над відкритим _Вогнем душ_ може викликати побічні ефекти...", + + "block.create.haunted_bell.tooltip": "ПРИМАРНИЙ ДЗВІН", + "block.create.haunted_bell.tooltip.summary": "_Проклятий дзвін_ населений втраченими душами Нижнього світу.", + "block.create.haunted_bell.tooltip.condition1": "При носінні або при дзвоні", + "block.create.haunted_bell.tooltip.behaviour1": "Підсвічує найближчі місця _без світла_, на яких можуть з'являтися ворожі моби_", + + + "_": "->------------------------] Поміркуйте над змістом [------------------------<-", + + "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.exit": "Вийти", + "create.ponder.welcome": "Вітаємо в Роздумах", + "create.ponder.categories": "Доступні категорії в Create", + "create.ponder.index_description": "Клацніть один із значків, щоб дізнатися про пов’язані з ним предмети та блоки", + "create.ponder.index_title": "Зміст роздумів", + "create.ponder.shared.rpm16": "16 об./хв", + "create.ponder.shared.behaviour_modify_wrench": "Цю поведінку можна змінити за допомогою гайкового ключа", + "create.ponder.shared.storage_on_contraption": "Приєднані до штуковини інвентарі будуть підбирати речі автоматично", + "create.ponder.shared.sneak_and": "Крастися +", + "create.ponder.shared.rpm8": "8 об./хв", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm32": "32 об./хв", + "create.ponder.shared.rpm16_source": "Джерело: 16 об./хв", + "create.ponder.shared.movement_anchors": "З допомогою суперклея або шасі, великі структури можуть бути здвинуті.", + "create.ponder.tag.redstone": "Логічні компоненти", + "create.ponder.tag.redstone.description": "Компоненти, які допомагають з конструюванням редстоун схем", + "create.ponder.tag.contraption_assembly": "Пристосування для приєднання блоків", + "create.ponder.tag.contraption_assembly.description": "Інструменти та Компоненти використовуються для складання структур, що пересуваються як рухомі Штуковини", + "create.ponder.tag.fluids": "Рідинні маніпулятори", + "create.ponder.tag.fluids.description": "Компоненти, що допомагають переміщати та використовувати рідини", + "create.ponder.tag.decoration": "Естетика", + "create.ponder.tag.decoration.description": "Компоненти, які найчастіше використовуються для декоративних цілей", + "create.ponder.tag.windmill_sails": "Вітрила для Підшипників вітряка", + "create.ponder.tag.windmill_sails.description": "Блоки, кількість яких збільшує силу вітряка. Кожен із цих блоків має однакову ефективність у справі.", + "create.ponder.tag.arm_targets": "Цілі для Механічної руки", + "create.ponder.tag.arm_targets.description": "Компоненти, які можна вибрати входами або виходами для Механічної руки", + "create.ponder.tag.kinetic_appliances": "Кінетичні прилади", + "create.ponder.tag.kinetic_appliances.description": "Компоненти, які використовують силу обертання", + "create.ponder.tag.kinetic_sources": "Кінетичні джерела", + "create.ponder.tag.kinetic_sources.description": "Компоненти, які створюють обертальну силу", + "create.ponder.tag.movement_anchor": "Опори руху", + "create.ponder.tag.movement_anchor.description": "Компоненти, що дозволяють створювати штуковини, що рухаються, пожвавлюючи прикріплену структуру різними способами.", + "create.ponder.tag.kinetic_relays": "Кінетичні блоки", + "create.ponder.tag.kinetic_relays.description": "Компоненти, що допомагають передавати силу обертання будь-куди", + "create.ponder.tag.contraption_actor": "Компоненти штуковин", + "create.ponder.tag.contraption_actor.description": "Компоненти, що виявляють особливу поведінку, коли прикріплені до штуковини, що рухається.", + "create.ponder.tag.creative": "Творчий режим", + "create.ponder.tag.creative.description": "Компоненти зазвичай недоступні в режимі виживання", + "create.ponder.tag.logistics": "Транспортування предметів", + "create.ponder.tag.logistics.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": "ПКМ крадучись, щоб зменшити силу вихідного сигналу знову", + + "create.ponder.andesite_tunnel.header": "Використання Андезитових тунелів", + "create.ponder.andesite_tunnel.text_1": "Андезитові тунелі можуть бути використані, щоб накривати конвеєри.", + "create.ponder.andesite_tunnel.text_2": "Завжди, коли у Андезитового тунелю є з'єднання збоку...", + "create.ponder.andesite_tunnel.text_3": "...він буде відокремлювати рівно один предмет з будь-яких стаків, що проходять повз.", + "create.ponder.andesite_tunnel.text_4": "Залишок продовжить свій шлях", + + "create.ponder.basin.header": "Оброблення предметів у Чаші", + "create.ponder.basin.text_1": "Чаша може зберігати предмети та рідини для обробки", + "create.ponder.basin.text_2": "Після обробки, чаші намагаються вивести результат під будь-який з їхніх сторін", + "create.ponder.basin.text_3": "Коли надано відповідний компонент, у Чаші з'явиться кран, що виходить.", + "create.ponder.basin.text_4": "Декілька варіантів застосовні тут", + "create.ponder.basin.text_5": "Виведення чаші буде спіймано інвентарем нижче", + "create.ponder.basin.text_6": "Без виходу крана, Чаша залишатиме предмети, отримані в результаті обробки", + "create.ponder.basin.text_7": "Це може бути корисним, якщо продукт повинен бути використаний повторно як інгредієнт", + "create.ponder.basin.text_8": "Бажані продукти повинні бути в такому випадку вилучені із чаші", + "create.ponder.basin.text_9": "Фільтр може бути необхідний для уникнення вилучення необроблених предметів", + + "create.ponder.bearing_modes.header": "Режимах руху механічного підшипника", + "create.ponder.bearing_modes.text_1": "Коли зупинено, підшипник встановить структуру на найближчому вирівняному по сітці блоках куті.", + "create.ponder.bearing_modes.text_2": "Він може бути налаштований ніколи не повертати структуру в твердий стан, або лише біля початкового кута", + + "create.ponder.belt_casing.header": "Обрамлення ременів", + "create.ponder.belt_casing.text_1": "Латунний або Андезитовий корпус можна використовувати для декорації Механічних ременів (конвеєра)", + "create.ponder.belt_casing.text_2": "Використовуйте Ключ, щоб усунути обрамлення", + + "create.ponder.belt_connector.header": "Використання Механічних ременів", + "create.ponder.belt_connector.text_1": "ПКМ по двом валах предметом ременя з'єднає їх разом у конвеєр", + "create.ponder.belt_connector.text_2": "Випадкові виділення можуть бути скасовані натисканням ПКМ Крадучись", + "create.ponder.belt_connector.text_3": "Додаткові вали можуть бути додані по всій довжині конвеєра", + "create.ponder.belt_connector.text_4": "Вали, з'єднані через ремені, будуть обертатися з тією ж швидкістю та напрямком", + "create.ponder.belt_connector.text_5": "Додані Вали можуть бути прибрані Ключем", + "create.ponder.belt_connector.text_6": "Механічні ремені можуть бути пофарбовані з естетичною метою", + + "create.ponder.belt_directions.header": "Можливих розташувань Механічних ременів", + "create.ponder.belt_directions.text_1": "Ремені не можуть з'єднуватися у довільних напрямках", + "create.ponder.belt_directions.text_2": "1. Вони можуть з'єднуватися горизонтально", + "create.ponder.belt_directions.text_3": "2. Вони можуть з'єднуватись по діагоналі", + "create.ponder.belt_directions.text_4": "3. Вони можуть з'єднуватися вертикально", + "create.ponder.belt_directions.text_5": "4. І вони можуть з'єднувати вертикальні вали горизонтально", + "create.ponder.belt_directions.text_6": "Це все можливі напрямки. Ремені можуть досягати Довжини від 2 до 20 блоків", + + "create.ponder.belt_transport.header": "Використання Механічних ременів для логістики", + "create.ponder.belt_transport.text_1": "Ремені, що рухаються, переміщатимуть Предмети та інші Сутності", + "create.ponder.belt_transport.text_2": "ПКМ порожній рукою, щоб забрати предмети з ременя", + + "create.ponder.blaze_burner.header": "Годування пальників блейза", + "create.ponder.blaze_burner.text_1": "Пальники блейза дають тепло предметам, що обробляються в Чаші.", + "create.ponder.blaze_burner.text_2": "Для цього, Блейз повинен бути нагодований займистими предметами", + "create.ponder.blaze_burner.text_3": "З Тортом сполоху, пальник може досягати ще більшого рівня жару", + "create.ponder.blaze_burner.text_4": "Процес годування може бути автоматизований, використовуючи Автономний активатор або Механічну руку", + + "create.ponder.brass_funnel.header": "Латунній Воронці", + "create.ponder.brass_funnel.text_1": "Андезитова воронка може витягувати тільки одиночні предмети", + "create.ponder.brass_funnel.text_2": "Латунна воронка може витягувати до цілого стака", + "create.ponder.brass_funnel.text_3": "Прокручування на слоті фільтра дозволяє точно регулювати розмір стака, що витягується.", + "create.ponder.brass_funnel.text_4": "Використовуючи предмет на слоті фільтра, обмежить воронку до передачі тільки збігаючих стаків.", + + "create.ponder.brass_tunnel.header": "Використання Латунних тунелів", + "create.ponder.brass_tunnel.text_1": "Латунні тунелі можуть бути використані, щоб накривати конвеєри", + "create.ponder.brass_tunnel.text_2": "Латунні тунелі мають слот для фільтра на кожній відкритій стороні.", + "create.ponder.brass_tunnel.text_3": "Фільтр на вхідних з'єднаннях блокує невідповідні предмети", + "create.ponder.brass_tunnel.text_4": "Фільтр на вихідних з'єднаннях може бути використаний для сортування предметів типу", + "create.ponder.brass_tunnel.text_5": "Завжди, коли у предмета, що проходить, є кілька доступних виходів, режим розподілу вирішить що з ним робити", + "create.ponder.brass_tunnel.text_6": "Латунні тунелі на паралельних конвеєрах формують групи", + "create.ponder.brass_tunnel.text_7": "Вхідні предмети будуть розподілені між усіма з'єднаними виходами", + "create.ponder.brass_tunnel.text_8": "Для цього предмети можуть бути вкладені в блок тунелю безпосередньо", + + "create.ponder.brass_tunnel_modes.header": "Режимах розподілу Латунних тунелів", + "create.ponder.brass_tunnel_modes.text_1": "Використовуючи Ключ, ви можете налаштувати поведінку розподілу Латунного тунелю", + "create.ponder.brass_tunnel_modes.text_10": "«Синхронізувати входи» – унікальне налаштування для Латунних тунелів", + "create.ponder.brass_tunnel_modes.text_11": "Предмети можуть пройти тільки якщо у кожного тунелю в групі є предмет, що очікує біля входу", + "create.ponder.brass_tunnel_modes.text_12": "Це має на увазі, що всі конвеєри постачають предмети з рівною швидкістю", + "create.ponder.brass_tunnel_modes.text_2": "«Розділити» спробує розподілити так порівну між доступними виходами", + "create.ponder.brass_tunnel_modes.text_3": "Якщо вихід не може прийняти більше предметів, він буде пропущений", + "create.ponder.brass_tunnel_modes.text_4": "«Примусово розділити» ніколи не пропустить виходи і натомість чекатиме поки вони не звільняться", + "create.ponder.brass_tunnel_modes.text_5": "«По Кругу» зберігає цілісні стаки та віддає їх виходам по черзі", + "create.ponder.brass_tunnel_modes.text_6": "Знову ж таки, якщо вихід не може прийняти більше предметів, він буде пропущений", + "create.ponder.brass_tunnel_modes.text_7": "«Примусово по колу» ніколи не пропускає виходи", + "create.ponder.brass_tunnel_modes.text_8": "«Переважно найближче» пріоритизує найближчі виходи від місця подачі предметів", + "create.ponder.brass_tunnel_modes.text_9": "«Випадково» віддаватиме цілі стаки випадково вибраним виходам", + + "create.ponder.cart_assembler.header": "Рух структур за допомогою Складальника вагонеток", + "create.ponder.cart_assembler.text_1": "Активовані Збирачі вагонеток встановлюють прикріплені структури до вагонеток, що проходять повз.", + "create.ponder.cart_assembler.text_2": "Без редстоун сигналу вони розбирають вагонеткові штуковини назад у блоки.", + "create.ponder.cart_assembler.text_3": "Використання Ключа на вагонетці дозволить вам забрати Штуковину кудись ще", + + "create.ponder.cart_assembler_dual.header": "Складання Штуковин-екіпажів", + "create.ponder.cart_assembler_dual.text_1": "Завжди, коли два збирачі вагонеток мають загальну прикріплену структуру...", + "create.ponder.cart_assembler_dual.text_2": "активація будь-якого з них створить Штуковину-екіпаж", + "create.ponder.cart_assembler_dual.text_3": "Ці вагонетки будуть поводитися так, ніби вони з'єднані З'єднувачем вагонеток", + + "create.ponder.cart_assembler_modes.header": "Налаштування орієнтації Вагонеткових штуковин", + "create.ponder.cart_assembler_modes.text_1": "Вагонеткові штуковини повертатимуться у бік руху їх вагонеток.", + "create.ponder.cart_assembler_modes.text_2": "Стрілкою показано, яка сторона конструкції вважатиметься передньою", + "create.ponder.cart_assembler_modes.text_3": "Якщо збирач налаштований на блокування обертання, то орієнтація штуковин ніколи не зміниться", + + "create.ponder.cart_assembler_rails.header": "Інші типи вагонеток і рейок", + "create.ponder.cart_assembler_rails.text_1": "Складачі вагонеток на звичайних рейках не впливатимуть на рух вагонеток, що проходять.", + "create.ponder.cart_assembler_rails.text_2": "На активних Контролюючих рейках або Енергорельсах вагонетки стоятимуть на місці доти, доки Складальник не буде активований", + "create.ponder.cart_assembler_rails.text_3": "Інші типи вагонеток можуть бути використані як основа", + "create.ponder.cart_assembler_rails.text_4": "Самохідні вагонетки підтримуватимуть себе запитаними, використовуючи паливо із приєднаних інвентарів", + + "create.ponder.chain_drive.header": "Передачі сили обертання Ланцюгові приводи", + "create.ponder.chain_drive.text_1": "Ланцюгові приводи передають силу обертання один одному", + "create.ponder.chain_drive.text_2": "Всі вали з'єднані таким чином обертатимуться в одному напрямку", + "create.ponder.chain_drive.text_3": "Будь-яка частина в ряду може бути повернена на 90 градусів", + + "create.ponder.chain_gearshift.header": "Управління швидкістю обертання Регульованими ланцюговими механізмами", + "create.ponder.chain_gearshift.text_1": "Неактивні Ланцюгові механізми поводяться так само, як Ланцюгові приводи", + "create.ponder.chain_gearshift.text_2": "Коли активовано, швидкість, що передається іншим Ланцюговим механізмам у ряді подвоюється", + "create.ponder.chain_gearshift.text_3": "Коли активований Ланцюговий механізм не є джерелом, його швидкість буде знижена вдвічі", + "create.ponder.chain_gearshift.text_4": "В обох випадках Ланцюгові приводи в ряді завжди обертаються з 2x швидкістю активованого Ланцюгового механізму", + "create.ponder.chain_gearshift.text_5": "Використовуючи аналогові сигнали, це множення може бути точніше налаштовано між 1 і 2", + "create.ponder.chain_gearshift.text_6": "12 об./хв.", + + "create.ponder.chute.header": "Транспортування предметів вниз через Жолоба", + "create.ponder.chute.text_1": "Жолоби можуть транспортувати предмети вертикально з та в інвентарі", + "create.ponder.chute.text_2": "Використовуючи Ключ, ви можете створити вікно", + "create.ponder.chute.text_3": "Встановлення жолобів на сторони інших жолобів зробить їх діагональними", + + "create.ponder.chute_upward.header": "Транспортування предметів вгору через Жолоба", + "create.ponder.chute_upward.text_1": "Використовуючи Вентилятор у корпусі внизу або вгорі, Жолоб може переміщати предмети вгору", + "create.ponder.chute_upward.text_2": "Огляд ринв в Інженерних окулярах відкриває інформацію про напрямок руху", + "create.ponder.chute_upward.text_3": "На «заблокованому» кінці предмети мають бути введені/виведені збоку", + + "create.ponder.clockwork_bearing.header": "Пожвавлення структур Часовим механізмом", + "create.ponder.clockwork_bearing.text_1": "Годинникові механізми прикріплюються до блоків спереду", + "create.ponder.clockwork_bearing.text_2": "При отриманні сили обертання структура повернеться в залежності від поточної години", + "create.ponder.clockwork_bearing.text_3": "3:00", + "create.ponder.clockwork_bearing.text_4": "4:00", + "create.ponder.clockwork_bearing.text_5": "ПКМ по механізму, щоб зупинити або знову запустити структуру", + "create.ponder.clockwork_bearing.text_6": "Друга структура може бути додана спереду.", + "create.ponder.clockwork_bearing.text_7": "Переконайтеся, що дві структури не з'єднані між собою супер-клеєм чи чимось схожим", + "create.ponder.clockwork_bearing.text_8": "Друга структура обертатиметься як Хвилинна стрілка", + + "create.ponder.clutch.header": "Управління силою обертання за допомогою Зчеплення", + "create.ponder.clutch.text_1": "Зчеплення передає обертання прямою", + "create.ponder.clutch.text_2": "При активації Редстоуном воно розриває з'єднання", + + "create.ponder.cog_speedup.header": "Перемикання передач Шестернями", + "create.ponder.cog_speedup.text_1": "Великі та маленькі шестерні можуть з'єднуватися по діагоналі.", + "create.ponder.cog_speedup.text_2": "Переходячи з великих на маленькі шестерні, передана швидкість подвоїться", + "create.ponder.cog_speedup.text_3": "Переходячи у зворотному напрямку, передана швидкість скоротиться вдвічі", + + "create.ponder.cogwheel.header": "Передача сили обертання Шестернями", + "create.ponder.cogwheel.text_1": "Шестерні передають обертання іншим сусіднім шестерням", + "create.ponder.cogwheel.text_2": "Сусідні вали з'єднані таким чином обертатимуться у протилежних напрямках.", + + "create.ponder.creative_fluid_tank.header": "Творчому рідинному баку", + "create.ponder.creative_fluid_tank.text_1": "Творчий рідинний бак може використовуватись для забезпечення нескінченного запасу рідини", + "create.ponder.creative_fluid_tank.text_2": "Клацніть ПКМ предметом, який містить рідину, щоб налаштувати його", + "create.ponder.creative_fluid_tank.text_3": "Мережі труб можуть нескінченно витягувати задану рідину з резервуару.", + "create.ponder.creative_fluid_tank.text_4": "Будь-які рідини, закачані назад у творчий рідинний бак, будуть знищені.", + + "create.ponder.creative_motor.header": "Генерації сили обертання творчими двигунами", + "create.ponder.creative_motor.text_1": "Творчі мотори - це компактні та налаштовані джерела Сили Обертання", + "create.ponder.creative_motor.text_2": "Прокручування по задній панелі змінює кількість об./хв. у обертового валу мотора", + + "create.ponder.crushing_wheels.header": "Оброблення предметів Колісами дроблення", + "create.ponder.crushing_wheels.text_1": "Пара Коліс дроблення може молоти предмети дуже ефективно", + "create.ponder.crushing_wheels.text_2": "Сила обертання повинна обертати їх одне в одного", + "create.ponder.crushing_wheels.text_3": "Предмети кинуті чи введені зверху будуть оброблені", + "create.ponder.crushing_wheels.text_4": "Предмети також можуть бути введені та підібрані автоматичним способом", + + "create.ponder.deployer.header": "Використання автономного активатора", + "create.ponder.deployer.text_1": "За наявності сили обертання автономний активатор може імітувати дії гравця", + "create.ponder.deployer.text_10": "ПКМ попереду, щоб дати йому предмет для використання", + "create.ponder.deployer.text_11": "Предмети також можуть бути введені автоматично", + "create.ponder.deployer.text_12": "Автономні активатори мають слот для фільтра", + "create.ponder.deployer.text_13": "Коли фільтр встановлений, Активатор працює тільки тримаючи відповідний предмет", + "create.ponder.deployer.text_14": "Тільки предмети, що підходять по фільтру, можуть бути введені...", + "create.ponder.deployer.text_15": "...і лише невідповідні предмети будуть виведені", + "create.ponder.deployer.text_2": "Він завжди буде взаємодіяти з місцем на два блоки перед ним", + "create.ponder.deployer.text_3": "Блоки прямо перед ним не заважатимуть йому", + "create.ponder.deployer.text_4": "Автономні активатори вміють:", + "create.ponder.deployer.text_5": "Ставити блоки,", + "create.ponder.deployer.text_6": "Використовувати предмети,", + "create.ponder.deployer.text_7": "Активувати блоки,", + "create.ponder.deployer.text_8": "Збирати блоки", + "create.ponder.deployer.text_9": "та Атакувати мобів", + + "create.ponder.deployer_contraption.header": "Використання автономних активаторів на штуковинах", + "create.ponder.deployer_contraption.text_1": "Завжди, коли автономні активатори рухаються як частина рухомої штуковини...", + "create.ponder.deployer_contraption.text_2": "Вони активуються на кожному відвідуваному місці, використовуючи предмети з будь-яких інвентарів на штуковині", + "create.ponder.deployer_contraption.text_3": "Слот для Фільтру може бути використаний для уточнення, які предмети йому брати", + + "create.ponder.deployer_modes.header": "Режимах автономного активатора", + "create.ponder.deployer_modes.text_1": "За замовчуванням активатор імітує ПКМ-взаємодія.", + "create.ponder.deployer_modes.text_2": "Використовуючи Ключ, ви можете встановити його на імітацію ЛКМ", + + "create.ponder.deployer_processing.header": "Обробка елементів за допомогою автономних активаторів", + "create.ponder.deployer_processing.text_1": "Тримаючи відповідний предмет/інструмент, автономні активатори можуть обробляти предмети під собою", + "create.ponder.deployer_processing.text_2": "Прийняті предмети можна кинути або покласти на депо під автономним активатором", + "create.ponder.deployer_processing.text_3": "Коли предмети знаходяться на конвеєрі...", + "create.ponder.deployer_processing.text_4": "автономний активатор буде утримувати та обробляти їх автоматично", + + "create.ponder.deployer_redstone.header": "Управління автономними активаторами редстоуном", + "create.ponder.deployer_redstone.text_1": "При активації Редстоуном активатор перестане працювати", + "create.ponder.deployer_redstone.text_2": "Перед зупинкою Активатор завершить всі розпочаті дії", + "create.ponder.deployer_redstone.text_3": "Таким чином, інвертований імпульс може бути використаний для виклику рівно одного спрацьовування", + + "create.ponder.depot.header": "Використання Депо", + "create.ponder.depot.text_1": "Депо можуть бути як «стаціонарний» елемент конвеєра", + "create.ponder.depot.text_2": "ПКМ, щоб самостійно покласти або забрати предмети з них", + "create.ponder.depot.text_3": "Так само, як Механічні ремені, воно може надавати предмети для обробки", + "create.ponder.depot.text_4": "...а також постачати предмети Механічним рукам", + + "create.ponder.empty_blaze_burner.header": "Використання Порожніх пальників блейза", + "create.ponder.empty_blaze_burner.text_1": "ПКМ по Блейзу з порожнім пальником, щоб захопити його", + "create.ponder.empty_blaze_burner.text_2": "Також Блейзи можуть бути захоплені зі спавнера безпосередньо", + "create.ponder.empty_blaze_burner.text_3": "Тепер у вас є ідеальне джерело тепла для низки машин", + "create.ponder.empty_blaze_burner.text_4": "В естетичних цілях, Пусті пальники можуть бути запалені огнивом", + "create.ponder.empty_blaze_burner.text_5": "Полум'я можна трансформувати, використовуючи наповнений душею предмет.", + "create.ponder.empty_blaze_burner.text_6": "Однак вони не будуть підходити для промислового нагріву", + + "create.ponder.encased_fluid_pipe.header": "Обрамлення рідких труб", + "create.ponder.encased_fluid_pipe.text_1": "Мідний корпус можна використовувати для прикраси труб.", + "create.ponder.encased_fluid_pipe.text_2": "Крім того, що вони ховаються, ув'язнені в обрамлення труби блокуються в поточному стані", + "create.ponder.encased_fluid_pipe.text_3": "Вони більше не реагуватимуть на додавання чи видалення будь-яких сусідніх блоків", + + "create.ponder.fan_direction.header": "Повітряний потік Вентиляторів у корпусі", + "create.ponder.fan_direction.text_1": "Вентилятори в корпусі використовують силу обертання для створення повітряного потоку.", + "create.ponder.fan_direction.text_2": "Сила і напрямок потоку залежать від обертання, що подається.", + + "create.ponder.fan_processing.header": "Обробці предметів використовуючи Вентилятори в корпусі", + "create.ponder.fan_processing.text_1": "Проходячи через лаву, Повітряний потік стає Гарячим", + "create.ponder.fan_processing.text_2": "Предмети у цій області будуть переплавлені", + "create.ponder.fan_processing.text_3": "Їстівні предмети, кинуті сюди, будуть спалені", + "create.ponder.fan_processing.text_4": "Натомість, для них має бути використана установка для Копчення з вогнем.", + "create.ponder.fan_processing.text_5": "Потік, що проходить через Воду, створює установку, що промиває.", + "create.ponder.fan_processing.text_6": "Декілька нових варіантів обробки робляться з її допомогою", + "create.ponder.fan_processing.text_7": "Швидкість вентилятора не впливає на швидкість обробки, а лише на дальність", + "create.ponder.fan_processing.text_8": "Обробка Вентиляторами може бути застосована до предметів на конвеєрах або депо", + + "create.ponder.fan_source.header": "Генерації сили обертання Вентиляторами у корпусі", + "create.ponder.fan_source.text_1": "Вентилятори, спрямовані вниз на джерело тепла, можуть створювати силу обертання.", + "create.ponder.fan_source.text_2": "При сигналі редстоуна Вентилятор почне віддавати енергію", + + "create.ponder.fluid_pipe_flow.header": "Переміщення рідин за допомогою мідних труб.", + "create.ponder.fluid_pipe_flow.text_1": "Рідинні труби можуть з'єднувати два або більше джерел та споживачів рідини", + "create.ponder.fluid_pipe_flow.text_2": "За допомогою гайкового ключа можна створити вікно прямому відрізку труби", + "create.ponder.fluid_pipe_flow.text_3": "Труби з вікнами не з'єднуватимуться ні з якими іншими трубами, що йдуть відрізками труб", + "create.ponder.fluid_pipe_flow.text_4": "Труби, що приводяться в дію механічними помпами, можуть транспортувати рідини.", + "create.ponder.fluid_pipe_flow.text_5": "Спочатку рідина не викачується", + "create.ponder.fluid_pipe_flow.text_6": "Як тільки потік з'єднає кінці, вони поступово перекачають свій вміст.", + "create.ponder.fluid_pipe_flow.text_7": "Таким чином, самі блоки труб ніколи «фізично» не містять жодної рідини.", + + "create.ponder.fluid_pipe_interaction.header": "Спустошення та наповнення рідинних контейнерів", + "create.ponder.fluid_pipe_interaction.text_1": "Кінці мережі труб можуть взаємодіяти з різними блоками", + "create.ponder.fluid_pipe_interaction.text_2": "Будь-який блок із можливістю зберігання рідини може бути заповнений або спустошений", + "create.ponder.fluid_pipe_interaction.text_3": "Джерела прямо перед відкритим кінцем можна відкачати...", + "create.ponder.fluid_pipe_interaction.text_4": "...тоді як виливання в незаповнений простір може створити джерела", + "create.ponder.fluid_pipe_interaction.text_5": "Труби також можуть витягувати рідини безпосередньо з кількох інших блоків", + + "create.ponder.fluid_tank_sizes.header": "Розміри рідинного бака", + "create.ponder.fluid_tank_sizes.text_1": "Рідинні баки можна поєднати для збільшення загальної місткості", + "create.ponder.fluid_tank_sizes.text_2": "Їх площа основи може становити до 3 блоків завширшки...", + "create.ponder.fluid_tank_sizes.text_3": "...та збільшуються у висоту більш ніж на 30 додаткових рівнів", + "create.ponder.fluid_tank_sizes.text_4": "За допомогою гайкового ключа можна створити вікно на резервуарі", + + "create.ponder.fluid_tank_storage.header": "Зберігання рідин у Резервуарах для рідини", + "create.ponder.fluid_tank_storage.text_1": "Резервуари для рідини можна використовувати для зберігання великої кількості рідини.", + "create.ponder.fluid_tank_storage.text_2": "Труби можуть закачувати та викачувати рідини з будь-якого боку", + "create.ponder.fluid_tank_storage.text_3": "Рідина, що міститься, може бути виміряна за допомогою компаратора", + "create.ponder.fluid_tank_storage.text_4": "Однак у режимі виживання рідину не можна додавати або виймати вручну.", + "create.ponder.fluid_tank_storage.text_5": "Ви можете використовувати чаші, предметні осушувачі і дозатори для спустошення або наповнення вмісту рідини предметів", + + "create.ponder.flywheel.header": "Генерація сили обертання Маховиком", + "create.ponder.flywheel.text_1": "Маховики необхідні для генерації сили обертання за допомогою Пічних двигунів", + "create.ponder.flywheel.text_2": "Сила обертання, що віддається, має дуже значну стійкість до навантажень.", + "create.ponder.flywheel.text_3": "Використання Плавильної печі подвоїть ефективність двигуна", + + "create.ponder.funnel_compat.header": "Сумісності Воронок", + "create.ponder.funnel_compat.text_1": "Вирви повинні добре взаємодіяти з багатьма компонентами:", + "create.ponder.funnel_compat.text_2": "Вертикальні пили", + "create.ponder.funnel_compat.text_3": "Депо", + "create.ponder.funnel_compat.text_4": "Предметні осушувачі", + + "create.ponder.funnel_direction.header": "Напрямок передачі", + "create.ponder.funnel_direction.text_1": "Поставлена звичайним чином вона забирає предмети з інвентарю", + "create.ponder.funnel_direction.text_2": "Поставлена крадькома, вона кладе предмети в інвентар", + "create.ponder.funnel_direction.text_3": "Використовуючи Ключ, ви можете змінити напрямок вирви", + "create.ponder.funnel_direction.text_4": "Ті ж правила застосовуються для більшості напрямків", + "create.ponder.funnel_direction.text_5": "Вирви на конвеєрах витягуватимуть/вводитимуть предмети в залежності від напрямку їх руху", + + "create.ponder.funnel_intro.header": "Використання Воронок", + "create.ponder.funnel_intro.text_1": "Вирви ідеально підходять для переміщення предметів з та в інвентарі", + + "create.ponder.funnel_redstone.header": "Редстоун управлінні", + "create.ponder.funnel_redstone.text_1": "Редстоун сигнал не дасть будь-якій воронці працювати", + + "create.ponder.funnel_transfer.header": "Передача безпосередньо", + "create.ponder.funnel_transfer.text_1": "Вирви не можуть переміщати предмети безпосередньо між закритими інвентарями", + "create.ponder.funnel_transfer.text_2": "Жолоби або Розумні жолоби можуть краще підходити для цих цілей", + "create.ponder.funnel_transfer.text_3": "Те саме стосується і горизонтального переміщення. Механічний ремінь має тут допомогти", + + "create.ponder.furnace_engine.header": "Генерації сили обертання Пічним двигуном", + "create.ponder.furnace_engine.text_1": "Пічні двигуни створюють силу обертання доки приєднана до них піч працює", + "create.ponder.furnace_engine.text_2": "Створювана сила обертання має дуже високу стійкість до навантажень", + "create.ponder.furnace_engine.text_3": "Використання Плавильної печі подвоїть ефективність Двигуна", + + "create.ponder.gantry_carriage.header": "Використання шасі портального крана", + "create.ponder.gantry_carriage.text_1": "Шасі портального крана можуть прикріплюватися і рухатися вздовж Валу портального крана", + "create.ponder.gantry_carriage.text_2": "Кранові установки можуть рухати приєднані блоки", + + "create.ponder.gantry_cascaded.header": "Багатоступінчастому портальному крані", + "create.ponder.gantry_cascaded.text_1": "Вали портального крана прикріплюються до шасі без потреби у супер-клеї.", + "create.ponder.gantry_cascaded.text_2": "Те саме стосується і шасі на Валах портального крана, що рухаються.", + "create.ponder.gantry_cascaded.text_3": "Таким чином, кранова система може покривати кілька осей руху.", + + "create.ponder.gantry_direction.header": "Напрямок руху крана", + "create.ponder.gantry_direction.text_1": "Вали портального крана можуть мати два протилежні напрямки", + "create.ponder.gantry_direction.text_2": "Напрямок руху шасі залежить від орієнтації їх валів.", + "create.ponder.gantry_direction.text_3": "...а також від напрямку обертання валу", + "create.ponder.gantry_direction.text_4": "Ті ж правила відносяться до обертання, що передається.", + + "create.ponder.gantry_redstone.header": "Подачі енергії на кран", + "create.ponder.gantry_redstone.text_1": "Активовані редстоуном вали крана перестають рухати шасі", + "create.ponder.gantry_redstone.text_2": "Натомість сила обертання передається вихідному валу шасі.", + + "create.ponder.gantry_shaft.header": "Використання валів портального крана", + "create.ponder.gantry_shaft.text_1": "Вали портального крана становлять основу кранової установки. По них рухатимуться приєднані шасі", + "create.ponder.gantry_shaft.text_2": "Кранові установки можуть рухати приєднані блоки", + + "create.ponder.gearbox.header": "Передача сили обертання за допомогою Коробок передач", + "create.ponder.gearbox.text_1": "Переходи між осями обертання можуть швидко стати громіздкими", + "create.ponder.gearbox.text_2": "Коробка Передач - це компактніший еквівалент цієї установки", + "create.ponder.gearbox.text_3": "Вали по кутах повертаються у дзеркальних напрямках", + "create.ponder.gearbox.text_4": "Прямі з'єднання будуть реверсовані", + + "create.ponder.gearshift.header": "Управління силою обертання за допомогою Реверсивного механізму", + "create.ponder.gearshift.text_1": "Реверсивні механізми передають обертання прямою", + "create.ponder.gearshift.text_2": "При активації редстоуном вони реверсують передачу", + + "create.ponder.hand_crank.header": "Генерації сили обертання за допомогою Рукояток", + "create.ponder.hand_crank.text_1": "Рукоятки можуть бути використані гравцями для застосування сили обертання вручну", + "create.ponder.hand_crank.text_2": "Тримайте ПКМ, щоб повернути їх проти Годинникової стрілки", + "create.ponder.hand_crank.text_3": "Їхня швидкість обертання відносно висока", + "create.ponder.hand_crank.text_4": "Тримайте ПКМ крадькома, щоб повернути її за годинниковою стрілкою", + + "create.ponder.hose_pulley.header": "Наповнення та осушення джерел за допомогою Шківу зі шлангом", + "create.ponder.hose_pulley.text_1": "Шківи зі шлангом можна використовувати для заповнення або осушення великих об'ємів рідини.", + "create.ponder.hose_pulley.text_2": "За допомогою кінетичної енергії можна регулювати довжину шлангу", + "create.ponder.hose_pulley.text_3": "Шків змотується, якщо звернути обертання", + "create.ponder.hose_pulley.text_4": "З протилежного боку можна підключати труби", + "create.ponder.hose_pulley.text_5": "Приєднані мережі труб можуть або подавати рідину в шланг...", + "create.ponder.hose_pulley.text_6": "...або витягувати її, осушуючи водойму", + "create.ponder.hose_pulley.text_7": "Швидкість заповнення та осушення шківом повністю залежить від пропускної спроможності рідинної мережі", + + "create.ponder.hose_pulley_infinite.header": "Пасивне заповнення та осушення великих об'ємів рідини", + "create.ponder.hose_pulley_infinite.text_1": "При розгортанні Шківу зі шлангом у досить великий океан...", + "create.ponder.hose_pulley_infinite.text_2": "Він надаватиме/поглинатиме рідини без впливу на джерело", + "create.ponder.hose_pulley_infinite.text_3": "Мережі труб можуть необмежено передавати рідини з/в такі шківи.", + + "create.ponder.hose_pulley_level.header": "Рівні заповнення та осушення Шківу зі шлангом", + "create.ponder.hose_pulley_level.text_1": "При повністю прибраному рукаві шланга - він не може працювати", + "create.ponder.hose_pulley_level.text_2": "Осушення відбувається зверху вниз", + "create.ponder.hose_pulley_level.text_3": "Рівень поверхні виявиться трохи нижче того місця, де закінчується шланг", + "create.ponder.hose_pulley_level.text_4": "Наповнення відбувається знизу нагору", + "create.ponder.hose_pulley_level.text_5": "Заповнюваний басейн не наповнюватиметься вище рівня кінця шлангу", + + "create.ponder.item_drain.header": "Спустошення рідинних резервуарів за допомогою предметних осушувачів", + "create.ponder.item_drain.text_1": "Предметні осушувачі можуть витягувати рідини з предметів", + "create.ponder.item_drain.text_2": "Клацніть на ПКМ по ньому, щоб перелити в нього рідину з предмета у ваших руках", + "create.ponder.item_drain.text_3": "Коли предмети подаються з боку...", + "create.ponder.item_drain.text_4": "...вони перевертаються, виливаючи рідину, що міститься в них.", + "create.ponder.item_drain.text_5": "Мережі труб тепер можуть витягувати рідину із внутрішнього сховища осушувачів.", + + "create.ponder.large_cogwheel.header": "Передача сили обертання за допомогою Великих шестерень", + "create.ponder.large_cogwheel.text_1": "Великі шестерні можуть з'єднуватися між собою під прямим кутом", + "create.ponder.large_cogwheel.text_2": "Це допоможе передавати швидкість на інші осі обертання", + + "create.ponder.linear_chassis_attachment.header": "Прикріплення блоків за допомогою Лінійних шасі", + "create.ponder.linear_chassis_attachment.text_1": "Відкриті грані Лінійних шасі можна зробити Липкими", + "create.ponder.linear_chassis_attachment.text_2": "Натисніть ще раз, щоб зробити протилежний бік липкою", + "create.ponder.linear_chassis_attachment.text_3": "ПКМ крадучись, порожньою рукою, щоб прибрати слиз", + "create.ponder.linear_chassis_attachment.text_4": "Липкі грані Лінійних шасі будуть прикріплювати ряд блоків перед ним", + "create.ponder.linear_chassis_attachment.text_5": "Використовуйте Ключ, щоб налаштувати радіус для цього шасі", + "create.ponder.linear_chassis_attachment.text_6": "Прокручування при утримуванні CTRL налаштовує радіус усіх приєднаних шасі", + "create.ponder.linear_chassis_attachment.text_7": "Прикріплення блоків на інші сторони потребує використання Супер-клею", + "create.ponder.linear_chassis_attachment.text_8": "За допомогою цих механік структури будь-якої форми можуть рухатися як Штуковина.", + + "create.ponder.linear_chassis_group.header": "Руху Лінійних шасі групами", + "create.ponder.linear_chassis_group.text_1": "Лінійні шасі з'єднуються з такими ж блоками Шасі поряд з ними", + "create.ponder.linear_chassis_group.text_2": "Коли один блок переміщається Штуковиною, інші рухаються з ним", + "create.ponder.linear_chassis_group.text_3": "Шасі інших типів або спрямовані в іншому напрямку не будуть прикріплюватися", + + "create.ponder.mechanical_arm.header": "Налаштування механічних рук", + "create.ponder.mechanical_arm.text_1": "Входи та виходи для Механічних рук повинні бути призначені перед їх встановленням", + "create.ponder.mechanical_arm.text_2": "ПКМ за інвентарями, тримаючи руку, щоб призначити їх цілями", + "create.ponder.mechanical_arm.text_3": "ПКМ ще раз, для перемикання між Входом (Синій) та Виходом (Помаранчевий)", + "create.ponder.mechanical_arm.text_4": "ЛКМ по компонентам, щоб усунути виділення з них", + "create.ponder.mechanical_arm.text_5": "Після встановлення, Механічні руки будуть націлені на раніше вибрані блоки", + "create.ponder.mechanical_arm.text_6": "У них може бути необмежену кількість входів і виходів у зоні їх досяжності", + "create.ponder.mechanical_arm.text_7": "Однак, не кожен вид Інвентар може взаємодіяти з ними безпосередньо", + "create.ponder.mechanical_arm.text_8": "Вирви та Депо можуть допомогти заповнити цю прогалину", + + "create.ponder.mechanical_arm_filtering.header": "Фільтрування виходів Механічної руки", + "create.ponder.mechanical_arm_filtering.text_1": "Входи", + "create.ponder.mechanical_arm_filtering.text_2": "Виходи", + "create.ponder.mechanical_arm_filtering.text_3": "Іноді бажано обмежити цілі руки фільтром", + "create.ponder.mechanical_arm_filtering.text_4": "Механічні руки не мають можливості фільтрації", + "create.ponder.mechanical_arm_filtering.text_5": "Однак, Латунні воронки як цілі повідомляють свій фільтр руці", + "create.ponder.mechanical_arm_filtering.text_6": "Рука досить розумна, щоб не підбирати предмети, які вона не зможе розподілити", + + "create.ponder.mechanical_arm_modes.header": "Режимах розподілу Механічної руки", + "create.ponder.mechanical_arm_modes.text_1": "Входи", + "create.ponder.mechanical_arm_modes.text_2": "Виходи", + "create.ponder.mechanical_arm_modes.text_3": "Коли рука вибирає між кількома доступними виходами...", + "create.ponder.mechanical_arm_modes.text_4": "...вона зробить вибір виходячи зі свого налаштування", + "create.ponder.mechanical_arm_modes.text_5": "Прокручування з Ключом дозволить вам налаштувати це", + "create.ponder.mechanical_arm_modes.text_6": "Режим «по Кругу» перемикається між усіма доступними виходами по черзі", + "create.ponder.mechanical_arm_modes.text_7": "Якщо вихід не може прийняти більше предметів, він буде пропущений", + "create.ponder.mechanical_arm_modes.text_8": "«Примусово по колу» ніколи не пропускає виходи, а чекає доки вони не звільняться", + "create.ponder.mechanical_arm_modes.text_9": "«Віддавати перевагу первинній цілі» пріоритизує виходи, вибрані раніше при налаштуванні цієї Руки", + + "create.ponder.mechanical_arm_redstone.header": "Управління Механічними руками редстоуном", + "create.ponder.mechanical_arm_redstone.text_1": "При активації редстоуном Механічні руки перестають працювати", + "create.ponder.mechanical_arm_redstone.text_2": "Перед зупинкою, вони завершать усі розпочаті дії", + "create.ponder.mechanical_arm_redstone.text_3": "Таким чином, інвертований імпульс може використовуватися для виклику рівно одного спрацьовування", + + "create.ponder.mechanical_bearing.header": "Пересування структур за допомогою механічного підшипника", + "create.ponder.mechanical_bearing.text_1": "Механічні підшипники прикріплюють блоки перед ними", + "create.ponder.mechanical_bearing.text_2": "При отриманні сили обертання, вони зберуться в штуковину, що обертається.", + + "create.ponder.mechanical_crafter.header": "Налаштування Механічних крафтерів", + "create.ponder.mechanical_crafter.text_1": "Масив з Механічних крафтерів можна використовувати для автоматизації створення будь-якого рецепту.", + "create.ponder.mechanical_crafter.text_2": "Можна налаштувати шляхи крафтерів за допомогою Ключа", + "create.ponder.mechanical_crafter.text_3": "Для правильної установки всі шляхи повинні сходитися в один вихід з будь-якої сторони", + "create.ponder.mechanical_crafter.text_4": "Продукти будуть поміщені в інвентар біля виходу", + "create.ponder.mechanical_crafter.text_5": "Механічним крафтерам потрібна сила обертання до роботи", + "create.ponder.mechanical_crafter.text_6": "ПКМ спереду, щоб вставити предмети вручну", + "create.ponder.mechanical_crafter.text_7": "Коли кожен слот на дорозі містить предмет, процес створення розпочнеться", + "create.ponder.mechanical_crafter.text_8": "Для рецептів, які не повністю займають крафтер-установку, старт можна спровокувати Редстоун імпульсом", + + "create.ponder.mechanical_crafter_connect.header": "Об'єднання інвентарів Механічних крафтерів", + "create.ponder.mechanical_crafter_connect.text_1": "Предмети можна помістити в крафтери автоматично", + "create.ponder.mechanical_crafter_connect.text_2": "За допомогою ключа позаду крафтерів їх інвентарі можна об'єднати", + "create.ponder.mechanical_crafter_connect.text_3": "Усі з'єднані крафтери тепер будуть доступні з одного місця введення", + + "create.ponder.mechanical_crafter_covers.header": "Закриття слотів Механічних крафтерів", + "create.ponder.mechanical_crafter_covers.text_1": "Деякі рецепти вимагають додаткових крафтерів, щоб закрити прогалини на дорозі", + "create.ponder.mechanical_crafter_covers.text_2": "За допомогою кришок на слоти, крафтери можуть грати роль порожніх слотів у схемі", + "create.ponder.mechanical_crafter_covers.text_3": "Загальні входи, створені ключем ззаду, також можуть бути доступні через закриті крафтери.", + + "create.ponder.mechanical_drill.header": "Ломанії блоків Механічним Дрилем", + "create.ponder.mechanical_drill.text_1": "При подачі обертання, Механічний дриль ламатиме блоки перед нею", + "create.ponder.mechanical_drill.text_2": "Швидкість видобутку залежить від швидкості, що подається", + + "create.ponder.mechanical_drill_contraption.header": "Використання Механічних дрилів на штуковинах", + "create.ponder.mechanical_drill_contraption.text_1": "Коли дрилі рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_drill_contraption.text_2": "...вони будуть ламати блоки, на які вони натикаються", + + "create.ponder.mechanical_harvester.header": "Використання механічних комбайнів на штуковинах", + "create.ponder.mechanical_harvester.text_1": "Коли комбайни рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_harvester.text_2": "Вони будуть прибирати зрілий урожай на своєму шляху і висаджувати його знову", + + "create.ponder.mechanical_mixer.header": "Обробка предметів Механічним міксером", + "create.ponder.mechanical_mixer.text_1": "За допомогою Міксера та Чаші можна автоматизувати деякі рецепти крафту.", + "create.ponder.mechanical_mixer.text_2": "Доступні рецепти включають будь-які безформні рецепти крафту плюс ще трохи", + "create.ponder.mechanical_mixer.text_3": "Деякі з них вимагають тепло від Пальника блейза", + "create.ponder.mechanical_mixer.text_4": "Слот для фільтра можна використовувати у разі конфлікту двох рецептів", + + "create.ponder.mechanical_piston.header": "Переміщення структур за допомогою Механічних поршнів", + "create.ponder.mechanical_piston.text_1": "Механічні поршні можуть рухати блоки перед ними", + "create.ponder.mechanical_piston.text_2": "Швидкість та Напрямок руху залежать від вихідного обертання", + "create.ponder.mechanical_piston.text_3": "Механічні поршні можуть тягнути назад приєднані блоки", + + "create.ponder.mechanical_piston_modes.header": "Режимах руху Механічного поршня", + "create.ponder.mechanical_piston_modes.text_1": "Коли поршень зупиняється, зрушена структура стає блоками", + "create.ponder.mechanical_piston_modes.text_2": "Можна налаштувати його так, щоб структура ніколи не ставала блоками або лише на початковій позиції", + + "create.ponder.mechanical_plough.header": "Використання Механічних плугів на штуковинах", + "create.ponder.mechanical_plough.text_1": "Коли плуги рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_plough.text_2": "...вони будуть ламати блоки без твердого хітбоксу", + "create.ponder.mechanical_plough.text_3": "До того ж Плуги можуть створювати ріллю.", + "create.ponder.mechanical_plough.text_4": "....вони також можуть штовхати сутностей не завдаючи їм шкоди", + + "create.ponder.mechanical_press.header": "Обробка предметів Механічним пресом", + "create.ponder.mechanical_press.text_1": "Механічний прес може обробляти предмети під собою", + "create.ponder.mechanical_press.text_2": "Представлені предмети повинні бути кинуті або поміщені на Депо під Пресом", + "create.ponder.mechanical_press.text_3": "Коли предмети подаються на конвеєрі...", + "create.ponder.mechanical_press.text_4": "Прес буде затримувати та обробляти їх автоматично", + + "create.ponder.mechanical_press_compacting.header": "Упаковка предметів Механічним пресом", + "create.ponder.mechanical_press_compacting.text_1": "Спресування предметів у Чаші запакує їх", + "create.ponder.mechanical_press_compacting.text_2": "Упаковка включає будь-які заповнені 2x2 або 3x3 рецепти крафта плюс ще трохи", + "create.ponder.mechanical_press_compacting.text_3": "Деяким рецептам може знадобитися тепло від Пальнику блейза", + "create.ponder.mechanical_press_compacting.text_4": "Слот для фільтра можна використовувати у разі конфлікту двох рецептів", + + "create.ponder.mechanical_pump_flow.header": "Транспортування рідини за допомогою Механічних помп", + "create.ponder.mechanical_pump_flow.text_1": "Механічні помпи направляють потік у приєднані мережі із труб", + "create.ponder.mechanical_pump_flow.text_2": "Коли працює, стрілка вказує напрямок потоку", + "create.ponder.mechanical_pump_flow.text_3": "Частина мережі ззаду тепер качає рідину...", + "create.ponder.mechanical_pump_flow.text_4": "...у той час як частина мережі спереду передає їх назовні", + "create.ponder.mechanical_pump_flow.text_5": "Зміна напрямку обертання змінює напрямок потоку", + "create.ponder.mechanical_pump_flow.text_6": "Використовуйте гайковий ключ, щоб змінити напрямок помпи вручну", + + "create.ponder.mechanical_pump_speed.header": "Продуктивності механічних помп", + "create.ponder.mechanical_pump_speed.text_1": "Незалежно від швидкості, Механічні помпи впливають на труби в радіусі 16 блоків.", + "create.ponder.mechanical_pump_speed.text_2": "Прискорення обертання, що подається, змінює швидкість поширення потоків...", + "create.ponder.mechanical_pump_speed.text_3": "...так само, як і швидкість передачі рідин", + "create.ponder.mechanical_pump_speed.text_4": "Помпи можуть поєднувати свою продуктивність у загальних мережах труб", + "create.ponder.mechanical_pump_speed.text_5": "Зміна їхнього напрямку може допомогти спрямувати напрямок їх потоків", + + "create.ponder.mechanical_saw_breaker.header": "Різання дерев Механічною пилкою", + "create.ponder.mechanical_saw_breaker.text_1": "При подачі обертання, Механічна пилка пилятиме дерева прямо перед нею", + "create.ponder.mechanical_saw_breaker.text_2": "Для спилювання дерева повністю пилка повинна ламати останній блок дерева, з'єднаний із землею", + + "create.ponder.mechanical_saw_contraption.header": "Використання Механічних пилок на штуковинах", + "create.ponder.mechanical_saw_contraption.text_1": "Коли пилки рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_saw_contraption.text_2": "...вони будуть ламати блоки, на які вони натикаються", + + "create.ponder.mechanical_saw_processing.header": "Обробка предметів на Механічній пилці", + "create.ponder.mechanical_saw_processing.text_1": "Механічні пили направлені вгору можуть обробляти безліч предметів", + "create.ponder.mechanical_saw_processing.text_2": "Оброблені предмети завжди рухаються проти обертання, що подається на пилу.", + "create.ponder.mechanical_saw_processing.text_3": "Пилки можуть працювати з Механічними ременями (конвеєром)", + "create.ponder.mechanical_saw_processing.text_4": "Коли з інгредієнта можна отримати кілька результатів, фільтр може уточнити його.", + "create.ponder.mechanical_saw_processing.text_5": "Без фільтра пила вибиратиме всі можливі результати по черзі", + + "create.ponder.millstone.header": "Оброблення предметів у Жорновах", + "create.ponder.millstone.text_1": "Жорнова обробляють предмети, перемелюючи їх", + "create.ponder.millstone.text_2": "Їх можна запустити за допомогою шестірні з будь-якого боку", + "create.ponder.millstone.text_3": "Киньте чи внесіть предмети зверху", + "create.ponder.millstone.text_4": "Після деякого часу результат можна забрати за допомогою ПКМ", + "create.ponder.millstone.text_5": "Продукти також можна вивести автоматично", + + "create.ponder.nixie_tube.header": "Використання Газорозрядних індикаторів", + "create.ponder.nixie_tube.text_1": "При подачі редстоуна сигналу, Газорозрядні індикатори відобразять його силу.", + "create.ponder.nixie_tube.text_2": "За допомогою бірок, відредагованих на ковадлі, ви можете відобразити будь-який текст.", + "create.ponder.nixie_tube.text_3": "Натисніть ПКМ з барвником, щоб змінити колір їх дисплея", + + "create.ponder.piston_pole.header": "Подовжувачі Поршня", + "create.ponder.piston_pole.text_1": "Без приєднаних Подовжувачів, Механічний поршень не може рухатися", + "create.ponder.piston_pole.text_2": "Довжина стрижня, доданого до задньої частини, визначає Діапазон висування.", + + "create.ponder.portable_fluid_interface.header": "Обмін рідини", + "create.ponder.portable_fluid_interface.text_1": "Рідинні баки на штуковинах, що рухаються, не можуть бути доступні жодним трубам", + "create.ponder.portable_fluid_interface.text_2": "Цей інтерфейс може взаємодіяти з рідинними баками без необхідності зупиняти штуковину.", + "create.ponder.portable_fluid_interface.text_3": "Встановіть другий із проміжком в 1 або 2 блоки між ними", + "create.ponder.portable_fluid_interface.text_4": "Вони встановлять з'єднання, коли зустрінуться", + "create.ponder.portable_fluid_interface.text_5": "Поки вони з'єднані, стаціонарний інтерфейс буде ВСІ баки на штуковині", + "create.ponder.portable_fluid_interface.text_6": "Тепер можна закачати рідини...", + "create.ponder.portable_fluid_interface.text_7": "...або викачати їх із штуковини", + "create.ponder.portable_fluid_interface.text_8": "Якщо на якийсь час припиниться обмін вмістом – штуковина продовжить свій шлях", + + "create.ponder.portable_storage_interface.header": "Портативний інтерфейс зберігання на штуковинах", + "create.ponder.portable_storage_interface.text_1": "Інвентари на штуковинах, що рухаються, не можуть бути відкриті гравцями", + "create.ponder.portable_storage_interface.text_2": "Цей компонент може взаємодіяти зі сховищем без необхідності зупиняти штуковину.", + "create.ponder.portable_storage_interface.text_3": "Встановіть другий із проміжком в 1 або 2 блоки між ними", + "create.ponder.portable_storage_interface.text_4": "Коли вони проходять повз один одного, вони з'єднаються", + "create.ponder.portable_storage_interface.text_5": "Поки вони з'єднані, стаціонарний інтерфейс буде представляти ВСІ інвентарі на штуковині", + "create.ponder.portable_storage_interface.text_6": "Тепер можна покласти предмети...", + "create.ponder.portable_storage_interface.text_7": "...або вивести їх із штуковини", + "create.ponder.portable_storage_interface.text_8": "Якщо на якийсь час припиниться обмін предметами – штуковина продовжить свій шлях", + + "create.ponder.portable_storage_interface_redstone.header": "Управління редстоуном", + "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал запобігає включенню стаціонарного інтерфейсу", + + "create.ponder.powered_latch.header": "Управління сигналами за допомогою важеля живлення", + "create.ponder.powered_latch.text_1": "Живлюваний важіль - керований редстоуном важіль", + "create.ponder.powered_latch.text_2": "Сигнал позаду включає його", + "create.ponder.powered_latch.text_3": "Сигнали збоку назад вимикають його", + "create.ponder.powered_latch.text_4": "Живлені важелі можна перемикати і вручну", + + "create.ponder.powered_toggle_latch.header": "Управління сигналами за допомогою Важеля-перемикача.", + "create.ponder.powered_toggle_latch.text_1": "Живлюваний важіль-перемикач - важіль, що керується редстоуном", + "create.ponder.powered_toggle_latch.text_2": "Сигнали ззаду перемикають його стан", + "create.ponder.powered_toggle_latch.text_3": "...включають і знову вимикають", + "create.ponder.powered_toggle_latch.text_4": "Живлювані важелі-перемикачі також можна перемикати вручну", + + "create.ponder.pulse_repeater.header": "Управління сигналами за допомогою імпульсних повторювачів", + "create.ponder.pulse_repeater.text_1": "Імпульсні повторювачі вкоротять будь-який редстуон сигнал до одного імпульсу.", + + "create.ponder.radial_chassis.header": "Приєднання блоків за допомогою Радіальних шасі", + "create.ponder.radial_chassis.text_1": "Радіальне шасі з'єднуються з ідентичними блоками шасі до ряду", + "create.ponder.radial_chassis.text_2": "Коли один блок переміщається штуковиною, решта рухається з ним", + "create.ponder.radial_chassis.text_3": "Бічні грані Радіального шасі можна зробити липкими", + "create.ponder.radial_chassis.text_4": "Натисніть ще раз, щоб зробити всі інші грані липкими", + "create.ponder.radial_chassis.text_5": "ПКМ порожній рукою крадучись, щоб прибрати слиз", + "create.ponder.radial_chassis.text_6": "Коли блок знаходиться поруч із липкою гранню...", + "create.ponder.radial_chassis.text_7": "...він приєднає всі доступні блоки в межах радіусу на цьому шарі", + "create.ponder.radial_chassis.text_8": "За допомогою ключа можна вказати точний радіус для цього шасі", + "create.ponder.radial_chassis.text_9": "Блоки не досягнуті жодною липкою гранню не прикріпляться", + + "create.ponder.redstone_contact.header": "Редстоун контакти", + "create.ponder.redstone_contact.text_1": "Контакти редстоун сигналу спрямовані один на одного випромінюватимуть редстоун сигнал", + "create.ponder.redstone_contact.text_2": "Також застосовно, коли один з них - частина штуковини, що рухається.", + + "create.ponder.redstone_link.header": "Використання бездротового передавача редстоун сигналу", + "create.ponder.redstone_link.text_1": "Бездротові передавачі редстоун сигналу можуть передавати редстоун сигнал без проводів", + "create.ponder.redstone_link.text_2": "ПКМ крадучись, щоб переключити режим приймача", + "create.ponder.redstone_link.text_3": "ПКМ ключем зробить те саме", + "create.ponder.redstone_link.text_4": "Приймачі випускають редстоун сигнал передавачів у 128 блоках", + "create.ponder.redstone_link.text_5": "Покладіть предмети у два слоти, щоб вказати частоту", + "create.ponder.redstone_link.text_6": "Передавачі лише однієї частоти можуть повідомлятись", + + "create.ponder.rope_pulley.header": "Переміщення структур за допомогою Лебідки", + "create.ponder.rope_pulley.text_1": "Лебідки можуть рухати блоки вертикально при подачі обертання", + "create.ponder.rope_pulley.text_2": "Напрямок та швидкість руху залежать від вихідного обертання", + + "create.ponder.rope_pulley_attachment.header": "Переміщення Лебідок, як частин штуковини", + "create.ponder.rope_pulley_attachment.text_1": "Коли лебідки переміщуються штуковиною...", + "create.ponder.rope_pulley_attachment.text_2": "...їхня приєднана структура рухається з ними", + "create.ponder.rope_pulley_attachment.text_3": "Враховуйте, що лебідки можна рухати тільки доки вони простоюють", + + "create.ponder.rope_pulley_modes.header": "Режими руху Лебідки", + "create.ponder.rope_pulley_modes.text_1": "Коли лебідка зупиняється, зрушена структура назад стає блоками", + "create.ponder.rope_pulley_modes.text_2": "Можна налаштувати її так, щоб структура ніколи не ставала блоками або лише на початковій позиції", + + "create.ponder.rotation_speed_controller.header": "Використання Регулятора швидкості обертання", + "create.ponder.rotation_speed_controller.text_1": "Регулятори шв. обертання передають обертання від своїх осей на Велику шестерню вище за них", + "create.ponder.rotation_speed_controller.text_2": "Можна налаштувати швидкість, що передається за допомогою прокручування по відповідному місцю збоку", + + "create.ponder.sail.header": "Складання Млинів за допомогою вітрил.", + "create.ponder.sail.text_1": "Вітрила - зручні блоки для створення млинів", + "create.ponder.sail.text_2": "Вони будуть прикріплюватися до блоків та один до одного без використання суперклею чи блоків шасі.", + "create.ponder.sail.text_3": "ПКМ барвником, щоб пофарбувати їх", + "create.ponder.sail.text_4": "ПКМ ножицями, щоб перетворити їх знову на раму", + + "create.ponder.sail_frame.header": "Складання Млинів за допомогою Рам вітрил.", + "create.ponder.sail_frame.text_1": "Рами вітрил - зручні блоки для створення млинів", + "create.ponder.sail_frame.text_2": "Вони будуть прикріплюватися до блоків та один до одного без використання суперклею чи блоків шасі.", + + "create.ponder.sequenced_gearshift.header": "Керування швидкістю обертання за допомогою Послідовного перемикача передач", + "create.ponder.sequenced_gearshift.text_1": "Посл. перем. передач передає обертання за тимчасовим списком інструкцій", + "create.ponder.sequenced_gearshift.text_2": "ПКМ, щоб відкрити інтерфейс налаштування", + "create.ponder.sequenced_gearshift.text_3": "При отриманні Редстоуна сигналу, він почне виконувати задані інструкції", + "create.ponder.sequenced_gearshift.text_4": "По завершенню він чекатиме наступного Редстоуна сигналу і почне спочатку", + "create.ponder.sequenced_gearshift.text_5": "Редстоун компаратор можна використовувати для зчитування прогресу", + + "create.ponder.shaft.header": "Передача обертання за допомогою Валів", + "create.ponder.shaft.text_1": "Вали передають обертання прямою", + + "create.ponder.shaft_casing.header": "Обрамлення Валів", + "create.ponder.shaft_casing.text_1": "Латунний або андезитовий корпус можна використовувати для декорації валів.", + + "create.ponder.smart_chute.header": "Фільтрації предметів за допомогою Розумних жолобів", + "create.ponder.smart_chute.text_1": "Розумні жолоби - вертикальні жолоби з додатковим контролем", + "create.ponder.smart_chute.text_2": "Предмети у слоті фільтра уточнюють, що вони можуть забирати та передавати", + "create.ponder.smart_chute.text_3": "Використовуйте Колесо Миші для уточнення розміру стака, що забирається.", + "create.ponder.smart_chute.text_4": "Редстоун сигнал вимикає їх", + + "create.ponder.smart_pipe.header": "Управління рідинним потоком за допомогою Розумних труб", + "create.ponder.smart_pipe.text_1": "Розумні труби можуть допомогти керувати потоками за типами рідин", + "create.ponder.smart_pipe.text_2": "Розміщені безпосередньо біля джерела, вони можуть вказувати тип видобутої рідини", + "create.ponder.smart_pipe.text_3": "Просто натисніть ПКМ на слоті фільтра з будь-яким предметом, що містить потрібну рідину", + "create.ponder.smart_pipe.text_4": "І при розміщенні глибше по мережі труб розумні труби пропускатимуть лише відповідні рідини.", + + "create.ponder.speedometer.header": "Моніторинг Кінетичної інформації за допомогою Спідометра", + "create.ponder.speedometer.text_1": "Спідометри відображають поточну швидкість приєднаних компонентів", + "create.ponder.speedometer.text_2": "При носінні Інженерних окулярів гравець може отримати більш повну інформацію від приладу", + "create.ponder.speedometer.text_3": "Компаратори можуть випромінювати аналоговий Редстоун сигнал щодо вимірювань спідометра", + + "create.ponder.spout_filling.header": "Наповнення предметів за допомогою дозатора", + "create.ponder.spout_filling.text_1": "Дозатор може заповнювати відповідні предмети, розташовані під ним.", + "create.ponder.spout_filling.text_2": "До вмісту дозатора неможливо отримати доступ вручну.", + "create.ponder.spout_filling.text_3": "Натомість можна використовувати труби для подачі в нього рідин", + "create.ponder.spout_filling.text_4": "Наповнювані предмети можуть бути розміщені на депо під дозатором", + "create.ponder.spout_filling.text_5": "Коли предмети подаються конвеєром...", + "create.ponder.spout_filling.text_6": "Дозатор буде утримувати та обробляти їх автоматично", + + "create.ponder.stabilized_bearings.header": "Стабілізація Штуковин", + "create.ponder.stabilized_bearings.text_1": "Коли Механічні підшипники є частиною структури, що рухається...", + "create.ponder.stabilized_bearings.text_2": "...вони намагатимуться триматися рівно", + "create.ponder.stabilized_bearings.text_3": "Знову ж таки, підшипники приєднують блоки перед ними", + "create.ponder.stabilized_bearings.text_4": "І в результаті ціла підструктура триматиметься рівно", + + "create.ponder.sticker.header": "Прикріплення блоків за допомогою Липучки", + "create.ponder.sticker.text_1": "Липучки ідеально підходять для Редстоун-керованого приєднання блоків", + "create.ponder.sticker.text_2": "При отриманні сигналу вони перемикають свій стан", + "create.ponder.sticker.text_3": "Якщо він тепер рухається у штуковині, то блок рухатиметься з ним", + "create.ponder.sticker.text_4": "При повторному перемиканні блок більше не буде прикріплено", + + "create.ponder.stressometer.header": "Моніторинг кінетичної інформації за допомогою Стресометра", + "create.ponder.stressometer.text_1": "Стресометр відображає поточне допустиме навантаження приєднаної кінетичної мережі", + "create.ponder.stressometer.text_2": "При носінні Інженерних окулярів гравець може отримати більш повну інформацію від приладу", + "create.ponder.stressometer.text_3": "Компаратори можуть випускати аналоговий редстоун сигнал щодо вимірювань стресометра", + + "create.ponder.super_glue.header": "Приєднання блоків за допомогою Суперклею", + "create.ponder.super_glue.text_1": "Суперклей можна використовувати між двома будь-якими блоками", + "create.ponder.super_glue.text_2": "Скріплені блоки рухатимуться разом при складанні в штуковину", + "create.ponder.super_glue.text_3": "Коли ви тримаєте суперклей у другій руці...", + "create.ponder.super_glue.text_4": "...додані блоки будуть відразу приклеєні до грані, на яку вони були поставлені", + "create.ponder.super_glue.text_5": "Суперклей можна видалити лівим кліком", + + "create.ponder.valve_handle.header": "Генерації сили обертання за допомогою Вентилів", + "create.ponder.valve_handle.text_1": "Гравці можуть використовувати вентилі для застосування сили обертання вручну", + "create.ponder.valve_handle.text_2": "Тримайте ПКМ для обертання його проти Годинникової стрілки", + "create.ponder.valve_handle.text_3": "Швидкість, що передається ними, повільна і точна", + "create.ponder.valve_handle.text_4": "Тримайте ПКМ крадькома для обертання його за Годинниковою стрілкою", + "create.ponder.valve_handle.text_5": "Вентилі можна фарбувати в естетичних цілях", + + "create.ponder.valve_pipe.header": "Управління потоком рідини за допомогою вентилів", + "create.ponder.valve_pipe.text_1": "Рідинні вентилі допомагають контролювати поширення рідин по мережах труб", + "create.ponder.valve_pipe.text_2": "Їх вхідний вал контролює, чи дозволено подачу рідини в даний момент.", + "create.ponder.valve_pipe.text_3": "При обертанні в напрямку відкриття клапан відкривається", + "create.ponder.valve_pipe.text_4": "Його можна знову закрити, змінивши напрямок вхідного обертання", + + "create.ponder.water_wheel.header": "Генерації сили обертання за допомогою Водяних коліс", + "create.ponder.water_wheel.text_1": "Водяні колеса беруть силу сусідніх потоків води", + "create.ponder.water_wheel.text_2": "Чим більше сторін запитано, тим швидше обертатиметься Водяне колесо", + "create.ponder.water_wheel.text_3": "Лопаті колеса повинні бути спрямовані проти течії", + "create.ponder.water_wheel.text_4": "Спрямована в протилежний бік, вона не буде такою ж ефективною", + + "create.ponder.weighted_ejector.header": "Використання Зважених катапульт", + "create.ponder.weighted_ejector.text_1": "ПКМ крадучись і тримаючи катапульту, щоб вибрати місце мети", + "create.ponder.weighted_ejector.text_10": "Тепер вона обмежена цим розміром стака і активуватиметься лише тоді, коли утримуваний стак досягне цієї кількості.", + "create.ponder.weighted_ejector.text_11": "Інші сутності, вставши на катапульту, завжди активуватимуть її", + "create.ponder.weighted_ejector.text_2": "Встановлена катапульта запускатиме об'єкти до зазначеного місця", + "create.ponder.weighted_ejector.text_3": "Відповідна мета може бути на будь-якій дистанції та висоті в радіусі", + "create.ponder.weighted_ejector.text_4": "Однак вони не можуть бути збоку", + "create.ponder.weighted_ejector.text_5": "Якщо не було вибрано відповідної мети, вона цілитиметься в блок перед нею", + "create.ponder.weighted_ejector.text_6": "Надайте силу обертання, щоб зарядити її", + "create.ponder.weighted_ejector.text_7": "Встановлення предметів на катапульту викликають її спрацювання", + "create.ponder.weighted_ejector.text_8": "Якщо інвентар обраний метою, то катапульта чекатиме, доки у ньому з'явиться місце.", + "create.ponder.weighted_ejector.text_9": "За допомогою ключа можна налаштувати необхідний розмір стака", + + "create.ponder.weighted_ejector_redstone.header": "Управління Зваженими катапультами редстоуном", + "create.ponder.weighted_ejector_redstone.text_1": "При подачі редстоун сигналу катапульти не активуватимуться", + "create.ponder.weighted_ejector_redstone.text_2": "Крім того, спостерігачі можуть визначити, коли катапульти спрацьовують", + + "create.ponder.weighted_ejector_tunnel.header": "Поділ стаків предметів за допомогою Зважених катапульт", + "create.ponder.weighted_ejector_tunnel.text_1": "Об'єднані з Латунними тунелями катапульти можуть ділити стаки предметів за певною кількістю.", + "create.ponder.weighted_ejector_tunnel.text_2": "Спочатку налаштуйте латунний тунель на «Переважно найближче», щоб пріоритизувати вихід збоку", + "create.ponder.weighted_ejector_tunnel.text_3": "Розмір стака, встановлений на катапульті, тепер визначає кількість, що відокремлюється.", + "create.ponder.weighted_ejector_tunnel.text_4": "Поки що новий стак потрібної кількості лежить на бічному виході...", + "create.ponder.weighted_ejector_tunnel.text_5": "...залишок продовжить свій шлях", + + "create.ponder.windmill_source.header": "Генерації сили обертання за допомогою Підшипників вітряка", + "create.ponder.windmill_source.text_1": "Підшипники вітряного млина прикріплюються до блоків перед ними", + "create.ponder.windmill_source.text_2": "Якщо прикріплено достатньо парусоподібних блоків, він може стати млином", + "create.ponder.windmill_source.text_3": "Активований за допомогою ПКМ, Підшипник вітряного млина почне виробляти силу обертання", + "create.ponder.windmill_source.text_4": "Кількість вітрил визначає швидкість обертання", + "create.ponder.windmill_source.text_5": "Використовуйте ключ, щоб налаштувати напрямок обертання", + "create.ponder.windmill_source.text_6": "ПКМ по підшипнику у будь-який час, щоб зупинити його та відредагувати структуру", + + "create.ponder.windmill_structure.header": "Пристосування вітряка", + "create.ponder.windmill_structure.text_1": "Будь-яка споруда може вважатися дійсним вітряком, якщо вона містить принаймні 8 вітрильних блоків.", + + "_": "Дякую, що перекладаєте Create!" + +} From 3aec03f5c68eaee5378d9e979ac445e80c1437bb Mon Sep 17 00:00:00 2001 From: CKenJa <41111170+CKenJa@users.noreply.github.com> Date: Sat, 13 Aug 2022 21:41:16 +0900 Subject: [PATCH 17/32] Updates to ja_jp.json by CKenJa (#3573) --- .../resources/assets/create/lang/ja_jp.json | 1348 ++++++++++++----- 1 file changed, 964 insertions(+), 384 deletions(-) diff --git a/src/main/resources/assets/create/lang/ja_jp.json b/src/main/resources/assets/create/lang/ja_jp.json index 79d8d9ed9..bc351fafa 100644 --- a/src/main/resources/assets/create/lang/ja_jp.json +++ b/src/main/resources/assets/create/lang/ja_jp.json @@ -13,6 +13,7 @@ "block.create.andesite_encased_large_cogwheel": "安山岩ケース入り大きな歯車", "block.create.andesite_encased_shaft": "安山岩ケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", + "block.create.andesite_ladder": "安山岩のはしご", "block.create.andesite_pillar": "安山岩の柱", "block.create.andesite_tunnel": "安山岩トンネル", "block.create.asurine": "瑠璃岩", @@ -39,6 +40,7 @@ "block.create.brass_encased_large_cogwheel": "真鍮ケース入り大きな歯車", "block.create.brass_encased_shaft": "真鍮ケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", + "block.create.brass_ladder": "真鍮のはしご", "block.create.brass_tunnel": "真鍮トンネル", "block.create.brown_nixie_tube": "茶色のニキシー管", "block.create.brown_sail": "茶色の帆", @@ -54,14 +56,16 @@ "block.create.cogwheel": "歯車", "block.create.content_observer": "コンテンツオブザーバー", "block.create.controller_rail": "コントローラーレール", + "block.create.controls": "列車運転台", "block.create.copper_backtank": "銅のバックタンク", "block.create.copper_casing": "銅ケーシング", + "block.create.copper_ladder": "銅のはしご", "block.create.copper_shingle_slab": "銅の屋根板のハーフブロック", "block.create.copper_shingle_stairs": "銅の屋根板の階段", "block.create.copper_shingles": "銅の屋根板", "block.create.copper_tile_slab": "銅タイルのハーフブロック", "block.create.copper_tile_stairs": "銅タイルの階段", - "block.create.copper_tiles": "銅のタイル", + "block.create.copper_tiles": "銅タイル", "block.create.copper_valve_handle": "銅のバルブハンドル", "block.create.creative_crate": "クリエティブクレート", "block.create.creative_fluid_tank": "クリエイティブ液体タンク", @@ -197,6 +201,8 @@ "block.create.deployer": "デプロイヤー", "block.create.depot": "デポ", "block.create.diorite_pillar": "閃緑岩の柱", + "block.create.display_board": "ディスプレイボード", + "block.create.display_link": "ディスプレイリンク", "block.create.dripstone_pillar": "鍾乳石の柱", "block.create.encased_chain_drive": "ケース入りチェーンドライブ", "block.create.encased_fan": "ケース入りファン", @@ -207,13 +213,15 @@ "block.create.exposed_copper_tile_slab": "風化した銅タイルのハーフブロック", "block.create.exposed_copper_tile_stairs": "風化した銅タイルの階段", "block.create.exposed_copper_tiles": "風化した銅タイル", + "block.create.fake_track": "地図用線路マーカー", "block.create.fluid_pipe": "液体パイプ", "block.create.fluid_tank": "液体タンク", "block.create.fluid_valve": "液体バルブ", "block.create.flywheel": "弾み車", - "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス板窓", - "block.create.furnace_engine": "かまどエンジン", + "block.create.framed_glass": "縁付きガラス", + "block.create.framed_glass_door": "縁付きガラスのドア", + "block.create.framed_glass_pane": "縁付きガラス板", + "block.create.framed_glass_trapdoor": "縁付きガラスのトラップドア", "block.create.gantry_carriage": "ガントリーキャリッジ", "block.create.gantry_shaft": "ガントリーシャフト", "block.create.gearbox": "ギアボックス", @@ -240,6 +248,7 @@ "block.create.item_vault": "アイテム保管庫", "block.create.jungle_window": "ジャングルの窓", "block.create.jungle_window_pane": "ジャングルの板窓", + "block.create.large_bogey": "大きな台車", "block.create.large_cogwheel": "大きな歯車", "block.create.layered_andesite": "安山岩の組石", "block.create.layered_asurine": "瑠璃岩の組石", @@ -293,6 +302,8 @@ "block.create.mechanical_pump": "メカニカルポンプ", "block.create.mechanical_saw": "メカニカルソー", "block.create.metal_bracket": "金属ブラケット", + "block.create.metal_girder": "鉄骨", + "block.create.metal_girder_encased_shaft": "鉄骨入りシャフト", "block.create.millstone": "石臼", "block.create.minecart_anchor": "トロッコアンカー", "block.create.mysterious_cuckoo_clock": "鳩時計", @@ -307,7 +318,7 @@ "block.create.orange_toolbox": "橙色の工具箱", "block.create.orange_valve_handle": "橙色のバルブハンドル", "block.create.ornate_iron_window": "鉄の装飾ガラス", - "block.create.ornate_iron_window_pane": "鉄の装飾板ガラス", + "block.create.ornate_iron_window_pane": "鉄の装飾ガラス板", "block.create.oxidized_copper_shingle_slab": "酸化した銅の屋根板のハーフブロック", "block.create.oxidized_copper_shingle_stairs": "酸化した銅の屋根板の階段", "block.create.oxidized_copper_shingles": "酸化した銅の屋根板", @@ -318,9 +329,10 @@ "block.create.pink_nixie_tube": "桃色のニキシー管", "block.create.pink_sail": "桃色の帆", "block.create.pink_seat": "桃色のシート", - "block.create.pink_toolbox": "桃色の", + "block.create.pink_toolbox": "桃色の工具箱", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", + "block.create.placard": "プラカード", "block.create.polished_cut_andesite": "磨かれた安山岩の切石", "block.create.polished_cut_andesite_slab": "磨かれた安山岩の切石のハーフブロック", "block.create.polished_cut_andesite_stairs": "磨かれた安山岩の切石の階段", @@ -380,6 +392,7 @@ "block.create.portable_fluid_interface": "ポータブル液体インターフェース", "block.create.portable_storage_interface": "ポータブルストーレジインターフェース", "block.create.powered_latch": "パワードラッチ", + "block.create.powered_shaft": "パワードシャフト", "block.create.powered_toggle_latch": "パワードトグルラッチ", "block.create.pulley_magnet": "プーリーマグネット", "block.create.pulse_extender": "パルスエクステンダー", @@ -390,6 +403,7 @@ "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", + "block.create.railway_casing": "鉄道用ケーシング", "block.create.raw_zinc_block": "亜鉛の原石ブロック", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", @@ -401,6 +415,9 @@ "block.create.refined_radiance_casing": "光輝ケーシング", "block.create.rope": "ロープ", "block.create.rope_pulley": "ローププーリー", + "block.create.rose_quartz_block": "ローズクォーツブロック", + "block.create.rose_quartz_lamp": "ローズクォーツランプ", + "block.create.rose_quartz_tiles": "ローズクォーツタイル", "block.create.rotation_speed_controller": "回転速度コントローラー", "block.create.sail_frame": "帆フレーム", "block.create.schematic_table": "概略図台", @@ -421,6 +438,7 @@ "block.create.small_asurine_brick_stairs": "小さな瑠璃岩レンガの階段", "block.create.small_asurine_brick_wall": "小さな瑠璃岩レンガの塀", "block.create.small_asurine_bricks": "小さな瑠璃岩レンガ", + "block.create.small_bogey": "小さな台車", "block.create.small_calcite_brick_slab": "小さな方解石レンガのハーフブロック", "block.create.small_calcite_brick_stairs": "小さな方解石レンガの階段", "block.create.small_calcite_brick_wall": "小さな方解石レンガの塀", @@ -453,6 +471,7 @@ "block.create.small_ochrum_brick_stairs": "小さな黄土岩レンガの階段", "block.create.small_ochrum_brick_wall": "小さな黄土岩レンガの塀", "block.create.small_ochrum_bricks": "小さな黄土岩レンガ", + "block.create.small_rose_quartz_tiles": "小さなローズクォーツタイル", "block.create.small_scorchia_brick_slab": "小さなスコーチアレンガのハーフブロック", "block.create.small_scorchia_brick_stairs": "小さなスコーチアレンガの階段", "block.create.small_scorchia_brick_wall": "小さなスコーチアレンガの塀", @@ -475,12 +494,21 @@ "block.create.spout": "アイテム注液口", "block.create.spruce_window": "マツの窓", "block.create.spruce_window_pane": "マツの板窓", + "block.create.steam_engine": "蒸気エンジン", + "block.create.steam_whistle": "汽笛", + "block.create.steam_whistle_extension": "延長汽笛", "block.create.sticker": "スティッカー", "block.create.sticky_mechanical_piston": "メカニカル粘着ピストン", "block.create.stockpile_switch": "在庫スイッチ", "block.create.stressometer": "応力メーター", "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイル板ガラス", + "block.create.tiled_glass_pane": "タイルガラス板", + "block.create.track": "鉄道用線路", + "block.create.track_observer": "列車検知装置", + "block.create.track_signal": "鉄道信号機", + "block.create.track_station": "鉄道駅ブロック", + "block.create.train_door": "鉄道用ドア", + "block.create.train_trapdoor": "鉄道用トラップドア", "block.create.tuff_pillar": "凝灰岩の柱", "block.create.turntable": "ターンテーブル", "block.create.veridium": "翡翠岩", @@ -539,6 +567,7 @@ "enchantment.create.capacity": "容量増加", "enchantment.create.potato_recovery": "ポテト回収", + "entity.create.carriage_contraption": "鉄道からくり", "entity.create.contraption": "からくり", "entity.create.crafting_blueprint": "クラフトブループリント", "entity.create.gantry_contraption": "ガントリーからくり", @@ -563,10 +592,11 @@ "item.create.builders_tea": "建築家のお茶", "item.create.chest_minecart_contraption": "チェスト付きからくりトロッコ", "item.create.chocolate_bucket": "チョコレート入りバケツ", - "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", + "item.create.chocolate_glazed_berries": "チョコレートベリー", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "ネザーラックの粉", "item.create.copper_backtank": "銅のバックタンク", + "item.create.copper_backtank_placeable": "設置可能な銅のバックタンク", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", @@ -600,9 +630,8 @@ "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", "item.create.honey_bucket": "ハチミツ入りバケツ", "item.create.honeyed_apple": "リンゴのハチミツかけ", - "item.create.incomplete_cogwheel": "組み立て中の歯車", - "item.create.incomplete_large_cogwheel": "組み立て中の大きな歯車", "item.create.incomplete_precision_mechanism": "組み立て中の精密機構", + "item.create.incomplete_track": "組み立て中の鉄道用線路", "item.create.iron_sheet": "鉄板", "item.create.linked_controller": "リンクコントローラー", "item.create.minecart_contraption": "からくりトロッコ", @@ -617,12 +646,15 @@ "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", "item.create.sand_paper": "紙やすり", + "item.create.schedule": "鉄道時刻表", "item.create.schematic": "概略図", "item.create.schematic_and_quill": "概略図と羽根ペン", "item.create.shadow_steel": "シャドウスチール", + "item.create.sturdy_sheet": "頑丈な板", "item.create.super_glue": "超粘着剤", "item.create.sweet_roll": "スイートロール", "item.create.tree_fertilizer": "樹木の肥料", + "item.create.unprocessed_obsidian_sheet": "未処理の黒曜石板", "item.create.vertical_gearbox": "垂直ギアボックス", "item.create.wand_of_symmetry": "対称の杖", "item.create.wheat_flour": "小麦粉", @@ -635,174 +667,215 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Createへようこそ", - "advancement.create.root.desc": "素晴らしいからくり仕掛けを作る時間だ!", - "advancement.create.andesite_alloy": "大いに押韻", - "advancement.create.andesite_alloy.desc": "Createの素材には変な名前がついています、安山岩合金もその一つです", - "advancement.create.its_alive": "こいつ…動くぞ!", - "advancement.create.its_alive.desc": "機械の回転を初めて見る", - "advancement.create.shifting_gears": "ギアシフト!", - "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", - "advancement.create.overstressed": "応力超過", - "advancement.create.overstressed.desc": "応力の限界を肌で感じる", + "advancement.create.root.desc": "素晴らしいからくり仕掛け作りの時間だ!", + "advancement.create.andesite_alloy": "頑丈な岩", + "advancement.create.andesite_alloy.desc": "Createで最も重要な素材、安山岩合金を手に入れる。", + "advancement.create.andesite_casing": "安山岩の時代", + "advancement.create.andesite_casing.desc": "安山岩合金を木材に使って、基本の機械のケーシングを作る", + "advancement.create.mechanical_press": "ドン!", + "advancement.create.mechanical_press.desc": "メカニカルプレスで板を作る", + "advancement.create.encased_fan": "風のタクト", + "advancement.create.encased_fan.desc": "ケース入りファンを設置して稼働させる", + "advancement.create.fan_processing": "パーティクル加工", + "advancement.create.fan_processing.desc": "ケース入りファンを使って素材を加工する", + "advancement.create.saw_processing": "工房で最も恐ろしい", + "advancement.create.saw_processing.desc": "メカニカルソーを上向きに置いて素材を加工する", + "advancement.create.compacting": "小型化", + "advancement.create.compacting.desc": "プレスと鉢でより少ないアイテムからよりたくさんのアイテムを作る", "advancement.create.belt": "ベルトコンブア", "advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ", - "advancement.create.tunnel": "隠れろ!", - "advancement.create.tunnel.desc": "メカニカルベルトをトンネルで飾る", - "advancement.create.splitter_tunnel": "困難は分割せよ", - "advancement.create.splitter_tunnel.desc": "真鍮トンネルで仕分け機を作る", - "advancement.create.chute": "転がり落ちる", + "advancement.create.funnel": "空港の美学", + "advancement.create.funnel.desc": "ファンネルで収納ブロックからアイテムを入出力する", + "advancement.create.chute": "垂直輸送", "advancement.create.chute.desc": "メカニカルベルトの垂直バージョン、シュートを設置する", - "advancement.create.upward_chute": "机上の空論", - "advancement.create.upward_chute.desc": "落ちているアイテムがファンで駆動するシュートに飛んでいく様子を見る", - "advancement.create.belt_funnel": "ファンネルのひらひら", - "advancement.create.belt_funnel.desc": "ベルトやデポなどの上に横向きのファンネルを置き、特殊形態にする", + "advancement.create.mechanical_mixer": "めちゃくちゃにしてやる", + "advancement.create.mechanical_mixer.desc": "材料をメカニカルミキサーで混ぜる", + "advancement.create.burner": "生きてる暖炉", + "advancement.create.burner.desc": "ブレイズバーナーを入手する", + "advancement.create.water_wheel": "水力を使おう", + "advancement.create.water_wheel.desc": "水車を置いて、回転させる", + "advancement.create.windmill": "そよ風", + "advancement.create.windmill.desc": "風車を組み立てて、回転させる", + "advancement.create.shifting_gears": "ギアシフト", + "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせれば、回転速度を変えられる", + "advancement.create.millstone": "身を粉にして働く", + "advancement.create.millstone.desc": "石臼を置いて、素材をすり潰す", + "advancement.create.super_glue": "領域展開", + "advancement.create.super_glue.desc": "複数のブロックをまとめて接着する", + "advancement.create.contraption_actors": "動きの使い方", + "advancement.create.contraption_actors.desc": "ドリルか、ソー、ハーベスターのいずれかがついたからくりを作る", + "advancement.create.portable_storage_interface": "ドライブスルー", + "advancement.create.portable_storage_interface.desc": "ポータブルストレージインターフェースでからくりからアイテムを搬出入する", + "advancement.create.wrench_goggles": "装備支給", + "advancement.create.wrench_goggles.desc": "エンジニアのゴーグルとレンチを装備する", + "advancement.create.stressometer": "必要な応力は?", + "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", + "advancement.create.cuckoo_clock": "今何時?", + "advancement.create.cuckoo_clock.desc": "鳩時計が就寝の時間を告げるのを目撃する", + "advancement.create.windmill_maxed": "雄風", + "advancement.create.windmill_maxed.desc": "最強の風車を組み立てる", + "advancement.create.ejector_maxed": "飛び込みチャンピオン", + "advancement.create.ejector_maxed.desc": "重量射出機で30ブロック以上飛ぶ", + "advancement.create.pulley_maxed": "ロープは続くよどこまでも", + "advancement.create.pulley_maxed.desc": "ローププーリーを200ブロック以上伸ばす", + "advancement.create.cart_pickup": "力ずく", + "advancement.create.cart_pickup.desc": "200ブロック以上が取り付けられたからくりトロッコを回収する", + "advancement.create.anvil_plough": "鍛冶屋の大砲", + "advancement.create.anvil_plough.desc": "メカニカルプラウで金床を打ち上げる", + "advancement.create.lava_wheel_00000": "マグマ車", + "advancement.create.lava_wheel_00000.desc": "こんなの動くべきじゃない§7\n(隠し進捗)", + "advancement.create.hand_crank_000": "トレーニングの時間", + "advancement.create.hand_crank_000.desc": "疲れ果て、完全に空腹になるまでハンドクランクを回す§7\n(隠し進捗)", "advancement.create.belt_funnel_kiss": "コウノトリの羽ばたき", "advancement.create.belt_funnel_kiss.desc": "2つのベルトに載せたファンネルにキスをさせる", - "advancement.create.fan": "メカニカルエアベンダー", - "advancement.create.fan.desc": "ケース入りファンから出る風に乗る", - "advancement.create.fan_lava": "地熱ファンヒーター", - "advancement.create.fan_lava.desc": "アイテムを精錬する熱風に巻き込まれる", - "advancement.create.fan_water": "風変わりな洗濯機", - "advancement.create.fan_water.desc": "アイテムを洗浄する涼風に巻き込まれる", - "advancement.create.fan_smoke": "メカニカルふいご", - "advancement.create.fan_smoke.desc": "アイテムを燻製する暖風に巻き込まれる", - "advancement.create.wrench": "便利な設定", - "advancement.create.wrench.desc": "からくり作りに役立つレンチを作る", - "advancement.create.goggles": "応力をこの目で", - "advancement.create.goggles.desc": "機械からより多くの情報を手に入れるために、エンジニアのゴーグルを作る", - "advancement.create.speedometer": "正確な速度は?", - "advancement.create.speedometer.desc": "動作中の回転速度メーターをゴーグルで見て、正確な値を読み取る", - "advancement.create.stressometer": "正確な応力は?", - "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", - "advancement.create.aesthetics": "装飾ブーム!", - "advancement.create.aesthetics.desc": "シャフト、パイプ、歯車に木製ブラケットや金属ブラケットを取り付ける", - "advancement.create.reinforced": "補強ブーム!", - "advancement.create.reinforced.desc": "シャフト、パイプ、メカニカルベルトにケーシングブロックを取り付ける", - "advancement.create.water_wheel": "水力を使おう", - "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", - "advancement.create.chocolate_wheel": "味わい深い原動機", - "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "溶岩車", - "advancement.create.lava_wheel.desc": "こんなはずじゃなかった", - "advancement.create.cuckoo": "今がその時だ", - "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", - "advancement.create.millstone": "ポケットクラッシャー", - "advancement.create.millstone.desc": "石臼を置いて、回転させる", - "advancement.create.windmill": "微風", - "advancement.create.windmill.desc": "風車を組み立てる", - "advancement.create.maxed_windmill": "雄風", - "advancement.create.maxed_windmill.desc": "最強の風車を組み立てる", - "advancement.create.andesite_casing": "安山岩の時代", - "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", - "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、稼働させる", - "advancement.create.press": "プレスで「ドン!」", - "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", - "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", - "advancement.create.polished_rose_quartz.desc": "紙やすりでローズクォーツをピカピカになるまで磨く", - "advancement.create.electron_tube": "ピッポッパ", - "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", - "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを設置して、稼働させる", - "advancement.create.basin": "お茶碗の作法", - "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "攪拌せよ", - "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", - "advancement.create.blaze_burner": "生き生きとしたインテリア", - "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", - "advancement.create.compact": "自動圧縮", - "advancement.create.compact.desc": "鉢の上にメカニカルプレスを設置して、素材を圧縮する", - "advancement.create.brass": "本物の合金", - "advancement.create.brass.desc": "砕いた銅と砕いた亜鉛を使って真鍮を作る", - "advancement.create.brass_casing": "真鍮の時代", - "advancement.create.brass_casing.desc": "新しく入手した真鍮と木材を使って、次世代のケーシングを作る", + "advancement.create.stressometer_maxed": "無駄のない動き", + "advancement.create.stressometer_maxed.desc": "応力メーターがちょうど100%を指すのを読み取る§7\n(隠し進捗)", + "advancement.create.copper": "もっと頑丈な岩", + "advancement.create.copper.desc": "液体を取り扱うために、銅を貯めておく", "advancement.create.copper_casing": "銅の時代", - "advancement.create.copper_casing.desc": "銅と木材を使って銅ケーシングを作る", + "advancement.create.copper_casing.desc": "銅のインゴットを木材に使って防水の機械のケーシングを作る", "advancement.create.spout": "ぱしゃぱしゃ", "advancement.create.spout.desc": "アイテム注液口が液体を充填している様子を見る", - "advancement.create.spout_potion": "世界のお薬屋さん", - "advancement.create.spout_potion.desc": "アイテム注液口がポーションを瓶に詰めているところを見る", - "advancement.create.chocolate": "夢の世界", - "advancement.create.chocolate.desc": "溶けたチョコレート入りバケツを手に入れる", - "advancement.create.item_drain": "バケツをひっくり返したような", - "advancement.create.item_drain.desc": "アイテム排液口が液体アイテムを空にしている様子を見る", - "advancement.create.chained_item_drain": "アイテムころりん", - "advancement.create.chained_item_drain.desc": "自動化したアイテム排液口の上を転がるアイテムを見る", + "advancement.create.drain": "回転式排液機", + "advancement.create.drain.desc": "液体が入ったアイテムがアイテム排液口によって空になる様子を見る", + "advancement.create.steam_engine": "発電所", + "advancement.create.steam_engine.desc": "蒸気エンジンでトルクを生み出す", + "advancement.create.steam_whistle": "天使の歌声", + "advancement.create.steam_whistle.desc": "汽笛を稼働させる", + "advancement.create.backtank": "圧力、お持ち帰りで!", + "advancement.create.backtank.desc": "銅のバックタンクを作り、圧縮空気を溜める", + "advancement.create.diving_suit": "深海に潜る準備", + "advancement.create.diving_suit.desc": "銅のバックタンクと潜水ヘルメットを装備し、水に飛び込む", + "advancement.create.mechanical_pump_0": "圧をかける", + "advancement.create.mechanical_pump_0.desc": "メカニカルポンプを設置して、稼働させる", "advancement.create.glass_pipe": "フロウ・スパイ", - "advancement.create.glass_pipe.desc": "まっすぐな液体パイプにレンチを使って、窓から通る液体を見る", - "advancement.create.pipe_collision": "流れを合流させるな!", - "advancement.create.pipe_collision.desc": "パイプの中で2つの液体がぶつかる様子を見よう", - "advancement.create.pipe_spill": "漏れてる!", - "advancement.create.pipe_spill.desc": "パイプの端を露出させて液体が吹き出しているところを見る", + "advancement.create.glass_pipe.desc": "液体が入ったパイプにレンチを使う", + "advancement.create.water_supply": "水たまり収集機", + "advancement.create.water_supply.desc": "パイプまたはポンプの端から、水を吸い込む", "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", - "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどに大量の水を吸引する", - "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどに大量の溶岩を吸引する", - "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどに大量の溶けたチョコレートを吸引する", - "advancement.create.crafter": "部品集結!", - "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", - "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", - "advancement.create.nixie_tube": "イカした看板", - "advancement.create.nixie_tube.desc": "ニキシー管を手に入れて、設置する", - "advancement.create.deployer": "突く、置く、殴る!", + "advancement.create.chocolate_bucket": "空想世界", + "advancement.create.chocolate_bucket.desc": "溶けたチョコレート入りバケツを手に入れる", + "advancement.create.honey_drain": "自動養蜂", + "advancement.create.honey_drain.desc": "パイプで養蜂箱やハチの巣からハチミツを吸う", + "advancement.create.hose_pulley_lava": "地球の蛇口", + "advancement.create.hose_pulley_lava.desc": "無限と言えるほどに広い溶岩湖から溶岩を汲み上げる", + "advancement.create.steam_engine_maxed": "全速前進だ!", + "advancement.create.steam_engine_maxed.desc": "ボイラーを最大レベルで稼働させる", + "advancement.create.foods": "バランスのとれたおやつ", + "advancement.create.foods.desc": "チョコレートベリー、リンゴのハチミツかけ、スイートロールを全て同じ注液口で作る", + "advancement.create.diving_suit_lava": "ストライダーと泳ごう", + "advancement.create.diving_suit_lava.desc": "銅の潜水具と共にマグマダイブしてみる§7\n(隠し進捗)", + "advancement.create.chained_drain": "うまく回ってます", + "advancement.create.chained_drain.desc": "並んだアイテム排液口の上をアイテムが通るのを見る§7\n(隠し進捗)", + "advancement.create.cross_streams": "液体を交差させるな!", + "advancement.create.cross_streams.desc": "液体ネットワークの中で2種類の液体が出会う様子を見る§7\n(隠し進捗)", + "advancement.create.pipe_organ": "パイプオルガン", + "advancement.create.pipe_organ.desc": "音程の違う12個の汽笛を1つの液体タンクに設置する§7\n(隠し進捗)", + "advancement.create.brass": "本物の合金", + "advancement.create.brass.desc": "銅と亜鉛のインゴットをブレイズ付きミキサーを使って真鍮を作る", + "advancement.create.brass_casing": "真鍮の時代", + "advancement.create.brass_casing.desc": "真鍮のインゴットを木材に使って、高度な機械のケーシングを作る。", + "advancement.create.rose_quartz": "ピンク色のダイヤモンド", + "advancement.create.rose_quartz.desc": "ローズクォーツを磨く", + "advancement.create.deployer": "人工知能", "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", - "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", - "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", - "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを弾み車に繋ぐ", - "advancement.create.overstress_flywheel": "ハイレベル応力", - "advancement.create.overstress_flywheel.desc": "かまどエンジンに応力超過をかける", "advancement.create.precision_mechanism": "手間暇かけた骨董品", "advancement.create.precision_mechanism.desc": "精密機構を組み立てる", + "advancement.create.speed_controller": "もう全部あいつ1人でいいんじゃないかな", + "advancement.create.speed_controller.desc": "回転速度コントローラーでからくりを微調整する", "advancement.create.mechanical_arm": "手が離せない!", - "advancement.create.mechanical_arm.desc": "搬入元と搬出先を設定したメカニカルアームを設置して稼働させ、あなたのために一生懸命働いている様子を見る", - "advancement.create.musical_arm": "お気に入りの曲を流して!", - "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", - "advancement.create.arm_many_targets": "整理整頓", - "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", - "advancement.create.arm_blaze_burner": "燃料補給", - "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", - "advancement.create.fist_bump": "グータッチだ、兄弟!", - "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる", + "advancement.create.mechanical_arm.desc": "メカニカルアームがはじめてアイテムを運ぶ様子を見る", + "advancement.create.mechanical_crafter": "自動組み立て", + "advancement.create.mechanical_crafter.desc": "メカニカルクラフターをいくつか置き、動力を供給する", "advancement.create.crushing_wheel": "巨大な一対", - "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", - "advancement.create.blaze_cake": "シュガー・ラッシュ", - "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.wand_of_symmetry": "輝く鏡", - "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", - "advancement.create.extendo_grip": "ビヨヨーン!", - "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", + "advancement.create.crushing_wheel.desc": "一組の破砕ホイールを設置して稼働させる", + "advancement.create.haunted_bell": "シャドーセンス", + "advancement.create.haunted_bell.desc": "憑りつかれた鐘を鳴らす", + "advancement.create.clockwork_bearing": "時計仕掛け", + "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", + "advancement.create.display_link": "ビッグデータ", + "advancement.create.display_link.desc": "ディスプレイリンクで情報を視覚化する", "advancement.create.potato_cannon": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", - "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", - "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", - "advancement.create.eob": "ベータ版はここまで", - "advancement.create.eob.desc": "今後のコンテンツにもご期待ください <3", + "advancement.create.extendo_grip": "ビヨヨーン!", + "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", + "advancement.create.linked_controller": "遠隔操作", + "advancement.create.linked_controller.desc": "リンクコントローラーから送信した信号をレッドストーンリンクに受信させる", + "advancement.create.arm_blaze_burner": "燃料補給マシーン", + "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", + "advancement.create.crusher_maxed_0000": "破砕の勢い", + "advancement.create.crusher_maxed_0000.desc": "破砕ホイールを最高速度で稼働させる", + "advancement.create.arm_many_targets": "整理整頓マシーン", + "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", + "advancement.create.potato_cannon_collide": "野菜花火", + "advancement.create.potato_cannon_collide.desc": "違う種類のポテトキャノンの弾同士をぶつける", + "advancement.create.self_deploying": "自動運転トロッコ", + "advancement.create.self_deploying.desc": "自分の前に線路を置くからくりトロッコを作る", + "advancement.create.fist_bump": "グータッチだ、兄弟!", + "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる§7\n(隠し進捗)", + "advancement.create.crafter_lazy_000": "苦肉の策", + "advancement.create.crafter_lazy_000.desc": "メカニカルクラフターを極端に遅く稼働させ、インフラ整備を先延ばしにする§7\n(隠し進捗)", + "advancement.create.extendo_grip_dual": "脱法リーチ", + "advancement.create.extendo_grip_dual.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる§7\n(隠し進捗)", + "advancement.create.musical_arm": "DJ メカニコ", + "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る§7\n(隠し進捗)", + "advancement.create.sturdy_sheet": "もっとも頑丈な岩", + "advancement.create.sturdy_sheet.desc": "黒曜石の粉を精製して頑丈な板を組み立てる", + "advancement.create.train_casing_00": "大交通時代", + "advancement.create.train_casing_00.desc": "頑丈な板をつかって鉄道用のケーシングを作る", + "advancement.create.train": "出発進行!", + "advancement.create.train.desc": "最初の列車を作る", + "advancement.create.conductor": "人材育成", + "advancement.create.conductor.desc": "時刻表で運転手に指示する", + "advancement.create.track_signal": "運行管理", + "advancement.create.track_signal.desc": "鉄道信号機を設置する", + "advancement.create.display_board_0": "ダイナミックな時刻表", + "advancement.create.display_board_0.desc": " ディスプレイリンクを使って、ディスプレイボードに列車の到着時間を表示させる", + "advancement.create.track_0": "新型ゲージ", + "advancement.create.track_0.desc": "鉄道用線路を手に入れる", + "advancement.create.train_whistle": "ポッポー!", + "advancement.create.train_whistle.desc": "汽笛を列車に組み込み、運転中に鳴らす", + "advancement.create.train_portal": "異次元通勤", + "advancement.create.train_portal.desc": "ネザーポータルを列車で通過する", + "advancement.create.track_crafting_factory": "線路工場", + "advancement.create.track_crafting_factory.desc": "同じメカニカルプレスで1000個以上の鉄道用線路を作る", + "advancement.create.long_bend": "超しなやか", + "advancement.create.long_bend.desc": "30ブロック以上の長さに曲がった線路を作る", + "advancement.create.long_train": "意欲的な取り組み", + "advancement.create.long_train.desc": "6両以上の編成で列車を作る", + "advancement.create.long_travel": "修学旅行", + "advancement.create.long_travel.desc": "列車で5000ブロック以上移動し、シートから降りる", + "advancement.create.train_roadkill": "轢き殺し", + "advancement.create.train_roadkill.desc": "列車で敵を轢く§7\n(隠し進捗)", + "advancement.create.red_signal": "運転の達人", + "advancement.create.red_signal.desc": "列車で赤信号を走る§7\n(隠し進捗)", + "advancement.create.train_crash": "ひどいおもてなし", + "advancement.create.train_crash.desc": "乗客として列車事故に遭遇する§7\n(隠し進捗)", + "advancement.create.train_crash_backwards": "盲点", + "advancement.create.train_crash_backwards.desc": "後ろ向きに走っている途中に他の列車と追突する§7\n(隠し進捗)", "_": "->------------------------] UI & Messages [------------------------<-", "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", + "itemGroup.create.palettes": "Create's 建築ブロック", "death.attack.create.crush": "%1$sは破砕ホイールによって処理された", "death.attack.create.crush.player": "%1$sは%2$sに破砕ホイールに投入された", "death.attack.create.fan_fire": "%1$sはケース入りファンによって燻製にされた", "death.attack.create.fan_fire.player": "%1$sは%2$sによって燻製にされた", - "death.attack.create.fan_lava": "%1$sはケース入りファンで精錬された", + "death.attack.create.fan_lava": "%1$sはケース入りファンで精錬された", "death.attack.create.fan_lava.player": "%1$sは%2$sによって熱風に投げ込まれた", "death.attack.create.mechanical_drill": "%1$sはメカニカルドリルに突き抜かれた", "death.attack.create.mechanical_drill.player": "%1$sは%2$sにドリルの目の前に投げ込まれた", "death.attack.create.mechanical_saw": "%1$sはメカニカルソーで半分にカットされた", "death.attack.create.mechanical_saw.player": "%1$sは%2$sによってメカニカルソーの回転する刃に投げ込まれた", "death.attack.create.potato_cannon": "%1$sは%2$sのポテトキャノンに撃ち抜かれた", - "death.attack.create.potato_cannon.item": "%1$sは%2$sの%3$sに撃た抜かれた", + "death.attack.create.potato_cannon.item": "%1$sは%2$sの%3$sに撃ち抜かれた", "death.attack.create.cuckoo_clock_explosion": "%1$sは改造された鳩時計に爆破された", - "death.attack.create.cuckoo_clock_explosion.player": "%1$sは何者かによって改造された鳩時計に爆破された", + "death.attack.create.cuckoo_clock_explosion.player": "%1$sは改造された鳩時計に爆破された", + "death.attack.create.run_over": "%1$sは%2$sに轢き殺された", "create.block.deployer.damage_source_name": "悪いデプロイヤー", "create.block.cart_assembler.invalid": "トロッコアセンブラはレールの上にのみ設置できます", @@ -811,7 +884,6 @@ "create.menu.configure": "設定...", "create.menu.ponder_index": "思案目次", "create.menu.only_ingame": "一時停止メニューで利用可能", - "create.menu.project_page": "プロジェクトページ", "create.menu.report_bugs": "バグ報告", "create.menu.support": "私たちを応援する", @@ -837,10 +909,12 @@ "create.recipe.automatic_shaped": "自動定形クラフト", "create.recipe.block_cutting": "自動石切", "create.recipe.wood_cutting": "自動製材", - "create.recipe.sandpaper_polishing": "紙やすりでの研磨", - "create.recipe.mystery_conversion": "神秘の変転", + "create.recipe.sandpaper_polishing": "紙やすりによる研磨", + "create.recipe.mystery_conversion": "不思議な変転", "create.recipe.spout_filling": "アイテムへの注液", "create.recipe.draining": "アイテムからの排液", + "create.recipe.item_application": "手動によるアイテム使用", + "create.recipe.item_application.any_axe": "任意の斧", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", @@ -848,7 +922,7 @@ "create.recipe.assembly.pressing": "プレスする", "create.recipe.assembly.spout_filling_fluid": "%1$sを注液", "create.recipe.assembly.deploying_item": "%1$sを組み込む", - "create.recipe.assembly.cutting": "ソーでの切断", + "create.recipe.assembly.cutting": "ソーによる切断", "create.recipe.assembly.repeat": "%1$s回繰り返す", "create.recipe.assembly.junk": "ランダムな仕損品", "create.recipe.processing.chance": "%1$s%%チャンス", @@ -864,15 +938,26 @@ "create.generic.length": "長さ", "create.generic.speed": "回転速度", "create.generic.delay": "遅延", + "create.generic.duration": "時間", + "create.generic.timeUnit": "単位", "create.generic.unit.ticks": "ティック", "create.generic.unit.seconds": "秒", "create.generic.unit.minutes": "分", + "create.generic.daytime.hour": "時間", + "create.generic.daytime.minute": "分", + "create.generic.daytime.second": "秒", + "create.generic.daytime.pm": "午後", + "create.generic.daytime.am": "午前", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", + "create.generic.unit.millibuckets": "mB", + "create.generic.unit.buckets": "B", "create.generic.clockwise": "時計回り", "create.generic.counter_clockwise": "反時計回り", + "create.generic.in_quotes": "「%1$s」", + "create.generic.pitch": "音程: %1$s", + "create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G", "create.action.scroll": "スクロール", "create.action.confirm": "確認", @@ -909,8 +994,8 @@ "create.orientation.orthogonal": "直交", "create.orientation.diagonal": "対角線", "create.orientation.horizontal": "横型", - "create.orientation.alongZ": "Z に沿る", - "create.orientation.alongX": "X に沿る", + "create.orientation.alongZ": "Z軸に沿る", + "create.orientation.alongX": "X軸に沿る", "create.gui.terrainzapper.title": "携帯型ブロックザッパー", "create.gui.terrainzapper.searchDiagonal": "対角線にフォロー", @@ -918,7 +1003,7 @@ "create.gui.terrainzapper.patternSection": "模様", "create.gui.terrainzapper.pattern.solid": "敷き詰め", "create.gui.terrainzapper.pattern.checkered": "市松模様", - "create.gui.terrainzapper.pattern.inversecheckered": "逆市松模様", + "create.gui.terrainzapper.pattern.inversecheckered": "市松模様(反転)", "create.gui.terrainzapper.pattern.chance25": "25%", "create.gui.terrainzapper.pattern.chance50": "50%", "create.gui.terrainzapper.pattern.chance75": "75%", @@ -942,7 +1027,7 @@ "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", "create.terrainzapper.usingBlock": "使用中: %1$s", - "create.terrainzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", + "create.terrainzapper.leftClickToSet": "ブロックをスニークせず右クリックでブロックを選択", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", "create.minecart_coupling.unloaded": "列車の一部があるチャンクがロードされていません", @@ -974,29 +1059,29 @@ "create.logistics.secondFrequency": "二次周波数", "create.logistics.filter.apply": "フィルターを%1$sに適用しました。", "create.logistics.filter.apply_click_again": "フィルターを%1$sに適用しました。再度クリックすると数量をコピーします", - "create.logistics.filter.apply_count": "搬出カウントをフィルターに適用しました。", + "create.logistics.filter.apply_count": "搬出入数をフィルターに適用しました。", "create.gui.goggles.generator_stats": "原動機の統計:", "create.gui.goggles.kinetic_stats": "動力の統計:", - "create.gui.goggles.at_current_speed": "現在の回転速度", + "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": "このからくりは組み立てることができません。:", "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": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールが不足しています。", - "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nAが最低でも%2$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": "ネットワークの応力", - "create.gui.stressometer.capacity": "残りの応力許容量", + "create.gui.stressometer.capacity": "残りの許容応力", "create.gui.stressometer.overstressed": "応力超過", "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く_回転_していない_ようです。", - "create.gui.contraptions.network_overstressed": "この仕掛けは_応力超過_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く回転していない_ようです。", + "create.gui.contraptions.network_overstressed": "この機構は_応力超過_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", "create.gui.stockpile_switch.title": "在庫スイッチ", @@ -1008,7 +1093,7 @@ "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": "ピストン/プーリー/ガントリーを動かすために回す", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "ピストン/プーリー/ガントリーを回す", "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", "create.gui.sequenced_gearshift.instruction.delay.descriptive": "一定時間待つ", @@ -1063,7 +1148,7 @@ "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます", + "create.schematic.tool.rotate.description.0": "概略図を中心に回転させます", "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", @@ -1103,13 +1188,13 @@ "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストを印刷します。", - "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", + "create.gui.schematicannon.slot.schematic": "概略図をここに入れてください。特定の場所に配置されていることを確認してください。", "create.gui.schematicannon.option.skipMissing.description": "配置に必要なブロックを見つけられない場合、次の場所に進みます。", "create.gui.schematicannon.option.skipTileEntities.description": "チェストなどのデータ保持ブロックの置き換えによる消滅を回避します。", "create.gui.schematicannon.option.dontReplaceSolid.description": "その作業範囲の固体ブロックを置き換えることはなく、非固体ブロックと空気のみを置き換えます。", "create.gui.schematicannon.option.replaceWithSolid.description": "固体ブロックを設置する場合にのみ、その位置の固体ブロックを置き換えます。", "create.gui.schematicannon.option.replaceWithAny.description": "任意のブロックを設置する場合に、その位置の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "空気を含め、あらゆるブロックを設置する場合に作業領域のあらゆるブロックを一掃します。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "空気を含め、あらゆるブロックを設置する場合に作業範囲のあらゆるブロックを一掃します。", "create.schematicannon.status.idle": "停止中", "create.schematicannon.status.ready": "準備完了", @@ -1119,7 +1204,7 @@ "create.schematicannon.status.stopped": "停止", "create.schematicannon.status.noGunpowder": "火薬不足", "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", - "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", + "create.schematicannon.status.targetOutsideRange": "対象が遠すぎます", "create.schematicannon.status.searching": "検索中", "create.schematicannon.status.skipping": "スキップ", "create.schematicannon.status.missingBlock": "不明なブロック:", @@ -1153,7 +1238,7 @@ "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", "create.item_attributes.renamed": "名前付きか", "create.item_attributes.renamed.inverted": "名前付きでないか", - "create.item_attributes.damaged": "破損してるか", + "create.item_attributes.damaged": "破損しているか", "create.item_attributes.damaged.inverted": "破損していないか", "create.item_attributes.badly_damaged": "ひどく損傷してるか", "create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか", @@ -1214,15 +1299,15 @@ "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がないか", "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", - "create.gui.attribute_filter.selected_attributes": "選択された属性:", + "create.gui.attribute_filter.selected_attributes": "選択した属性:", "create.gui.attribute_filter.add_attribute": "属性をリストに追加する", "create.gui.attribute_filter.add_inverted_attribute": "反属性をリストに追加する", - "create.gui.attribute_filter.allow_list_disjunctive": "ホワイトリスト(いずれか)", + "create.gui.attribute_filter.allow_list_disjunctive": "ホワイトリスト(いずれか)", "create.gui.attribute_filter.allow_list_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.allow_list_conjunctive": "ホワイトリスト(全て)", + "create.gui.attribute_filter.allow_list_conjunctive": "ホワイトリスト(全て)", "create.gui.attribute_filter.allow_list_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", "create.gui.attribute_filter.deny_list": "ブラックリスト", - "create.gui.attribute_filter.deny_list.description": "選択された属性を持たない場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.deny_list.description": "選択した属性を持たない場合、アイテムは通り抜けます。", "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", "create.tooltip.holdForDescription": "説明を表示するには [%1$s] を長押し", @@ -1231,6 +1316,7 @@ "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "必要な回転速度: %1$s", "create.tooltip.speedRequirement.none": "無し", + "create.tooltip.speedRequirement.slow": "低速", "create.tooltip.speedRequirement.medium": "中速", "create.tooltip.speedRequirement.fast": "高速", "create.tooltip.stressImpact": "応力への影響: %1$s", @@ -1238,7 +1324,8 @@ "create.tooltip.stressImpact.medium": "中", "create.tooltip.stressImpact.high": "高", "create.tooltip.stressImpact.overstressed": "応力超過", - "create.tooltip.capacityProvided": "応力許容量: %1$s", + "create.tooltip.up_to": "最大%1$s", + "create.tooltip.capacityProvided": "許容応力: %1$s", "create.tooltip.capacityProvided.low": "小", "create.tooltip.capacityProvided.medium": "中", "create.tooltip.capacityProvided.high": "大", @@ -1250,9 +1337,9 @@ "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.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": "射出スタック量", @@ -1260,7 +1347,7 @@ "create.mechanical_arm.selection_mode.round_robin": "順繰り分配", "create.mechanical_arm.selection_mode.forced_round_robin": "強制順繰り分配", - "create.mechanical_arm.selection_mode.prefer_first": "最初のターゲットを優先", + "create.mechanical_arm.selection_mode.prefer_first": "最初の対象を優先", "create.tunnel.selection_mode.split": "スタック分割", "create.tunnel.selection_mode.forced_split": "強制スタック分割", @@ -1279,7 +1366,11 @@ "create.tooltip.chute.fans_pull_up": "ファンが上から吸い込んでいます", "create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます", "create.tooltip.chute.contains": "内容物: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "配布中", + "create.tooltip.deployer.header": "デプロイヤーの情報", + "create.tooltip.deployer.using": "モード: 使用", + "create.tooltip.deployer.punching": "モード: 攻撃", + "create.tooltip.deployer.contains": "アイテム: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "配布中:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "右クリックで取り出し", @@ -1303,12 +1394,336 @@ "create.hint.hose_pulley.title": "底なし汲み上げ可能", "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", - "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", - "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", + "create.hint.mechanical_arm_no_targets.title": "対象が見つかりません", + "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_対象_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", "create.hint.empty_bearing.title": "ベアリングの更新", "create.hint.empty_bearing": "_素手_でベアリングを_右クリック_して、その前に先ほど作った構造物を_接続_します。", "create.hint.full_deployer.title": "デプロイヤーのアイテムが溢れています", - "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などの手段を利用して、溢れないようにしてください。", + "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などを使って、あふれないようにしてください。", + + "create.backtank.low": "バックタンクの空気圧が低下しています", + "create.backtank.depleted": "バックタンクの空気圧が不足しています", + + "create.hint.derailed_train.title": "列車が脱線しています", + "create.hint.derailed_train": "この_列車_は繋がった線路の上に乗っていないようです。レンチで右クリックして近くの線路に移してください。", + + "create.boiler.status": "ボイラー状態: %1$s", + "create.boiler.status_short": "ボイラー: %1$s", + "create.boiler.passive": "レベル最小", + "create.boiler.idle": "停止中", + "create.boiler.lvl": "レベル%1$s", + "create.boiler.max_lvl": "レベル最大", + "create.boiler.size": "容量", + "create.boiler.size_dots": "... ", + "create.boiler.water": "水量", + "create.boiler.water_dots": "... ", + "create.boiler.heat": "熱量", + "create.boiler.heat_dots": "... ", + "create.boiler.via_one_engine": "1基のエンジン経由", + "create.boiler.via_engines": "%1$s基のエンジン経由", + + "create.gui.schedule.lmb_edit": "左クリックで編集", + "create.gui.schedule.rmb_remove": "右クリックで削除", + "create.gui.schedule.duplicate": "複製", + "create.gui.schedule.remove_entry": "動作を削除", + "create.gui.schedule.add_entry": "動作を追加", + "create.gui.schedule.move_up": "上に移動", + "create.gui.schedule.move_down": "下に移動", + "create.gui.schedule.add_condition": "条件を追加", + "create.gui.schedule.alternative_condition": "いずれか条件", + + "create.schedule.instruction_type": "次の動作:", + "create.schedule.instruction.editor": "命令エディタ", + "create.schedule.instruction.destination": "駅へ移動", + "create.schedule.instruction.destination.summary": "止まる駅:", + "create.schedule.instruction.filter_edit_box": "駅名", + "create.schedule.instruction.filter_edit_box_1": " * を使うと任意の文章を指定できます", + "create.schedule.instruction.filter_edit_box_2": "例: '私の駅, *乗線'", + "create.schedule.instruction.filter_edit_box_3": "列車は一致し開いている駅の中で最も近い駅を選びます", + "create.schedule.instruction.rename": "時刻表名の変更", + "create.schedule.instruction.rename.summary": "新しいタイトル", + "create.schedule.instruction.name_edit_box": "時刻表名", + "create.schedule.instruction.name_edit_box_1": "この文字はディスプレイの表示に影響します", + "create.schedule.instruction.name_edit_box_2": "デフォルトは次の行き先の名前です", + "create.schedule.instruction.throttle": "最大速度を制限する", + "create.schedule.instruction.throttle.summary": "最大速度を変更する%1$s", + "create.schedule.instruction.throttle_edit_box": "スロットル", + "create.schedule.instruction.throttle_edit_box_1": "列車の最大速度に影響します", + "create.schedule.condition_type": "もし~ならば/~後に再開:", + "create.schedule.condition.editor": "条件エディタ", + "create.schedule.condition.delay": "待機する", + "create.schedule.condition.delay_short": "待機: %1$s", + "create.schedule.condition.delay.status": "出発まで%1$s", + "create.schedule.condition.idle": "貨物のやりとりが停止しているなら", + "create.schedule.condition.idle_short": "貨物のやりとりが停止: %1$s", + "create.schedule.condition.idle.status": "%1$s貨物のやりとりが停止", + "create.schedule.condition.for_x_time": "%1$s間", + "create.schedule.condition.unloaded": "チャンクロードが解除されたら", + "create.schedule.condition.unloaded.status": "チャンクアンロードを待っています", + "create.schedule.condition.powered": "駅が赤石信号を受けたら", + "create.schedule.condition.powered.status": "レッドストーン信号を待っています", + "create.schedule.condition.time_of_day": "指定時刻", + "create.schedule.condition.time_of_day.scheduled": "予定時刻: %1$s", + "create.schedule.condition.time_of_day.digital_format": "%4$s%1$s:%3$s", + "create.schedule.condition.time_of_day.rotation": "繰り返し", + "create.schedule.condition.time_of_day.rotation.every_24": "1日ごと", + "create.schedule.condition.time_of_day.rotation.every_12": "12時間ごと", + "create.schedule.condition.time_of_day.rotation.every_6": "6時間ごと", + "create.schedule.condition.time_of_day.rotation.every_4": "4時間ごと", + "create.schedule.condition.time_of_day.rotation.every_3": "3時間ごと", + "create.schedule.condition.time_of_day.rotation.every_2": "2時間ごと", + "create.schedule.condition.time_of_day.rotation.every_1": "1時間ごと", + "create.schedule.condition.time_of_day.rotation.every_0_45": "45分ごと", + "create.schedule.condition.time_of_day.rotation.every_0_30": "30分ごと", + "create.schedule.condition.time_of_day.rotation.every_0_15": "15分ごと", + "create.schedule.condition.time_of_day.status": "出発時刻: ", + "create.schedule.condition.threshold.train_holds": "鉄道が指定%1$s積んだら", + "create.schedule.condition.threshold.greater": "以上", + "create.schedule.condition.threshold.less": "以下", + "create.schedule.condition.threshold.equal": "ぴったり", + "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s", + "create.schedule.condition.threshold.matching_content": "一致する貨物", + "create.schedule.condition.threshold.item_measure": "アイテム単位", + "create.schedule.condition.threshold.items": "個", + "create.schedule.condition.threshold.stacks": "スタック", + "create.schedule.condition.threshold.buckets": "バケツ", + "create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s", + "create.schedule.condition.threshold.place_item": "参照アイテム", + "create.schedule.condition.threshold.place_item_2": "フィルターも使えます", + "create.schedule.condition.fluid_threshold": "液体貨物の状態", + "create.schedule.condition.item_threshold": "アイテム貨物の状態", + "create.schedule.condition.redstone_link": "レッドストーンリンク", + "create.schedule.condition.redstone_link.status": "レッドストーンリンクを待つ", + "create.schedule.condition.redstone_link_on": "リンクがオンなら", + "create.schedule.condition.redstone_link_off": "リンクがオフなら", + "create.schedule.condition.redstone_link.powered": "オン", + "create.schedule.condition.redstone_link.unpowered": "オフ", + "create.schedule.condition.redstone_link.frequency_state": "周波数の状態: ", + "create.schedule.condition.redstone_link.frequency_powered": "周波数がオンなら:", + "create.schedule.condition.redstone_link.frequency_unpowered": "周波数がオフなら:", + "create.schedule.condition.player_count": "座っているプレイヤー数", + "create.schedule.condition.player_count.summary": "%1$s人のプレイヤー", + "create.schedule.condition.player_count.summary_plural": "%1$s人のプレイヤー", + "create.schedule.condition.player_count.seated": "%1$sが着席", + "create.schedule.condition.player_count.players": "人のプレイヤー", + "create.schedule.condition.player_count.condition": "条件", + "create.schedule.condition.player_count.exactly": "ちょうど", + "create.schedule.condition.player_count.or_above": "以上", + "create.schedule.condition.player_count.status": "乗客数: %1$s/%2$s", + "create.schedule.loop": "無限ループ", + "create.schedule.loop1": "予定を最初からやり直す", + "create.schedule.loop2": "完了したら", + "create.schedule.reset": "進行度をリセット", + "create.schedule.skip": "現在の動作をスキップ", + "create.schedule.applied_to_train": "今この列車は時刻表に従っています", + "create.schedule.non_controlling_seat": "車掌は運転台ブロックの正面に座っている必要があります", + "create.schedule.remove_with_empty_hand": "先に素手で時刻表を回収してください", + "create.schedule.auto_removed_from_train": "自動で適用された時刻表を削除しました", + "create.schedule.removed_from_train": "列車から時刻表を取り出しました", + "create.schedule.no_stops": "この時刻表には停車駅がありません", + "create.schedule.continued": "運行を再開しました", + + "create.track.selection_cleared": "選択を破棄しました", + "create.track.valid_connection": "接続可能 ✔", + "create.track.second_point": "線路を置くか、次の位置を指定してください", + "create.track.too_far": "遠すぎます", + "create.track.original_missing": "元のブロックが存在しません。スニーククリックでリセットできます", + "create.track.perpendicular": "垂直には接続できません", + "create.track.ascending_s_curve": "傾斜のあるS字カーブは作成できません", + "create.track.too_sharp": "カーブが急すぎます", + "create.track.too_steep": "傾斜が急すぎます", + "create.track.slope_turn": "ターンで傾斜から出たり入ったりすることはできません", + "create.track.opposing_slopes": "逆向きのカーブの傾斜は接続できません", + "create.track.leave_slope_ascending": "この登り傾斜から離脱することはできません", + "create.track.leave_slope_descending": "この下り傾斜から離脱することはできません", + "create.track.turn_90": "90度を超えるターンは設置できません", + "create.track.junction_start": "分岐から接続は始められません", + "create.track.turn_start": "ターンから接続は始められません", + "create.track.not_enough_tracks": "線路が足りません", + "create.track.not_enough_pavement": "道床ブロックが足りません", + + "create.portal_track.failed": "ポータル線路を設置できません:", + "create.portal_track.missing": "対象のポータルはまだ生成されていません", + "create.portal_track.blocked": "対象の位置は塞がっています(%1$s,%2$s,%3$s)", + + "create.station.idle": "駅は待機中です", + "create.station.assembly_title": "列車組み立て", + "create.station.close": "ウィンドウを閉じる", + "create.station.cancel": "組み立てをキャンセル", + "create.station.failed": "組み立てに失敗しました", + "create.station.icon_type": "アイコンの種類", + "create.station.create_train": "新しい列車の作成", + "create.station.assemble_train": "列車を組み立て", + "create.station.disassemble_train": "列車を分解", + "create.station.remove_schedule": "時刻表を取り出し", + "create.station.remove_auto_schedule": "自動で適用された時刻表を破棄", + "create.station.no_assembly_diagonal": "交差線路の上では", + "create.station.no_assembly_diagonal_1": "列車を組み立てられません", + "create.station.no_assembly_curve": "カーブしている線路の上では", + "create.station.no_assembly_curve_1": "列車を組み立てられません", + "create.station.train_not_aligned": "すべての車両が並んでいないため、", + "create.station.train_not_aligned_1": "列車を編集できません", + "create.station.carriage_number": "%1$s両目:", + "create.station.retry": "解決してやり直してください", + "create.station.no_bogeys": "台車がありません", + "create.station.one_bogey": "台車1台", + "create.station.more_bogeys": "台車%1$s台", + "create.station.how_to": "鉄道用ケーシングを強調表示された線路に使うと台車を作れます", + "create.station.how_to_1": "上の方のブロックを壊せば台車を壊せます", + "create.station.how_to_2": "車両を作るには1台か2台の台車を繋げてください", + + "create.train_assembly.too_many_bogeys": "台車が多すぎます: %1$s", + "create.train_assembly.frontmost_bogey_at_station": "先頭の台車は駅マーカーの上にある必要があります", + "create.train_assembly.no_bogeys": "台車が見つかりません", + "create.train_assembly.not_connected_in_order": "台車は順番に接続されていません", + "create.train_assembly.bogeys_too_close": "台車%1$sと台車%2$sは近すぎます", + "create.train_assembly.single_bogey_carriage": "このタイプの台車は単体で列車にできません", + "create.train_assembly.nothing_attached": "台車%1$sには構造物が接続されていません", + "create.train_assembly.no_controls": "最低一つは前向きの運転台ブロックを列車に乗せる必要があります", + "create.train_assembly.sideways_controls": "乗っている運転台ブロックは横向きです", + "create.train_assembly.bogey_created": "台車を作りました。もう一度クリックすれば循環して種類を変えられます", + "create.train_assembly.requires_casing": "線路に台車を作るには鉄道用ケーシングを使ってください", + + "create.track_target.set": "対象となる線路を選択しました", + "create.track_target.success": "対象の線路との接続に成功しました", + "create.track_target.clear": "線路の選択を解除しました", + "create.track_target.missing": "まず対象となる線路を右クリックしてください", + "create.track_target.too_far": "対象となる線路はここから遠すぎます", + "create.track_target.no_junctions": "対象となる線路は交差できません", + "create.track_target.occupied": "対象となる線路はふさがっています", + "create.track_target.invalid": "この線路を選択することはできません", + + "create.train.unnamed": "無名の列車", + "create.train.cannot_relocate_moving": "動いている列車は移動できません", + "create.train.relocate": "%1$sを移動する線路をクリックしてください。スニーククリックでキャンセルできます。", + "create.train.relocate.abort": "列車の移動をキャンセルしました", + "create.train.relocate.success": "移動が成功しました", + "create.train.relocate.valid": "列車はここに移動可能です。クリックで適用", + "create.train.relocate.invalid": "列車をここに移動することはできません", + "create.train.relocate.too_far": "列車を移動させるには遠すぎます", + "create.train.departing_from": "%1$sから出発", + "create.train.arrived_at": "%1$sに到着", + "create.train.status": " 列車情報: %1$s", + "create.train.status.back_on_track": "列車は再び線路の上に戻りました", + "create.train.status.collision": "他の列車と衝突しました", + "create.train.status.end_of_track": "車両が線路の端に到達しました", + "create.train.status.double_portal": "ポータルから出て来ている間に別のポータルに車両が入ることはできません", + "create.train.status.coupling_stress": "連結器に大きな力がかかったため強制停止しました", + "create.train.status.track_missing": "列車が線路上にありません", + "create.train.status.paused_for_manual": "手動操縦のため、時刻表の運行を一時停止しました", + "create.train.status.opposite_driver": "この経路には逆向きの運転手が必要です", + "create.train.status.missing_driver": "運転手がいません", + "create.train.status.found_driver": "新しい運転手が見つかりました", + "create.train.status.navigation_success": "経路探索に成功しました", + "create.train.status.no_match": "線路ネットワークに'%1$s'と一致する駅が見つかりません", + "create.train.status.no_path": "次の行先への適切な経路が見つかりません", + + "create.track_signal.cannot_change_mode": "この信号のモードを切り替えることはできません", + "create.track_signal.mode_change.entry_signal": " -> 区間が空いているなら通過を許可", + "create.track_signal.mode_change.cross_signal": " -> 区間をよどみなく走行できるなら通過を許可", + + "create.contraption.controls.start_controlling": "運転中: %1$s", + "create.contraption.controls.stop_controlling": "運転終了", + "create.contraption.controls.approach_station": "%1$sキーを長押しで%2$sに停車", + + "create.display_link.set": "対象の位置を選択しました", + "create.display_link.success": "対象の位置と結び付けられました", + "create.display_link.clear": "選択した位置を破棄しました", + "create.display_link.too_far": "対象の位置はここから遠すぎます", + "create.display_link.invalid": "適切な対象ではありません、再設置してください", + "create.display_link.title": "ディスプレイリンク", + "create.display_link.no_source": "情報源がありません", + "create.display_link.no_target": "表示先がありません", + "create.display_link.reading_from": "受信元:", + "create.display_link.writing_to": "送信先:", + "create.display_link.attached_side": "接続面のブロック", + "create.display_link.targeted_location": "対象の位置のブロック", + "create.display_link.view_compatible": "クリックして互換性のあるすべてのものを表示", + "create.display_link.information_type":"情報の種類", + "create.display_link.display_on": "データの書き込み先:", + "create.display_link.display_on_multiline": "表示を始める行:", + + "create.display_source.label": "ラベル", + "create.display_source.combine_item_names": "アイテム名を結合", + "create.display_source.count_items": "一致するアイテムの量", + "create.display_source.list_items": "一致するアイテムの一覧", + "create.display_source.fluid_amount": "一致する液体の量", + "create.display_source.list_fluids": "一致する液体の一覧", + "create.display_source.nixie_tube": "ニキシー管の表示内容をコピー", + "create.display_source.fill_level": "収納ブロックの使用率", + "create.display_source.fill_level.display": "表示形式", + "create.display_source.fill_level.percent": "パーセント", + "create.display_source.fill_level.progress_bar": "プログレスバー", + "create.display_source.value_list.display": "数値の表示形式", + "create.display_source.value_list.shortened": "短縮", + "create.display_source.value_list.full_number": "完全な数値", + "create.display_source.value_list.thousand": "k", + "create.display_source.value_list.million": "m", + "create.display_source.player_deaths": "プレイヤーの死亡回数", + "create.display_source.scoreboard": "スコアボード", + "create.display_source.scoreboard.objective": "Objective ID", + "create.display_source.scoreboard.objective_not_found": "'%1$s' not found", + "create.display_source.scoreboard.objective.deaths": "プレイヤーの死亡回数", + "create.display_source.time_of_day": "現在時刻", + "create.display_source.stop_watch": "ストップウォッチ", + "create.display_source.time.format": "時刻の表示形式", + "create.display_source.time.12_hour": "12時間制", + "create.display_source.time.24_hour": "24時間制", + "create.display_source.accumulate_items": "蓄積アイテムカウンター", + "create.display_source.item_throughput": "アイテム処理量", + "create.display_source.item_throughput.interval": "間隔", + "create.display_source.item_throughput.interval.second": "毎秒", + "create.display_source.item_throughput.interval.minute": "毎分", + "create.display_source.item_throughput.interval.hour": "毎時", + "create.display_source.train_status": "鉄道運行の状態", + "create.display_source.station_summary": "鉄道駅の概要", + "create.display_source.station_summary.filter": "駅名フィルター", + "create.display_source.station_summary.train_name_column": "列車名の表示幅", + "create.display_source.station_summary.platform_column": "プラットフォームの表示幅", + "create.display_source.station_summary.now": "到着", + "create.display_source.station_summary.minutes": "分後", + "create.display_source.station_summary.seconds": "%1$s秒後", + "create.display_source.observed_train_name": "検知した列車名", + "create.display_source.max_enchant_level": "最大エンチャントコスト", + "create.display_source.boiler_status": "ボイラー状態", + "create.display_source.entity_name": "エンティティ名", + "create.display_source.kinetic_speed": "回転速度(RPM)", + "create.display_source.kinetic_speed.absolute": "回転方向を無視", + "create.display_source.kinetic_speed.directional": "回転方向を含める", + "create.display_source.kinetic_stress": "ネットワークの応力", + "create.display_source.kinetic_stress.display": "表示する情報", + "create.display_source.kinetic_stress.progress_bar": "プログレスバー", + "create.display_source.kinetic_stress.percent": "パーセント", + "create.display_source.kinetic_stress.current": "使用しているSU", + "create.display_source.kinetic_stress.max": "許容応力の合計", + "create.display_source.kinetic_stress.remaining": "残りのSU", + "create.display_source.redstone_power": "レッドストーン強度", + "create.display_source.redstone_power.display": "表示形式", + "create.display_source.redstone_power.number": "数値", + "create.display_source.redstone_power.progress_bar": "プログレスバー", + "create.display_source.boiler.not_enough_space": "ボイラーステータスの表示に", + "create.display_source.boiler.for_boiler_status": "十分なスペースがありません ", + + "create.display_target.line": "%1$s行目", + "create.display_target.page": "%1$sページ目", + "create.display_target.single_line": "単一行", + + "create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", + "create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9", + "create.flap_display.cycles.arrival_time": " ; 分;現在;15秒;30秒;45秒", + "create.flap_display.cycles.shortened_numbers": " ;K;M", + "create.flap_display.cycles.fluid_units": "mB;B ", + "create.flap_display.cycles.instant": " ; ", + "create.flap_display.cycles.pixel": "█;▓;▒", + + "create.super_glue.too_far": "選択した範囲が大きすぎます", + "create.super_glue.cannot_reach": "選択したブロックは繋がっているべきです", + "create.super_glue.click_to_confirm": "もう一度クリックで続行", + "create.super_glue.click_to_discard": "スニークしながらクリックで選択範囲を破棄", + "create.super_glue.first_pos": "始点を選択しました", + "create.super_glue.abort": "選択を破棄しました", + "create.super_glue.not_enough": "インベントリに十分な超粘着剤がありません。", + "create.super_glue.success": "超粘着剤を適用中...", "create.gui.config.overlay1": "やぁ(・∀・)", "create.gui.config.overlay2": "これはオーバーレイのサンプルです", @@ -1327,48 +1742,58 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力がからくりカートを世界に縛り付けています。", + "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません", + "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力が、からくりカートを世界に縛り付けています", "_": "->------------------------] Subtitles [------------------------<-", "create.subtitle.contraption_disassemble": "からくりが止まる", "create.subtitle.peculiar_bell_use": "風変わりな鐘が鳴る", - "create.subtitle.mixing": "混ぜる音", - "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", - "create.subtitle.fwoomp": "ポテトランチャーがバキューンと鳴る", "create.subtitle.worldshaper_place": "ワールドシェーパーが設置する", - "create.subtitle.sanding_long": "研磨音", - "create.subtitle.crushing_1": "粉砕音", - "create.subtitle.depot_slide": "アイテムが滑る", + "create.subtitle.whistle_train_manual": "汽車の汽笛が鳴る", + "create.subtitle.steam": "蒸気の音", "create.subtitle.saw_activate_stone": "メカニカルソーが動作する", - "create.subtitle.blaze_munch": "ブレイズの咀嚼音", - "create.subtitle.funnel_flap": "ファンネルがはためく", "create.subtitle.schematicannon_finish": "概略図砲が作業を終える", - "create.subtitle.haunted_bell_use": "憑りつかれた鐘が鳴る", - "create.subtitle.scroll_value": "スクロールのカチカチ音", "create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする", - "create.subtitle.controller_put": "コントローラのトントン音", - "create.subtitle.cranking": "ハンドクランクが回る", "create.subtitle.wrench_remove": "機械を壊す", - "create.subtitle.sanding_short": "研磨音", + "create.subtitle.train3": "台車の車輪がゴロゴロと音を立てる", + "create.subtitle.whistle": "汽笛が鳴る", "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", - "create.subtitle.wrench_rotate": "レンチが使用される", - "create.subtitle.potato_hit": "野菜の衝撃", - "create.subtitle.saw_activate_wood": "メカニカルソーが動作する", - "create.subtitle.haunted_bell_convert": "憑りつかれた鐘が目覚める", - "create.subtitle.deny": "失敗音", - "create.subtitle.controller_click": "コントローラーのカチカチ音", + "create.subtitle.whistle_train_low": "汽笛が低く鳴る", "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", - "create.subtitle.copper_armor_equip": "潜水服がチャリンと鳴る", "create.subtitle.controller_take": "書見台が空になる", - "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", - "create.subtitle.contraption_assemble": "からくりが動く", "create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音", "create.subtitle.depot_plop": "デプロイヤーにアイテムが入れられる", "create.subtitle.confirm": "成功音", + "create.subtitle.mixing": "混ぜる音", + "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", + "create.subtitle.fwoomp": "ポテトランチャーがバキューンと鳴る", + "create.subtitle.sanding_long": "研磨音", + "create.subtitle.crushing_1": "粉砕音", + "create.subtitle.depot_slide": "アイテムが滑る", + "create.subtitle.blaze_munch": "ブレイズが食べる音", + "create.subtitle.funnel_flap": "ファンネルがはためく", + "create.subtitle.haunted_bell_use": "憑りつかれた鐘が鳴る", + "create.subtitle.scroll_value": "スクロールのカチカチ音", + "create.subtitle.controller_put": "コントローラのトントン音", + "create.subtitle.cranking": "ハンドクランクが回る", + "create.subtitle.sanding_short": "研磨音", + "create.subtitle.wrench_rotate": "レンチが使われる", + "create.subtitle.potato_hit": "野菜が砕ける", + "create.subtitle.saw_activate_wood": "メカニカルソーが動作する", + "create.subtitle.whistle_high": "汽笛が高く鳴る", + "create.subtitle.whistle_train_manual_low": "汽車の汽笛が鳴る", + "create.subtitle.whistle_train": "汽車の汽笛が鳴る", + "create.subtitle.haunted_bell_convert": "憑りつかれた鐘が目覚める", + "create.subtitle.train": "台車の車輪が鳴る", + "create.subtitle.deny": "失敗音", + "create.subtitle.controller_click": "コントローラーのカチカチ音", + "create.subtitle.whistle_low": "汽笛が低く鳴る", + "create.subtitle.copper_armor_equip": "潜水服がチャリンと鳴る", + "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", + "create.subtitle.contraption_assemble": "からくりが動く", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1376,25 +1801,25 @@ "item.create.example_item.tooltip": "アイテムの例(ただ単にこのツールチップが存在することを示すマーカー)", "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。アンダーバーで用語を強調表示します。", "item.create.example_item.tooltip.condition1": "これをしたとき", - "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことを行います。(シフトを押したときに表示される)", + "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことをします。(シフトを押したときに表示される)", "item.create.example_item.tooltip.condition2": "そしてこれをしたとき", "item.create.example_item.tooltip.behaviour2": "好きなだけ挙動を追加できます。", "item.create.example_item.tooltip.control1": "Ctrlを押したとき", "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", "block.create.wooden_bracket.tooltip": "木製ブラケット", - "block.create.wooden_bracket.tooltip.summary": "補強用の温かみのある木の欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", + "block.create.wooden_bracket.tooltip.summary": "この補強用の温かみのある腕木で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", "block.create.metal_bracket.tooltip": "金属ブラケット", - "block.create.metal_bracket.tooltip.summary": "補強用の頑丈で工業的な欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", + "block.create.metal_bracket.tooltip.summary": "この補強用の工業的で頑丈な腕金で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_からくり_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", + "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_からくり_の上にプレイヤーを固定します。もちろん家具にも使えます。染色も。", "block.create.seat.tooltip.condition1": "右クリックしたとき", "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", "item.create.blaze_cake.tooltip": "ブレイズケーキ", - "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_達に美味しいご馳走を。彼らを燃え上がらせよう(物理)!", + "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_たちに美味しいごちそうを。彼らを燃え上がらせよう(物理)!", "item.create.wand_of_symmetry.tooltip": "対称の杖", "item.create.wand_of_symmetry.tooltip.summary": "対象の鏡をまたいだ範囲内のブロック設置を完全に複製します。", @@ -1408,11 +1833,11 @@ "item.create.wand_of_symmetry.tooltip.action3": "_設定画面_を開きます。", "item.create.handheld_worldshaper.tooltip": "携帯型ワールドシェーパー", - "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作成する便利なツール。", + "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作るのに便利な道具。", "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", + "item.create.handheld_worldshaper.tooltip.action1": "見ているブロックをこの道具に設定します。", "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_を目標の場所に適用します。", + "item.create.handheld_worldshaper.tooltip.action2": "選択されている_ブラシ_や_ツール_を目標の場所に適用します。", "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", "item.create.handheld_worldshaper.tooltip.action3": "_設定画面_を開きます。", @@ -1430,7 +1855,7 @@ "item.create.potato_cannon.tooltip": "ポテトキャノン", "item.create.potato_cannon.tooltip.summary": "バキューン!自分が育てた野菜を敵に発射します。_銅のバックタンク_の圧縮空気でも動かせます。", - "item.create.potato_cannon.tooltip.condition1": "左クリックしたとき", + "item.create.potato_cannon.tooltip.condition1": "右クリックしたとき", "item.create.potato_cannon.tooltip.behaviour1": "_インベントリ_の中から_適切_なアイテムを発射します。", "item.create.potato_cannon.tooltip.condition2": "銅のバックタンクを装備した時", "item.create.potato_cannon.tooltip.behaviour2": "_耐久値_を消費しなくなります。代わりに_圧縮空気_をタンクから消費します", @@ -1450,10 +1875,10 @@ "item.create.attribute_filter.tooltip.behaviour2": "_設定画面_を開きます。", "item.create.empty_schematic.tooltip": "空の概略図", - "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図台_での書き込みに使われます。", + "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図台_からの書き込みに使われます。", "item.create.schematic.tooltip": "概略図", - "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", + "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築できます。", "item.create.schematic.tooltip.condition1": "持ったとき", "item.create.schematic.tooltip.behaviour1": "画面上のツールを使ってホログラムを配置します。", "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", @@ -1467,7 +1892,7 @@ "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。もう一度右クリックして保存します。", "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", - "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", + "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押しているとき", "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。_スクロール_して距離を調整します。", "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", @@ -1485,7 +1910,7 @@ "item.create.goggles.tooltip": "ゴーグル", "item.create.goggles.tooltip.summary": "有用な_回転力_の_情報_を視界に映す眼鏡。", "item.create.goggles.tooltip.condition1": "着用したとき", - "item.create.goggles.tooltip.behaviour1": "設置された機械の_回転速度_および、_機械_の_応力への影響_と_許容量_を_色付きのインジケーター_で表示します。", + "item.create.goggles.tooltip.behaviour1": "設置した機械の_回転速度_および、_機械_の_応力への影響_と_許容応力_を_色付きのインジケーター_で表示します。", "item.create.goggles.tooltip.condition2": "計器を見たとき", "item.create.goggles.tooltip.behaviour2": "計器が接続されている動力ネットワークの_回転速度_または_応力_に関する詳細情報を表示します。", "item.create.goggles.tooltip.condition3": "液体コンテナを見たとき", @@ -1502,12 +1927,12 @@ "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", "block.create.cuckoo_clock.tooltip": "鳩時計", - "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい細工。", - "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", + "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい機械細工。", + "block.create.cuckoo_clock.tooltip.condition1": "動力を供給したとき", "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。、_正午_と夕暮れに_プレイヤーが眠れる_時間になるとすぐに_再生_します。", "block.create.turntable.tooltip": "ターンテーブル", - "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", + "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えよう。", "block.create.toolbox.tooltip": "工具箱", "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", @@ -1515,30 +1940,30 @@ "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", - "block.create.toolbox.tooltip.condition3": "左クリックした時", + "block.create.toolbox.tooltip.condition3": "右クリックした時", "block.create.toolbox.tooltip.behaviour3": "_収納UI_を開きます", "block.create.stockpile_switch.tooltip": "在庫スイッチ", - "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_によってレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", + "block.create.stockpile_switch.tooltip.summary": "接続した収納ブロックの_空き容量_によってレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転する_しきい値_を設定できます。", "block.create.stockpile_switch.tooltip.condition1": "右クリックしたとき", "block.create.stockpile_switch.tooltip.behaviour1": "_設定画面_を開きます。", "block.create.content_observer.tooltip": "コンテンツオブザーバー", - "block.create.content_observer.tooltip.summary": "設定された_フィルター_に一致する_コンテナ_や_メカニカルベルト_内の_アイテム_を_検出_します。観察している_収納ブロック_、_ベルト_、または_シュート_に一致するアイテムが含まれている場合、このは_レッドストーン信号_を発します。観察している_ファンネル_が一致するアイテムを_運搬_すると、このコンポーネントは_レッドストーンパルス_を発します。", + "block.create.content_observer.tooltip.summary": "_収納ブロック_や_メカニカルベルト_内の設定した_フィルター_に一致する_アイテム_を_検出_します。", "block.create.content_observer.tooltip.condition1": "収納ブロックを観察するとき", - "block.create.content_observer.tooltip.behaviour1": "観測するコンテナが_一致するコンテンツ_が入っている間、_レッドストーン信号_を発する。", + "block.create.content_observer.tooltip.behaviour1": "観測する収納ブロックが_一致するコンテンツ_が入っている間、_レッドストーン信号_を発する。", "block.create.content_observer.tooltip.condition2": "ファンネルを観察するとき", "block.create.content_observer.tooltip.behaviour2": "_一致するアイテム_が_輸送_されると、_レッドストーンパルス_を発します。", "block.create.creative_crate.tooltip": "クリエイティブクレート", "block.create.creative_crate.tooltip.summary": "あらゆるアイテムを無限に複製する_収納ブロック_。隣接する_概略図砲_へブロックを無限に供給します。", "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", - "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。", + "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定したアイテムが_無限_に_搬出_されます。このクレートに_搬入_したアイテムは_消滅_します。", "item.create.creative_blaze_cake.tooltip": "クリエイティブブレイズケーキ", - "item.create.creative_blaze_cake.tooltip.summary": "ブレイズバーナーの火力をコントロールすることができる特別なケーキ。ブレイズバーナーたちがこれを食べれば絶対燃え尽きない(物理)だろう。", - "item.create.creative_blaze_cake.tooltip.condition1": "ブレイズバーナーを左クリックしたとき", - "item.create.creative_blaze_cake.tooltip.behaviour1": "ブレイズバーナーの火力をロックします。再度使用するとブレイズバーナーの火力を循環させます", + "item.create.creative_blaze_cake.tooltip.summary": "ブレイズバーナーの火力をコントロールすることができる特別なケーキ。ブレイズバーナーたちがこれを食べれば絶対燃え尽きない(物理)。", + "item.create.creative_blaze_cake.tooltip.condition1": "ブレイズバーナーを使ったとき", + "item.create.creative_blaze_cake.tooltip.behaviour1": "ブレイズバーナーの火力を固定します。再度使用するとブレイズバーナーの火力を循環して切り替えます", "block.create.controller_rail.tooltip": "コントローラーレール", "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", @@ -1546,7 +1971,7 @@ "block.create.controller_rail.tooltip.behaviour1": "通過する_トロッコ_を_信号の強度_に対応した移動速度に_加速_または_減速_します。また、隣接するコントローラレールにレッドストーン信号を伝達します。2つのコントローラレールに強度の異なるレッドストーン信号を供給すると、それらの間のレールはその信号の変化を補間します。", "item.create.sand_paper.tooltip": "紙やすり", - "item.create.sand_paper.tooltip.summary": "_素材_を_磨く_のに使える荒い紙。デプロイヤーに自動的で磨かせることもできます。", + "item.create.sand_paper.tooltip.summary": "_素材_を_磨く_のに使える荒い紙。デプロイヤーに自動で磨かせることもできます。", "item.create.sand_paper.tooltip.condition1": "使ったとき", "item.create.sand_paper.tooltip.behaviour1": "_オフハンド_で持っていたり、_視線先_の_ドロップ状態のアイテム_を磨きます。", @@ -1564,15 +1989,15 @@ "item.create.shadow_steel.tooltip.behaviour1": "この素材の使用方法は将来のリリースで実装予定です。", "item.create.linked_controller.tooltip": "リンクコントローラー", - "item.create.linked_controller.tooltip.summary": "_6つのボタン_に割り当てられた_レッドストーンリンク_周波数を_片手_で_制御_できます。", - "item.create.linked_controller.tooltip.condition1": "左クリック", + "item.create.linked_controller.tooltip.summary": "_6つのボタン_に割り当てられた周波数の_レッドストーンリンク_を_片手_で_制御_できます。", + "item.create.linked_controller.tooltip.condition1": "右クリック", "item.create.linked_controller.tooltip.behaviour1": "コントローラーを_オンオフ_します。_制御_がオンのときは_移動_できません。", - "item.create.linked_controller.tooltip.condition2": "スニークしながら左クリック", + "item.create.linked_controller.tooltip.condition2": "スニークしながら右クリック", "item.create.linked_controller.tooltip.behaviour2": "手動_設定画面_を開きます", - "item.create.linked_controller.tooltip.condition3": "レッドストーンリンク受信機を左クリックしたとき", + "item.create.linked_controller.tooltip.condition3": "レッドストーンリンク受信機を右クリックしたとき", "item.create.linked_controller.tooltip.behaviour3": "_割り当てモード_をオンにします。_6つのコントロール_のうち1つを押してリンクの周波数に_割り当て_ます。", - "item.create.linked_controller.tooltip.condition4": "書見台を左クリックしたとき", - "item.create.linked_controller.tooltip.behaviour4": "コントローラーを書見台に設置し、簡単に使えるようにします。(スニーク中に左クリックで取り出せます)", + "item.create.linked_controller.tooltip.condition4": "書見台を右クリックしたとき", + "item.create.linked_controller.tooltip.behaviour4": "コントローラーを書見台に設置し、簡単に使えるようにします。(スニークしながら右クリックで取り出せます)", "item.create.diving_helmet.tooltip": "潜水ヘルメット", "item.create.diving_helmet.tooltip.summary": "_銅のバックタンク_と一緒に使うと、長時間_水中_で_呼吸_できるようになるヘルメット。", @@ -1586,17 +2011,29 @@ "item.create.copper_backtank.tooltip.condition2": "設置して動力を供給したとき", "item.create.copper_backtank.tooltip.behaviour2": "_圧縮空気_を_集めます_。速度は回転速度によって決まります。", + "block.create.placard.tooltip": "プラカード", + "block.create.placard.tooltip.summary": "このイカした真鍮の壁掛けパネルにアイテムを飾ろう。からくりにつけても大丈夫!", + "block.create.placard.tooltip.condition1": "右クリックしたとき", + "block.create.placard.tooltip.behaviour1": "持っている_アイテム_をプラカードに_入れます_。すでに一致するアイテムが入っていた場合、短い_レッドストーン_信号を_発します_。", + "block.create.placard.tooltip.condition2": "殴ったとき", + "block.create.placard.tooltip.behaviour2": "額縁から今入っているアイテムを_外します", + + "block.create.flywheel.tooltip": "弾み車", + "block.create.flywheel.tooltip.summary": "この立派な真鍮の車輪で_機械_を_飾ろう_", + "block.create.flywheel.tooltip.condition1": "動力を供給したとき", + "block.create.flywheel.tooltip.behaviour1": "回り始めます", + "item.create.diving_boots.tooltip": "潜水ブーツ", "item.create.diving_boots.tooltip.summary": "海底を歩けるようになる_重いブーツ_。", "item.create.diving_boots.tooltip.condition1": "装備したとき", "item.create.diving_boots.tooltip.behaviour1": "_沈むのが早くなり_、_泳げなく_なります。その代わり、水中で_歩いたり_、_ジャンプ_したりできます。また、メカニカルベルトの影響を受けなくなります。", "item.create.crafting_blueprint.tooltip": "クラフトブループリント", - "item.create.crafting_blueprint.tooltip.summary": "壁に_貼り_、_材料_の_配置_を_指定_することで手作業でのクラフトを簡単にできます。各スロットが1つのレシピを表しています。", - "item.create.crafting_blueprint.condition1": "空きスロットを左クリックしたとき", + "item.create.crafting_blueprint.tooltip.summary": "壁に_貼り_、_材料_の_配置_を_指定_することで手作業によるクラフトを簡単にできます。各スロットが1つのレシピを表しています。", + "item.create.crafting_blueprint.condition1": "空きスロットを右クリックしたとき", "item.create.crafting_blueprint.behaviour1": "_レシピ_や表示するアイテムを_設定_できる_クラフトメニュー_を開きます。", - "item.create.crafting_blueprint.condition2": "設定済みスロットを左クリックしたとき", - "item.create.crafting_blueprint.behaviour2": "_インベントリ_にある一致する材料で_設定されたレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", + "item.create.crafting_blueprint.condition2": "設定済みスロットを右クリックしたとき", + "item.create.crafting_blueprint.behaviour2": "_インベントリ_にある一致する材料で_設定したレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", "item.create.minecart_coupling.tooltip": "トロッコ連結器", "item.create.minecart_coupling.tooltip.summary": "壮大な列車を作るために_トロッコ_や_からくり車両_を_連結_しよう。", @@ -1604,12 +2041,12 @@ "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", "item.create.experience_nugget.tooltip": "経験値の塊", - "item.create.experience_nugget.tooltip.summary": "_チャリン!_あなたの素晴らしい発明から、_発想_の欠片を。", + "item.create.experience_nugget.tooltip.summary": "_チャリン!_素晴らしい発明から、_発想_の欠片を。", "item.create.experience_nugget.tooltip.condition1": "使ったとき", - "item.create.experience_nugget.tooltip.behaviour1": "アイテムと引き換えに中に入った_経験値_を取り出します", + "item.create.experience_nugget.tooltip.behaviour1": "アイテムと引き換えに中の_経験値_を取り出します", "block.create.peculiar_bell.tooltip": "風変わりな鐘", - "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", + "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い道が見つかるかも...", "block.create.haunted_bell.tooltip": "憑りつかれた鐘", "block.create.haunted_bell.tooltip.summary": "ネザーに彷徨う魂が宿る、呪われた鐘", @@ -1627,6 +2064,7 @@ "create.ponder.close": "閉じる", "create.ponder.identify": "ブロック名を確認", "create.ponder.next": "次のシーン", + "create.ponder.next_up": "次:", "create.ponder.previous": "前のシーン", "create.ponder.replay": "最初から", "create.ponder.think_back": "戻る", @@ -1639,38 +2077,44 @@ "create.ponder.shared.rpm16": "16 RPM", "create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます", "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", - "create.ponder.shared.sneak_and": "スニーク +", + "create.ponder.shared.sneak_and": "スニーク + ", "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.ctrl_and": "Ctrl + ", "create.ponder.shared.rpm32": "32 RPM", "create.ponder.shared.rpm16_source": "動力源: 16 RPM", "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", "create.ponder.tag.redstone": "制御機械", - "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械です", + "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械", "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", - "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", + "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械", "create.ponder.tag.fluids": "液体制御機械", - "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械です", + "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械", "create.ponder.tag.decoration": "装飾", - "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", + "create.ponder.tag.decoration.description": "主に装飾に使うブロック", "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", - "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", - "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", - "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", + "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても効率は同じ", + "create.ponder.tag.arm_targets": "メカニカルアームの対象", + "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロック", "create.ponder.tag.kinetic_appliances": "作業機械", - "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", + "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械", "create.ponder.tag.kinetic_sources": "原動機", - "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", + "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械", "create.ponder.tag.movement_anchor": "からくり機械", - "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", + "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすからくりを作る機械", "create.ponder.tag.kinetic_relays": "伝達機械", - "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", + "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械", "create.ponder.tag.contraption_actor": "からくり構造部品", - "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", + "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械", "create.ponder.tag.creative": "クリエイティブ限定", - "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", + "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械", + "create.ponder.tag.display_sources": "ディスプレイリンクの情報源", + "create.ponder.tag.display_sources.description": "ディスプレイリンクでデータを読み取れる機械/ブロック", "create.ponder.tag.logistics": "輸送機械", - "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", + "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械", + "create.ponder.tag.display_targets": "ディスプレイリンクの表示先", + "create.ponder.tag.display_targets.description": "ディスプレイリンクから受け取ったデータを処理・表示できる機械/ブロック", + "create.ponder.tag.train_related": "鉄道用品", + "create.ponder.tag.train_related.description": "からくり鉄道の建築、管理に使う機械", "create.ponder.analog_lever.header": "アナログレバーによる信号制御", "create.ponder.analog_lever.text_1": "アナログレバーはコンパクトに正確なレッドストーン動力を出力できます。", @@ -1683,6 +2127,14 @@ "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", + "create.ponder.auto_schedule.header": "鉄道駅 & 時刻表", + "create.ponder.auto_schedule.text_1": "時刻表は運転手に行先を伝えます", + "create.ponder.auto_schedule.text_2": "列車が停車するたびにコンパレーターはレッドストーン信号を発します", + "create.ponder.auto_schedule.text_3": "駅には表示された方向からしか近づけないことに注意してください", + "create.ponder.auto_schedule.text_4": "また、駅は新しい時刻表を自動で割り当てることもできます", + "create.ponder.auto_schedule.text_5": "時刻表を駅ブロックに置くと、自動でそれを停車している列車にコピーします", + "create.ponder.auto_schedule.text_6": "手動で渡す場合と異なり、運転手がアイテムを持ち運ぶことはありません", + "create.ponder.basin.header": "鉢によるアイテム加工", "create.ponder.basin.text_1": "鉢には素材となるアイテムや液体を入れられます", "create.ponder.basin.text_2": "鉢は完成品アイテムを斜め下へ搬出しようとします", @@ -1706,9 +2158,9 @@ "create.ponder.belt_connector.text_1": "メカニカルベルトを持って2つのシャフトを右クリックすると、シャフトにベルトコンベアを繋げて設置されます", "create.ponder.belt_connector.text_2": "誤ったシャフトをクリックしてしまった場合、スニークしながら右クリックでキャンセルできます", "create.ponder.belt_connector.text_3": "ベルト内のどこでも、シャフトを追加できます", - "create.ponder.belt_connector.text_4": "ベルトを介して接続されたシャフトは、同じ速度・方向で回転します", - "create.ponder.belt_connector.text_5": "追加したシャフトは、レンチで取り除けま", - "create.ponder.belt_connector.text_6": "メカニカルベルトは見栄えのために染色できます", + "create.ponder.belt_connector.text_4": "ベルトを介して接続したシャフトは、同じ速度・方向で回転します", + "create.ponder.belt_connector.text_5": "追加したシャフトは、レンチで取り除けます", + "create.ponder.belt_connector.text_6": "メカニカルベルトは染色して見栄えをよくできます", "create.ponder.belt_directions.header": "メカニカルベルトの有効な向きについて", "create.ponder.belt_directions.text_1": "ベルトは自由な方向に接続できるわけではありません", @@ -1719,7 +2171,7 @@ "create.ponder.belt_directions.text_6": "これらはすべて接続できる方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", "create.ponder.belt_transport.header": "メカニカルベルトによる運搬", - "create.ponder.belt_transport.text_1": "ベルトを動かすと、アイテムやエンティティを運べます", + "create.ponder.belt_transport.text_1": "ベルトを稼働させると、アイテムやエンティティを運べます", "create.ponder.belt_transport.text_2": "素手で右クリックすると、ベルトからアイテムを取り出せます", "create.ponder.blaze_burner.header": "ブレイズバーナーへの餌やり", @@ -1740,13 +2192,13 @@ "create.ponder.brass_tunnel.text_3": "搬入側のフィルターは、単純に一致しないアイテムを搬入しないようにします", "create.ponder.brass_tunnel.text_4": "搬出側のフィルターは、搬出するアイテムを種類別に分類できます", "create.ponder.brass_tunnel.text_5": "通過するアイテムが複数の口から搬出できる場合は、モードによってどのように搬出されるかが決まります", - "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮製トンネルは接続されます", + "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮トンネルは接続されます", "create.ponder.brass_tunnel.text_7": "搬入したアイテムは、接続されているすべての搬出口に分配されます", "create.ponder.brass_tunnel.text_8": "アイテムをトンネルへ直接搬入することもできます", "create.ponder.brass_tunnel_modes.header": "真鍮トンネルの動作モード", "create.ponder.brass_tunnel_modes.text_1": "真鍮トンネルはレンチを使って分配モードを変更できます", - "create.ponder.brass_tunnel_modes.text_10": "「同期」は、真鍮製トンネルのデフォルト設定です", + "create.ponder.brass_tunnel_modes.text_10": "「同期」は、真鍮トンネルのデフォルト設定です", "create.ponder.brass_tunnel_modes.text_11": "アイテムはグループ内の全てのトンネルがアイテムを搬入できる場合のみ通過を許可します", "create.ponder.brass_tunnel_modes.text_12": "これにより、影響を受ける全てのベルトに同じ割合でアイテムを供給できます", "create.ponder.brass_tunnel_modes.text_2": "「スタック分割」は、アイテムを通せる搬出口の間でアイテムスタックを均等に分配しようとします", @@ -1756,7 +2208,7 @@ "create.ponder.brass_tunnel_modes.text_6": "繰り返しになりますが、搬出口がアイテムを通せない場合はスキップされます", "create.ponder.brass_tunnel_modes.text_7": "「強制順繰り分配」は、搬出をスキップしません", "create.ponder.brass_tunnel_modes.text_8": "「近い所を優先」アイテムの搬入口に最も近い搬出口から優先して分配します ", - "create.ponder.brass_tunnel_modes.text_9": "「ランダム」は、スタック全体をランダムに選択された搬出口に分配します ", + "create.ponder.brass_tunnel_modes.text_9": "「ランダム」は、スタック全体をランダムに選択した搬出口に分配します ", "create.ponder.cart_assembler.header": "トロッコアセンブラによる構造物の移動", "create.ponder.cart_assembler.text_1": "レッドストーン信号を受けたアセンブラは通過するトロッコに、取り付けられた構造物を取り付けます", @@ -1766,7 +2218,7 @@ "create.ponder.cart_assembler_dual.header": "列車を組み立てる", "create.ponder.cart_assembler_dual.text_1": "2つのトロッコアセンブラが構造物を共有している場合...", "create.ponder.cart_assembler_dual.text_2": "...どちらかにレッドストーン信号を与えると、列車が組み立てられます", - "create.ponder.cart_assembler_dual.text_3": "トロッコ連結器で接続されたトロッコと同様の動作をします", + "create.ponder.cart_assembler_dual.text_3": "トロッコ連結器で接続したトロッコと同様の動作をします", "create.ponder.cart_assembler_modes.header": "からくり付きトロッコの方向設定", "create.ponder.cart_assembler_modes.text_1": "トロッコの構造物は、トロッコの動きに合わせて回転します", @@ -1774,14 +2226,14 @@ "create.ponder.cart_assembler_modes.text_3": "アセンブラが「常に向きを固定する」に設定されている場合、からくりの向きは変わりません", "create.ponder.cart_assembler_rails.header": "その他のトロッコとレールの種類", - "create.ponder.cart_assembler_rails.text_1": "通常のレールに設置されたトロッコアセンブラは、通過するカートの動きに影響を与えません", + "create.ponder.cart_assembler_rails.text_1": "通常のレールに設置したトロッコアセンブラは、通過するカートの動きに影響を与えません", "create.ponder.cart_assembler_rails.text_2": "パワードレールやコントローラーレールでは、レッドストーン信号を受けるまでトロッコは固定されます", "create.ponder.cart_assembler_rails.text_3": "他のトロッコを使うこともできます", "create.ponder.cart_assembler_rails.text_4": "かまど付きトロッコは、構造物の収納ブロックから燃料を確保します", "create.ponder.chain_drive.header": "ケース入りチェーンドライブによる回転力の伝達", "create.ponder.chain_drive.text_1": "チェーンドライブは、一列に並べると回転を伝達します", - "create.ponder.chain_drive.text_2": "このように、に接続された全てのシャフトは、回転方向が同じです", + "create.ponder.chain_drive.text_2": "このように接続された全てのシャフトは、回転方向が同じです", "create.ponder.chain_drive.text_3": "列の任意の部分を90度方向を変えて設置できます", "create.ponder.chain_gearshift.header": "チェーンギアシフトによる回転速度の制御", @@ -1792,12 +2244,12 @@ "create.ponder.chain_gearshift.text_5": "レッドストーン信号の強度で、比率を1と2の間でより正確に調整できます", "create.ponder.chain_gearshift.text_6": "12 RPM", - "create.ponder.chute.header": "シュートでの下方向へ運搬", + "create.ponder.chute.header": "シュートによる下方向へ運搬", "create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます", "create.ponder.chute.text_2": "レンチを使って、窓を付けられます", "create.ponder.chute.text_3": "シュートを側面に配置すると、斜めに接続されます", - "create.ponder.chute_upward.header": "シュートでの上方向へ運搬", + "create.ponder.chute_upward.header": "シュートによる上方向へ運搬", "create.ponder.chute_upward.text_1": "シュートの上部または下部にファンを配置すると、アイテムを上方向へ運搬できます", "create.ponder.chute_upward.text_2": "エンジニアのゴーグルを付けてシュートを見ると、移動方向が表示されます", "create.ponder.chute_upward.text_3": "ブロックで詰まっている端では、アイテムを側面から搬出入する必要があります", @@ -1809,7 +2261,7 @@ "create.ponder.clockwork_bearing.text_4": "4:00", "create.ponder.clockwork_bearing.text_5": "ベアリングを右クリックして、構造物のアニメーションを開始・停止します", "create.ponder.clockwork_bearing.text_6": "時針の前に、2つ目の構造物を追加できます", - "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などでくっついていないことを確認してください", + "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などで取り付けられていないか確認してください", "create.ponder.clockwork_bearing.text_8": "2つ目の構造物は分針として回転します", "create.ponder.clutch.header": "クラッチによる回転力の制御", @@ -1823,7 +2275,7 @@ "create.ponder.cogwheel.header": "歯車による回転力の伝達", "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", - "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", + "create.ponder.cogwheel.text_2": "このように連結した隣り合うシャフトは、反対方向に回転します", "create.ponder.cogwheel_casing.header": "ケース入り歯車", "create.ponder.cogwheel_casing.text_1": "真鍮や安山岩のケーシングは歯車を飾ることもできます", @@ -1833,18 +2285,20 @@ "create.ponder.creative_fluid_tank.header": "クリエイティブ液体タンク", "create.ponder.creative_fluid_tank.text_1": "クリエイティブ液体タンクは、液体を無限に供給できます", "create.ponder.creative_fluid_tank.text_2": "液体容器アイテムで右クリックで液体を指定できます", - "create.ponder.creative_fluid_tank.text_3": "液体ネットワークはタンクから指定された液体を無限に引き出すことができます", + "create.ponder.creative_fluid_tank.text_3": "液体ネットワークはタンクから指定した液体を無限に吸いだせます", "create.ponder.creative_fluid_tank.text_4": "クリエイティブ液体タンクに押し入れた液体は消滅します", "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで出力を調整できる原動機です", "create.ponder.creative_motor.text_2": "背面パネルを見ながらスクロールすると、モーターの回転速度を変更できます", + "create.ponder.creative_motor_mojang.header": "Mojangの謎", + "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", "create.ponder.crushing_wheels.text_1": "一対の破砕ホイールは、非常に効果的にアイテムを粉砕できます", - "create.ponder.crushing_wheels.text_2": "動作には、互いに逆方向で回転させる必要があります", + "create.ponder.crushing_wheels.text_2": "動作には、互いに反対方向に回転させる必要があります", "create.ponder.crushing_wheels.text_3": "上からアイテムを投げ入れたりして、搬入すると加工されます", - "create.ponder.crushing_wheels.text_4": "アイテムを搬出入を自動化することもできます", + "create.ponder.crushing_wheels.text_4": "アイテムの搬出入を自動化することもできます", "create.ponder.deployer.header": "デプロイヤーの使い方", "create.ponder.deployer.text_1": "回転力を供給したデプロイヤーは、プレイヤーの動作を模倣できます", @@ -1870,10 +2324,10 @@ "create.ponder.deployer_modes.header": "デプロイヤーの動作モード", "create.ponder.deployer_modes.text_1": "デフォルトでは、デプロイヤーは右クリックの動作を模倣します", - "create.ponder.deployer_modes.text_2": "レンチを使えば、左クリックの動作を模倣するように設定できます", + "create.ponder.deployer_modes.text_2": "レンチを使えば、右クリックの動作を模倣するように設定できます", "create.ponder.deployer_processing.header": "デプロイヤーによるアイテムの処理", - "create.ponder.deployer_processing.text_1": "装着されたアイテムで、デプロイヤーの先にあるアイテムを処理することができます", + "create.ponder.deployer_processing.text_1": "装着したアイテムで、デプロイヤーの先にあるアイテムを処理できます", "create.ponder.deployer_processing.text_2": "加工したいアイテムはドロップしたり、デプロイヤーの下のデポに置いてください", "create.ponder.deployer_processing.text_3": "ベルトでアイテムを供給すると", "create.ponder.deployer_processing.text_4": "デプロイヤーが自動でアイテムを止め、加工します。", @@ -1881,16 +2335,39 @@ "create.ponder.deployer_redstone.header": "レッドストーン信号によるデプロイヤーの制御", "create.ponder.deployer_redstone.text_1": "レッドストーン信号を受けている間、デプロイヤーは稼働しません", "create.ponder.deployer_redstone.text_2": "デプロイヤーは停止する前に、開始したサイクルは終了させます", - "create.ponder.deployer_redstone.text_3": "その為、反転したパルス信号を使って丁度1サイクルだけ稼働させられます", + "create.ponder.deployer_redstone.text_3": "その為、反転したパルス信号を使ってちょうど1サイクルだけ稼働させられます", "create.ponder.depot.header": "デポの使い方", "create.ponder.depot.text_1": "デポは動かないメカニカルベルトのようなブロックです", - "create.ponder.depot.text_2": "右クリックして、手動でアイテム搬出入できます", + "create.ponder.depot.text_2": "右クリックして、手動でアイテムを搬出入できます", "create.ponder.depot.text_3": "メカニカルベルトのように、載せたアイテムを加工できます", "create.ponder.depot.text_4": "また、メカニカルアームにアイテムを供給することもできます", + "create.ponder.display_board.header": "ディスプレイボードの使い方", + "create.ponder.display_board.text_1": "ディスプレイボードは看板に代わる、より拡張性の高いブロックです", + "create.ponder.display_board.text_2": "稼働には回転力が必要です", + "create.ponder.display_board.text_3": "文字の表示には名札を使うか...", + "create.ponder.display_board.text_4": "ディスプレイリンクを通して行えます", + "create.ponder.display_board.text_5": "ボードは、行ごとにそれぞれ染料で染色できます", + "create.ponder.display_board.text_6": "素手で右クリックすると、リセットできます", + + "create.ponder.display_link.header": "ディスプレイリンクの設置", + "create.ponder.display_link.text_1": "ディスプレイリンクは、変化する情報の視覚化に使えます", + "create.ponder.display_link.text_2": "はじめに、対象となるディスプレイを右クリックし...", + "create.ponder.display_link.text_3": "...それから情報を読み出すブロックに取り付けます", + "create.ponder.display_link.text_4": "選択・設定をするためにUIを開いてください", + "create.ponder.display_link.text_5": "これで、ディスプレイがリンクからの情報を受信するようになりました", + "create.ponder.display_link.text_6": "全てのブロックが情報源として使えるわけではありません", + "create.ponder.display_link.text_7": "互換性のあるブロックはそれぞれ固有の情報を提供します", + "create.ponder.display_link.text_8": "ディスプレイリンクは、複数の異なるディスプレイと連動できます", + + "create.ponder.display_link_redstone.header": "レッドストーンによる制御", + "create.ponder.display_link_redstone.text_1": "レッドストーン信号を受ける間、ディスプレイリンクは情報の更新を停止します", + "create.ponder.display_link_redstone.text_2": "信号が切れると、タイマーがリセットされ、新しい情報が即座に送信されます", + "create.ponder.display_link_redstone.text_3": "ただし、情報元から発せられるレッドストーン信号はリンクに影響を与えません", + "create.ponder.empty_blaze_burner.header": "空のブレイズバーナーの使い方", - "create.ponder.empty_blaze_burner.text_1": "空のバーナーでブレイズを右クリックすると捕獲できます", + "create.ponder.empty_blaze_burner.text_1": "空のバーナーで右クリックするとブレイズを捕獲できます", "create.ponder.empty_blaze_burner.text_2": "また、ブレイズはスポーンブロックから直接捕獲することもできます", "create.ponder.empty_blaze_burner.text_3": "これで、様々な機械で利用できる理想的な熱源が得られます", "create.ponder.empty_blaze_burner.text_4": "空のブレイズバーナーは火打石と打ち金を使って火を付ければ装飾にも使えます", @@ -1898,7 +2375,7 @@ "create.ponder.empty_blaze_burner.text_6": "しかし、これは加工用の熱源には適していません", "create.ponder.encased_fluid_pipe.header": "ケース入り液体パイプ", - "create.ponder.encased_fluid_pipe.text_1": "銅ケーシングで液体パイプを飾ることができます", + "create.ponder.encased_fluid_pipe.text_1": "銅ケーシングで液体パイプを飾れます", "create.ponder.encased_fluid_pipe.text_2": "ただの飾りではなく、ケース入りパイプは接続がロックされます", "create.ponder.encased_fluid_pipe.text_3": "隣接するブロックの設置や破壊などの更新に反応しなくなります", @@ -1910,24 +2387,20 @@ "create.ponder.fan_processing.text_1": "溶岩を通過した気流は、加熱されます", "create.ponder.fan_processing.text_2": "この気流に当てられたアイテムは精錬されます", "create.ponder.fan_processing.text_3": "ただし、食品は焼却されてしまいます", - "create.ponder.fan_processing.text_4": "食品加工には、代わりに火を使った燻製気流を利用する必要があります", + "create.ponder.fan_processing.text_4": "食品加工には、代わりに火を使った燻製気流を使ってください", "create.ponder.fan_processing.text_5": "水を通過する気流は、洗浄気流になります", - "create.ponder.fan_processing.text_6": "この気流を使って、いくつかの面白い加工ができます", + "create.ponder.fan_processing.text_6": "この気流を使えば、面白い加工ができます", "create.ponder.fan_processing.text_7": "ファンの速度は処理速度とは関係がなく、範囲のみが変わります", - "create.ponder.fan_processing.text_8": "ファンでの加工は、デポやベルト上のアイテムにも行われます", - - "create.ponder.fan_source.header": "ケース入りファンによる回転力の生成", - "create.ponder.fan_source.text_1": "ファンを熱源に向けて設置すると、回転力を生成できます", - "create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます", + "create.ponder.fan_processing.text_8": "ファンによる加工は、デポやベルト上のアイテムにも行われます", "create.ponder.fluid_pipe_flow.header": "銅パイプを使った液体の移動", - "create.ponder.fluid_pipe_flow.text_1": "液体パイプは2つ以上の液体源と輸送先を繋ぐことができます", + "create.ponder.fluid_pipe_flow.text_1": "液体パイプは2つ以上の液体源と輸送先を繋げられます", "create.ponder.fluid_pipe_flow.text_2": "レンチを使うと、まっすぐなパイプに窓を付けられます", "create.ponder.fluid_pipe_flow.text_3": "窓付きパイプは側面と隣接するパイプとつながりません", "create.ponder.fluid_pipe_flow.text_4": "メカニカルポンプを使えば液体を輸送できます", "create.ponder.fluid_pipe_flow.text_5": "はじめは液体が輸送されません", - "create.ponder.fluid_pipe_flow.text_6": "液れが終点まで届くと徐々に輸送されていきます", - "create.ponder.fluid_pipe_flow.text_7": "つまり、パイプブロック自体には液体は物理的に入っていないということです", + "create.ponder.fluid_pipe_flow.text_6": "流れが終点まで届くと徐々に輸送されていきます", + "create.ponder.fluid_pipe_flow.text_7": "つまり、パイプブロック自体に液体は入っていないということです", "create.ponder.fluid_pipe_interaction.header": "液体容器の排出と充填", "create.ponder.fluid_pipe_interaction.text_1": "液体ネットワークは終点でさまざまなブロックとやりとりできます", @@ -1936,26 +2409,21 @@ "create.ponder.fluid_pipe_interaction.text_4": "また、開いたスペースに液体ブロックを設置できます", "create.ponder.fluid_pipe_interaction.text_5": "パイプは、いくつかのブロックから直接液体を吸い込めます", - "create.ponder.fluid_tank_sizes.header": "液体タンクのサイズ", + "create.ponder.fluid_tank_sizes.header": "液体タンクの寸法", "create.ponder.fluid_tank_sizes.text_1": "液体タンクは複数組み合わせて容量を増やせます。", "create.ponder.fluid_tank_sizes.text_2": "横幅は最大3ブロック", "create.ponder.fluid_tank_sizes.text_3": "高さは30ブロック以上重ねられます", "create.ponder.fluid_tank_sizes.text_4": "レンチを使って、タンクの窓を付け外しできます", "create.ponder.fluid_tank_storage.header": "液体タンクへの液体の貯蔵", - "create.ponder.fluid_tank_storage.text_1": "液体タンクは大量の液体を貯蔵することができます", + "create.ponder.fluid_tank_storage.text_1": "液体タンクは大量の液体を貯蔵できます", "create.ponder.fluid_tank_storage.text_2": "どの方向からでも液体を搬出入できます", "create.ponder.fluid_tank_storage.text_3": "コンパレーターで液体量を測れます", - "create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を出し入れできません。", - "create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を出し入れできます。", - - "create.ponder.flywheel.header": "弾み車による回転力の生成", - "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、弾み車が必要です", - "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", - "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", + "create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を搬出入できません。", + "create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を搬出入できます。", "create.ponder.funnel_compat.header": "ファンネルの互換性", - "create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性が良いです", + "create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性がいいです", "create.ponder.funnel_compat.text_2": "上向きのメカニカルソー", "create.ponder.funnel_compat.text_3": "デポ", "create.ponder.funnel_compat.text_4": "アイテム排液口など", @@ -1970,7 +2438,7 @@ "create.ponder.funnel_intro.header": "ファンネルの使い方", "create.ponder.funnel_intro.text_1": "ファンネルは、収納ブロックのアイテムを運搬するのに使います", - "create.ponder.funnel_redstone.header": "レッドストーンコントロール", + "create.ponder.funnel_redstone.header": "レッドストーンによる制御", "create.ponder.funnel_redstone.text_1": "レッドストーン信号によって、ファンネルが動作を防げます", "create.ponder.funnel_transfer.header": "直接運搬", @@ -1978,11 +2446,6 @@ "create.ponder.funnel_transfer.text_2": "この様な場合は、シュートやスマートシュートの方が適しています", "create.ponder.funnel_transfer.text_3": "また水平方向の運搬も同様で、この場合メカニカルベルトの方が適しています", - "create.ponder.furnace_engine.header": "かまどエンジンによる回転力の生成", - "create.ponder.furnace_engine.text_1": "かまどエンジンは、取り付けたかまどの稼働中に回転力を生成します", - "create.ponder.furnace_engine.text_2": "この回転力は、非常に大きな応力許容量を持っています", - "create.ponder.furnace_engine.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", - "create.ponder.gantry_carriage.header": "ガントリーキャリッジの使い方", "create.ponder.gantry_carriage.text_1": "ガントリーキャリッジは、ガントリーシャフトに取り付けてスライドできます", "create.ponder.gantry_carriage.text_2": "ガントリーは、取り付けられたブロックを動かします", @@ -1998,12 +2461,12 @@ "create.ponder.gantry_direction.text_3": "また、シャフトの回転方向によっても決まります", "create.ponder.gantry_direction.text_4": "キャリッジへ伝達する回転力も同じルールが適用されます", - "create.ponder.gantry_redstone.header": "ガントリーでの回転力の伝播", + "create.ponder.gantry_redstone.header": "ガントリーによる回転力の伝達", "create.ponder.gantry_redstone.text_1": "レッドストーン信号を受けたガントリーシャフトは、キャリッジの移動を停止します", - "create.ponder.gantry_redstone.text_2": "代わりに、その回転力がキャリッジの出力軸から伝達されます", + "create.ponder.gantry_redstone.text_2": "代わりに、その回転力をキャリッジの出力軸に伝達します", "create.ponder.gantry_shaft.header": "ガントリーシャフトの使い方", - "create.ponder.gantry_shaft.text_1": "ガントリーシャフトは、ガントリー機構の基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", + "create.ponder.gantry_shaft.text_1": "ガントリーシャフトは、ガントリーからくりの基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", "create.ponder.gantry_shaft.text_2": "ガントリーによるからくりは、取り付けたブロックを動かせます", "create.ponder.gearbox.header": "ギアボックスによる回転力の伝達", @@ -2025,16 +2488,16 @@ "create.ponder.hose_pulley.header": "ホースプーリーを使った液体の吸入・放出", "create.ponder.hose_pulley.text_1": "ホースプーリーは、大規模な液体の吸入や放出に使います", "create.ponder.hose_pulley.text_2": "回転力の出入口はプーリーのホースの高さを変えるのに使います", - "create.ponder.hose_pulley.text_3": "回転方向を逆にするとプーリーが収納されます", + "create.ponder.hose_pulley.text_3": "回転方向を逆にするとホースが収納されます", "create.ponder.hose_pulley.text_4": "反対側にはパイプを接続できます", - "create.ponder.hose_pulley.text_5": "接続された液体ネットワークはプーリーに液体を供給し、放出できます", - "create.ponder.hose_pulley.text_6": "また、プーリーから吸い出し、代わりに吸入することもできます", + "create.ponder.hose_pulley.text_5": "接続された液体ネットワークでプーリーに液体を供給すると、放出できます", + "create.ponder.hose_pulley.text_6": "また、プーリーから吸い出すことで、代わりに吸入できます", "create.ponder.hose_pulley.text_7": "プーリーの吸入・放出速度は液体ネットワークの性能で決まります", "create.ponder.hose_pulley_infinite.header": "大規模な液体の無限の吸入・放出", "create.ponder.hose_pulley_infinite.text_1": "ホースプーリーを十分に大きな海に設置すると", "create.ponder.hose_pulley_infinite.text_2": "海に影響を与えずに液体を吸入・放出できます", - "create.ponder.hose_pulley_infinite.text_3": "つまり、液体ネットワークはこのプーリーから液体を無限に出し入れできます", + "create.ponder.hose_pulley_infinite.text_3": "つまり、液体ネットワークはこのプーリーから液体を無限に搬出入できます", "create.ponder.hose_pulley_level.header": "ホースプーリーの吸入・放出レベル", "create.ponder.hose_pulley_level.text_1": "完全に収納された状態では、ホースプーリーは稼働しません", @@ -2045,31 +2508,31 @@ "create.ponder.item_drain.header": "アイテム排液口で液体容器を空にする", "create.ponder.item_drain.text_1": "アイテム排液口はアイテムから液体を取り出せます", - "create.ponder.item_drain.text_2": "右クリックすると、持っているアイテムの中の液体を注ぐことができます", + "create.ponder.item_drain.text_2": "右クリックすると、持っているアイテムの中の液体を注げます", "create.ponder.item_drain.text_3": "横からアイテムを入れると...", "create.ponder.item_drain.text_4": "...中に詰まった液体を出しながら横に転がっていきます", "create.ponder.item_drain.text_5": "液体ネットワークで、排液口から液体を取り出せます", "create.ponder.item_vault_sizes.header": "アイテム保管庫の寸法", - "create.ponder.item_vault_sizes.text_1": "アイテム保管庫はいくつか繋げて容量を増やすことができます", + "create.ponder.item_vault_sizes.text_1": "アイテム保管庫はいくつか繋げて容量を増やせます", "create.ponder.item_vault_sizes.text_2": "そのベースとなる正方形の辺の長さは最大3ブロックまで...", "create.ponder.item_vault_sizes.text_3": "...長さはその三倍まで伸ばせます", - "create.ponder.item_vault_storage.header": "保管庫でのアイテムの保管", + "create.ponder.item_vault_storage.header": "保管庫によるアイテムの保管", "create.ponder.item_vault_storage.text_1": "アイテム保管庫は、大量のアイテムを保管できます", - "create.ponder.item_vault_storage.text_2": "ただし、アイテムを手動で搬出入することはできません。", + "create.ponder.item_vault_storage.text_2": "ただし、アイテムを手動で搬出入することはできません", "create.ponder.item_vault_storage.text_3": "アイテム運搬用の機械ならどれを使っても搬入と...", "create.ponder.item_vault_storage.text_4": "搬出ができます", "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", - "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", + "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えて伝達するのに役立ちます", "create.ponder.linear_chassis_attachment.header": "リニアシャーシによるブロックの取り付け", "create.ponder.linear_chassis_attachment.text_1": "リニアシャーシの特定の面は特殊な粘着面にできます", "create.ponder.linear_chassis_attachment.text_2": "もう一度クリックすると、反対側の面も粘着面になります", "create.ponder.linear_chassis_attachment.text_3": "素手でスニークしながら右クリックすると粘着剤を剥がせます", - "create.ponder.linear_chassis_attachment.text_4": "リニアシャーシの特殊な粘着面は、ブロックの列をまとめてくっつけることができます", + "create.ponder.linear_chassis_attachment.text_4": "リニアシャーシの特殊な粘着面は、ブロックの列をまとめて取り付けられます", "create.ponder.linear_chassis_attachment.text_5": "レンチを使って、このシャーシの粘着範囲を正確に調整できます", "create.ponder.linear_chassis_attachment.text_6": "CTRLを押しながらスクロールすると、接続している全てのシャーシブロックの範囲を一気に調整できます", "create.ponder.linear_chassis_attachment.text_7": "他の面にブロックを接着するには、超粘着剤を使う必要があります", @@ -2082,20 +2545,20 @@ "create.ponder.mechanical_arm.header": "メカニカルアームの設定", "create.ponder.mechanical_arm.text_1": "メカニカルアームを設置する前に、搬入元と搬出先を設定しなければなりません", - "create.ponder.mechanical_arm.text_2": "特定のブロックをターゲットと設定するには、アームを持ったまま右クリックしましょう", + "create.ponder.mechanical_arm.text_2": "特定のブロックを対象に設定するには、アームを持ったまま右クリックしてください", "create.ponder.mechanical_arm.text_3": "搬入元(青)と搬出先(オレンジ)を切り替えるには、もう1度右クリックします", - "create.ponder.mechanical_arm.text_4": "アームを持ったまま左クリックすると選択が解除されます", - "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定されたブロックをターゲットにします", + "create.ponder.mechanical_arm.text_4": "アームを持ったまま右クリックすると選択が解除されます", + "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定したブロックを対象にします", "create.ponder.mechanical_arm.text_6": "範囲内であれば、複数の搬入元と搬出先を設定できます", - "create.ponder.mechanical_arm.text_7": "しかし、あらゆる機械やブロックをターゲットにできるわけではありません", + "create.ponder.mechanical_arm.text_7": "ただし、あらゆる機械やブロックを対象にできるわけではありません", "create.ponder.mechanical_arm.text_8": "そんな時はファンネルやデポを経由させましょう", "create.ponder.mechanical_arm_filtering.header": "メカニカルアームの搬出フィルタリング", "create.ponder.mechanical_arm_filtering.text_1": "搬入元", "create.ponder.mechanical_arm_filtering.text_2": "搬出先", "create.ponder.mechanical_arm_filtering.text_3": "フィルターを使ってアームが搬出入するアイテムを制限したいと思っても", - "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体には、フィルタリングオプションがありません", - "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮製ファンネル等をターゲットにした場合、アームにそのフィルターが反映されます", + "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体は、フィルターを設定できません", + "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮ファンネルなどを対象にした場合、アームにそのフィルターが反映されます", "create.ponder.mechanical_arm_filtering.text_6": "アームは賢いので、搬出できないアイテムを拾うことはありません", "create.ponder.mechanical_arm_modes.header": "メカニカルアームの分配モード", @@ -2107,7 +2570,7 @@ "create.ponder.mechanical_arm_modes.text_6": "「順繰り分配」は、有効な全ての搬出先へ順番に搬出します", "create.ponder.mechanical_arm_modes.text_7": "搬出先がそれ以上のアイテムを受け取れない場合、そこへの搬出はスキップされます", "create.ponder.mechanical_arm_modes.text_8": "「強制順繰り分配」は、搬出をスキップせず、空きがでるまで待機します", - "create.ponder.mechanical_arm_modes.text_9": "「最初のターゲットを優先」は、設定した順番が先の方のターゲットに優先して搬出します", + "create.ponder.mechanical_arm_modes.text_9": "「最初の対象を優先」は、設定した順番が先の方の対象に優先して搬出します", "create.ponder.mechanical_arm_redstone.header": "メカニカルアームのレッドストーン制御", "create.ponder.mechanical_arm_redstone.text_1": "レッドストーン信号を受けると、メカニカルアームは稼働しません", @@ -2121,9 +2584,9 @@ "create.ponder.mechanical_crafter.header": "メカニカルクラフターの配置", "create.ponder.mechanical_crafter.text_1": "メカニカルクラフターは、あらゆるクラフトレシピを自動化できます", "create.ponder.mechanical_crafter.text_2": "レンチを使えばクラフターがアイテムを移動させるベルトの向きを変えられます", - "create.ponder.mechanical_crafter.text_3": "動かすためにはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", + "create.ponder.mechanical_crafter.text_3": "稼働にはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", "create.ponder.mechanical_crafter.text_4": "完成品は外に向かうベルトが指す方向にある収納ブロックに搬出されます", - "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを動かすには回転力が必要です", + "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを稼働には回転力が必要です", "create.ponder.mechanical_crafter.text_6": "前面を右クリックすると手動でアイテムを搬入できます", "create.ponder.mechanical_crafter.text_7": "1つのクラフターに続くベルトの全スロットにアイテムが入ると、クラフトが開始されます", "create.ponder.mechanical_crafter.text_8": "スロットが埋まっていなくても、レッドストーンパルスを使って強制的にクラフトを開始できます", @@ -2131,7 +2594,7 @@ "create.ponder.mechanical_crafter_connect.header": "メカニカルクラフターの搬入口の共有", "create.ponder.mechanical_crafter_connect.text_1": "アイテムは自動でクラフターに搬入することもできます", "create.ponder.mechanical_crafter_connect.text_2": "背面でレンチを使うと、メカニカルクラフターが接続されます", - "create.ponder.mechanical_crafter_connect.text_3": "接続された全てのクラフターは、同じ搬入口からアイテムを搬入できるようになります", + "create.ponder.mechanical_crafter_connect.text_3": "接続した全てのクラフターは、同じ搬入口からアイテムを搬入できるようになります", "create.ponder.mechanical_crafter_covers.header": "メカニカルクラフターとスロットカバー", "create.ponder.mechanical_crafter_covers.text_1": "一部のレシピでは、ベルトの流れの隙間を埋める為に追加のクラフターが必要になります", @@ -2143,11 +2606,11 @@ "create.ponder.mechanical_drill.text_2": "採掘速度は回転速度で決まります", "create.ponder.mechanical_drill_contraption.header": "からくりに組み込んでのメカニカルドリルの使い方", - "create.ponder.mechanical_drill_contraption.text_1": "からくりの一部として、メカニカルドリルを動かすと...", + "create.ponder.mechanical_drill_contraption.text_1": "メカニカルドリルを組み込んだからくりを動かすと...", "create.ponder.mechanical_drill_contraption.text_2": "...ドリルは、移動先のブロックを破壊します", "create.ponder.mechanical_harvester.header": "からくりに組み込んでのメカニカルハーベスターの使い方", - "create.ponder.mechanical_harvester.text_1": "からくりの一部として、ハーベスターを動かすと...", + "create.ponder.mechanical_harvester.text_1": "ハーベスター組み込んだからくりを動かすと...", "create.ponder.mechanical_harvester.text_2": "...成熟した作物を収穫し、成長をリセットします", "create.ponder.mechanical_mixer.header": "メカニカルミキサーによるアイテム加工", @@ -2163,7 +2626,7 @@ "create.ponder.mechanical_piston_modes.header": "メカニカルピストンの動作モード", "create.ponder.mechanical_piston_modes.text_1": "ピストンの動作が止まると、移動した構造物はブロックへ戻ります", - "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定したりできます", + "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でしかブロックに戻らないように設定したりできます", "create.ponder.mechanical_plough.header": "からくりに組み込んでのメカニカルプラウの使い方", "create.ponder.mechanical_plough.text_1": "プラウを組み込んだからくりを動かすと...", @@ -2172,19 +2635,19 @@ "create.ponder.mechanical_plough.text_4": "また、エンティティを傷つけずに飛ばすこともできます", "create.ponder.mechanical_press.header": "メカニカルプレスによるアイテム加工", - "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置されたアイテムを加工できます", + "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置したアイテムを加工できます", "create.ponder.mechanical_press.text_2": "加工するアイテムは下に落としたり、プレス機の下にあるデポに置いたりしてください", "create.ponder.mechanical_press.text_3": "アイテムがベルトで供給されると...", "create.ponder.mechanical_press.text_4": "...プレスが自動でアイテムを止め、加工します", - "create.ponder.mechanical_press_compacting.header": "メカニカルプレスでの圧縮加工", + "create.ponder.mechanical_press_compacting.header": "メカニカルプレスによる圧縮加工", "create.ponder.mechanical_press_compacting.text_1": "鉢に入れられたアイテムをプレスし、圧縮加工できます", "create.ponder.mechanical_press_compacting.text_2": "圧縮加工には、2x2、3x3のクラフトレシピに加え、いくつかの追加レシピがあります", "create.ponder.mechanical_press_compacting.text_3": "これらのレシピの中には、ブレイズバーナーの熱を必要とするものがあります", "create.ponder.mechanical_press_compacting.text_4": "フィルタースロットは、2つのレシピが競合するときに使えます", "create.ponder.mechanical_pump_flow.header": "メカニカルポンプによる液体輸送", - "create.ponder.mechanical_pump_flow.text_1": "メカニカルポンプは、接続されたネットワークの液体の流れを制御します", + "create.ponder.mechanical_pump_flow.text_1": "メカニカルポンプは、接続したネットワークの液体の流れを制御します", "create.ponder.mechanical_pump_flow.text_2": "稼働させると、矢印が液体の流れる方向を示します", "create.ponder.mechanical_pump_flow.text_3": "後ろのネットワークが液体を吸い取っているのに対し...", "create.ponder.mechanical_pump_flow.text_4": "...前のネットワークが液体を外側に送っています", @@ -2195,25 +2658,25 @@ "create.ponder.mechanical_pump_speed.text_1": "速度に関わらず、メカニカルポンプは16ブロック先までのパイプに影響を与えます", "create.ponder.mechanical_pump_speed.text_2": "回転速度を速くすることで、流れの送られる速度と...", "create.ponder.mechanical_pump_speed.text_3": "...液体の輸送速度が変わります", - "create.ponder.mechanical_pump_speed.text_4": "液体ネットワーク内のポンプはそれぞれ別の速度で動かすことができます", - "create.ponder.mechanical_pump_speed.text_5": "向きを交互にすることで、流れの方向を揃えることができます", + "create.ponder.mechanical_pump_speed.text_4": "液体ネットワーク内のポンプはそれぞれ別の速度で動力を供給できます", + "create.ponder.mechanical_pump_speed.text_5": "向きを交互にすることで、流れの方向を揃えられます", "create.ponder.mechanical_saw_breaker.header": "メカニカルソーによる伐採", "create.ponder.mechanical_saw_breaker.text_1": "メカニカルソーは回転力を供給すると、目の前の木を伐採できます", "create.ponder.mechanical_saw_breaker.text_2": "木を完全に伐採するには、木と地面を繋ぐ最後の根本を伐採しなければなりません", "create.ponder.mechanical_saw_contraption.header": "からくりに組み込んでのメカニカルソーの使い方", - "create.ponder.mechanical_saw_contraption.text_1": "ソーを組み込んだからくりを動かすと...", - "create.ponder.mechanical_saw_contraption.text_2": "...ソーは木を伐採します", + "create.ponder.mechanical_saw_contraption.text_1": "メカニカルソーを組み込んだからくりを動かすと...", + "create.ponder.mechanical_saw_contraption.text_2": "...メカニカルソーは木を伐採します", - "create.ponder.mechanical_saw_processing.header": "メカニカルソーでのアイテム加工", + "create.ponder.mechanical_saw_processing.header": "メカニカルソーによるアイテム加工", "create.ponder.mechanical_saw_processing.text_1": "上向きのメカニカルソーは、様々なアイテムを加工できます", - "create.ponder.mechanical_saw_processing.text_2": "加工されたアイテムは、常にソーの回転方向とは逆に移動します", + "create.ponder.mechanical_saw_processing.text_2": "加工したアイテムは、常にソーの回転方向とは逆に移動します", "create.ponder.mechanical_saw_processing.text_3": "ソーはメカニカルベルトと繋げて加工できます", "create.ponder.mechanical_saw_processing.text_4": "複数の完成品がある場合、フィルタースロットでどの完成品を作るかを指定できます", "create.ponder.mechanical_saw_processing.text_5": "フィルターがない場合、ソーは全ての加工を順番に繰り返します", - "create.ponder.millstone.header": "石臼でのアイテム加工", + "create.ponder.millstone.header": "石臼によるアイテム加工", "create.ponder.millstone.text_1": "石臼はアイテムを粉砕加工する機械です", "create.ponder.millstone.text_2": "歯車を使って、側面から回転力を供給できます", "create.ponder.millstone.text_3": "上からアイテムを投げ入れてアイテムを搬入できます", @@ -2230,17 +2693,17 @@ "create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります", "create.ponder.portable_fluid_interface.header": "からくり液体交換", - "create.ponder.portable_fluid_interface.text_1": "移動しているからくりの液体タンクは、どんなパイプでも出し入れできません", - "create.ponder.portable_fluid_interface.text_2": "この機械は、からくりをブロックに戻すことなく液体を出し入れできます", + "create.ponder.portable_fluid_interface.text_1": "移動しているからくりの液体タンクは、どんなパイプでも搬出入できません", + "create.ponder.portable_fluid_interface.text_2": "この機械は、からくりをブロックに戻すことなく液体を搬出入できます", "create.ponder.portable_fluid_interface.text_3": "1~2ブロックの隙間を開けて2つ目のインターフェースを設置しましょう", "create.ponder.portable_fluid_interface.text_4": "すれ違ったときに必ず接続されます", "create.ponder.portable_fluid_interface.text_5": "接続中は、設置されている方のインターフェースはからくり内全てのタンクのように振る舞います", "create.ponder.portable_fluid_interface.text_6": "液体の搬入と...", "create.ponder.portable_fluid_interface.text_7": "...搬出ができます", - "create.ponder.portable_fluid_interface.text_8": "しばらく中身が出し入れされないと、このからくりはまた動き出します", + "create.ponder.portable_fluid_interface.text_8": "しばらく中身が搬出入されないと、このからくりはまた動き出します", - "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", - "create.ponder.portable_storage_interface.text_1": "稼働中のからくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", + "create.ponder.portable_storage_interface.header": "からくり内の収納ブロックとの搬出入", + "create.ponder.portable_storage_interface.text_1": "からくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", "create.ponder.portable_storage_interface.text_2": "この装置は、からくりを停止することなく、収納ブロックと搬出入できます", "create.ponder.portable_storage_interface.text_3": "1~2ブロックの間隔をあけて、2つ目のインターフェースを設置しましょう", "create.ponder.portable_storage_interface.text_4": "両者がすれ違うたびに接続されます", @@ -2285,7 +2748,7 @@ "create.ponder.radial_chassis.text_6": "ブロックが粘着面に設置されていると...", "create.ponder.radial_chassis.text_7": "...その範囲内の繋がっている全てのブロックが取り付けられます", "create.ponder.radial_chassis.text_8": "レンチを使って、シャーシの範囲の半径を正確に指定できます", - "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックはくっつきません", + "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックは取りつきません", "create.ponder.redstone_contact.header": "レッドストーンコンタクト", "create.ponder.redstone_contact.text_1": "向かい合ったレッドストーンコンタクトは、レッドストーン信号を出力します", @@ -2305,12 +2768,20 @@ "create.ponder.rope_pulley_attachment.header": "プーリーをからくりの一部として動かす", "create.ponder.rope_pulley_attachment.text_1": "プーリーがからくりによって動かされると...", - "create.ponder.rope_pulley_attachment.text_2": "...プーリーと接続している構造物も一緒に動かされます", + "create.ponder.rope_pulley_attachment.text_2": "...プーリーと接続している構造物も一緒に動きます", "create.ponder.rope_pulley_attachment.text_3": "プーリーが稼働している間は動かせないことに注意してください", "create.ponder.rope_pulley_modes.header": "ローププーリーの動作モード", "create.ponder.rope_pulley_modes.text_1": "プーリーの動きが止まると、移動した構造物はブロックに戻ります", - "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定したりできます", + "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でしかブロックに戻らないように設定したりできます", + + "create.ponder.rose_quartz_lamp.header": "ローズクォーツランプ", + "create.ponder.rose_quartz_lamp.text_1": "ローズクォーツランプはレッドストーン信号を受けるとオンになります", + "create.ponder.rose_quartz_lamp.text_2": "するとその後もレッドストーン信号を発し続けます", + "create.ponder.rose_quartz_lamp.text_3": "複数のランプを並べて設置すると...", + "create.ponder.rose_quartz_lamp.text_4": "...ランプをオンにすると信号はそこに集中し、他のランプはオフになります", + "create.ponder.rose_quartz_lamp.text_5": "オンのランプの距離に応じてコンパレーターは信号を発します", + "create.ponder.rose_quartz_lamp.text_6": "レンチでランプを手動で切り替えることもできます", "create.ponder.rotation_speed_controller.header": "回転速度コントローラーの使い方", "create.ponder.rotation_speed_controller.text_1": "コントローラーは、側面の軸から上の大きな歯車に回転を伝達します", @@ -2330,14 +2801,14 @@ "create.ponder.sequenced_gearshift.text_1": "シーケンスギアシフトは、設定されたプログラムに従って回転を伝達します", "create.ponder.sequenced_gearshift.text_2": "右クリックで設定画面を開けます", "create.ponder.sequenced_gearshift.text_3": "レッドストーン信号を受けると、設定されたプログラムを実行します", - "create.ponder.sequenced_gearshift.text_4": "終了すると止まり、また次のレッドストーン信号を受けると同じように実行します", - "create.ponder.sequenced_gearshift.text_5": "レッドストーンコンパレータで、現在の進捗を読み取れます", + "create.ponder.sequenced_gearshift.text_4": "終了すると止まり、また次のレッドストーン信号を受けると同じように動作します", + "create.ponder.sequenced_gearshift.text_5": "レッドストーンコンパレーターで、現在の進捗を読み取れます", "create.ponder.shaft.header": "シャフトによる回転力の伝達", "create.ponder.shaft.text_1": "シャフトはまっすぐに回転を伝達します", "create.ponder.shaft_casing.header": "ケース入りシャフト", - "create.ponder.shaft_casing.text_1": "真鍮製、安山岩製ケーシングを使って、シャフトを装飾できます", + "create.ponder.shaft_casing.text_1": "真鍮、安山岩ケーシングを使って、シャフトを装飾できます", "create.ponder.smart_chute.header": "スマートシュートによるアイテムのフィルタリング", "create.ponder.smart_chute.text_1": "スマートシュートは、垂直方向のシュートにフィルター機能を追加したものです", @@ -2348,28 +2819,51 @@ "create.ponder.smart_pipe.header": "スマートパイプによる液体制御", "create.ponder.smart_pipe.text_1": "スマートパイプは液体の種類によって流れを制御できます", "create.ponder.smart_pipe.text_2": "搬入元に直接つなげることで、搬出する液体の種類を指定できます", - "create.ponder.smart_pipe.text_3": "フィルタースロットを右クリックして、液体の入ったアイテムを装着して指定することもできます", - "create.ponder.smart_pipe.text_4": "スマートパイプは、パイプネットワークの搬出先に設置すると指定された液体のみを流します", + "create.ponder.smart_pipe.text_3": "フィルタースロットに液体の入ったアイテムを右クリックして指定できます", + "create.ponder.smart_pipe.text_4": "スマートパイプは、パイプネットワークの搬出先に設置すると、指定した液体のみを流します", "create.ponder.speedometer.header": "速度メーターによる動力情報の監視", - "create.ponder.speedometer.text_1": "速度メーターは、接続された機械の現在の回転速度を表示します", + "create.ponder.speedometer.text_1": "速度メーターは、接続した機械の回転速度を表示します", "create.ponder.speedometer.text_2": "エンジニアのゴーグルを装着していると、より詳細な情報を得られます", - "create.ponder.speedometer.text_3": "コンパレータは、速度メーターの測定値に応じたレッドストーン信号を出力します", + "create.ponder.speedometer.text_3": "コンパレーターは、速度メーターの測定値に応じたレッドストーン信号を出力します", "create.ponder.spout_filling.header": "アイテム注液口によるアイテム充填", - "create.ponder.spout_filling.text_1": "注液口は、その下に用意されたアイテムを液体で満たすことができます", - "create.ponder.spout_filling.text_2": "注液口の中身は手動で出し入れすることはできません", + "create.ponder.spout_filling.text_1": "注液口は、その下に用意したアイテムを液体で満たせます", + "create.ponder.spout_filling.text_2": "注液口の中身は手動で搬出入できません", "create.ponder.spout_filling.text_3": "代わりに、パイプを使って液体を供給しましょう", "create.ponder.spout_filling.text_4": "容器アイテムは、注液口の下のデポに置きましょう", "create.ponder.spout_filling.text_5": "ベルトでアイテムを供給すると...", "create.ponder.spout_filling.text_6": "...注液口が自動でアイテムを止め、加工します", "create.ponder.stabilized_bearings.header": "からくりの角度の固定", - "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているとき...", + "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているなら...", "create.ponder.stabilized_bearings.text_2": "...自身の角度を真っ直ぐに保とうとします", "create.ponder.stabilized_bearings.text_3": "ベアリングにブロックを取り付けると", "create.ponder.stabilized_bearings.text_4": "ベアリングに取り付けたサブのからくり全体が角度を真っ直ぐに保ったままになります", + "create.ponder.steam_engine.header": "蒸気エンジンの設置", + "create.ponder.steam_engine.text_1": "蒸気エンジンは液体タンクに設置できます", + "create.ponder.steam_engine.text_10": "レベル4", + "create.ponder.steam_engine.text_11": "4基の蒸気エンジン", + "create.ponder.steam_engine.text_12": "レべル8", + "create.ponder.steam_engine.text_13": "8基の蒸気エンジン", + "create.ponder.steam_engine.text_2": "シャフトで蒸気エンジンをクリックして回転力の出力口を作れます", + "create.ponder.steam_engine.text_3": "十分な容量と水量、そして熱量があれば...", + "create.ponder.steam_engine.text_4": "...回転力を生成できます", + "create.ponder.steam_engine.text_5": "最低でも、4つの液体タンクが必要です", + "create.ponder.steam_engine.text_6": "ブレイズバーナーの助けを借りれば、出力を増やせます", + "create.ponder.steam_engine.text_7": "レベルを上げるには、より多くの容量、水量、熱量が必要です", + "create.ponder.steam_engine.text_8": "レベルは、エンジニアのゴーグルで確認できます", + "create.ponder.steam_engine.text_9": "レベルを上げるごとに、最大出力を出せるエンジンを増やせます", + + "create.ponder.steam_whistle.header": "汽笛の設置", + "create.ponder.steam_whistle.text_1": "汽笛は液体タンクに設置できます", + "create.ponder.steam_whistle.text_2": "タンクが十分な熱量を受けていれば...", + "create.ponder.steam_whistle.text_3": "...汽笛はレッドストーン信号を受けたとき、音を鳴らします", + "create.ponder.steam_whistle.text_4": "ブロックにアイテムの汽笛を使うことで、音程を下げられます", + "create.ponder.steam_whistle.text_5": "レンチを使って、3つのオクターブを循環して切り替えられます", + "create.ponder.steam_whistle.text_6": "エンジニアのゴーグルは、汽笛の音程を調べるのに役立ちます", + "create.ponder.sticker.header": "スティッカーを使ったブロックの付け外し", "create.ponder.sticker.text_1": "スティッカーは、ブロックの付け外しをレッドストーン信号で制御できます", "create.ponder.sticker.text_2": "レッドストーン信号を受けると、状態が切り替わります", @@ -2377,27 +2871,112 @@ "create.ponder.sticker.text_4": "もう一度信号を受けると、ブロックは外れます", "create.ponder.stressometer.header": "応力メーターによる動力情報の監視", - "create.ponder.stressometer.text_1": "応力メーターは、接続された動力ネットワークの現在の応力許容量を表示します", + "create.ponder.stressometer.text_1": "応力メーターは、接続した動力ネットワークの許容応力を表示します", "create.ponder.stressometer.text_2": "エンジニアのゴーグルを装着していると、より詳しい数値を見られます", - "create.ponder.stressometer.text_3": "コンパレータは、応力メーターの測定値に応じたレッドストーン信号を出力します", + "create.ponder.stressometer.text_3": "コンパレーターは、応力メーターの測定値に応じたレッドストーン信号を出力します", "create.ponder.super_glue.header": "超粘着剤によるブロックの取り付け", - "create.ponder.super_glue.text_1": "超粘着剤は、任意の2つのブロックの間に塗れます", - "create.ponder.super_glue.text_2": "貼り付けたブロックは、からくりに組み込まれると一緒に動きます", - "create.ponder.super_glue.text_3": "超粘着剤をオフハンドで持つと...", - "create.ponder.super_glue.text_4": "...設置したブロックは置いたブロックの面と接着されます", - "create.ponder.super_glue.text_5": "左クリックすれば超粘着剤を剥がせます", + "create.ponder.super_glue.text_1": "超粘着剤はブロックをまとめて、動く構造物を作れます", + "create.ponder.super_glue.text_2": "2つの角をクリックすると、新しい「粘着」領域が作られます", + "create.ponder.super_glue.text_3": "領域を削除するには、超粘着剤を持って殴ってください", + "create.ponder.super_glue.text_4": "領域を共有する隣接するブロックは互いにくっつきます", + "create.ponder.super_glue.text_5": "重なった領域は一緒に移動します", + "create.ponder.super_glue.text_6": "他のブロックにぶら下げるブロックは、基本的に超粘着剤を必要としません", + + "create.ponder.track_chunks.header": "ロードされていないチャンクの旅", + "create.ponder.track_chunks.text_1": "線路はロードされたチャンクの外でも機能し続けます", + "create.ponder.track_chunks.text_2": "列車は世界の処理されていない場所でも問題なく走行します", + "create.ponder.track_chunks.text_3": "駅や赤信号で止まるのは変わりません", + "create.ponder.track_chunks.text_4": "ただし、ドリルなど、組み込んだ機械は動作しません", + "create.ponder.track_chunks.text_5": "プレイヤーが近づくと、列車は再び現れます", + + "create.ponder.track_observer.header": "列車の検知", + "create.ponder.track_observer.text_1": "鉄道用線路を選択し、その後列車検知装置を近くに置いてください", + "create.ponder.track_observer.text_2": "列車検知装置はそのマーカーに列車が通るとそれを検知します", + "create.ponder.track_observer.text_3": "列車検知装置はフィルターに一致する貨物があったときだけ動作するようにできます", + + "create.ponder.track_placement.header": "鉄道用線路の設置", + "create.ponder.track_placement.text_1": "からくり鉄道のために設計された新型レール", + "create.ponder.track_placement.text_2": "線路を一括して設置するには、まず既存の線路をクリックしてください", + "create.ponder.track_placement.text_3": "次に、2つ目の線路を設置または選択します", + "create.ponder.track_placement.text_4": "線路はターンや傾斜として設置することもできます", + "create.ponder.track_placement.text_5": "繋げたとき、線路はそれぞれのターンが均等な大きさになるよう配置されます", + "create.ponder.track_placement.text_6": "ダッシュキーを押しながら繋げると...", + "create.ponder.track_placement.text_7": "...代わりにできるだけ長くなめらかなターンを作ります", + "create.ponder.track_placement.text_8": "オフハンドに持った素材は線路の下に自動で敷き詰められます", + + "create.ponder.track_portal.header": "ネザーへの線路", + "create.ponder.track_portal.text_1": "鉄道用線路をネザーポータルに設置すると...", + "create.ponder.track_portal.text_2": "...向こう側に対となる線路の設置を試みます", + "create.ponder.track_portal.text_3": "この線路上の列車はディメンションを超えて進めます", + + "create.ponder.train_assembly.header": "列車の組み立て", + "create.ponder.train_assembly.text_1": "鉄道用線路を選択した後、駅を近くに置いてください", + "create.ponder.train_assembly.text_10": "列車には鉄道用運転台が必要です", + "create.ponder.train_assembly.text_11": "もうひとつ置くことで駅から両方向に発車発車をさせることもできます", + "create.ponder.train_assembly.text_12": "駅のUIを開いて、組み立て処理を実行してください", + "create.ponder.train_assembly.text_13": "列車は駅でしかブロックに戻すことは出きません", + "create.ponder.train_assembly.text_14": "地図を駅を使うと、その場所にラベル付きのマーカーが追加されます", + "create.ponder.train_assembly.text_15": "組み立てた列車はレンチで近くの線路に移動できます", + "create.ponder.train_assembly.text_2": "駅は線路網における道しるべとなります", + "create.ponder.train_assembly.text_3": "新しい列車を作るには、UIを開いて組み立てモードに切り替えてください", + "create.ponder.train_assembly.text_4": "組み立て中、定時運行している列車はこの駅に近づきません", + "create.ponder.train_assembly.text_5": "線路の上に鉄道ケーシングを使って新しい台車を作ってください。", + "create.ponder.train_assembly.text_6": "もう一度線路をクリックすると台車のデザインが循環して切り替わります", + "create.ponder.train_assembly.text_7": "超粘着剤を使ってブロックを取り付けてください", + "create.ponder.train_assembly.text_8": "組み立てた列車は組み込まれたチェストや樽から燃料を探し出せる場合、より速く走ります", + "create.ponder.train_assembly.text_9": "燃料をアイテム保管庫に入れておけば、列車によって消費されません", + + "create.ponder.train_controls.header": "列車の操縦", + "create.ponder.train_controls.text_1": "鉄道運転台はすべてのからくり鉄道に必要です", + "create.ponder.train_controls.text_2": "列車を組み立て、運転台を右クリックして操縦を始められます", + "create.ponder.train_controls.text_3": "列車の加速と進路決定は移動キーで行えます", + "create.ponder.train_controls.text_4": "必要に応じて、最高速度をマウスホイールで調整できます", + "create.ponder.train_controls.text_5": "スペースキーを長押しすることで、近くの駅に停車できます", + "create.ponder.train_controls.text_6": "列車は駅でしかブロックに戻せません", + "create.ponder.train_controls.text_7": "組み込んだ汽笛はダッシュキーで鳴らせます", + "create.ponder.train_controls.text_8": "スニークかもう一度クリックで列車の運転をやめられます", + + "create.ponder.train_schedule.header": "鉄道時刻表の使い方", + "create.ponder.train_schedule.text_1": "時刻表を使えば、列車を他の運転手に運転させられます", + "create.ponder.train_schedule.text_2": "アイテムを持って右クリックで設定画面を開けます", + "create.ponder.train_schedule.text_3": "一度時刻表を組めば、運転手に渡せます", + "create.ponder.train_schedule.text_4": "任意のモブか、ブレイズバーナーを運転台の真正面に座らせれば車掌にできます", + "create.ponder.train_schedule.text_5": "リードにモブを結べば、シートをクリックして簡単に座らせられます", + "create.ponder.train_schedule.text_6": "時刻表はいつでもモブから取りもどせます", + + "create.ponder.train_signal_placement.header": "鉄道信号機の設置", + "create.ponder.train_signal_placement.text_1": "鉄道用線路を選択して信号機を近くに置いてください", + "create.ponder.train_signal_placement.text_2": "信号機はプレイヤーが運転していない列車の運行を制御します", + "create.ponder.train_signal_placement.text_3": "定時運行している列車は決して信号機を逆向きに通過できません...", + "create.ponder.train_signal_placement.text_4": "...もう一つ、反対向きの信号機があれば話は別ですが", + "create.ponder.train_signal_placement.text_5": "ニキシー管を取り付けて、信号機の光をより見やすくできます", + + "create.ponder.train_signal_redstone.header": "信号機 & レッドストーン", + "create.ponder.train_signal_redstone.text_1": "レッドストーン信号で信号機の表示を強制できます", + "create.ponder.train_signal_redstone.text_2": "逆に、コンパレーターは赤信号の時にレッドストーン信号を発します", + + "create.ponder.train_signal_signaling.header": "信号機による衝突防止", + "create.ponder.train_signal_signaling.text_1": "鉄道信号機は鉄道用線路を区間に区切ります", + "create.ponder.train_signal_signaling.text_2": "区間に列車がある場合、他の列車は中への侵入が許可されません", + "create.ponder.train_signal_signaling.text_3": "従って、区間には一度に1つの列車しか存在できません", + "create.ponder.train_signal_signaling.text_4": "二つ目の信号機モードはレンチによって有効にできます", + "create.ponder.train_signal_signaling.text_5": "真鍮の信号機の区間は通常、普通の信号機とつながります", + "create.ponder.train_signal_signaling.text_6": "この特別な信号は、第二の条件下で列車を停止させられます", + "create.ponder.train_signal_signaling.text_7": "それは区間に入ろうとした列車を停止させます...", + "create.ponder.train_signal_signaling.text_8": "...すぐに区間を離れられない場合", + "create.ponder.train_signal_signaling.text_9": "これで、待っている列車を混雑する区間の中に入らないようにできます", "create.ponder.valve_handle.header": "バルブハンドルによる回転力の生成", "create.ponder.valve_handle.text_1": "バルブハンドルは手動で回転力を生み出す原動機です", "create.ponder.valve_handle.text_2": "右クリックし続けると、反時計回りに回転します", - "create.ponder.valve_handle.text_3": "回転速度はゆっくりですが、正確です", + "create.ponder.valve_handle.text_3": "回転速度はゆっくりですが、一定です", "create.ponder.valve_handle.text_4": "スニーク状態で右クリックし続けると、時計回りに回転します", "create.ponder.valve_handle.text_5": "バルブハンドルは、染色できます", "create.ponder.valve_pipe.header": "バルブによる液体制御", "create.ponder.valve_pipe.text_1": "バルブは、液体ネットワークに流れる液体を制御するのに役立ちます", - "create.ponder.valve_pipe.text_2": "回転力で、液体が現在通過できるか制御します", + "create.ponder.valve_pipe.text_2": "回転力で、液体が通過できるか制御できます", "create.ponder.valve_pipe.text_3": "開放方向に回転力を与えるとバルブが開きます", "create.ponder.valve_pipe.text_4": "回転方向を逆にすることでバルブを閉められます", @@ -2408,16 +2987,16 @@ "create.ponder.water_wheel.text_4": "逆向きに設置すると、回転速度が落ちてしまいます", "create.ponder.weighted_ejector.header": "重量射出機の使い方", - "create.ponder.weighted_ejector.text_1": "射出機を持ちスニークしながら右クリックすると、ターゲットとなる位置を設定できます", + "create.ponder.weighted_ejector.text_1": "射出機を持ってスニークしながら右クリックすると、対象となる位置を設定できます", "create.ponder.weighted_ejector.text_10": "スタック数を設定すると、保持しているスタックがその量に達したときのみ射出するようになります", "create.ponder.weighted_ejector.text_11": "他のエンティティが射出機を踏むと、いつでも射出機が稼働します", - "create.ponder.weighted_ejector.text_2": "設置された射出機は、設定した場所に物体を発射します", - "create.ponder.weighted_ejector.text_3": "ターゲットは、範囲内であれば高さや距離は問いません", - "create.ponder.weighted_ejector.text_4": "ただし、真正面方向以外へは射出できません", - "create.ponder.weighted_ejector.text_5": "有効なターゲットが設定されていない場合、真正面のブロックがターゲットになります", + "create.ponder.weighted_ejector.text_2": "設置した射出機は、設定した場所に物体を発射します", + "create.ponder.weighted_ejector.text_3": "範囲内であれば高さや距離は問いません", + "create.ponder.weighted_ejector.text_4": "ただし、真正面以外へは射出できません", + "create.ponder.weighted_ejector.text_5": "有効な位置が設定されていない場合、真正面のブロックが対象になります", "create.ponder.weighted_ejector.text_6": "巻き上げるには、回転力を供給する必要があります", "create.ponder.weighted_ejector.text_7": "上にアイテムを置くと、射出機が稼働します", - "create.ponder.weighted_ejector.text_8": "ターゲットが満杯の収納ブロックの場合、射出機はそのブロックに空きがでるまで待機します", + "create.ponder.weighted_ejector.text_8": "対象が満杯の収納ブロックの場合、射出機はそのブロックに空きがでるまで待機します", "create.ponder.weighted_ejector.text_9": "レンチを使って、スタック量を調整できます", "create.ponder.weighted_ejector_redstone.header": "レッドストーン信号による重量射出機の制御", @@ -2425,23 +3004,24 @@ "create.ponder.weighted_ejector_redstone.text_2": "また、オブザーバーは射出機の稼働を検知できます", "create.ponder.weighted_ejector_tunnel.header": "重量射出機によるアイテムスタックの分割", - "create.ponder.weighted_ejector_tunnel.text_1": "真鍮製トンネルと組み合わせて、アイテムスタックを特定の量だけ分割できます", - "create.ponder.weighted_ejector_tunnel.text_2": "まず、側面の搬出口を優先させる為に、真鍮製トンネルを[最寄りを優先] に設定します", + "create.ponder.weighted_ejector_tunnel.text_1": "真鍮トンネルと組み合わせて、アイテムスタックの特定の量だけを分割できます", + "create.ponder.weighted_ejector_tunnel.text_2": "まず、側面の搬出口を優先させる為に、真鍮トンネルを「最寄りを優先」に設定します", "create.ponder.weighted_ejector_tunnel.text_3": "次に、射出機に分割したいスタック量を設定します", - "create.ponder.weighted_ejector_tunnel.text_4": "設定された量のアイテムスタックは側面の搬出口から搬出され...", + "create.ponder.weighted_ejector_tunnel.text_4": "設定した量のアイテムスタックは側面の搬出口から搬出され...", "create.ponder.weighted_ejector_tunnel.text_5": "...残りのアイテムはそのまま搬出されます", "create.ponder.windmill_source.header": "風車ベアリングによる回転力の生成", "create.ponder.windmill_source.text_1": "風車ベアリングは手前にブロックを取り付けられます", - "create.ponder.windmill_source.text_2": "帆とみなされるブロックを十分な数取り付けられていれば、風車として機能します", - "create.ponder.windmill_source.text_3": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", - "create.ponder.windmill_source.text_4": "回転速度は帆ブロックの数で決まります", - "create.ponder.windmill_source.text_5": "レンチを使って回転方向を変えられます", - "create.ponder.windmill_source.text_6": "いつでもベアリングを右クリックすれば、回転を停止させて構造物を組み立てなおせます", + "create.ponder.windmill_source.text_2": "超粘着剤を使って動く構造物を作ってください", + "create.ponder.windmill_source.text_3": "帆とみなされる十分な数のブロックが取り付けられていれば、風車として機能します", + "create.ponder.windmill_source.text_4": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", + "create.ponder.windmill_source.text_5": "回転速度は帆ブロックの数で決まります", + "create.ponder.windmill_source.text_6": "レンチを使って回転方向を変えられます", + "create.ponder.windmill_source.text_7": "ベアリングを右クリックすれば、いつでも回転を停止させて構造物を組み立て直せます", "create.ponder.windmill_structure.header": "からくり風車", "create.ponder.windmill_structure.text_1": "帆とみなされるブロックが8個以上あれば、どのような構造物でも風車として動きます", "_": "Thank you for translating Create!" -} +} \ No newline at end of file From b34de86f10b5234eb74a20ac45d4fb9f4b6c3ed6 Mon Sep 17 00:00:00 2001 From: hewxle <109231756+hewxle@users.noreply.github.com> Date: Sat, 13 Aug 2022 05:43:32 -0700 Subject: [PATCH 18/32] Improvements to the consistency of advancement texts by hewxle (#3578) --- .../advancement/AllAdvancements.java | 116 +++++++++--------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index 6a55e2996..ebd311337 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -46,7 +46,7 @@ public class AllAdvancements implements DataProvider { ROOT = create("root", b -> b.icon(AllItems.BRASS_HAND) .title("Welcome to Create") - .description("Here be Contraptions") + .description("Here Be Contraptions") .awardedForFree() .special(SILENT)), @@ -60,19 +60,19 @@ public class AllAdvancements implements DataProvider { ANDESITE_CASING = create("andesite_casing", b -> b.icon(AllBlocks.ANDESITE_CASING) .title("The Andesite Age") - .description("Apply Andesite Alloy to wood creating a basic casing for your machines") + .description("Apply Andesite Alloy to stripped wood, creating a basic casing for your machines") .after(ANDESITE) .special(NOISY)), PRESS = create("mechanical_press", b -> b.icon(AllBlocks.MECHANICAL_PRESS) - .title("Bonk") + .title("Bonk!") .description("Create some sheets in a Mechanical Press") .after(ANDESITE_CASING) .special(NOISY)), ENCASED_FAN = create("encased_fan", b -> b.icon(AllBlocks.ENCASED_FAN) - .title("Wind maker") - .description("Place and activate an Encased Fan") + .title("Wind Maker") + .description("Place and power an Encased Fan") .after(PRESS)), FAN_PROCESSING = create("fan_processing", b -> b.icon(AllItems.PROPELLER) @@ -81,13 +81,13 @@ public class AllAdvancements implements DataProvider { .after(ENCASED_FAN)), SAW_PROCESSING = create("saw_processing", b -> b.icon(AllBlocks.MECHANICAL_SAW) - .title("Workshop's most feared") + .title("Workshop's Most Feared") .description("Use an upright Mechanical Saw to process materials") .after(FAN_PROCESSING)), COMPACTING = create("compacting", b -> b.icon(Blocks.IRON_BLOCK) .title("Compactification") - .description("Use a Press and a Basin to create less items from more items") + .description("Use a Mechanical Press and a Basin to create fewer items from more") .after(SAW_PROCESSING)), BELT = create("belt", b -> b.icon(AllItems.BELT_CONNECTOR) @@ -106,7 +106,7 @@ public class AllAdvancements implements DataProvider { .after(FUNNEL)), MIXER = create("mechanical_mixer", b -> b.icon(AllBlocks.MECHANICAL_MIXER) - .title("Mixing it up") + .title("Mixing It Up") .description("Combine ingredients in a Mechanical Mixer") .after(CHUTE)), @@ -146,28 +146,28 @@ public class AllAdvancements implements DataProvider { CONTRAPTION_ACTORS = create("contraption_actors", b -> b.icon(AllBlocks.MECHANICAL_HARVESTER) .title("Moving with Purpose") - .description("Create a contraption with drills, saws or harvesters on board") + .description("Create a Contraption with drills, saws, or harvesters on board") .after(SUPER_GLUE)), PSI = create("portable_storage_interface", b -> b.icon(AllBlocks.PORTABLE_STORAGE_INTERFACE) - .title("Drive-by exchange") - .description("Use a Portable Storage Interface to take or insert items into a contraption") + .title("Drive-By Exchange") + .description("Use a Portable Storage Interface to take or insert items into a Contraption") .after(CONTRAPTION_ACTORS)), WRENCH_GOGGLES = create("wrench_goggles", b -> b.icon(AllItems.WRENCH) - .title("Kitted out") - .description("Equip Engineer's goggles and a Wrench") + .title("Kitted Out") + .description("Equip Engineer's Goggles and a Wrench") .whenIconCollected() .whenItemCollected(AllItems.GOGGLES) .after(PSI)), STRESSOMETER = create("stressometer", b -> b.icon(AllBlocks.STRESSOMETER) .title("Stress for Nerds") - .description("Get an exact readout with the help of Goggles and a Stressometer") + .description("Get an exact readout with the help of Engineer's Goggles and a Stressometer") .after(WRENCH_GOGGLES)), CUCKOO_CLOCK = create("cuckoo_clock", b -> b.icon(AllBlocks.CUCKOO_CLOCK) - .title("Is it Time?") + .title("Is It Time?") .description("Witness your Cuckoo Clock announce bedtime") .after(STRESSOMETER) .special(NOISY)), @@ -182,7 +182,7 @@ public class AllAdvancements implements DataProvider { EJECTOR_MAXED = create("ejector_maxed", b -> b.icon(AllBlocks.WEIGHTED_EJECTOR) .title("Springboard Champion") - .description("Get launched for more than 30 blocks by a Weighted Ejector") + .description("Get launched more than 30 blocks by a Weighted Ejector") .after(WINDMILL_MAXED) .special(EXPERT)), @@ -200,7 +200,7 @@ public class AllAdvancements implements DataProvider { ANVIL_PLOUGH = create("anvil_plough", b -> b.icon(Blocks.CHIPPED_ANVIL) .title("Blacksmith Artillery") - .description("Launch an Anvil with Mechanical ploughs") + .description("Launch an Anvil with Mechanical Ploughs") .after(CART_PICKUP) .special(EXPERT)), @@ -233,31 +233,31 @@ public class AllAdvancements implements DataProvider { // Copper - Central Branch COPPER = create("copper", b -> b.icon(Items.COPPER_INGOT) - .title("More Sturdier Rocks") - .description("Amass some Copper for your exploits in Fluid Manipulation") + .title("Cuprum Bokum") + .description("Amass some Copper Ingots for your exploits in fluid manipulation") .whenIconCollected() .after(BLAZE_BURNER) .special(SILENT)), COPPER_CASING = create("copper_casing", b -> b.icon(AllBlocks.COPPER_CASING) .title("The Copper Age") - .description("Apply Copper Ingots to wood creating a waterproof casing for your machines") + .description("Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines") .after(COPPER) .special(NOISY)), SPOUT = create("spout", b -> b.icon(AllBlocks.SPOUT) .title("Sploosh") - .description("Watch a fluid containing item be filled using a Spout") + .description("Watch a fluid-containing item be filled by a Spout") .after(COPPER_CASING)), DRAIN = create("drain", b -> b.icon(AllBlocks.ITEM_DRAIN) .title("Tumble Draining") - .description("Watch a fluid containing item be emptied by an Item Drain") + .description("Watch a fluid-containing item be emptied by an Item Drain") .after(SPOUT)), STEAM_ENGINE = create("steam_engine", b -> b.icon(AllBlocks.STEAM_ENGINE) .title("The Powerhouse") - .description("Use a Steam engine to generate torque") + .description("Use a Steam Engine to generate torque") .after(DRAIN)), STEAM_WHISTLE = create("steam_whistle", b -> b.icon(AllBlocks.STEAM_WHISTLE) @@ -267,12 +267,12 @@ public class AllAdvancements implements DataProvider { BACKTANK = create("backtank", b -> b.icon(AllItems.COPPER_BACKTANK) .title("Pressure to Go") - .description("Create a copper backtank and make it accumulate Air Pressure") + .description("Create a Copper Backtank and make it accumulate air pressure") .after(STEAM_WHISTLE)), DIVING_SUIT = create("diving_suit", b -> b.icon(AllItems.DIVING_HELMET) .title("Ready for the Depths") - .description("Equip a diving helmet together with your backtank and jump into water") + .description("Equip a Diving Helmet and a Copper Backtank, then jump into water") .after(BACKTANK)), // Copper - Top Branch @@ -289,7 +289,7 @@ public class AllAdvancements implements DataProvider { WATER_SUPPLY = create("water_supply", b -> b.icon(Items.WATER_BUCKET) .title("Puddle Collector") - .description("Use the pulling end of a pipe or pump to collect a water block") + .description("Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water") .after(GLASS_PIPE)), HOSE_PULLEY = create("hose_pulley", b -> b.icon(AllBlocks.HOSE_PULLEY) @@ -300,20 +300,20 @@ public class AllAdvancements implements DataProvider { CHOCOLATE_BUCKET = create("chocolate_bucket", b -> b.icon(AllFluids.CHOCOLATE.get() .getBucket()) .title("A World of Imagination") - .description("Obtain a Bucket of Molten Chocolate") + .description("Obtain a bucket of molten chocolate") .whenIconCollected() .after(HOSE_PULLEY)), HONEY_DRAIN = create("honey_drain", b -> b.icon(Items.BEEHIVE) .title("Autonomous Bee-Keeping") - .description("Use pipes to pull honey from a Bee Nest or Bee House") + .description("Use pipes to pull honey from a Bee Nest or Beehive") .after(CHOCOLATE_BUCKET)), // Copper - Expert Branch HOSE_PULLEY_LAVA = create("hose_pulley_lava", b -> b.icon(AllBlocks.HOSE_PULLEY) .title("Tapping the Mantle") - .description("Pump from a body of Lava large enough to be considered infinite") + .description("Pump from a body of lava large enough to be considered infinite") .after(COPPER) .special(EXPERT)), @@ -325,7 +325,7 @@ public class AllAdvancements implements DataProvider { FOODS = create("foods", b -> b.icon(AllItems.CHOCOLATE_BERRIES) .title("Balanced Diet") - .description("Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout") + .description("Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout") .after(STEAM_ENGINE_MAXED) .special(EXPERT)), @@ -333,25 +333,25 @@ public class AllAdvancements implements DataProvider { DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.DIVING_HELMET) .title("Swimming with the Striders") - .description("Attempt to take a dive in lava with your Copper Diving Gear") + .description("Attempt to take a dive in lava with your diving gear") .after(BACKTANK) .special(SECRET)), CHAINED_DRAIN = create("chained_drain", b -> b.icon(AllBlocks.ITEM_DRAIN) .title("On a Roll") - .description("Watch an Item move across a row of Item Drains") + .description("Watch an item move across a row of Item Drains") .after(BACKTANK) .special(SECRET)), CROSS_STREAMS = create("cross_streams", b -> b.icon(Blocks.COBBLESTONE) - .title("Don't cross the Streams!") + .title("Don't Cross the Streams!") .description("Watch two fluids meet in your pipe network") .after(BACKTANK) .special(SECRET)), PIPE_ORGAN = create("pipe_organ", b -> b.icon(AllBlocks.STEAM_WHISTLE) .title("The Pipe Organ") - .description("Attach 12 uniquely pitched Steam Whistles to a single fluid tank") + .description("Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank") .after(BACKTANK) .special(SECRET)), @@ -359,13 +359,13 @@ public class AllAdvancements implements DataProvider { BRASS = create("brass", b -> b.icon(AllItems.BRASS_INGOT) .title("Real Alloys") - .description("Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer") + .description("Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer") .whenIconCollected() .after(DIVING_SUIT)), BRASS_CASING = create("brass_casing", b -> b.icon(AllBlocks.BRASS_CASING) .title("The Brass Age") - .description("Apply Brass Ingots to wood creating a casing for more sophisticated machines") + .description("Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines") .after(BRASS) .special(NOISY)), @@ -377,7 +377,7 @@ public class AllAdvancements implements DataProvider { DEPLOYER = create("deployer", b -> b.icon(AllBlocks.DEPLOYER) .title("Artificial Intelligence") - .description("Place and activate a Deployer, the perfect reflection of yourself") + .description("Place and power a Deployer, the perfect reflection of yourself") .after(ROSE_QUARTZ)), MECHANISM = create("precision_mechanism", b -> b.icon(AllItems.PRECISION_MECHANISM) @@ -389,12 +389,12 @@ public class AllAdvancements implements DataProvider { SPEED_CONTROLLER = create("speed_controller", b -> b.icon(AllBlocks.ROTATION_SPEED_CONTROLLER) .title("Engineers Hate Him!") - .description("Fine tune your contraption with a Rotation Speed Controller") + .description("Fine-tune your Contraption with a Rotation Speed Controller") .after(MECHANISM)), MECHANICAL_ARM = create("mechanical_arm", b -> b.icon(AllBlocks.MECHANICAL_ARM) .title("Busy Hands") - .description("Watch your Mechanical Arm transport its first Item") + .description("Watch your Mechanical Arm transport its first item") .after(SPEED_CONTROLLER) .special(NOISY)), @@ -425,7 +425,7 @@ public class AllAdvancements implements DataProvider { DISPLAY_LINK = create("display_link", b -> b.icon(AllBlocks.DISPLAY_LINK) .title("Big Data") - .description("Use a Display link to visualise information") + .description("Use a Display Link to visualise information") .after(CLOCKWORK_BEARING) .special(NOISY)), @@ -453,20 +453,20 @@ public class AllAdvancements implements DataProvider { // Brass - Expert Branch CRUSHER_MAXED = create("crusher_maxed_0000", b -> b.icon(AllBlocks.CRUSHING_WHEEL) - .title("Crushing it") - .description("Operate a Pair of Crushing wheels at max speed") + .title("Crushing It") + .description("Operate a pair of Crushing Wheels at maximum speed") .after(BRASS) .special(EXPERT)), ARM_MANY_TARGETS = create("arm_many_targets", b -> b.icon(AllBlocks.MECHANICAL_ARM) .title("Organize-o-Tron") - .description("Program a Mechanical Arm with ten or more output locations") + .description("Program a Mechanical Arm with 10 or more output locations") .after(CRUSHER_MAXED) .special(EXPERT)), POTATO_CANNON_COLLIDE = create("potato_cannon_collide", b -> b.icon(Items.CARROT) .title("Veggie Fireworks") - .description("Cause potato cannon projectiles of different types to collide with each other") + .description("Cause Potato Cannon projectiles of different types to collide with each other") .after(ARM_MANY_TARGETS) .special(EXPERT)), @@ -491,8 +491,8 @@ public class AllAdvancements implements DataProvider { .special(SECRET)), EXTENDO_GRIP_DUAL = create("extendo_grip_dual", b -> b.icon(AllItems.EXTENDO_GRIP) - .title("To full Extent") - .description("Dual wield Extendo Grips for super-human reach") + .title("To Full Extent") + .description("Dual-wield Extendo Grips for superhuman reach") .after(CRAFTER) .special(SECRET)), @@ -506,13 +506,13 @@ public class AllAdvancements implements DataProvider { STURDY_SHEET = create("sturdy_sheet", b -> b.icon(AllItems.STURDY_SHEET) .title("The Sturdiest Rocks") - .description("Assemble a Sturdy Sheet from refining crushed Obsidian") + .description("Assemble a Sturdy Sheet by refining Powdered Obsidian") .whenIconCollected() .after(CRUSHING_WHEEL)), TRAIN_CASING = create("train_casing_00", b -> b.icon(AllBlocks.RAILWAY_CASING) .title("The Logistical Age") - .description("Use Sturdy Sheets to create a Casing for Railway Components") + .description("Use Sturdy Sheets to create a casing for railway components") .after(STURDY_SHEET) .special(NOISY)), @@ -524,7 +524,7 @@ public class AllAdvancements implements DataProvider { CONDUCTOR = create("conductor", b -> b.icon(AllItems.SCHEDULE) .title("Conductor Instructor") - .description("Instruct a Train driver with a Schedule") + .description("Instruct a Train driver with a Train Schedule") .after(TRAIN)), SIGNAL = create("track_signal", b -> b.icon(AllBlocks.TRACK_SIGNAL) @@ -541,19 +541,19 @@ public class AllAdvancements implements DataProvider { // Trains - Top Branch TRAIN_TRACK = create("track_0", b -> b.icon(AllBlocks.TRACK) - .title("A new Gauge") + .title("A New Gauge") .description("Obtain some Train Tracks") .whenIconCollected() .after(STURDY_SHEET)), TRAIN_WHISTLE = create("train_whistle", b -> b.icon(AllBlocks.STEAM_WHISTLE) - .title("Choo choo!") + .title("Choo Choo!") .description("Assemble a Steam Whistle to your Train and activate it while driving") .after(TRAIN_TRACK)), TRAIN_PORTAL = create("train_portal", b -> b.icon(Blocks.AMETHYST_BLOCK) .title("Dimensional Commuter") - .description("Ride a train through a Nether Portal") + .description("Ride a Train through a Nether portal") .after(TRAIN_WHISTLE) .special(NOISY)), @@ -561,19 +561,19 @@ public class AllAdvancements implements DataProvider { TRACK_CRAFTING = create("track_crafting_factory", b -> b.icon(AllBlocks.MECHANICAL_PRESS) .title("Track Factory") - .description("Produce more than 1000 train tracks in the same Mechanical Press") + .description("Produce more than 1000 Train Tracks with the same Mechanical Press") .after(STURDY_SHEET) .special(EXPERT)), LONG_BEND = create("long_bend", b -> b.icon(AllBlocks.TRACK) .title("The Longest Bend") - .description("Create a Curved track section that spans more than 30 blocks in length") + .description("Create a curved track section that spans more than 30 blocks in length") .after(TRACK_CRAFTING) .special(EXPERT)), LONG_TRAIN = create("long_train", b -> b.icon(Items.MINECART) .title("Ambitious Endeavours") - .description("Create a Train with at least six Carriages") + .description("Create a Train with at least 6 carriages") .after(LONG_BEND) .special(EXPERT)), @@ -587,19 +587,19 @@ public class AllAdvancements implements DataProvider { TRAIN_ROADKILL = create("train_roadkill", b -> b.icon(Items.DIAMOND_SWORD) .title("Road Kill") - .description("Run over an Enemy with your Train") + .description("Run over an enemy with your Train") .after(SIGNAL) .special(SECRET)), RED_SIGNAL = create("red_signal", b -> b.icon(AllBlocks.TRACK_SIGNAL) .title("Expert Driver") - .description("Run a Red Signal with your Train") + .description("Run a red Train Signal") .after(SIGNAL) .special(SECRET)), TRAIN_CRASH = create("train_crash", b -> b.icon(AllItems.INCOMPLETE_TRACK) .title("Terrible Service") - .description("Witness a Train Crash as a Passenger") + .description("Witness a Train crash as a passenger") .after(SIGNAL) .special(SECRET)), From 54a2ad801a15bd5bce9d7df39a9ec40ed8441bbe Mon Sep 17 00:00:00 2001 From: andersonwu2000 Date: Sat, 13 Aug 2022 20:45:01 +0800 Subject: [PATCH 19/32] Updates to zh_tw.json by andersonwu2000 and Akagiyoukai (#3580) --- .../resources/assets/create/lang/zh_tw.json | 2745 +++++++++++------ 1 file changed, 1741 insertions(+), 1004 deletions(-) diff --git a/src/main/resources/assets/create/lang/zh_tw.json b/src/main/resources/assets/create/lang/zh_tw.json index 8fbbdfc7b..636b51aa3 100644 --- a/src/main/resources/assets/create/lang/zh_tw.json +++ b/src/main/resources/assets/create/lang/zh_tw.json @@ -1,29 +1,23 @@ { - "_": "for create 0.3.2a", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", "block.create.acacia_window": "相思木窗戶", "block.create.acacia_window_pane": "相思木窗戶片", "block.create.adjustable_chain_gearshift": "可調式鏈式變速箱", - "block.create.adjustable_crate": "可調式板條箱", - "block.create.adjustable_pulse_repeater": "可調式脈衝中繼器", - "block.create.adjustable_repeater": "可調式中繼器", "block.create.analog_lever": "可調式拉桿", "block.create.andesite_belt_funnel": "安山岩輸送帶漏斗", - "block.create.andesite_bricks": "安山岩磚", - "block.create.andesite_bricks_slab": "安山岩半磚", - "block.create.andesite_bricks_stairs": "安山岩樓梯", - "block.create.andesite_bricks_wall": "安山岩牆", "block.create.andesite_casing": "安山岩機殼", - "block.create.andesite_cobblestone": "碎安山岩", - "block.create.andesite_cobblestone_slab": "碎安山岩半磚", - "block.create.andesite_cobblestone_stairs": "碎安山岩樓梯", - "block.create.andesite_cobblestone_wall": "碎安山岩牆", + "block.create.andesite_encased_cogwheel": "安山齒輪箱", + "block.create.andesite_encased_large_cogwheel": "安山大齒輪箱", "block.create.andesite_encased_shaft": "安山傳動軸箱", "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "豎紋安山岩", + "block.create.andesite_ladder": "安山岩梯子", + "block.create.andesite_pillar": "安山岩柱", "block.create.andesite_tunnel": "安山岩物品隧道", + "block.create.asurine": "皓藍石", + "block.create.asurine_pillar": "皓藍石柱", "block.create.basin": "作業盆", "block.create.belt": "輸送帶", "block.create.birch_window": "白樺木窗戶", @@ -31,165 +25,218 @@ "block.create.black_nixie_tube": "黑色真空管", "block.create.black_sail": "黑色風帆", "block.create.black_seat": "黑色坐墊", + "block.create.black_toolbox": "黑色工具箱", "block.create.black_valve_handle": "黑色閥門開關", "block.create.blaze_burner": "烈焰使者動力爐", "block.create.blue_nixie_tube": "藍色真空管", "block.create.blue_sail": "藍色風帆", "block.create.blue_seat": "藍色坐墊", + "block.create.blue_toolbox": "藍色工具箱", "block.create.blue_valve_handle": "藍色閥門開關", "block.create.brass_belt_funnel": "黃銅輸送帶漏斗", - "block.create.brass_block": "黃銅磚", + "block.create.brass_block": "黃銅方塊", "block.create.brass_casing": "黃銅機殼", + "block.create.brass_encased_cogwheel": "黃銅齒輪箱", + "block.create.brass_encased_large_cogwheel": "黃銅大齒輪箱", "block.create.brass_encased_shaft": "黃銅傳動軸箱", "block.create.brass_funnel": "黃銅漏斗", + "block.create.brass_ladder": "黃銅梯子", "block.create.brass_tunnel": "黃銅物品隧道", "block.create.brown_nixie_tube": "棕色真空管", "block.create.brown_sail": "棕色風帆", "block.create.brown_seat": "棕色坐墊", + "block.create.brown_toolbox": "棕色工具箱", "block.create.brown_valve_handle": "棕色閥門開關", + "block.create.calcite_pillar": "方解石柱", "block.create.cart_assembler": "礦車裝修站", - "block.create.chiseled_dark_scoria": "鏨製黑火成岩", - "block.create.chiseled_dolomite": "鏨製白雲石", - "block.create.chiseled_gabbro": "鏨製輝長岩", - "block.create.chiseled_limestone": "鏨製石灰岩", - "block.create.chiseled_scoria": "鏨製火成岩", - "block.create.chiseled_weathered_limestone": "鏨製風化石灰岩", "block.create.chocolate": "巧克力", - "block.create.chute": "滑道", + "block.create.chute": "滑槽", "block.create.clockwork_bearing": "時鐘軸承", "block.create.clutch": "離合器", "block.create.cogwheel": "齒輪", "block.create.content_observer": "物品偵測器", - "block.create.controller_rail": "控制鐵軌", + "block.create.controller_rail": "控制軌道", + "block.create.controls": "火車控制台", "block.create.copper_backtank": "銅製後背包", - "block.create.copper_block": "銅磚", "block.create.copper_casing": "銅機殼", - "block.create.copper_ore": "銅礦石", - "block.create.copper_shingles": "塊狀銅磚", - "block.create.copper_tiles": "菱形銅磚", + "block.create.copper_ladder": "銅製梯子", + "block.create.copper_shingle_slab": "銅屋瓦半磚", + "block.create.copper_shingle_stairs": "銅屋瓦階梯", + "block.create.copper_shingles": "銅屋瓦", + "block.create.copper_tile_slab": "銅磚瓦半磚", + "block.create.copper_tile_stairs": "銅磚瓦階梯", + "block.create.copper_tiles": "銅磚瓦", "block.create.copper_valve_handle": "銅製閥門開關", "block.create.creative_crate": "創造板條箱", - "block.create.creative_fluid_tank": "創造液體儲存罐", + "block.create.creative_fluid_tank": "創造流體儲存罐", "block.create.creative_motor": "創造馬達", - "block.create.crimson_window": "赤紅窗戶", - "block.create.crimson_window_pane": "赤紅窗戶片", + "block.create.crimsite": "緋紅岩", + "block.create.crimsite_pillar": "緋紅岩柱", + "block.create.crimson_window": "緋紅窗戶", + "block.create.crimson_window_pane": "緋紅窗戶片", "block.create.crushing_wheel": "粉碎輪", "block.create.crushing_wheel_controller": "粉碎輪控制器", "block.create.cuckoo_clock": "布穀鳥鐘", + "block.create.cut_andesite": "切製安山岩", + "block.create.cut_andesite_brick_slab": "切製安山岩磚半磚", + "block.create.cut_andesite_brick_stairs": "切製安山岩磚階梯", + "block.create.cut_andesite_brick_wall": "切製安山岩磚牆", + "block.create.cut_andesite_bricks": "切製安山岩磚", + "block.create.cut_andesite_slab": "切製安山岩半磚", + "block.create.cut_andesite_stairs": "切製安山岩階梯", + "block.create.cut_andesite_wall": "切製安山岩牆", + "block.create.cut_asurine": "切製皓藍石", + "block.create.cut_asurine_brick_slab": "切製皓藍石磚半磚", + "block.create.cut_asurine_brick_stairs": "切製皓藍石磚階梯", + "block.create.cut_asurine_brick_wall": "切製皓藍石磚牆", + "block.create.cut_asurine_bricks": "切製皓藍石磚", + "block.create.cut_asurine_slab": "切製皓藍石半磚", + "block.create.cut_asurine_stairs": "切製皓藍石階梯", + "block.create.cut_asurine_wall": "切製皓藍石牆", + "block.create.cut_calcite": "切製方解石", + "block.create.cut_calcite_brick_slab": "切製方解石磚半磚", + "block.create.cut_calcite_brick_stairs": "切製方解石磚階梯", + "block.create.cut_calcite_brick_wall": "切製方解石磚牆", + "block.create.cut_calcite_bricks": "切製方解石磚", + "block.create.cut_calcite_slab": "切製方解石半磚", + "block.create.cut_calcite_stairs": "切製方解石階梯", + "block.create.cut_calcite_wall": "切製方解石牆", + "block.create.cut_crimsite": "切製緋紅岩", + "block.create.cut_crimsite_brick_slab": "切製緋紅岩磚半磚", + "block.create.cut_crimsite_brick_stairs": "切製緋紅岩磚階梯", + "block.create.cut_crimsite_brick_wall": "切製緋紅岩磚牆", + "block.create.cut_crimsite_bricks": "切製緋紅岩磚", + "block.create.cut_crimsite_slab": "切製緋紅岩半磚", + "block.create.cut_crimsite_stairs": "切製緋紅岩階梯", + "block.create.cut_crimsite_wall": "切製緋紅岩牆", + "block.create.cut_deepslate": "切製深板岩", + "block.create.cut_deepslate_brick_slab": "切製深板岩磚半磚", + "block.create.cut_deepslate_brick_stairs": "切製深板岩磚階梯", + "block.create.cut_deepslate_brick_wall": "切製深板岩磚牆", + "block.create.cut_deepslate_bricks": "切製深板岩磚", + "block.create.cut_deepslate_slab": "切製深板岩半磚", + "block.create.cut_deepslate_stairs": "切製深板岩階梯", + "block.create.cut_deepslate_wall": "切製深板岩牆", + "block.create.cut_diorite": "切製閃長岩", + "block.create.cut_diorite_brick_slab": "切製閃長岩磚半磚", + "block.create.cut_diorite_brick_stairs": "切製閃長岩磚階梯", + "block.create.cut_diorite_brick_wall": "切製閃長岩磚牆", + "block.create.cut_diorite_bricks": "切製閃長岩磚", + "block.create.cut_diorite_slab": "切製閃長岩半磚", + "block.create.cut_diorite_stairs": "切製閃長岩階梯", + "block.create.cut_diorite_wall": "切製閃長岩牆", + "block.create.cut_dripstone": "切製鐘乳石", + "block.create.cut_dripstone_brick_slab": "切製鐘乳石磚半磚", + "block.create.cut_dripstone_brick_stairs": "切製鐘乳石磚階梯", + "block.create.cut_dripstone_brick_wall": "切製鐘乳石磚牆", + "block.create.cut_dripstone_bricks": "切製鐘乳石磚", + "block.create.cut_dripstone_slab": "切製鐘乳石半磚", + "block.create.cut_dripstone_stairs": "切製鐘乳石階梯", + "block.create.cut_dripstone_wall": "切製鐘乳石牆", + "block.create.cut_granite": "切製花崗岩", + "block.create.cut_granite_brick_slab": "切製花崗岩磚半磚", + "block.create.cut_granite_brick_stairs": "切製花崗岩磚階梯", + "block.create.cut_granite_brick_wall": "切製花崗岩磚牆", + "block.create.cut_granite_bricks": "切製花崗岩磚", + "block.create.cut_granite_slab": "切製花崗岩半磚", + "block.create.cut_granite_stairs": "切製花崗岩階梯", + "block.create.cut_granite_wall": "切製花崗岩牆", + "block.create.cut_limestone": "切製石灰岩", + "block.create.cut_limestone_brick_slab": "切製石灰岩磚半磚", + "block.create.cut_limestone_brick_stairs": "切製石灰岩磚階梯", + "block.create.cut_limestone_brick_wall": "切製石灰岩磚牆", + "block.create.cut_limestone_bricks": "切製石灰岩磚", + "block.create.cut_limestone_slab": "切製石灰岩半磚", + "block.create.cut_limestone_stairs": "切製石灰岩階梯", + "block.create.cut_limestone_wall": "切製石灰岩牆", + "block.create.cut_ochrum": "切製赭金石", + "block.create.cut_ochrum_brick_slab": "切製赭金石磚半磚", + "block.create.cut_ochrum_brick_stairs": "切製赭金石磚階梯", + "block.create.cut_ochrum_brick_wall": "切製赭金石磚牆", + "block.create.cut_ochrum_bricks": "切製赭金石磚", + "block.create.cut_ochrum_slab": "切製赭金石半磚", + "block.create.cut_ochrum_stairs": "切製赭金石階梯", + "block.create.cut_ochrum_wall": "切製赭金石牆", + "block.create.cut_scorchia": "切製焦熔渣", + "block.create.cut_scorchia_brick_slab": "切製焦熔渣磚半磚", + "block.create.cut_scorchia_brick_stairs": "切製焦熔渣磚階梯", + "block.create.cut_scorchia_brick_wall": "切製焦熔渣磚牆", + "block.create.cut_scorchia_bricks": "切製焦熔渣磚", + "block.create.cut_scorchia_slab": "切製焦熔渣半磚", + "block.create.cut_scorchia_stairs": "切製焦熔渣階梯", + "block.create.cut_scorchia_wall": "切製焦熔渣牆", + "block.create.cut_scoria": "切製熔渣", + "block.create.cut_scoria_brick_slab": "切製熔渣磚半磚", + "block.create.cut_scoria_brick_stairs": "切製熔渣磚階梯", + "block.create.cut_scoria_brick_wall": "切製熔渣磚牆", + "block.create.cut_scoria_bricks": "切製熔渣磚", + "block.create.cut_scoria_slab": "切製熔渣半磚", + "block.create.cut_scoria_stairs": "切製熔渣階梯", + "block.create.cut_scoria_wall": "切製熔渣牆", + "block.create.cut_tuff": "切製凝灰岩", + "block.create.cut_tuff_brick_slab": "切製凝灰岩磚半磚", + "block.create.cut_tuff_brick_stairs": "切製凝灰岩磚階梯", + "block.create.cut_tuff_brick_wall": "切製凝灰岩磚牆", + "block.create.cut_tuff_bricks": "切製凝灰岩磚", + "block.create.cut_tuff_slab": "切製凝灰岩半磚", + "block.create.cut_tuff_stairs": "切製凝灰岩階梯", + "block.create.cut_tuff_wall": "切製凝灰岩牆", + "block.create.cut_veridium": "切製輝綠岩", + "block.create.cut_veridium_brick_slab": "切製輝綠岩磚半磚", + "block.create.cut_veridium_brick_stairs": "切製輝綠岩磚階梯", + "block.create.cut_veridium_brick_wall": "切製輝綠岩磚牆", + "block.create.cut_veridium_bricks": "切製輝綠岩磚", + "block.create.cut_veridium_slab": "切製輝綠岩半磚", + "block.create.cut_veridium_stairs": "切製輝綠岩階梯", + "block.create.cut_veridium_wall": "切製輝綠岩牆", "block.create.cyan_nixie_tube": "青色真空管", "block.create.cyan_sail": "藍綠色風帆", "block.create.cyan_seat": "藍綠色坐墊", + "block.create.cyan_toolbox": "藍綠色工具箱", "block.create.cyan_valve_handle": "藍綠色閥門開關", "block.create.dark_oak_window": "黑橡木窗戶", "block.create.dark_oak_window_pane": "黑橡木窗戶片", - "block.create.dark_scoria": "黑火成岩", - "block.create.dark_scoria_bricks": "黑火成岩磚", - "block.create.dark_scoria_bricks_slab": "黑火成岩半磚", - "block.create.dark_scoria_bricks_stairs": "黑火成岩樓梯", - "block.create.dark_scoria_bricks_wall": "黑火成岩牆", - "block.create.dark_scoria_cobblestone": "黑火成岩碎石", - "block.create.dark_scoria_cobblestone_slab": "黑火成岩碎石半磚", - "block.create.dark_scoria_cobblestone_stairs": "黑火成岩碎石樓梯", - "block.create.dark_scoria_cobblestone_wall": "黑火成岩碎石牆", - "block.create.dark_scoria_pillar": "豎紋黑火成岩", - "block.create.deployer": "機器手", + "block.create.deepslate_pillar": "深板岩柱", + "block.create.deepslate_zinc_ore": "深板岩鋅礦", + "block.create.deployer": "機械手", "block.create.depot": "置物臺", - "block.create.diorite_bricks": "閃長岩磚", - "block.create.diorite_bricks_slab": "閃長岩半磚", - "block.create.diorite_bricks_stairs": "閃長岩樓梯", - "block.create.diorite_bricks_wall": "閃長岩牆", - "block.create.diorite_cobblestone": "碎閃長岩", - "block.create.diorite_cobblestone_slab": "碎閃長岩半磚", - "block.create.diorite_cobblestone_stairs": "碎閃長岩樓梯", - "block.create.diorite_cobblestone_wall": "碎閃長岩牆", - "block.create.diorite_pillar": "豎紋閃長岩", - "block.create.dolomite": "白雲石", - "block.create.dolomite_bricks": "白雲石磚", - "block.create.dolomite_bricks_slab": "白雲石半磚", - "block.create.dolomite_bricks_stairs": "白雲石樓梯", - "block.create.dolomite_bricks_wall": "白雲石牆", - "block.create.dolomite_cobblestone": "碎白雲石", - "block.create.dolomite_cobblestone_slab": "碎白雲石半磚", - "block.create.dolomite_cobblestone_stairs": "碎白雲石樓梯", - "block.create.dolomite_cobblestone_wall": "碎白雲石牆", - "block.create.dolomite_pillar": "豎紋白雲石", + "block.create.diorite_pillar": "閃長岩柱", + "block.create.display_board": "顯示板", + "block.create.display_link": "顯示鏈路", + "block.create.dripstone_pillar": "鐘乳石柱", "block.create.encased_chain_drive": "鏈式傳動箱", "block.create.encased_fan": "鼓風機", - "block.create.encased_fluid_pipe": "液體管道箱", - "block.create.fancy_andesite_bricks": "方紋安山岩磚", - "block.create.fancy_andesite_bricks_slab": "方紋安山岩半磚", - "block.create.fancy_andesite_bricks_stairs": "方紋安山岩樓梯", - "block.create.fancy_andesite_bricks_wall": "方紋安山岩牆", - "block.create.fancy_dark_scoria_bricks": "方紋黑火成岩", - "block.create.fancy_dark_scoria_bricks_slab": "方紋黑火成岩半磚", - "block.create.fancy_dark_scoria_bricks_stairs": "方紋黑火成岩樓梯", - "block.create.fancy_dark_scoria_bricks_wall": "方紋黑火成岩牆", - "block.create.fancy_diorite_bricks": "方紋閃長岩", - "block.create.fancy_diorite_bricks_slab": "方紋閃長岩半磚", - "block.create.fancy_diorite_bricks_stairs": "方紋閃長岩樓梯", - "block.create.fancy_diorite_bricks_wall": "方紋閃長岩牆", - "block.create.fancy_dolomite_bricks": "方紋白雲石", - "block.create.fancy_dolomite_bricks_slab": "方紋白雲石半磚", - "block.create.fancy_dolomite_bricks_stairs": "方紋白雲石樓梯", - "block.create.fancy_dolomite_bricks_wall": "方紋白雲石牆", - "block.create.fancy_gabbro_bricks": "方紋輝長岩", - "block.create.fancy_gabbro_bricks_slab": "方紋輝長岩半磚", - "block.create.fancy_gabbro_bricks_stairs": "方紋輝長岩樓梯", - "block.create.fancy_gabbro_bricks_wall": "方紋輝長岩牆", - "block.create.fancy_granite_bricks": "方紋花崗岩", - "block.create.fancy_granite_bricks_slab": "方紋花崗岩半磚", - "block.create.fancy_granite_bricks_stairs": "方紋花崗岩樓梯", - "block.create.fancy_granite_bricks_wall": "方紋花崗岩牆", - "block.create.fancy_limestone_bricks": "方紋石灰岩", - "block.create.fancy_limestone_bricks_slab": "方紋石灰岩半磚", - "block.create.fancy_limestone_bricks_stairs": "方紋石灰岩樓梯", - "block.create.fancy_limestone_bricks_wall": "方紋石灰岩牆", - "block.create.fancy_scoria_bricks": "方紋火成岩", - "block.create.fancy_scoria_bricks_slab": "方紋火成岩半磚", - "block.create.fancy_scoria_bricks_stairs": "方紋火成岩樓梯", - "block.create.fancy_scoria_bricks_wall": "方紋火成岩牆", - "block.create.fancy_weathered_limestone_bricks": "方紋風化石灰岩", - "block.create.fancy_weathered_limestone_bricks_slab": "方紋風化石灰岩半磚", - "block.create.fancy_weathered_limestone_bricks_stairs": "方紋風化石灰岩樓梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方紋風化石灰岩牆", - "block.create.fluid_pipe": "液體管道", - "block.create.fluid_tank": "液體儲存罐", - "block.create.fluid_valve": "液體閥門", + "block.create.encased_fluid_pipe": "流體管道箱", + "block.create.exposed_copper_shingle_slab": "斑駁的銅屋瓦半磚", + "block.create.exposed_copper_shingle_stairs": "斑駁的銅屋瓦階梯", + "block.create.exposed_copper_shingles": "斑駁的銅屋瓦", + "block.create.exposed_copper_tile_slab": "斑駁的銅磚瓦半磚", + "block.create.exposed_copper_tile_stairs": "斑駁的銅磚瓦階梯", + "block.create.exposed_copper_tiles": "斑駁的銅磚瓦", + "block.create.fake_track": "地圖軌道標記", + "block.create.fluid_pipe": "流體管道", + "block.create.fluid_tank": "流體儲存罐", + "block.create.fluid_valve": "流體閥門", "block.create.flywheel": "飛輪", "block.create.framed_glass": "邊框玻璃", + "block.create.framed_glass_door": "邊框玻璃門", "block.create.framed_glass_pane": "邊框玻璃片", - "block.create.furnace_engine": "熔煉引擎", - "block.create.gabbro": "輝長岩", - "block.create.gabbro_bricks": "輝長岩磚", - "block.create.gabbro_bricks_slab": "輝長岩半磚", - "block.create.gabbro_bricks_stairs": "輝長岩樓梯", - "block.create.gabbro_bricks_wall": "輝長岩牆", - "block.create.gabbro_cobblestone": "碎輝長岩", - "block.create.gabbro_cobblestone_slab": "碎輝長岩半磚", - "block.create.gabbro_cobblestone_stairs": "碎輝長岩樓梯", - "block.create.gabbro_cobblestone_wall": "碎輝長岩牆", - "block.create.gabbro_pillar": "豎紋輝長岩", - "block.create.gantry_carriage": "門式起重機", - "block.create.gantry_shaft": "門式起重機滑道", + "block.create.framed_glass_trapdoor": "邊框玻璃地板門", + "block.create.gantry_carriage": "橋式起重機", + "block.create.gantry_shaft": "橋式起重機導軌", "block.create.gearbox": "齒輪箱", "block.create.gearshift": "變速箱", - "block.create.glass_fluid_pipe": "玻璃液體管道", - "block.create.granite_bricks": "花崗岩", - "block.create.granite_bricks_slab": "花崗岩半磚", - "block.create.granite_bricks_stairs": "花崗岩樓梯", - "block.create.granite_bricks_wall": "花崗岩牆", - "block.create.granite_cobblestone": "碎花崗岩", - "block.create.granite_cobblestone_slab": "碎花崗岩半磚", - "block.create.granite_cobblestone_stairs": "碎花崗岩樓梯", - "block.create.granite_cobblestone_wall": "碎花崗岩牆", - "block.create.granite_pillar": "豎紋花崗岩", + "block.create.glass_fluid_pipe": "玻璃流體管道", + "block.create.granite_pillar": "花崗岩柱", "block.create.gray_nixie_tube": "灰色真空管", "block.create.gray_sail": "灰色風帆", "block.create.gray_seat": "灰色坐墊", + "block.create.gray_toolbox": "灰色工具箱", "block.create.gray_valve_handle": "灰色閥門開關", "block.create.green_nixie_tube": "綠色真空管", "block.create.green_sail": "綠色風帆", "block.create.green_seat": "綠色坐墊", + "block.create.green_toolbox": "綠色工具箱", "block.create.green_valve_handle": "綠色閥門開關", "block.create.hand_crank": "手搖把手", "block.create.haunted_bell": "靈魂鐘", @@ -198,49 +245,51 @@ "block.create.horizontal_framed_glass_pane": "豎直邊框玻璃片", "block.create.hose_pulley": "軟管滑輪", "block.create.item_drain": "分液池", + "block.create.item_vault": "倉儲", "block.create.jungle_window": "叢林木窗戶", "block.create.jungle_window_pane": "叢林木窗戶片", + "block.create.large_bogey": "大轉向架", "block.create.large_cogwheel": "大齒輪", "block.create.layered_andesite": "疊層安山岩", - "block.create.layered_dark_scoria": "疊層黑火成岩", + "block.create.layered_asurine": "疊層皓藍石", + "block.create.layered_calcite": "疊層方解石", + "block.create.layered_crimsite": "疊層緋紅岩", + "block.create.layered_deepslate": "疊層深板岩", "block.create.layered_diorite": "疊層閃長岩", - "block.create.layered_dolomite": "疊層白雲石", - "block.create.layered_gabbro": "疊層輝長岩", + "block.create.layered_dripstone": "疊層鐘乳石", "block.create.layered_granite": "疊層花崗岩", "block.create.layered_limestone": "疊層石灰岩", - "block.create.layered_scoria": "疊層火成岩", - "block.create.layered_weathered_limestone": "疊層風化石灰岩", + "block.create.layered_ochrum": "疊層赭金石", + "block.create.layered_scorchia": "疊層焦熔渣", + "block.create.layered_scoria": "疊層熔渣", + "block.create.layered_tuff": "疊層凝灰岩", + "block.create.layered_veridium": "疊層輝綠岩", "block.create.lectern_controller": "講台遙控器", "block.create.light_blue_nixie_tube": "亮藍色真空管", "block.create.light_blue_sail": "淡藍色風帆", "block.create.light_blue_seat": "淡藍色坐墊", + "block.create.light_blue_toolbox": "淡藍色工具箱", "block.create.light_blue_valve_handle": "淡藍色閥門開關", "block.create.light_gray_nixie_tube": "亮灰色真空管", "block.create.light_gray_sail": "淡灰色風帆", "block.create.light_gray_seat": "淡灰色坐墊", + "block.create.light_gray_toolbox": "淺灰色工具箱", "block.create.light_gray_valve_handle": "淡灰色閥門開關", "block.create.lime_nixie_tube": "淺綠色真空管", "block.create.lime_sail": "黃綠色風帆", "block.create.lime_seat": "黃綠色坐墊", + "block.create.lime_toolbox": "黃綠色工具箱", "block.create.lime_valve_handle": "黃綠色閥門開關", - "block.create.limesand": "石灰沙", "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩", - "block.create.limestone_bricks_slab": "石灰岩半磚", - "block.create.limestone_bricks_stairs": "石灰岩樓梯", - "block.create.limestone_bricks_wall": "石灰岩牆", - "block.create.limestone_cobblestone": "碎石灰岩", - "block.create.limestone_cobblestone_slab": "碎石灰岩半磚", - "block.create.limestone_cobblestone_stairs": "碎石灰岩樓梯", - "block.create.limestone_cobblestone_wall": "碎石灰岩牆", - "block.create.limestone_pillar": "豎紋石灰岩", + "block.create.limestone_pillar": "石灰岩柱", "block.create.linear_chassis": "機殼底盤", - "block.create.lit_blaze_burner": "烈焰使者動力爐(已啟動)", + "block.create.lit_blaze_burner": "烈焰使者動力爐 (已啟動) ", "block.create.magenta_nixie_tube": "洋紅色真空管", "block.create.magenta_sail": "洋紅色風帆", "block.create.magenta_seat": "洋紅色坐墊", + "block.create.magenta_toolbox": "洋紅色工具箱", "block.create.magenta_valve_handle": "洋紅色閥門開關", - "block.create.mechanical_arm": "機械手臂", + "block.create.mechanical_arm": "機械臂", "block.create.mechanical_bearing": "機械軸承", "block.create.mechanical_crafter": "機械合成器", "block.create.mechanical_drill": "機械鑽頭", @@ -249,200 +298,284 @@ "block.create.mechanical_piston": "機械活塞", "block.create.mechanical_piston_head": "機械活塞頭", "block.create.mechanical_plough": "機械犁", - "block.create.mechanical_press": "機械液壓機", + "block.create.mechanical_press": "機械鍛壓機", "block.create.mechanical_pump": "機械幫浦", - "block.create.mechanical_saw": "機械切割機", + "block.create.mechanical_saw": "機械圓鋸機", "block.create.metal_bracket": "金屬支架", + "block.create.metal_girder": "金屬樑", + "block.create.metal_girder_encased_shaft": "金屬傳動軸樑", "block.create.millstone": "石磨", "block.create.minecart_anchor": "礦車錨", - "block.create.mossy_andesite": "青苔安山岩", - "block.create.mossy_dark_scoria": "青苔黑火成岩", - "block.create.mossy_diorite": "青苔閃長岩", - "block.create.mossy_dolomite": "青苔白雲石", - "block.create.mossy_gabbro": "青苔輝長岩", - "block.create.mossy_granite": "青苔花崗岩", - "block.create.mossy_limestone": "青苔石灰岩", - "block.create.mossy_scoria": "青苔火成岩", - "block.create.mossy_weathered_limestone": "青苔風化石灰岩", "block.create.mysterious_cuckoo_clock": "神秘布穀鳥鐘", - "block.create.natural_scoria": "天然火成岩", "block.create.nixie_tube": "真空管顯示器", "block.create.nozzle": "鼓風機噴嘴", "block.create.oak_window": "橡木窗戶", "block.create.oak_window_pane": "橡木窗戶片", + "block.create.ochrum": "赭金石", + "block.create.ochrum_pillar": "赭金石柱", "block.create.orange_sail": "橙色風帆", "block.create.orange_seat": "橙色坐墊", + "block.create.orange_toolbox": "橙色工具箱", "block.create.orange_valve_handle": "橙色閥門開關", "block.create.ornate_iron_window": "華麗鐵窗戶", "block.create.ornate_iron_window_pane": "華麗鐵窗戶片", - "block.create.overgrown_andesite": "長草的安山岩", - "block.create.overgrown_dark_scoria": "長草的黑火成岩", - "block.create.overgrown_diorite": "長草的閃長岩", - "block.create.overgrown_dolomite": "長草的白雲石", - "block.create.overgrown_gabbro": "長草的輝長岩", - "block.create.overgrown_granite": "長草的花崗岩", - "block.create.overgrown_limestone": "長草的石灰岩", - "block.create.overgrown_scoria": "長草的火成岩", - "block.create.overgrown_weathered_limestone": "長草的風化石灰岩", - "block.create.paved_andesite": "安山岩鋪路石", - "block.create.paved_andesite_slab": "安山岩鋪路石半磚", - "block.create.paved_andesite_stairs": "安山岩鋪路石樓梯", - "block.create.paved_andesite_wall": "安山岩鋪路石牆", - "block.create.paved_dark_scoria": "黑火成岩鋪路石", - "block.create.paved_dark_scoria_slab": "黑火成岩鋪路石半磚", - "block.create.paved_dark_scoria_stairs": "黑火成岩鋪路石樓梯", - "block.create.paved_dark_scoria_wall": "黑火成岩鋪路石牆", - "block.create.paved_diorite": "閃長岩鋪路石", - "block.create.paved_diorite_slab": "閃長岩鋪路石半磚", - "block.create.paved_diorite_stairs": "閃長岩鋪路石樓梯", - "block.create.paved_diorite_wall": "閃長岩鋪路石牆", - "block.create.paved_dolomite": "白雲石鋪路石", - "block.create.paved_dolomite_slab": "白雲石鋪路石半磚", - "block.create.paved_dolomite_stairs": "白雲石鋪路石樓梯", - "block.create.paved_dolomite_wall": "白雲石鋪路石牆", - "block.create.paved_gabbro": "輝長岩鋪路石", - "block.create.paved_gabbro_slab": "輝長岩鋪路石半磚", - "block.create.paved_gabbro_stairs": "輝長岩鋪路石樓梯", - "block.create.paved_gabbro_wall": "輝長岩鋪路石牆", - "block.create.paved_granite": "花崗岩鋪路石", - "block.create.paved_granite_slab": "花崗岩鋪路石半磚", - "block.create.paved_granite_stairs": "花崗岩鋪路石樓梯", - "block.create.paved_granite_wall": "花崗岩鋪路石牆", - "block.create.paved_limestone": "石灰岩鋪路石", - "block.create.paved_limestone_slab": "石灰岩鋪路石半磚", - "block.create.paved_limestone_stairs": "石灰岩鋪路石樓梯", - "block.create.paved_limestone_wall": "石灰岩鋪路石牆", - "block.create.paved_scoria": "火成岩鋪路石", - "block.create.paved_scoria_slab": "火成岩鋪路石半磚", - "block.create.paved_scoria_stairs": "火成岩鋪路石樓梯", - "block.create.paved_scoria_wall": "火成岩鋪路石牆", - "block.create.paved_weathered_limestone": "風化石灰岩鋪路石", - "block.create.paved_weathered_limestone_slab": "風化石灰岩鋪路石半磚", - "block.create.paved_weathered_limestone_stairs": "風化石灰岩鋪路石樓梯", - "block.create.paved_weathered_limestone_wall": "風化石灰岩鋪路石牆", + "block.create.oxidized_copper_shingle_slab": "氧化的銅屋瓦半磚", + "block.create.oxidized_copper_shingle_stairs": "氧化的銅屋瓦階梯", + "block.create.oxidized_copper_shingles": "氧化的銅屋瓦", + "block.create.oxidized_copper_tile_slab": "氧化的銅磚瓦半磚", + "block.create.oxidized_copper_tile_stairs": "氧化的銅磚瓦階梯", + "block.create.oxidized_copper_tiles": "氧化的銅磚瓦", "block.create.peculiar_bell": "黃銅鐘", "block.create.pink_nixie_tube": "粉紅色真空管", "block.create.pink_sail": "粉紅色風帆", "block.create.pink_seat": "粉紅色坐墊", + "block.create.pink_toolbox": "粉紅色工具箱", "block.create.pink_valve_handle": "粉紅色閥門開關", "block.create.piston_extension_pole": "活塞桿", - "block.create.polished_dark_scoria": "磨製黑火成岩", - "block.create.polished_dark_scoria_slab": "磨製黑火成岩半磚", - "block.create.polished_dark_scoria_stairs": "磨製黑火成岩樓梯", - "block.create.polished_dark_scoria_wall": "磨製黑火成岩牆", - "block.create.polished_dolomite": "磨製白雲石", - "block.create.polished_dolomite_slab": "磨製白雲石半磚", - "block.create.polished_dolomite_stairs": "磨製白雲石樓梯", - "block.create.polished_dolomite_wall": "磨製白雲石牆", - "block.create.polished_gabbro": "磨製輝長岩", - "block.create.polished_gabbro_slab": "磨製輝長岩半磚", - "block.create.polished_gabbro_stairs": "磨製輝長岩樓梯", - "block.create.polished_gabbro_wall": "磨製輝長岩牆", - "block.create.polished_limestone": "磨製石灰岩", - "block.create.polished_limestone_slab": "磨製石灰岩半磚", - "block.create.polished_limestone_stairs": "磨製石灰岩樓梯", - "block.create.polished_limestone_wall": "磨製石灰岩牆", - "block.create.polished_scoria": "磨製火成岩", - "block.create.polished_scoria_slab": "磨製火成岩半磚", - "block.create.polished_scoria_stairs": "磨製火成岩樓梯", - "block.create.polished_scoria_wall": "磨製火成岩牆", - "block.create.polished_weathered_limestone": "磨製風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨製風化石灰岩半磚", - "block.create.polished_weathered_limestone_stairs": "磨製風化石灰岩樓梯", - "block.create.polished_weathered_limestone_wall": "磨製風化石灰岩牆", - "block.create.portable_fluid_interface": "移動式液體口", + "block.create.placard": "標示牌", + "block.create.polished_cut_andesite": "拋光切製安山岩", + "block.create.polished_cut_andesite_slab": "拋光切製安山岩半磚", + "block.create.polished_cut_andesite_stairs": "拋光切製安山岩階梯", + "block.create.polished_cut_andesite_wall": "拋光切製安山岩牆", + "block.create.polished_cut_asurine": "拋光切製皓藍石", + "block.create.polished_cut_asurine_slab": "拋光切製皓藍石半磚", + "block.create.polished_cut_asurine_stairs": "拋光切製皓藍石階梯", + "block.create.polished_cut_asurine_wall": "拋光切製皓藍石牆", + "block.create.polished_cut_calcite": "拋光切製方解石", + "block.create.polished_cut_calcite_slab": "拋光切製方解石半磚", + "block.create.polished_cut_calcite_stairs": "拋光切製方解石階梯", + "block.create.polished_cut_calcite_wall": "拋光切製方解石牆", + "block.create.polished_cut_crimsite": "拋光切製緋紅岩", + "block.create.polished_cut_crimsite_slab": "拋光切製緋紅岩半磚", + "block.create.polished_cut_crimsite_stairs": "拋光切製緋紅岩階梯", + "block.create.polished_cut_crimsite_wall": "拋光切製緋紅岩牆", + "block.create.polished_cut_deepslate": "拋光切製深板岩", + "block.create.polished_cut_deepslate_slab": "拋光切製深板岩半磚", + "block.create.polished_cut_deepslate_stairs": "拋光切製深板岩階梯", + "block.create.polished_cut_deepslate_wall": "拋光切製深板岩牆", + "block.create.polished_cut_diorite": "拋光切製閃長岩", + "block.create.polished_cut_diorite_slab": "拋光切製閃長岩半磚", + "block.create.polished_cut_diorite_stairs": "拋光切製閃長岩階梯", + "block.create.polished_cut_diorite_wall": "拋光切製閃長岩牆", + "block.create.polished_cut_dripstone": "拋光切製鐘乳石", + "block.create.polished_cut_dripstone_slab": "拋光切製鐘乳石半磚", + "block.create.polished_cut_dripstone_stairs": "拋光切製鐘乳石階梯", + "block.create.polished_cut_dripstone_wall": "拋光切製鐘乳石牆", + "block.create.polished_cut_granite": "拋光切製花崗岩", + "block.create.polished_cut_granite_slab": "拋光切製花崗岩半磚", + "block.create.polished_cut_granite_stairs": "拋光切製花崗岩階梯", + "block.create.polished_cut_granite_wall": "拋光切製花崗岩牆", + "block.create.polished_cut_limestone": "拋光切製石灰岩", + "block.create.polished_cut_limestone_slab": "拋光切製石灰岩半磚", + "block.create.polished_cut_limestone_stairs": "拋光切製石灰岩階梯", + "block.create.polished_cut_limestone_wall": "拋光切製石灰岩牆", + "block.create.polished_cut_ochrum": "拋光切製赭金石", + "block.create.polished_cut_ochrum_slab": "拋光切製赭金石半磚", + "block.create.polished_cut_ochrum_stairs": "拋光切製赭金石階梯", + "block.create.polished_cut_ochrum_wall": "拋光切製赭金石牆", + "block.create.polished_cut_scorchia": "拋光切製焦熔渣", + "block.create.polished_cut_scorchia_slab": "拋光切製焦熔渣半磚", + "block.create.polished_cut_scorchia_stairs": "拋光切製焦熔渣階梯", + "block.create.polished_cut_scorchia_wall": "拋光切製焦熔渣牆", + "block.create.polished_cut_scoria": "拋光切製熔渣", + "block.create.polished_cut_scoria_slab": "拋光切製熔渣半磚", + "block.create.polished_cut_scoria_stairs": "拋光切製熔渣階梯", + "block.create.polished_cut_scoria_wall": "拋光切製熔渣牆", + "block.create.polished_cut_tuff": "拋光切製凝灰岩", + "block.create.polished_cut_tuff_slab": "拋光切製凝灰岩半磚", + "block.create.polished_cut_tuff_stairs": "拋光切製凝灰岩階梯", + "block.create.polished_cut_tuff_wall": "拋光切製凝灰岩牆", + "block.create.polished_cut_veridium": "拋光切製輝綠岩", + "block.create.polished_cut_veridium_slab": "拋光切製輝綠岩半磚", + "block.create.polished_cut_veridium_stairs": "拋光切製輝綠岩階梯", + "block.create.polished_cut_veridium_wall": "拋光切製輝綠岩牆", + "block.create.portable_fluid_interface": "移動式流體口", "block.create.portable_storage_interface": "移動式物品口", "block.create.powered_latch": "閂鎖器", + "block.create.powered_shaft": "動力傳動軸", "block.create.powered_toggle_latch": "T型正反器", "block.create.pulley_magnet": "滑輪磁鐵", + "block.create.pulse_extender": "脈衝延長器", "block.create.pulse_repeater": "脈衝中繼器", "block.create.purple_nixie_tube": "紫色真空管", "block.create.purple_sail": "紫色風帆", "block.create.purple_seat": "紫色坐墊", + "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色閥門開關", "block.create.radial_chassis": "旋轉底盤", + "block.create.railway_casing": "火車機殼", + "block.create.raw_zinc_block": "鋅原礦方塊", "block.create.red_nixie_tube": "紅色真空管", "block.create.red_sail": "紅色風帆", "block.create.red_seat": "紅色坐墊", + "block.create.red_toolbox": "紅色工具箱", "block.create.red_valve_handle": "紅色閥門開關", - "block.create.redstone_contact": "接觸式紅石訊號產生器", - "block.create.redstone_link": "無限紅石訊號機", + "block.create.redstone_contact": "接觸式偵測器", + "block.create.redstone_link": "無線紅石鏈路", "block.create.refined_radiance_casing": "光輝機殼", - "block.create.reinforced_rail": "強化鐵軌", "block.create.rope": "繩索", "block.create.rope_pulley": "滑輪繩索", + "block.create.rose_quartz_block": "玫瑰石英方塊", + "block.create.rose_quartz_lamp": "玫瑰石英燈", + "block.create.rose_quartz_tiles": "玫瑰石英磚瓦", "block.create.rotation_speed_controller": "轉速控制器", "block.create.sail_frame": "風帆框架", "block.create.schematic_table": "藍圖桌", "block.create.schematicannon": "藍圖加農炮", - "block.create.scoria": "火成岩", - "block.create.scoria_bricks": "火成岩磚", - "block.create.scoria_bricks_slab": "火成岩半磚", - "block.create.scoria_bricks_stairs": "火成岩樓梯", - "block.create.scoria_bricks_wall": "火成岩牆", - "block.create.scoria_cobblestone": "碎火成岩", - "block.create.scoria_cobblestone_slab": "碎火成岩半磚", - "block.create.scoria_cobblestone_stairs": "碎火成岩樓梯", - "block.create.scoria_cobblestone_wall": "碎火成岩牆", - "block.create.scoria_pillar": "豎紋火成岩", - "block.create.secondary_linear_chassis": "機殼底盤2號", + "block.create.scorchia": "焦熔渣", + "block.create.scorchia_pillar": "焦熔渣柱", + "block.create.scoria": "熔渣", + "block.create.scoria_pillar": "熔渣柱", + "block.create.secondary_linear_chassis": "機殼底盤二號", "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.small_andesite_brick_slab": "小安山岩磚半磚", + "block.create.small_andesite_brick_stairs": "小安山岩磚階梯", + "block.create.small_andesite_brick_wall": "小安山岩磚牆", + "block.create.small_andesite_bricks": "小安山岩磚", + "block.create.small_asurine_brick_slab": "小皓藍石磚半磚", + "block.create.small_asurine_brick_stairs": "小皓藍石磚階梯", + "block.create.small_asurine_brick_wall": "小皓藍石磚牆", + "block.create.small_asurine_bricks": "小皓藍石磚", + "block.create.small_bogey": "小轉向架", + "block.create.small_calcite_brick_slab": "小方解石磚半磚", + "block.create.small_calcite_brick_stairs": "小方解石磚階梯", + "block.create.small_calcite_brick_wall": "小方解石磚牆", + "block.create.small_calcite_bricks": "小方解石磚", + "block.create.small_crimsite_brick_slab": "小緋紅岩磚半磚", + "block.create.small_crimsite_brick_stairs": "小緋紅岩磚階梯", + "block.create.small_crimsite_brick_wall": "小緋紅岩磚牆", + "block.create.small_crimsite_bricks": "小緋紅岩磚", + "block.create.small_deepslate_brick_slab": "小深板岩磚半磚", + "block.create.small_deepslate_brick_stairs": "小深板岩磚階梯", + "block.create.small_deepslate_brick_wall": "小深板岩磚牆", + "block.create.small_deepslate_bricks": "小深板岩磚", + "block.create.small_diorite_brick_slab": "小閃長岩磚半磚", + "block.create.small_diorite_brick_stairs": "小閃長岩磚階梯", + "block.create.small_diorite_brick_wall": "小閃長岩磚牆", + "block.create.small_diorite_bricks": "小閃長岩磚", + "block.create.small_dripstone_brick_slab": "小鐘乳石磚半磚", + "block.create.small_dripstone_brick_stairs": "小鐘乳石磚階梯", + "block.create.small_dripstone_brick_wall": "小鐘乳石磚牆", + "block.create.small_dripstone_bricks": "小鐘乳石磚", + "block.create.small_granite_brick_slab": "小花崗岩磚半磚", + "block.create.small_granite_brick_stairs": "小花崗岩磚階梯", + "block.create.small_granite_brick_wall": "小花崗岩磚牆", + "block.create.small_granite_bricks": "小花崗岩磚", + "block.create.small_limestone_brick_slab": "小石灰岩磚半磚", + "block.create.small_limestone_brick_stairs": "小石灰岩磚階梯", + "block.create.small_limestone_brick_wall": "小石灰岩磚牆", + "block.create.small_limestone_bricks": "小石灰岩磚", + "block.create.small_ochrum_brick_slab": "小赭金石磚半磚", + "block.create.small_ochrum_brick_stairs": "小赭金石磚階梯", + "block.create.small_ochrum_brick_wall": "小赭金石磚牆", + "block.create.small_ochrum_bricks": "小赭金石磚", + "block.create.small_rose_quartz_tiles": "小玫瑰石英磚瓦", + "block.create.small_scorchia_brick_slab": "小焦熔渣磚半磚", + "block.create.small_scorchia_brick_stairs": "小焦熔渣磚階梯", + "block.create.small_scorchia_brick_wall": "小焦熔渣磚牆", + "block.create.small_scorchia_bricks": "小焦熔渣磚", + "block.create.small_scoria_brick_slab": "小熔渣磚半磚", + "block.create.small_scoria_brick_stairs": "小熔渣磚階梯", + "block.create.small_scoria_brick_wall": "小熔渣磚牆", + "block.create.small_scoria_bricks": "小熔渣磚", + "block.create.small_tuff_brick_slab": "小凝灰岩磚半磚", + "block.create.small_tuff_brick_stairs": "小凝灰岩磚階梯", + "block.create.small_tuff_brick_wall": "小凝灰岩磚牆", + "block.create.small_tuff_bricks": "小凝灰岩磚", + "block.create.small_veridium_brick_slab": "小輝綠岩磚半磚", + "block.create.small_veridium_brick_stairs": "小輝綠岩磚階梯", + "block.create.small_veridium_brick_wall": "小輝綠岩磚牆", + "block.create.small_veridium_bricks": "小輝綠岩磚", + "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.steam_engine": "蒸汽機", + "block.create.steam_whistle": "汽笛", + "block.create.steam_whistle_extension": "汽笛管", "block.create.sticker": "方塊黏著器", "block.create.sticky_mechanical_piston": "黏性機械活塞", "block.create.stockpile_switch": "存量偵測器", - "block.create.stressometer": "動能錶", + "block.create.stressometer": "動力計", "block.create.tiled_glass": "十字玻璃窗", "block.create.tiled_glass_pane": "十字玻璃窗戶片", + "block.create.track": "火車軌道", + "block.create.track_observer": "火車感測器", + "block.create.track_signal": "火車訊號機", + "block.create.track_station": "火車站點", + "block.create.train_door": "火車車門", + "block.create.train_trapdoor": "火車地板門", + "block.create.tuff_pillar": "凝灰岩柱", "block.create.turntable": "轉盤", + "block.create.veridium": "輝綠岩", + "block.create.veridium_pillar": "輝綠岩柱", "block.create.vertical_framed_glass": "豎直邊框玻璃", "block.create.vertical_framed_glass_pane": "豎直邊框玻璃片", "block.create.warped_window": "扭曲蕈木窗戶", "block.create.warped_window_pane": "扭曲蕈木窗戶片", "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化石灰岩", - "block.create.weathered_limestone_bricks": "風化石灰岩磚", - "block.create.weathered_limestone_bricks_slab": "風化石灰岩半磚", - "block.create.weathered_limestone_bricks_stairs": "風化石灰岩樓梯", - "block.create.weathered_limestone_bricks_wall": "風化石灰岩牆", - "block.create.weathered_limestone_cobblestone": "碎風化石灰岩", - "block.create.weathered_limestone_cobblestone_slab": "碎風化石灰岩半磚", - "block.create.weathered_limestone_cobblestone_stairs": "碎風化石灰岩樓梯", - "block.create.weathered_limestone_cobblestone_wall": "碎風化石灰岩牆", - "block.create.weathered_limestone_pillar": "豎紋風化石灰岩", - "block.create.weighted_ejector": "物品彈射器", + "block.create.waxed_copper_shingle_slab": "上蠟的銅屋瓦半磚", + "block.create.waxed_copper_shingle_stairs": "上蠟的銅屋瓦階梯", + "block.create.waxed_copper_shingles": "上蠟的銅屋瓦", + "block.create.waxed_copper_tile_slab": "上蠟的銅磚瓦半磚", + "block.create.waxed_copper_tile_stairs": "上蠟的銅磚瓦階梯", + "block.create.waxed_copper_tiles": "上蠟的銅磚瓦", + "block.create.waxed_exposed_copper_shingle_slab": "上蠟的斑駁銅屋瓦半磚", + "block.create.waxed_exposed_copper_shingle_stairs": "上蠟的斑駁銅屋瓦階梯", + "block.create.waxed_exposed_copper_shingles": "上蠟的斑駁銅屋瓦", + "block.create.waxed_exposed_copper_tile_slab": "上蠟的斑駁銅磚瓦半磚", + "block.create.waxed_exposed_copper_tile_stairs": "上蠟的斑駁銅磚瓦階梯", + "block.create.waxed_exposed_copper_tiles": "上蠟的斑駁銅磚瓦", + "block.create.waxed_oxidized_copper_shingle_slab": "上蠟的氧化銅屋瓦半磚", + "block.create.waxed_oxidized_copper_shingle_stairs": "上蠟的氧化銅屋瓦階梯", + "block.create.waxed_oxidized_copper_shingles": "上蠟的氧化銅屋瓦", + "block.create.waxed_oxidized_copper_tile_slab": "上蠟的氧化銅磚瓦半磚", + "block.create.waxed_oxidized_copper_tile_stairs": "上蠟的氧化銅磚瓦階梯", + "block.create.waxed_oxidized_copper_tiles": "上蠟的氧化銅磚瓦", + "block.create.waxed_weathered_copper_shingle_slab": "上蠟的風化銅屋瓦半磚", + "block.create.waxed_weathered_copper_shingle_stairs": "上蠟的風化銅屋瓦階梯", + "block.create.waxed_weathered_copper_shingles": "上蠟的風化銅屋瓦", + "block.create.waxed_weathered_copper_tile_slab": "上蠟的風化銅磚瓦半磚", + "block.create.waxed_weathered_copper_tile_stairs": "上蠟的風化銅磚瓦階梯", + "block.create.waxed_weathered_copper_tiles": "上蠟的風化銅磚瓦", + "block.create.weathered_copper_shingle_slab": "風化的銅屋瓦半磚", + "block.create.weathered_copper_shingle_stairs": "風化的銅屋瓦階梯", + "block.create.weathered_copper_shingles": "風化的銅屋瓦", + "block.create.weathered_copper_tile_slab": "風化的銅磚瓦半磚", + "block.create.weathered_copper_tile_stairs": "風化的銅磚瓦階梯", + "block.create.weathered_copper_tiles": "風化的銅磚瓦", + "block.create.weighted_ejector": "彈射置物台", "block.create.white_nixie_tube": "白色真空管", "block.create.white_sail": "白色風帆", "block.create.white_seat": "白色坐墊", + "block.create.white_toolbox": "白色工具箱", "block.create.white_valve_handle": "白色閥門開關", "block.create.windmill_bearing": "風車軸承", "block.create.wooden_bracket": "木製支架", "block.create.yellow_nixie_tube": "黃色真空管", "block.create.yellow_sail": "黃色風帆", "block.create.yellow_seat": "黃色坐墊", + "block.create.yellow_toolbox": "黃色工具箱", "block.create.yellow_valve_handle": "黃色閥門開關", - "block.create.zinc_block": "鋅磚", + "block.create.zinc_block": "鋅方塊", "block.create.zinc_ore": "鋅礦石", "enchantment.create.capacity": "容量", - "enchantment.create.potato_recovery": "馬鈴薯恢復", + "enchantment.create.potato_recovery": "回收馬鈴薯", + "entity.create.carriage_contraption": "運輸結構", "entity.create.contraption": "結構", "entity.create.crafting_blueprint": "合成藍圖", - "entity.create.gantry_contraption": "門式結構", + "entity.create.gantry_contraption": "橋式結構", "entity.create.potato_projectile": "馬鈴薯彈藥", "entity.create.seat": "坐墊", "entity.create.stationary_contraption": "固定結構", "entity.create.super_glue": "強力膠", - "fluid.create.milk": "牛奶", "fluid.create.potion": "藥水", "fluid.create.tea": "茶", @@ -456,20 +589,20 @@ "item.create.brass_ingot": "黃銅錠", "item.create.brass_nugget": "黃銅粒", "item.create.brass_sheet": "黃銅板", - "item.create.builders_tea": "工人茶", + "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_backtank": "銅製後背包", - "item.create.copper_ingot": "銅錠", + "item.create.copper_backtank_placeable": "可放置的銅製後背包", "item.create.copper_nugget": "銅粒", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "合成器蓋板", "item.create.crafting_blueprint": "合成藍圖", + "item.create.creative_blaze_cake": "創造熔岩蛋糕", "item.create.crushed_aluminum_ore": "碎狀鋁礦石", - "item.create.crushed_brass": "碎狀黃銅", "item.create.crushed_copper_ore": "碎狀銅礦石", "item.create.crushed_gold_ore": "碎狀金礦石", "item.create.crushed_iron_ore": "碎狀鐵礦石", @@ -488,36 +621,40 @@ "item.create.electron_tube": "真空管", "item.create.empty_blaze_burner": "空的烈焰使者動力爐", "item.create.empty_schematic": "空白藍圖", + "item.create.experience_nugget": "經驗金塊", "item.create.extendo_grip": "伸縮機械手", "item.create.filter": "過濾器", "item.create.furnace_minecart_contraption": "裝配過的機械礦車", - "item.create.goggles": "MR護目鏡", + "item.create.goggles": "工程師護目鏡", "item.create.golden_sheet": "金板", "item.create.handheld_worldshaper": "地形雕塑器", "item.create.honey_bucket": "蜂蜜桶", "item.create.honeyed_apple": "蜂蜜蘋果", - "item.create.incomplete_cogwheel": "未完成的小齒輪", - "item.create.incomplete_large_cogwheel": "未完成的大齒輪", - "item.create.incomplete_precision_mechanism": "未完成的精確控制器", + "item.create.incomplete_precision_mechanism": "未完成的精密機構", + "item.create.incomplete_track": "未完成的軌道", "item.create.iron_sheet": "鐵板", "item.create.linked_controller": "遙控器", "item.create.minecart_contraption": "裝修過的礦車", "item.create.minecart_coupling": "礦車連結器", - "item.create.polished_rose_quartz": "磨製玫瑰石英", + "item.create.polished_rose_quartz": "拋光玫瑰石英", "item.create.potato_cannon": "馬鈴薯大砲", "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.precision_mechanism": " 精確控制器", + "item.create.precision_mechanism": "精密機構", "item.create.propeller": "扇葉", + "item.create.raw_zinc": "鋅原礦", "item.create.red_sand_paper": "紅砂紙", "item.create.refined_radiance": "光輝石", "item.create.rose_quartz": "玫瑰石英", "item.create.sand_paper": "砂紙", + "item.create.schedule": "火車時刻表", "item.create.schematic": "藍圖", "item.create.schematic_and_quill": "藍圖與筆", "item.create.shadow_steel": "暗影鋼", + "item.create.sturdy_sheet": "高強度板", "item.create.super_glue": "強力膠", - "item.create.sweet_roll": "甜捲捲", + "item.create.sweet_roll": "蛋糕捲", "item.create.tree_fertilizer": "樹木肥料", + "item.create.unprocessed_obsidian_sheet": "未加工的黑曜石板", "item.create.vertical_gearbox": "豎直齒輪箱", "item.create.wand_of_symmetry": "對稱杖", "item.create.wheat_flour": "小麥粉", @@ -529,162 +666,194 @@ "_": "->------------------------] Advancements [------------------------<-", - "advancement.create.root": "感謝你安裝機械動力模組,強烈建議您安裝JEI配合本模組遊玩", - "advancement.create.root.desc": "該來製作一些超棒的機械結構了!", - "advancement.create.andesite_alloy": "原始人類的合金替代品", - "advancement.create.andesite_alloy.desc": "機械動力有著許多的材料和合金,但受限於技術,原始的人類們暫時只能製作出安山合金", - "advancement.create.its_alive": "鮮活的機械生命", - "advancement.create.its_alive.desc": "首次使齒輪結構的旋轉。", - "advancement.create.shifting_gears": "換檔,加速,起飛!", - "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,機械結構的轉速將會翻倍", - "advancement.create.overstressed": "過載", - "advancement.create.overstressed.desc": "首次使動能網路過載。", - "advancement.create.belt": "流水線作業", - "advancement.create.belt.desc": "用輸送帶連接兩個傳動軸", - "advancement.create.tunnel": "尋找掩護!", - "advancement.create.tunnel.desc": "在輸送帶上放上物品隧道。", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黃銅物品隧道設計一個分流器。", - "advancement.create.chute": "轟然倒塌", - "advancement.create.chute.desc": "放置一個滑道(垂直版本的輸送帶)。", - "advancement.create.upward_chute": "空中攔截", - "advancement.create.upward_chute.desc": "目睹拋出的物品飛入裝有風扇的滑道。", - "advancement.create.belt_funnel": "漏斗的垂簾", - "advancement.create.belt_funnel.desc": "將側向漏斗放在輸送帶或置物臺的上方。", - "advancement.create.belt_funnel_kiss": "比翼雙飛", - "advancement.create.belt_funnel_kiss.desc": "使兩個安裝在輸送帶上的漏斗相連。", - "advancement.create.fan": "機械氣槍", - "advancement.create.fan.desc": "飄浮在鼓風機吹出的氣流上", - "advancement.create.fan_lava": "空間加熱器", - "advancement.create.fan_lava.desc": "感受熔煉物品的氣流。", - "advancement.create.fan_water": "奇怪的洗滌", - "advancement.create.fan_water.desc": "被洗滌的氣流所吸引。", - "advancement.create.fan_smoke": "機械波紋管", - "advancement.create.fan_smoke.desc": "感受煙燻氣流。", - "advancement.create.wrench": "細部調整", - "advancement.create.wrench.desc": "做出一個方便調整方塊的板手", - "advancement.create.goggles": "動能,一目了然", - "advancement.create.goggles.desc": "做出一個能看到機械動能訊息的MR護目鏡", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一個速度計,並且戴上MR護目鏡來讀取數據", - "advancement.create.stressometer": "精密的動能控制", - "advancement.create.stressometer.desc": "放置一個動能錶,並且戴上MR護目鏡來讀取數據", - "advancement.create.aesthetics": "繁榮與美學!", - "advancement.create.aesthetics.desc": "將支架放在傳動軸,管道和齒輪上。", - "advancement.create.reinforced": "超級加固!", - "advancement.create.reinforced.desc": "在傳動軸,管道和輸送帶上使用機殼加固。", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一個水車並讓它開始旋轉", - "advancement.create.chocolate_wheel": "美味的動能源", - "advancement.create.chocolate_wheel.desc": "用融化的巧克力驅動水車。", - "advancement.create.lava_wheel": "風火輪", - "advancement.create.lava_wheel.desc": "它不應該有用的..。", - "advancement.create.cuckoo": "是時候了?", - "advancement.create.cuckoo.desc": "目睹布穀鳥鐘報就寢時間。", - "advancement.create.millstone": "攜帶式粉碎機", - "advancement.create.millstone.desc": "放置一個石磨並且為其供能", - "advancement.create.windmill": "微風拂過", - "advancement.create.windmill.desc": "組裝風車。", - "advancement.create.maxed_windmill": "強風襲來", - "advancement.create.maxed_windmill.desc": "組裝最大動能的風車。", + "advancement.create.root": "歡迎來到機械動力的世界", + "advancement.create.root.desc": "是製造機械的時候了", + "advancement.create.andesite_alloy": "更堅硬的岩石", + "advancement.create.andesite_alloy.desc": "獲得安山合金,機械動力最重要的資源", "advancement.create.andesite_casing": "安山時代", - "advancement.create.andesite_casing.desc": "使用安山合金和木頭來合成一個安山機殼", - "advancement.create.mechanical_drill": "堅若磐石", - "advancement.create.mechanical_drill.desc": "放置一個機械鑽頭並且為其供能", - "advancement.create.press": "'噹!'", - "advancement.create.press.desc": "使用液壓機來壓製一些板子", - "advancement.create.polished_rose_quartz": "粉紅鑽石", - "advancement.create.polished_rose_quartz.desc": "用砂紙將玫瑰石英磨至透明", - "advancement.create.electron_tube": "嗶~~嗶~~", - "advancement.create.electron_tube.desc": "製作一個可用來合成高級機器的真空管", - "advancement.create.mechanical_saw": "一刀兩斷", - "advancement.create.mechanical_saw.desc": "放置一個切割機並且為其供能", - "advancement.create.basin": "快到碗裡來", - "advancement.create.basin.desc": "放置一個作業盆,並且往裡面放些東西", - "advancement.create.mixer": "充分攪拌", - "advancement.create.mixer.desc": "將攪拌機放在作業盆上方,並且使其攪拌盆內的物品", - "advancement.create.blaze_burner": "活生生的壁爐", - "advancement.create.blaze_burner.desc": "獲得一個烈焰使者動力爐。", - "advancement.create.compact": "快樂壓縮", - "advancement.create.compact.desc": "使用液壓機在作業盆中壓製一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎鋅礦石和粉碎銅礦石來製作粉碎黃銅", - "advancement.create.brass_casing": "黃銅時代", - "advancement.create.brass_casing.desc": "用黃銅和木頭製作一個黃銅機殼", + "advancement.create.andesite_casing.desc": "結合安山合金和木頭,製作機械的基本外殼", + "advancement.create.mechanical_press": "Bonk", + "advancement.create.mechanical_press.desc": "以機械鍛壓機鍛造板金", + "advancement.create.encased_fan": "吹風機", + "advancement.create.encased_fan.desc": "啟動鼓風機", + "advancement.create.fan_processing": "粒子技術", + "advancement.create.fan_processing.desc": "以鼓風機進行材料加工", + "advancement.create.saw_processing": "作坊中最深的恐懼", + "advancement.create.saw_processing.desc": "以面向上的機械圓鋸機進行材料加工", + "advancement.create.compacting": "緊緻的", + "advancement.create.compacting.desc": "以機械鍛壓機與作業盆將多個物品壓縮在一塊", + "advancement.create.belt": "流水線作業", + "advancement.create.belt.desc": "將輸送帶連接兩個傳動軸", + "advancement.create.funnel": "航站美學", + "advancement.create.funnel.desc": "透過漏斗,自容器中輸入或輸出物品", + "advancement.create.chute": "垂直物流", + "advancement.create.chute.desc": "透過滑槽運輸物品", + "advancement.create.mechanical_mixer": "混和攪拌", + "advancement.create.mechanical_mixer.desc": "以機械攪拌器混和材料", + "advancement.create.burner": "活生生的壁爐", + "advancement.create.burner.desc": "獲得烈焰使者動力爐", + "advancement.create.water_wheel": "水力學", + "advancement.create.water_wheel.desc": "放置水車並讓它開始旋轉", + "advancement.create.windmill": "微風拂過", + "advancement.create.windmill.desc": "組裝風車以產生扭矩", + "advancement.create.shifting_gears": "換檔", + "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,改變轉軸的速度", + "advancement.create.millstone": "石磨轉起", + "advancement.create.millstone.desc": "使用石磨研磨材料", + "advancement.create.super_glue": "將空間黏合", + "advancement.create.super_glue.desc": "用強力膠將多個方塊黏成一團", + "advancement.create.contraption_actors": "奉命出行", + "advancement.create.contraption_actors.desc": "製造帶有機械鑽頭、機械圓鋸機或機械收割機的移動裝置", + "advancement.create.portable_storage_interface": "得來速", + "advancement.create.portable_storage_interface.desc": "透過移動式物品口,自移動裝置中輸入或輸出物品", + "advancement.create.wrench_goggles": "裝備齊全", + "advancement.create.wrench_goggles.desc": "同時裝備工程師護目鏡及扳手", + "advancement.create.stressometer": "精密的動能控制", + "advancement.create.stressometer.desc": "透過工程師護目鏡和動力計讀取精確數值", + "advancement.create.cuckoo_clock": "到時間了嗎?", + "advancement.create.cuckoo_clock.desc": "目睹布穀鳥鐘提醒你睡覺", + "advancement.create.windmill_maxed": "強烈風暴", + "advancement.create.windmill_maxed.desc": "組裝出最高強度的風車", + "advancement.create.ejector_maxed": "跳板冠軍", + "advancement.create.ejector_maxed.desc": "被彈射置物台扔到 30 格以外", + "advancement.create.pulley_maxed": "深入虛空", + "advancement.create.pulley_maxed.desc": "用滑輪繩索延伸超過 200 格", + "advancement.create.cart_pickup": "壯碩的胳膊", + "advancement.create.cart_pickup.desc": "撿起至少含有 200 個方塊的礦車結構", + "advancement.create.anvil_plough": "鍛工的重砲", + "advancement.create.anvil_plough.desc": "用機械犁發射鐵砧", + "advancement.create.lava_wheel_00000": "風火輪", + "advancement.create.lava_wheel_00000.desc": "這不該奏效§7\n(隱藏成就)", + "advancement.create.hand_crank_000": "健身課程", + "advancement.create.hand_crank_000.desc": "轉動手搖把手直到挨餓§7\n(隱藏成就)", + "advancement.create.belt_funnel_kiss": "比翼雙飛", + "advancement.create.belt_funnel_kiss.desc": "使安裝在輸送帶上的兩個漏斗相吻§7\n(隱藏成就)", + "advancement.create.stressometer_maxed": "完美的負荷", + "advancement.create.stressometer_maxed.desc": "在動力計目睹負荷滿載§7\n(隱藏成就)", + "advancement.create.copper": "更加堅硬的岩石", + "advancement.create.copper.desc": "為開發流體控制技術積攢一些銅", "advancement.create.copper_casing": "銅時代", - "advancement.create.copper_casing.desc": "使用銅和木頭製作一個銅製機殼", - "advancement.create.spout": "裝填!", - "advancement.create.spout.desc": "觀察注液器灌滿物品。", - "advancement.create.spout_potion": "國際級啤酒大廠", - "advancement.create.spout_potion.desc": "觀察注液器注入藥水到玻璃瓶。", - "advancement.create.chocolate": "夢裡的世界", - "advancement.create.chocolate.desc": "獲取一桶熔融巧克力。", - "advancement.create.item_drain": "滾筒洗衣機", - "advancement.create.item_drain.desc": "觀察液體物品被分液池抽空。", - "advancement.create.chained_item_drain": "讓我們一起搖滾!", - "advancement.create.chained_item_drain.desc": "看著物品穿過多個分液池。", - "advancement.create.glass_pipe": "偷窺液體", - "advancement.create.glass_pipe.desc": "透過窗戶觀察液體在管道中流動。使用板手可打開直線液體管道的窗戶。", - "advancement.create.pipe_collision": "永不交會的溪流!", - "advancement.create.pipe_collision.desc": "觀察兩種液體在您的管道中會合", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "觀察管道的末端將液體排放到到外面。", + "advancement.create.copper_casing.desc": "結合銅錠與木頭,為您的機械打造防水外殼", + "advancement.create.spout": "水花四濺", + "advancement.create.spout.desc": "看著流體灌注器注滿容器", + "advancement.create.drain": "細水慢流", + "advancement.create.drain.desc": "看著容器被分液池排空", + "advancement.create.steam_engine": "發電站", + "advancement.create.steam_engine.desc": "以蒸汽機產生動力", + "advancement.create.steam_whistle": "天籟之音", + "advancement.create.steam_whistle.desc": "鳴笛", + "advancement.create.backtank": "蓄勢待發", + "advancement.create.backtank.desc": "製造銅製後背包並加壓", + "advancement.create.diving_suit": "深潛準備", + "advancement.create.diving_suit.desc": "裝備潛水頭盔和銅製後背包,跳入水中", + "advancement.create.mechanical_pump_0": "施壓", + "advancement.create.mechanical_pump_0.desc": "驅動機械幫浦", + "advancement.create.glass_pipe": "窺視波流", + "advancement.create.glass_pipe.desc": "在液體流過的管道上使用扳手", + "advancement.create.water_supply": "取自水窪", + "advancement.create.water_supply.desc": "使用機械幫浦或軟管滑輪抽水", "advancement.create.hose_pulley": "工業排放", - "advancement.create.hose_pulley.desc": "放下一個軟管滑輪,觀察它排乾或充滿液體。", - "advancement.create.infinite_water": "抽取海洋", - "advancement.create.infinite_water.desc": "從足以被認為是無限的水源中抽水。", - "advancement.create.infinite_lava": "吸取行星的核心", - "advancement.create.infinite_lava.desc": "從廣闊的岩漿湖中抽出岩漿。", - "advancement.create.infinite_chocolate": "淹沒在幻想中", - "advancement.create.infinite_chocolate.desc": "從廣闊的巧克力海中抽出巧克力。", - "advancement.create.crafter": "自動化流水作業", - "advancement.create.crafter.desc": "放置一些機械合成臺並且為其供能", + "advancement.create.hose_pulley.desc": "放下軟管滑輪,觀察它排出或抽取流體", + "advancement.create.chocolate_bucket": "幻想世界", + "advancement.create.chocolate_bucket.desc": "獲得一桶融化的巧克力", + "advancement.create.honey_drain": "自動養蜂場", + "advancement.create.honey_drain.desc": "使用流體管道從蜂巢或蜂屋中抽取蜂蜜", + "advancement.create.hose_pulley_lava": "迫近地函", + "advancement.create.hose_pulley_lava.desc": "從可被認定為無限容量的熔岩體抽出岩漿", + "advancement.create.steam_engine_maxed": "蒸氣充沛", + "advancement.create.steam_engine_maxed.desc": "以最大功率運行鍋爐", + "advancement.create.foods": "均衡飲食", + "advancement.create.foods.desc": "自同一個流體灌注器生產巧克力甜莓、蜂蜜蘋果和蛋糕捲", + "advancement.create.diving_suit_lava": "與熾足獸游泳", + "advancement.create.diving_suit_lava.desc": "嘗試使用您的銅製潛水裝備在熔岩中潛水§7\n(隱藏成就)", + "advancement.create.chained_drain": "走運了", + "advancement.create.chained_drain.desc": "看著物品滾過一整排分液池§7\n(隱藏成就)", + "advancement.create.cross_streams": "別混流", + "advancement.create.cross_streams.desc": "目睹兩種液體在管道中相遇§7\n(隱藏成就)", + "advancement.create.pipe_organ": "管風琴", + "advancement.create.pipe_organ.desc": "在一個流體儲存罐上裝設 12 個不同音高的汽笛§7\n(隱藏成就)", + "advancement.create.brass": "真正的合金", + "advancement.create.brass.desc": "以烈焰使者動力爐加熱機械攪拌器,加入銅錠和鋅錠以製作黃銅", + "advancement.create.brass_casing": "黃銅時代", + "advancement.create.brass_casing.desc": "結合黃銅錠與木頭,為更複雜的機器製造外殼", + "advancement.create.rose_quartz": "粉色鑽石", + "advancement.create.rose_quartz.desc": "將玫瑰石英拋光", + "advancement.create.deployer": "人工智慧", + "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手的完美複製品", + "advancement.create.precision_mechanism": "關鍵工藝", + "advancement.create.precision_mechanism.desc": "組裝一個精密機構", + "advancement.create.speed_controller": "工程師的惡夢", + "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置", + "advancement.create.mechanical_arm": "忙碌的雙手", + "advancement.create.mechanical_arm.desc": "看著機械臂完成你所交代的任務", + "advancement.create.mechanical_crafter": "自動化產線", + "advancement.create.mechanical_crafter.desc": "為機械合成器提供動力", + "advancement.create.crushing_wheel": "一對巨匠", + "advancement.create.crushing_wheel.desc": "為一對粉碎輪提供動力", + "advancement.create.haunted_bell": "鬼影幢幢", + "advancement.create.haunted_bell.desc": "敲響靈魂鐘", "advancement.create.clockwork_bearing": "時差", - "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構。", - "advancement.create.nixie_tube": "風格的跡象", - "advancement.create.nixie_tube.desc": "獲得真空管顯示器並放置。", - "advancement.create.deployer": "指爽沒?", - "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手完美的複製品", - "advancement.create.speed_controller": "攻城屍討厭他!", - "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置。", - "advancement.create.flywheel": "工廠之心", - "advancement.create.flywheel.desc": "將引擎成功連接到飛輪。", - "advancement.create.overstress_flywheel": "壓力過大", - "advancement.create.overstress_flywheel.desc": "超載熔爐引擎。", - "advancement.create.precision_mechanism": "複雜的好奇心", - "advancement.create.precision_mechanism.desc": "組裝一個精確控制器", - "advancement.create.mechanical_arm": "忙碌的手!", - "advancement.create.mechanical_arm.desc": "製作機械手臂,選擇輸入和輸出,放置並給它動能; 然後看著它完成所有你交代的工作。", - "advancement.create.musical_arm": "沒人能在我的BGM裡打敗我!", - "advancement.create.musical_arm.desc": "使用機械手臂播放唱片。", - "advancement.create.arm_many_targets": "你是要累死我?", - "advancement.create.arm_many_targets.desc": "配置一隻有十個或更多輸出位置的機械手臂。", - "advancement.create.arm_blaze_burner": "燃燒吧!烈焰使者!", - "advancement.create.arm_blaze_burner.desc": "指揮機械手臂給烈焰使者動力爐投食。", - "advancement.create.fist_bump": "朋友,來擊拳", - "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳", - "advancement.create.crushing_wheel": "一對大傢伙", - "advancement.create.crushing_wheel.desc": "製作一對能更快粉碎物品的粉碎輪", - "advancement.create.blaze_cake": "糖份超標", - "advancement.create.blaze_cake.desc": "幫烈焰使者動力爐烤一份特別的蛋糕。", - "advancement.create.chromatic_compound": "兩極材料", - "advancement.create.chromatic_compound.desc": "製作一個異彩化合物", - "advancement.create.shadow_steel": "自虛空的歸來的寶石", - "advancement.create.shadow_steel.desc": "製作暗影鋼", - "advancement.create.refined_radiance": "閃耀著純白的聖光", - "advancement.create.refined_radiance.desc": "製作光輝石", - "advancement.create.chromatic_age": "繽紛時代", - "advancement.create.chromatic_age.desc": "創造出光與影的機殼。", - "advancement.create.wand_of_symmetry": "簡單的鏡面幾何學", - "advancement.create.wand_of_symmetry.desc": "製作一個對稱杖", - "advancement.create.extendo_grip": "piu piu piu!", - "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", + "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構", + "advancement.create.display_link": "大數據", + "advancement.create.display_link.desc": "使用顯示鏈路可視化訊息", "advancement.create.potato_cannon": "噗~碰", "advancement.create.potato_cannon.desc": "用馬鈴薯大砲擊殺一隻怪物", - "advancement.create.dual_extendo_grip": "piu——piu——piu——", - "advancement.create.dual_extendo_grip.desc": "雙持伸縮機械手進一步加長觸碰距離", - "advancement.create.eob": "Beta版結束", - "advancement.create.eob.desc": "期待日後的更新。", + "advancement.create.extendo_grip": "彈性極佳", + "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", + "advancement.create.linked_controller": "遠端遙控", + "advancement.create.linked_controller.desc": "以遙控器開啟無線紅石鏈路", + "advancement.create.arm_blaze_burner": "補給燃料", + "advancement.create.arm_blaze_burner.desc": "吩咐機械臂餵食你的烈焰使者", + "advancement.create.crusher_maxed_0000": "粉碎一切", + "advancement.create.crusher_maxed_0000.desc": "讓一對粉碎輪以極速運作", + "advancement.create.arm_many_targets": "手忙手亂", + "advancement.create.arm_many_targets.desc": "讓機械臂擁有十個或更多的輸出位置", + "advancement.create.potato_cannon_collide": "蔬果花火", + "advancement.create.potato_cannon_collide.desc": "使兩座馬鈴薯大砲的砲彈相互碰撞", + "advancement.create.self_deploying": "自動駕駛", + "advancement.create.self_deploying.desc": "讓一個礦車結構為自己鋪設鐵軌", + "advancement.create.fist_bump": "朋友,擊拳吧", + "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳§7\n(隱藏成就)", + "advancement.create.crafter_lazy_000": "鋌而走險", + "advancement.create.crafter_lazy_000.desc": "使機械合成器大幅減速,適當的延遲基礎建設§7\n(隱藏成就)", + "advancement.create.extendo_grip_dual": "面面俱到", + "advancement.create.extendo_grip_dual.desc": "使用兩支伸縮機械手,以達到超人般的接觸距離§7\n(隱藏成就)", + "advancement.create.musical_arm": "DJ:機械師", + "advancement.create.musical_arm.desc": "目睹機械臂跳舞§7\n(隱藏成就)", + "advancement.create.sturdy_sheet": "堅不可摧", + "advancement.create.sturdy_sheet.desc": "以黑曜石粉末打造高強度板", + "advancement.create.train_casing_00": "物流時代", + "advancement.create.train_casing_00.desc": "以高強度板製作火車部件的機殼", + "advancement.create.train": "盡速上車", + "advancement.create.train.desc": "組裝你的第一列火車", + "advancement.create.conductor": "命令司機員", + "advancement.create.conductor.desc": "透過火車時刻表給予司機員指示", + "advancement.create.track_signal": "交通管制", + "advancement.create.track_signal.desc": "設置火車訊號機", + "advancement.create.display_board_0": "動態時刻表", + "advancement.create.display_board_0.desc": "在顯示鏈路的幫助下,透過顯示板預測火車的抵達時間", + "advancement.create.track_0": "新軌距", + "advancement.create.track_0.desc": "獲得一些火車軌道", + "advancement.create.train_whistle": "Choo Choo", + "advancement.create.train_whistle.desc": "將汽笛裝到火車上並在行駛時觸發", + "advancement.create.train_portal": "次元旅行者", + "advancement.create.train_portal.desc": "駕駛火車通過地獄門", + "advancement.create.track_crafting_factory": "軌道工廠", + "advancement.create.track_crafting_factory.desc": "在一台機械鍛壓機中製造超過 1000 條軌道", + "advancement.create.long_bend": "無際彎道", + "advancement.create.long_bend.desc": "鋪設長度超過 30 格的曲線軌道", + "advancement.create.long_train": "雄心勃勃", + "advancement.create.long_train.desc": "建造一列至少有六節車廂的火車", + "advancement.create.long_travel": "遠足", + "advancement.create.long_travel.desc": "從距離旅行起始點超過 5000 格的火車座位起身", + "advancement.create.train_roadkill": "路殺", + "advancement.create.train_roadkill.desc": "用火車輾死敵人§7\n(隱藏成就)", + "advancement.create.red_signal": "合格司機員", + "advancement.create.red_signal.desc": "駛過紅色訊號§7\n(隱藏成就)", + "advancement.create.train_crash": "服務爛透了", + "advancement.create.train_crash.desc": "乘車時目睹火車事故§7\n(隱藏成就)", + "advancement.create.train_crash_backwards": "盲點", + "advancement.create.train_crash_backwards.desc": "倒車時撞上另一列火車§7\n(隱藏成就)", "_": "->------------------------] UI & Messages [------------------------<-", @@ -692,28 +861,29 @@ "itemGroup.create.base": "動力機械", "itemGroup.create.palettes": "動力機械建築與裝飾方塊", - "death.attack.create.crush": "%1$s被壓扁了", + "death.attack.create.crush": "%1$s 被壓扁了", "death.attack.create.crush.player": "%1$s 被 %2$s 打包丟進粉碎輪", - "death.attack.create.fan_fire": "%1$s想接受熱風的洗禮", + "death.attack.create.fan_fire": "%1$s 想接受熱風的洗禮", "death.attack.create.fan_fire.player": "%1$s 被 %2$s 推入火坑", - "death.attack.create.fan_lava": "%1$s想接受熱風的洗禮但走火入魔", + "death.attack.create.fan_lava": "%1$s 想接受熱風的洗禮但走火入魔", "death.attack.create.fan_lava.player": "%1$s 被 %2$s 推進岩漿", - "death.attack.create.mechanical_drill": "%1$s被鑽頭鑽爆腦袋", + "death.attack.create.mechanical_drill": "%1$s 被鑽頭鑽爆腦袋", "death.attack.create.mechanical_drill.player": "%1$s 被 %2$s 當成礦物放在鑽頭前面而死", - "death.attack.create.mechanical_saw": "%1$s被鋸切成了兩半", + "death.attack.create.mechanical_saw": "%1$s 被鋸切成了兩半", "death.attack.create.mechanical_saw.player": "%1$s 被 %2$s 鋸掉了", "death.attack.create.potato_cannon": "%1$s 被 %2$s 的馬鈴薯大砲餵飽了", "death.attack.create.potato_cannon.item": "%1$s 被 %2$s 用馬鈴薯大砲塞了滿肚子 %3$s", "death.attack.create.cuckoo_clock_explosion": "%1$s 被布穀鳥鐘炸得粉身碎骨", "death.attack.create.cuckoo_clock_explosion.player": "%1$s 被布穀鳥鐘炸得粉身碎骨", + "death.attack.create.run_over": "%1$s 被 %2$s 輾過", "create.block.deployer.damage_source_name": "機械手", - "create.block.cart_assembler.invalid": "將您的礦車裝修站放在鐵軌上", + "create.block.cart_assembler.invalid": "將你的礦車裝修站放在鐵軌上", "create.menu.return": "回到選單", "create.menu.configure": "設定", "create.menu.ponder_index": "示範目錄", - "create.menu.project_page": "專案頁面", + "create.menu.only_ingame": "僅適用於暫停選單", "create.menu.report_bugs": "回報問題", "create.menu.support": "支持我們", @@ -723,35 +893,42 @@ "create.recipe.fan_washing.fan": "在水後放置鼓風機", "create.recipe.fan_smoking": "批次煙燻", "create.recipe.fan_smoking.fan": "在火焰後放置鼓風機", + "create.recipe.fan_haunting": "批次喚魂", + "create.recipe.fan_haunting.fan": "在靈魂火後放置鼓風機", "create.recipe.fan_blasting": "批次融煉", "create.recipe.fan_blasting.fan": "在熔岩後放置鼓風機", - "create.recipe.pressing": "金屬壓片", + "create.recipe.pressing": "金屬鍛造", "create.recipe.mixing": "混合攪拌", + "create.recipe.deploying": "使用", "create.recipe.automatic_shapeless": "自動攪拌", "create.recipe.automatic_brewing": "自動釀造", - "create.recipe.packing": "壓塊塑形", - "create.recipe.automatic_packing": "自動打包", - "create.recipe.sawing": "板材切割", - "create.recipe.mechanical_crafting": "自動合成", - "create.recipe.automatic_shaped": "自動合成", - "create.recipe.block_cutting": "方塊切割", - "create.recipe.wood_cutting": "木材切割", + "create.recipe.packing": "壓塑", + "create.recipe.automatic_packing": "自動壓塑", + "create.recipe.sawing": "切割", + "create.recipe.mechanical_crafting": "機械製造", + "create.recipe.automatic_shaped": "自動成型", + "create.recipe.block_cutting": "切割方塊", + "create.recipe.wood_cutting": "切割木材", "create.recipe.sandpaper_polishing": "砂紙打磨", - "create.recipe.mystery_conversion": "神秘轉化", - "create.recipe.spout_filling": "注液", + "create.recipe.mystery_conversion": "奧秘", + "create.recipe.spout_filling": "灌注", "create.recipe.draining": "分液", - "create.recipe.sequenced_assembly": "排序中的步驟", + "create.recipe.item_application": "手動使用物品", + "create.recipe.item_application.any_axe": "任意的斧", + "create.recipe.sequenced_assembly": "步驟", "create.recipe.assembly.next": "下一步:%1$s", - "create.recipe.assembly.step": "步驟 %1$s:", + "create.recipe.assembly.step": "步驟 %1$s", "create.recipe.assembly.progress": "進度:%1$s/%2$s", - "create.recipe.assembly.spout_filling_fluid": "注入:%1$s", - "create.recipe.assembly.deploying_item": "使用:%1$s", + "create.recipe.assembly.pressing": "鍛造過程", + "create.recipe.assembly.spout_filling_fluid": "注入 %1$s", + "create.recipe.assembly.deploying_item": "使用 %1$s", "create.recipe.assembly.cutting": "用鋸子切", "create.recipe.assembly.repeat": "重複 %1$s 次", "create.recipe.assembly.junk": "有機率得到垃圾", - "create.recipe.processing.chance": "%1$s%%概率", + "create.recipe.processing.chance": "%1$s%% 概率", + "create.recipe.deploying.not_consumed": "不消耗", "create.recipe.heat_requirement.none": "不需要加熱", - "create.recipe.heat_requirement.heated": "普通加熱", + "create.recipe.heat_requirement.heated": "一般加熱", "create.recipe.heat_requirement.superheated": "超級加熱", "create.generic.range": "範圍", @@ -761,15 +938,26 @@ "create.generic.length": "長", "create.generic.speed": "速度", "create.generic.delay": "延時", + "create.generic.duration": "間隔", + "create.generic.timeUnit": "時間單位", "create.generic.unit.ticks": "Ticks", "create.generic.unit.seconds": "秒", "create.generic.unit.minutes": "分", + "create.generic.daytime.hour": "時", + "create.generic.daytime.minute": "分", + "create.generic.daytime.second": "秒", + "create.generic.daytime.pm": "PM", + "create.generic.daytime.am": "AM", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", + "create.generic.unit.millibuckets": "mB", + "create.generic.unit.buckets": "B", "create.generic.clockwise": "順時鐘方向", "create.generic.counter_clockwise": "逆時鐘方向", + "create.generic.in_quotes": "\"%1$s\"", + "create.generic.pitch": "音高:%1$s", + "create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G", "create.action.scroll": "滾輪", "create.action.confirm": "確認", @@ -778,16 +966,24 @@ "create.action.discard": "放棄", "create.keyinfo.toolmenu": "選單", - "create.keyinfo.scrollup": "(遊戲中)向上滑鼠滾輪", - "create.keyinfo.scrolldown": "(遊戲中)向下滑鼠滾輪", + "create.keyinfo.toolbelt": "使用附近的工具箱", + "create.keyinfo.scrollup": "(遊戲中) 向上滑鼠滾輪", + "create.keyinfo.scrolldown": "(遊戲中) 向下滑鼠滾輪", - "create.gui.scrollInput.defaultTitle": "選擇一個選項:", + "create.gui.scrollInput.defaultTitle": "選擇一個選項:", "create.gui.scrollInput.scrollToModify": "滾動修改", "create.gui.scrollInput.scrollToAdjustAmount": "滾動修改數量", "create.gui.scrollInput.scrollToSelect": "滾動選擇", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滾動更快", + "create.gui.scrollInput.shiftScrollsFaster": "按住 Shift 滾動更快", "create.gui.toolmenu.focusKey": "按住 [%1$s] 滑鼠滾輪選擇", "create.gui.toolmenu.cycle": "[SCROLL] 循環", + + "create.toolbox.unequip": "解除: %1$s", + "create.toolbox.outOfRange": "手持的物品不在工具箱的範圍內", + "create.toolbox.detach": "停止追蹤工具箱,並保留物品", + "create.toolbox.depositAll": "歸還物品至附近所有的工具箱", + "create.toolbox.depositBox": "歸還物品至工具箱", + "create.gui.symmetryWand.mirrorType": "鏡子類型", "create.gui.symmetryWand.orientation": "方向", @@ -798,12 +994,13 @@ "create.orientation.orthogonal": "垂直", "create.orientation.diagonal": "對角線", "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z軸對齊", - "create.orientation.alongX": "以x軸對齊", + "create.orientation.alongZ": "以 z軸 對齊", + "create.orientation.alongX": "以 x軸 對齊", "create.gui.terrainzapper.title": "地形雕塑器", "create.gui.terrainzapper.searchDiagonal": "跟隨對角線", "create.gui.terrainzapper.searchFuzzy": "忽略材質邊界", + "create.gui.terrainzapper.patternSection": "樣式", "create.gui.terrainzapper.pattern.solid": "填滿", "create.gui.terrainzapper.pattern.checkered": "棋盤狀", "create.gui.terrainzapper.pattern.inversecheckered": "反轉棋盤狀", @@ -828,7 +1025,7 @@ "create.gui.terrainzapper.tool.overlay": "覆蓋", "create.gui.terrainzapper.tool.flatten": "平整", - "create.terrainzapper.shiftRightClickToSet": "Shift+滑鼠右鍵 以設定雕塑類型", + "create.terrainzapper.shiftRightClickToSet": "Shift + 滑鼠右鍵 以設定雕塑類型", "create.terrainzapper.usingBlock": "使用:%1$s", "create.terrainzapper.leftClickToSet": "左鍵點擊方塊可以設定材質", @@ -857,46 +1054,46 @@ "create.logistics.filter": "過濾器", "create.logistics.recipe_filter": "配方過濾器", - "create.logistics.fluid_filter": "液體過濾器", + "create.logistics.fluid_filter": "流體過濾器", "create.logistics.firstFrequency": "頻道. #1", "create.logistics.secondFrequency": "頻道. #2", - "create.logistics.filter.apply": "將過濾器應用來%1$s。", - "create.logistics.filter.apply_click_again": "將過濾器應用來%1$s,再次點擊以復制數量。", - "create.logistics.filter.apply_count": "使用提取計數過濾。", + "create.logistics.filter.apply": "將過濾器應用來 %1$s", + "create.logistics.filter.apply_click_again": "將過濾器應用來 %1$s,再次點擊以複製數量", + "create.logistics.filter.apply_count": "使用提取計數過濾", - "create.gui.goggles.generator_stats": "產能器狀態:", - "create.gui.goggles.kinetic_stats": "機械狀態:", + "create.gui.goggles.generator_stats": "發動機狀態:", + "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.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": "結構中的方塊數量過多.\nThe 可放置的數量最大為: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\nThe 可放置的數量最大為: %1$s", + "create.gui.assembly.exception.structureTooLarge": "結構中的方塊數量過多\n可放置的數量最大為:%1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\n可放置的數量最大為:%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.assembly.exception.not_enough_sails": "結構中所需的風帆類方塊數量不足:%1$s\n最少需要的數量為:%2$s", + "create.gui.gauge.info_header": "儀表訊息:", "create.gui.speedometer.title": "旋轉速度", - "create.gui.stressometer.title": "網路動能", - "create.gui.stressometer.capacity": "剩餘動能量", + "create.gui.stressometer.title": "網路負荷", + "create.gui.stressometer.capacity": "剩餘能量", "create.gui.stressometer.overstressed": "動能過載", "create.gui.stressometer.no_rotation": "無旋轉", - "create.gui.contraptions.not_fast_enough": "看起來%1$s 沒有達到足夠的工作轉速。", + "create.gui.contraptions.not_fast_enough": "看起來 %1$s 沒有達到足夠的工作轉速", "create.gui.contraptions.network_overstressed": "裝置似乎過載,減少高動能消耗的裝置或者增加更多更多動能", "create.gui.adjustable_crate.title": "板條箱", "create.gui.adjustable_crate.storageSpace": "儲存空間", "create.gui.stockpile_switch.title": "儲存開關", "create.gui.stockpile_switch.invert_signal": "反轉訊號", - "create.gui.stockpile_switch.move_to_lower_at": "移至下線%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "移至上線%1$s%%", + "create.gui.stockpile_switch.move_to_lower_at": "移至下限 %1$s%%", + "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.descriptive": "帶動 活塞/滑輪/門式起重機", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "帶動 活塞/滑輪/橋式起重機", "create.gui.sequenced_gearshift.instruction.turn_distance": "驅動活塞", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", "create.gui.sequenced_gearshift.instruction.delay.descriptive": "延遲時間", @@ -912,23 +1109,23 @@ "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", "create.gui.sequenced_gearshift.speed.back_fast": "兩倍速,反向", - "create.schematicAndQuill.dimensions": "藍圖尺寸:%1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一個位置。", - "create.schematicAndQuill.secondPos": "第二個位置。", - "create.schematicAndQuill.noTarget": "按住Ctrl選擇空氣方塊。", - "create.schematicAndQuill.abort": "刪除選擇。", + "create.schematicAndQuill.dimensions": "藍圖尺寸:%1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "第一個位置", + "create.schematicAndQuill.secondPos": "第二個位置", + "create.schematicAndQuill.noTarget": "按住Ctrl選擇空氣方塊", + "create.schematicAndQuill.abort": "刪除選擇", "create.schematicAndQuill.title": "藍圖名:", "create.schematicAndQuill.convert": "立即存檔並發佈", "create.schematicAndQuill.fallbackName": "我的藍圖", - "create.schematicAndQuill.saved": "另存為%1$s", + "create.schematicAndQuill.saved": "另存為 %1$s", "create.schematic.invalid": "[!] 無效的項目", "create.schematic.position": "位置", "create.schematic.rotation": "旋轉", "create.schematic.rotation.none": "無", - "create.schematic.rotation.cw90": "順時鐘90", - "create.schematic.rotation.cw180": "順時鐘180", - "create.schematic.rotation.cw270": "順時鐘270", + "create.schematic.rotation.cw90": "順時鐘 90", + "create.schematic.rotation.cw180": "順時鐘 180", + "create.schematic.rotation.cw270": "順時鐘 270", "create.schematic.mirror": "鏡像", "create.schematic.mirror.none": "無", "create.schematic.mirror.frontBack": "前後", @@ -939,47 +1136,47 @@ "create.schematic.tool.rotate": "旋轉", "create.schematic.tool.print": "列印", "create.schematic.tool.flip": "翻轉", - "create.schematic.tool.deploy.description.0": "將結構移到某個位置。", - "create.schematic.tool.deploy.description.1": "在地面上點擊滑鼠右鍵以放置。", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距離選擇。", - "create.schematic.tool.deploy.description.3": "按住Ctrl滑鼠滾動更改距離。", + "create.schematic.tool.deploy.description.0": "將結構移到某個位置", + "create.schematic.tool.deploy.description.1": "在地面上點擊滑鼠右鍵以放置", + "create.schematic.tool.deploy.description.2": "按住 Ctrl 以固定距離選擇", + "create.schematic.tool.deploy.description.3": "按住 Ctrl 滑鼠滾動更改距離", "create.schematic.tool.move.description.0": "水平移動藍圖", - "create.schematic.tool.move.description.1": "選定藍圖,然後按住Ctrl滑鼠滾動。", + "create.schematic.tool.move.description.1": "選定藍圖,然後按住 Ctrl 滑鼠滾動", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", "create.schematic.tool.movey.description.0": "垂直移動藍圖", - "create.schematic.tool.movey.description.1": "按住Ctrl滑鼠滾動上下移動", + "create.schematic.tool.movey.description.1": "按住 Ctrl 滑鼠滾動上下移動", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "圍繞藍圖中心旋轉藍圖。", - "create.schematic.tool.rotate.description.1": "按住Ctrl滑鼠滾動旋轉90度", + "create.schematic.tool.rotate.description.0": "圍繞藍圖中心旋轉藍圖", + "create.schematic.tool.rotate.description.1": "按住 Ctrl 滑鼠滾動旋轉 90 度", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "立即將結構放置在世界上", - "create.schematic.tool.print.description.1": "右鍵點擊確認目前位置。", - "create.schematic.tool.print.description.2": "該工具僅能用於創造模式。", + "create.schematic.tool.print.description.1": "右鍵點擊確認目前位置", + "create.schematic.tool.print.description.2": "該工具僅能用於創造模式", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你選擇的面翻轉藍圖。", - "create.schematic.tool.flip.description.1": "指向藍圖,然後按住Ctrl滑鼠滾動將其翻轉。", + "create.schematic.tool.flip.description.0": "沿你選擇的面翻轉藍圖", + "create.schematic.tool.flip.description.1": "指向藍圖,然後按住 Ctrl 滑鼠滾動將其翻轉", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "正在同步..", + "create.schematics.synchronizing": "正在同步…", "create.schematics.uploadTooLarge": "你的藍圖太大", - "create.schematics.maxAllowedSize": "允許的最大藍圖文件大小為:", + "create.schematics.maxAllowedSize": "允許的最大藍圖文件大小為:", "create.gui.schematicTable.refresh": "重新整理文件", "create.gui.schematicTable.open_folder": "打開資料夾", "create.gui.schematicTable.title": "藍圖桌", "create.gui.schematicTable.availableSchematics": "可用藍圖", "create.gui.schematicTable.noSchematics": "沒有存檔的藍圖", - "create.gui.schematicTable.uploading": "正在上傳...", - "create.gui.schematicTable.finished": "上傳完成!", + "create.gui.schematicTable.uploading": "正在上傳…", + "create.gui.schematicTable.finished": "上傳完成!", "create.gui.schematicannon.title": "藍圖加農炮", "create.gui.schematicannon.listPrinter": "物品清單列印機", - "create.gui.schematicannon.gunpowderLevel": "火藥%1$s%%", - "create.gui.schematicannon.shotsRemaining": "發射進度:%1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "備份:%1$s", + "create.gui.schematicannon.gunpowderLevel": "火藥 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "發射進度:%1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "備份:%1$s", "create.gui.schematicannon.optionEnabled": "目前啟用", "create.gui.schematicannon.optionDisabled": "目前停用", "create.gui.schematicannon.showOptions": "顯示藍圖加農炮設定", @@ -993,11 +1190,11 @@ "create.gui.schematicannon.slot.listPrinter": "在此處放置書以列印藍圖所需的材料清單", "create.gui.schematicannon.slot.schematic": "在此處添加你的藍圖,務必確保其已被部放置在特定位置", "create.gui.schematicannon.option.skipMissing.description": "如果材料不夠,藍圖大炮將忽略目前不夠的材料並且使用其他已有材料繼續工作", - "create.gui.schematicannon.option.skipTileEntities.description": "藍圖將避免更換儲存方塊,如箱子。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "藍圖加農炮將不會替換工作範圍內的任何固體方塊。", + "create.gui.schematicannon.option.skipTileEntities.description": "藍圖將避免更換儲存方塊,如箱子", + "create.gui.schematicannon.option.dontReplaceSolid.description": "藍圖加農炮將不會替換工作範圍內的任何固體方塊", "create.gui.schematicannon.option.replaceWithSolid.description": "藍圖加農炮會使用所提供的固體方塊來替換工作區域內的其他固體方塊", "create.gui.schematicannon.option.replaceWithAny.description": "藍圖加農炮會使用任何所提供的方塊來替換工作區域內的固體方塊", - "create.gui.schematicannon.option.replaceWithEmpty.description": "藍圖加農炮將清理和替換工作區域內所有原本的方塊。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "藍圖加農炮將清理和替換工作區域內所有原本的方塊", "create.schematicannon.status.idle": "閒置", "create.schematicannon.status.ready": "準備", @@ -1010,7 +1207,7 @@ "create.schematicannon.status.targetOutsideRange": "定位目標太遠", "create.schematicannon.status.searching": "搜尋", "create.schematicannon.status.skipping": "跳過", - "create.schematicannon.status.missingBlock": "缺少方塊:", + "create.schematicannon.status.missingBlock": "缺少方塊:", "create.schematicannon.status.placing": "建築中", "create.schematicannon.status.clearing": "清除方塊中", "create.schematicannon.status.schematicInvalid": "藍圖無效", @@ -1018,7 +1215,7 @@ "create.schematicannon.status.schematicExpired": "藍圖文件已過期", "create.materialChecklist": "材料清單", - "create.materialChecklist.blocksNotLoaded": "*免責聲明* \n\n由於未讀取相關區塊,材料清單可能不正確。", + "create.materialChecklist.blocksNotLoaded": "*免責聲明* \n\n由於未讀取相關區塊,材料清單可能不正確", "create.gui.filter.deny_list": "黑名單", "create.gui.filter.deny_list.description": "只通過不在黑名單中的物品,如果黑名單為空,所有物品都可以通過", @@ -1033,18 +1230,14 @@ "create.item_attributes.placeable.inverted": "不可放置", "create.item_attributes.consumable": "可食用", "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.smeltable": "可被熔爐融煉", - "create.item_attributes.smeltable.inverted": "不可被熔爐融煉", - "create.item_attributes.washable": "可被篩洗", - "create.item_attributes.washable.inverted": "不可被篩洗", - "create.item_attributes.smokable": "可被煙熏", - "create.item_attributes.smokable.inverted": "不可被煙熏", - "create.item_attributes.crushable": "可被粉碎", - "create.item_attributes.crushable.inverted": "不可被粉碎", - "create.item_attributes.blastable": "可被高爐融煉", - "create.item_attributes.blastable.inverted": "不可被高爐融煉", + "create.item_attributes.fluid_container": "可儲存流體", + "create.item_attributes.fluid_container.inverted": "不可儲存流體", "create.item_attributes.enchanted": "已被附魔", "create.item_attributes.enchanted.inverted": "未被附魔", + "create.item_attributes.max_enchanted": "已達到最高附魔等級", + "create.item_attributes.max_enchanted.inverted": "未達到最高附魔等級", + "create.item_attributes.renamed": "有自訂名稱", + "create.item_attributes.renamed.inverted": "沒有自訂名稱", "create.item_attributes.damaged": "已損壞", "create.item_attributes.damaged.inverted": "未損壞", "create.item_attributes.badly_damaged": "嚴重受損", @@ -1055,29 +1248,39 @@ "create.item_attributes.equipable.inverted": "不可裝備", "create.item_attributes.furnace_fuel": "是燃料", "create.item_attributes.furnace_fuel.inverted": "不是燃料", - "create.item_attributes.in_tag": "標籤是%1$s", - "create.item_attributes.in_tag.inverted": "標籤不是%1$s", - "create.item_attributes.in_item_group": "屬於%1$s", - "create.item_attributes.in_item_group.inverted": "不屬於%1$s", - "create.item_attributes.added_by": "由%1$s添加", - "create.item_attributes.added_by.inverted": "不是由%1$s添加", + "create.item_attributes.washable": "可被篩洗", + "create.item_attributes.washable.inverted": "不可被篩洗", + "create.item_attributes.hauntable": "可被喚魂", + "create.item_attributes.hauntable.inverted": "不可被喚魂", + "create.item_attributes.crushable": "可被粉碎", + "create.item_attributes.crushable.inverted": "不可被粉碎", + "create.item_attributes.smeltable": "可被熔爐融煉", + "create.item_attributes.smeltable.inverted": "不可被熔爐融煉", + "create.item_attributes.smokable": "可被煙熏", + "create.item_attributes.smokable.inverted": "不可被煙熏", + "create.item_attributes.blastable": "可被高爐融煉", + "create.item_attributes.blastable.inverted": "不可被高爐融煉", "create.item_attributes.shulker_level": "界伏盒是 %1$s", "create.item_attributes.shulker_level.inverted": "界伏盒不是 %1$s", "create.item_attributes.shulker_level.full": "滿的", "create.item_attributes.shulker_level.empty": "空的", "create.item_attributes.shulker_level.partial": "有裝東西但沒滿", - "create.item_attributes.has_enchant": "有附魔效果%1$s", - "create.item_attributes.has_enchant.inverted": "沒有附魔效果%1$s", + "create.item_attributes.in_tag": "標籤是 %1$s", + "create.item_attributes.in_tag.inverted": "標籤不是 %1$s", + "create.item_attributes.in_item_group": "屬於 %1$s", + "create.item_attributes.in_item_group.inverted": "不屬於 %1$s", + "create.item_attributes.added_by": "由 %1$s 添加", + "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", - "create.item_attributes.has_name.inverted": "沒有自定義名稱%1$s", - "create.item_attributes.book_author": "由%1$s編寫", - "create.item_attributes.book_author.inverted": "未由%1$s編寫", + "create.item_attributes.has_fluid": "包含 %1$s", + "create.item_attributes.has_fluid.inverted": "不包含 %1$s", + "create.item_attributes.has_name": "有自定義名稱 %1$s", + "create.item_attributes.has_name.inverted": "沒有自定義名稱 %1$s", + "create.item_attributes.book_author": "由 %1$s 編寫", + "create.item_attributes.book_author.inverted": "未由 %1$s 編寫", "create.item_attributes.book_copy_original": "是原創的", "create.item_attributes.book_copy_original.inverted": "不是原創的", "create.item_attributes.book_copy_first": "是第一份複製", @@ -1086,22 +1289,22 @@ "create.item_attributes.book_copy_second.inverted": "不是第二份複製", "create.item_attributes.book_copy_tattered": "是第三份複製", "create.item_attributes.book_copy_tattered.inverted": "不是第三份複製", - "create.item_attributes.astralsorcery_crystal": "具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_constellation": "與%1$s調諧", - "create.item_attributes.astralsorcery_constellation.inverted": "未與%1$s調諧", - "create.item_attributes.astralsorcery_perk_gem": "具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_amulet": "提升%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "不提升%1$s", + "create.item_attributes.astralsorcery_amulet": "提升 %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "不提升 %1$s", + "create.item_attributes.astralsorcery_constellation": "與 %1$s 調和", + "create.item_attributes.astralsorcery_constellation.inverted": "未與 %1$s 調和", + "create.item_attributes.astralsorcery_crystal": "具有晶體屬性 %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶體屬性 %1$s", + "create.item_attributes.astralsorcery_perk_gem": "具有特殊屬性 %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊屬性 %1$s", "create.gui.attribute_filter.no_selected_attributes": "沒有標記任何屬性", "create.gui.attribute_filter.selected_attributes": "已選擇的屬性:", "create.gui.attribute_filter.add_attribute": "向列表中添加屬性", "create.gui.attribute_filter.add_inverted_attribute": "向列表中添加相反屬性", - "create.gui.attribute_filter.allow_list_disjunctive": "任意比對白名單(任何)", + "create.gui.attribute_filter.allow_list_disjunctive": "任意比對白名單 (任何) ", "create.gui.attribute_filter.allow_list_disjunctive.description": "只要有其中一項屬性符合,就可以通過", - "create.gui.attribute_filter.allow_list_conjunctive": "全部比對白名單(全部)", + "create.gui.attribute_filter.allow_list_conjunctive": "全部比對白名單 (全部) ", "create.gui.attribute_filter.allow_list_conjunctive.description": "只有所有屬性都相符才可以通過", "create.gui.attribute_filter.deny_list": "黑名單", "create.gui.attribute_filter.deny_list.description": "只要沒有上述屬性,就可以通過", @@ -1111,26 +1314,28 @@ "create.tooltip.holdForControls": "按住 [%1$s] 來讀取控制方法", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求速度:%1$s", + "create.tooltip.speedRequirement": "需求速度:%1$s", "create.tooltip.speedRequirement.none": "無", + "create.tooltip.speedRequirement.slow": "慢", "create.tooltip.speedRequirement.medium": "適當", "create.tooltip.speedRequirement.fast": "快", - "create.tooltip.stressImpact": "動能消耗:%1$s", + "create.tooltip.stressImpact": "動能消耗:%1$s", "create.tooltip.stressImpact.low": "低", "create.tooltip.stressImpact.medium": "中", "create.tooltip.stressImpact.high": "高", "create.tooltip.stressImpact.overstressed": "過載", - "create.tooltip.capacityProvided": "動能生產量:%1$s", + "create.tooltip.up_to": "最高 %1$s", + "create.tooltip.capacityProvided": "動能輸出:%1$s", "create.tooltip.capacityProvided.low": "小", "create.tooltip.capacityProvided.medium": "中", "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "產生%1$s %2$s", - "create.tooltip.analogStrength": "調節強度:%1$s/15", + "create.tooltip.generationSpeed": "產生 %1$s %2$s", + "create.tooltip.analogStrength": "訊號強度:%1$s/15", - "create.mechanical_arm.extract_from": "從%1$s 拿取物品", - "create.mechanical_arm.deposit_to": "向%1$s 儲存物品", - "create.mechanical_arm.summary": "機械手臂有%1$s 輸入以及 %2$s 輸出。", - "create.mechanical_arm.points_outside_range": "%1$s 由於距離限制,選定的交互點被移除。", + "create.mechanical_arm.extract_from": "從 %1$s 拿取物品", + "create.mechanical_arm.deposit_to": "向 %1$s 儲存物品", + "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": "彈射到鄰近的方塊 (目的地無效)", @@ -1152,7 +1357,7 @@ "create.tunnel.selection_mode.randomize": "隨機", "create.tunnel.selection_mode.synchronize": "同步輸入", - "create.tooltip.chute.header": "滑道訊息", + "create.tooltip.chute.header": "滑槽訊息", "create.tooltip.chute.items_move_down": "物品向下移動", "create.tooltip.chute.items_move_up": "物品向上移動", "create.tooltip.chute.no_fans_attached": "未安裝鼓風機", @@ -1172,6 +1377,7 @@ "create.linked_controller.frequency_slot_2": "按鍵:%1$s 頻道 #2", "create.crafting_blueprint.crafting_slot": "材料格", + "create.crafting_blueprint.filter_items_viable": "可使用進階物品過濾", "create.crafting_blueprint.display_slot": "顯示格", "create.crafting_blueprint.inferred": "根據配方推論", "create.crafting_blueprint.manually_assigned": "手動設定", @@ -1183,30 +1389,354 @@ "create.potato_cannon.ammo.knockback": "%1$s 擊退", "create.hint.hose_pulley.title": "無限供應", - "create.hint.hose_pulley": "目標液體為無限供應", + "create.hint.hose_pulley": "目標流體為無限供應", "create.hint.mechanical_arm_no_targets.title": "沒有目標", - "create.hint.mechanical_arm_no_targets": "看起來這個_機械手臂_沒有被分配任何_目標_。在手持機械手臂的同時,右鍵選取輸送帶、置物臺、漏斗或其他設備來設定目標。", + "create.hint.mechanical_arm_no_targets": "看起來這個_機械臂_沒有被分配任何_目標_。在手持機械臂的同時,右鍵選取輸送帶、置物臺、漏斗或其他設備來設定目標", "create.hint.empty_bearing.title": "更新軸承", - "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構。", + "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構", "create.hint.full_deployer.title": "機械手物品溢出", - "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決。", + "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決", + + "create.backtank.low": "後背包壓力不足", + "create.backtank.depleted": "後背包壓力耗盡", + + "create.hint.derailed_train.title": "出軌的火車", + "create.hint.derailed_train": "這列_火車_不在軌道上,用扳手_左鍵點擊_它以重置到附近的軌道", + + "create.boiler.status": "鍋爐狀態:%1$s", + "create.boiler.status_short": "鍋爐:%1$s", + "create.boiler.passive": "運作中", + "create.boiler.idle": "閒置", + "create.boiler.lvl": "Lvl %1$s", + "create.boiler.max_lvl": "Max", + "create.boiler.size": "尺寸", + "create.boiler.size_dots": "....... ", + "create.boiler.water": "水", + "create.boiler.water_dots": "... ", + "create.boiler.heat": "熱量", + "create.boiler.heat_dots": "...... ", + "create.boiler.via_one_engine": "透過 1 個引擎", + "create.boiler.via_engines": "透過 %1$s 個引擎", + + "create.gui.schedule.lmb_edit": "左鍵點擊編輯", + "create.gui.schedule.rmb_remove": "右鍵點擊移除", + "create.gui.schedule.duplicate": "複製", + "create.gui.schedule.remove_entry": "移除動作", + "create.gui.schedule.add_entry": "增加動作", + "create.gui.schedule.move_up": "上移", + "create.gui.schedule.move_down": "下移", + "create.gui.schedule.add_condition": "增加條件", + "create.gui.schedule.alternative_condition": "增加替代條件", + + "create.schedule.instruction_type": "下一步:", + "create.schedule.instruction.editor": "指令編輯器", + "create.schedule.instruction.destination": "駛至車站", + "create.schedule.instruction.destination.summary": "下一站:", + "create.schedule.instruction.filter_edit_box": "站名", + "create.schedule.instruction.filter_edit_box_1": "使用「*」做為萬用字元", + "create.schedule.instruction.filter_edit_box_2": "例如:「我的車站,月台*」", + "create.schedule.instruction.filter_edit_box_3": "火車會選擇最近且未被使用的月台", + "create.schedule.instruction.rename": "更新時刻表標題", + "create.schedule.instruction.rename.summary": "新標題:", + "create.schedule.instruction.name_edit_box": "時刻表標題", + "create.schedule.instruction.name_edit_box_1": "影響顯示板上的文字", + "create.schedule.instruction.name_edit_box_2": "預設為下一個目的地的名稱", + "create.schedule.instruction.throttle": "極速限制", + "create.schedule.instruction.throttle.summary": "調整極速為 %1$s", + "create.schedule.instruction.throttle_edit_box": "油門", + "create.schedule.instruction.throttle_edit_box_1": "影響火車的極速", + "create.schedule.condition_type": "如果/之後…繼續", + "create.schedule.condition.editor": "條件編輯器", + "create.schedule.condition.delay": "延遲", + "create.schedule.condition.delay_short": "等待:%1$s", + "create.schedule.condition.delay.status": "%1$s 後出發", + "create.schedule.condition.idle": "閒置貨物", + "create.schedule.condition.idle_short": "貨物閒置:%1$s", + "create.schedule.condition.idle.status": "貨物閒置 %1$s", + "create.schedule.condition.for_x_time": "%1$s", + "create.schedule.condition.unloaded": "區塊卸載", + "create.schedule.condition.unloaded.status": "等待區塊卸載", + "create.schedule.condition.powered": "車站充能", + "create.schedule.condition.powered.status": "等待紅石訊號", + "create.schedule.condition.time_of_day": "日中時刻", + "create.schedule.condition.time_of_day.scheduled": "規劃時間:%1$s", + "create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s", + "create.schedule.condition.time_of_day.rotation": "重複", + "create.schedule.condition.time_of_day.rotation.every_24": "每日", + "create.schedule.condition.time_of_day.rotation.every_12": "每 12 小時", + "create.schedule.condition.time_of_day.rotation.every_6": "每 6 小時", + "create.schedule.condition.time_of_day.rotation.every_4": "每 4 小時", + "create.schedule.condition.time_of_day.rotation.every_3": "每 3 小時", + "create.schedule.condition.time_of_day.rotation.every_2": "每 2 小時", + "create.schedule.condition.time_of_day.rotation.every_1": "每 1 小時", + "create.schedule.condition.time_of_day.rotation.every_0_45": "每 45 分鐘", + "create.schedule.condition.time_of_day.rotation.every_0_30": "每 30 分鐘", + "create.schedule.condition.time_of_day.rotation.every_0_15": "每 15 分鐘", + "create.schedule.condition.time_of_day.status": "發車於", + "create.schedule.condition.threshold.train_holds": "火車上有 %1$s", + "create.schedule.condition.threshold.greater": "多於", + "create.schedule.condition.threshold.less": "少於", + "create.schedule.condition.threshold.equal": "剛好", + "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s", + "create.schedule.condition.threshold.matching_content": "比對內容", + "create.schedule.condition.threshold.item_measure": "物品單位", + "create.schedule.condition.threshold.items": "個", + "create.schedule.condition.threshold.stacks": "組", + "create.schedule.condition.threshold.buckets": "桶", + "create.schedule.condition.threshold.status": "貨物:%1$s/%2$s %3$s", + "create.schedule.condition.threshold.place_item": "參考物品", + "create.schedule.condition.threshold.place_item_2": "可以使用過濾器", + "create.schedule.condition.fluid_threshold": "流體貨物條件", + "create.schedule.condition.item_threshold": "物品貨物條件", + "create.schedule.condition.redstone_link": "無線紅石連接", + "create.schedule.condition.redstone_link.status": "等待無線紅石連接", + "create.schedule.condition.redstone_link_on": "連線開啟", + "create.schedule.condition.redstone_link_off": "連線關閉", + "create.schedule.condition.redstone_link.powered": "開啟", + "create.schedule.condition.redstone_link.unpowered": "關閉", + "create.schedule.condition.redstone_link.frequency_state": "頻道狀態:", + "create.schedule.condition.redstone_link.frequency_powered": "頻道開啟:", + "create.schedule.condition.redstone_link.frequency_unpowered": "頻道關閉:", + "create.schedule.condition.player_count": "玩家入座", + "create.schedule.condition.player_count.summary": "%1$s玩家", + "create.schedule.condition.player_count.summary_plural": "%1$s玩家", + "create.schedule.condition.player_count.seated": "%1$s入座", + "create.schedule.condition.player_count.players": "玩家", + "create.schedule.condition.player_count.condition": "條件", + "create.schedule.condition.player_count.exactly": "剛好", + "create.schedule.condition.player_count.or_above": "或以上", + "create.schedule.condition.player_count.status": "乘客:%1$s/%2$s", + "create.schedule.loop": "持續循環", + "create.schedule.loop1": "時刻表結束後", + "create.schedule.loop2": "重新開始", + "create.schedule.reset": "重置進程", + "create.schedule.skip": "跳過現在的步驟", + "create.schedule.applied_to_train": "火車現在正照表操課", + "create.schedule.non_controlling_seat": "司機員必須坐在火車控制台前", + "create.schedule.remove_with_empty_hand": "空手移除現在的時刻表", + "create.schedule.auto_removed_from_train": "自動時刻表被棄置", + "create.schedule.removed_from_train": "從火車回收時刻表", + "create.schedule.no_stops": "這份時刻表沒有設定任何停靠站", + "create.schedule.continued": "時刻表已重新開始", + + "create.track.selection_cleared": "已清除選擇區域", + "create.track.valid_connection": "可以連接", + "create.track.second_point": "鋪設火車軌道或選擇第二處", + "create.track.too_far": "距離過遠", + "create.track.original_missing": "原方塊已被移除,潛行點擊以重置", + "create.track.perpendicular": "無法垂直連接軌道", + "create.track.ascending_s_curve": "無法鋪設有坡度的S形彎", + "create.track.too_sharp": "曲率過高", + "create.track.too_steep": "斜率過高", + "create.track.slope_turn": "轉彎時無法進入或離開斜坡", + "create.track.opposing_slopes": "無法連接下斜方向相反的斜坡", + "create.track.leave_slope_ascending": "無法在上升時離開這個斜坡", + "create.track.leave_slope_descending": "無法在下降時離開這個斜坡", + "create.track.turn_90": "單個彎最多只能轉 90 度", + "create.track.junction_start": "無法從道岔開始連接", + "create.track.turn_start": "無法從彎道開始連結", + "create.track.not_enough_tracks": "火車軌道不足", + "create.track.not_enough_pavement": "基座方塊不足", + + "create.portal_track.failed": "無法鋪設傳送門軌道:", + "create.portal_track.missing": "對向傳送門尚未生成", + "create.portal_track.blocked": "對向位址被堵塞 (%1$s,%2$s,%3$s)", + + "create.station.idle": "車站閒置中", + "create.station.assembly_title": "組裝火車", + "create.station.close": "關閉視窗", + "create.station.cancel": "取消組裝", + "create.station.failed": "組裝失敗", + "create.station.icon_type": "圖樣類型", + "create.station.create_train": "創建新火車", + "create.station.assemble_train": "組裝火車", + "create.station.disassemble_train": "拆解火車", + "create.station.remove_schedule": "回收時刻表", + "create.station.remove_auto_schedule": "棄置自動時刻表", + "create.station.no_assembly_diagonal": "無法在對角線軌道上", + "create.station.no_assembly_diagonal_1": "組裝火車", + "create.station.no_assembly_curve": "無法在彎道上", + "create.station.no_assembly_curve_1": "組裝火車", + "create.station.train_not_aligned": "仍有車廂未對齊", + "create.station.train_not_aligned_1": "無法拆解", + "create.station.carriage_number": "車廂 %1$s:", + "create.station.retry": "解決問題並重新嘗試", + "create.station.no_bogeys": "無轉向架", + "create.station.one_bogey": "一座轉向架", + "create.station.more_bogeys": "%1$s 座轉向架", + "create.station.how_to": "在加亮軌道上放置火車機殼以創建轉向架", + "create.station.how_to_1": "破壞轉向架上方的方塊以移除轉向架", + "create.station.how_to_2": "搭建車廂時每個車廂都須與一或二座轉向架連接", + + "create.train_assembly.too_many_bogeys": "轉向架連接過多:%1$s", + "create.train_assembly.frontmost_bogey_at_station": "最前方的轉向架需位於車站標記處", + "create.train_assembly.no_bogeys": "找無轉向架", + "create.train_assembly.not_connected_in_order": "轉向架未按順序連接", + "create.train_assembly.bogeys_too_close": "轉向架 %1$s 及 %2$s 距離過近", + "create.train_assembly.single_bogey_carriage": "這類轉向架無法單獨支撐一個車廂", + "create.train_assembly.nothing_attached": "沒有任何結構連接到轉向架 %1$s", + "create.train_assembly.no_controls": "火車上需安裝至少一個面向前方的火車控制台", + "create.train_assembly.sideways_controls": "某個已安裝的火車控制台面向火車側面", + "create.train_assembly.bogey_created": "已創建轉向架,再度點擊以循環改變種類", + "create.train_assembly.requires_casing": "在軌道上放置火車機殼以創建轉向架", + + "create.track_target.set": "已選擇目標軌道", + "create.track_target.success": "成功綁定目標軌道", + "create.track_target.clear": "已清除選擇的軌道", + "create.track_target.missing": "先對目標火車軌道點擊右鍵", + "create.track_target.too_far": "目標軌道距離此處過遠", + "create.track_target.no_junctions": "目標軌道不能是道岔", + "create.track_target.occupied": "目標軌道被占用", + "create.track_target.invalid": "無法在此定位該軌道", + + "create.train.unnamed": "未命名火車", + "create.train.cannot_relocate_moving": "無法重新設置移動中的火車", + "create.train.relocate": "點擊軌道以重新設置 %1$s,潛行點擊則取消", + "create.train.relocate.abort": "重新設置被取消", + "create.train.relocate.success": "重新設置成功", + "create.train.relocate.valid": "火車可重新設置於此,點擊確認", + "create.train.relocate.invalid": "無法重新設置火車於此", + "create.train.relocate.too_far": "無法重新設置火車於過遠的位置", + "create.train.departing_from": "自 %1$s 發車", + "create.train.arrived_at": "抵達 %1$s", + "create.train.status": " 火車資訊:%1$s", + "create.train.status.back_on_track": "火車已回到軌道上", + "create.train.status.collision": "與其他火車相撞", + "create.train.status.end_of_track": "車廂已至軌道末端", + "create.train.status.double_portal": "車廂不能同時進入與離開傳送門", + "create.train.status.coupling_stress": "因連結器受壓,火車已被強制停止", + "create.train.status.track_missing": "火車下方無軌道", + "create.train.status.paused_for_manual": "時刻表暫停運作,手動控制中", + "create.train.status.opposite_driver": "路線需要司機員面向反方向", + "create.train.status.missing_driver": "司機員失蹤", + "create.train.status.found_driver": "已找到新的司機員", + "create.train.status.navigation_success": "導航成功", + "create.train.status.no_match": "圖上無符合「%1$s」的車站", + "create.train.status.no_path": "找無通往下個目的地的路線", + + "create.track_signal.cannot_change_mode": "無法切換訊號模式", + "create.track_signal.mode_change.entry_signal": "-> 若區間未被占用則允許通行", + "create.track_signal.mode_change.cross_signal": "-> 若區間可穿越則允許通行", + + "create.contraption.controls.start_controlling": "正在控制:%1$s", + "create.contraption.controls.stop_controlling": "停止控制裝置", + "create.contraption.controls.approach_station": "按住 %1$s 以接近 %2$s", + + "create.display_link.set": "已選定目標位置", + "create.display_link.success": "成功綁定到目標位置", + "create.display_link.clear": "清除位置選擇", + "create.display_link.too_far": "目標位置離這裡太遠", + "create.display_link.invalid": "鏈路沒有有效的目標,請嘗試重新放置", + "create.display_link.title": "連接鏈路", + "create.display_link.no_source": "非訊號源", + "create.display_link.no_target": "非訊號目標", + "create.display_link.reading_from": "讀取自:", + "create.display_link.writing_to": "發送到:", + "create.display_link.attached_side": "在接收側的方塊", + "create.display_link.targeted_location": "在目標位置的方塊", + "create.display_link.view_compatible": "點擊查看所有相容項目", + "create.display_link.information_type": "訊息類型", + "create.display_link.display_on": "將數據寫入:", + "create.display_link.display_on_multiline": "首行發送到:", + + "create.display_source.label": "添加標籤", + "create.display_source.combine_item_names": "內含的物件名稱", + "create.display_source.count_items": "匹配的物品總量", + "create.display_source.list_items": "匹配的物品清單", + "create.display_source.fluid_amount": "匹配的流體總量", + "create.display_source.list_fluids": "匹配的流體清單", + "create.display_source.nixie_tube": "複製文字", + "create.display_source.fill_level": "容器充填程度", + "create.display_source.fill_level.display": "顯示格式", + "create.display_source.fill_level.percent": "百分比", + "create.display_source.fill_level.progress_bar": "進度條", + "create.display_source.value_list.display": "數值格式", + "create.display_source.value_list.shortened": "精簡", + "create.display_source.value_list.full_number": "完整", + "create.display_source.value_list.thousand": "k", + "create.display_source.value_list.million": "m", + "create.display_source.player_deaths": "玩家死亡次數", + "create.display_source.scoreboard": "計分板", + "create.display_source.scoreboard.objective": "計分項 ID", + "create.display_source.scoreboard.objective_not_found": "找不到 「%1$s」", + "create.display_source.scoreboard.objective.deaths": "玩家死亡次數", + "create.display_source.time_of_day": "當日時間", + "create.display_source.stop_watch": "碼表", + "create.display_source.time.format": "時間格式", + "create.display_source.time.12_hour": "12小時制", + "create.display_source.time.24_hour": "24小時制", + "create.display_source.accumulate_items": "累積物品數量", + "create.display_source.item_throughput": "物品吞吐量", + "create.display_source.item_throughput.interval": "間隔", + "create.display_source.item_throughput.interval.second": "每秒", + "create.display_source.item_throughput.interval.minute": "每分鐘", + "create.display_source.item_throughput.interval.hour": "每小時", + "create.display_source.train_status": "火車時刻表資訊", + "create.display_source.station_summary": "火車站點概要", + "create.display_source.station_summary.filter": "站名過濾器", + "create.display_source.station_summary.train_name_column": "火車判定尺寸", + "create.display_source.station_summary.platform_column": "月台判定尺寸", + "create.display_source.station_summary.now": "到站", + "create.display_source.station_summary.minutes": " 分鐘", + "create.display_source.station_summary.seconds": "%1$s 秒", + "create.display_source.observed_train_name": "檢測到的火車名稱", + "create.display_source.max_enchant_level": "最大附魔費用", + "create.display_source.boiler_status": "鍋爐狀態", + "create.display_source.entity_name": "實體名稱", + "create.display_source.kinetic_speed": "轉速 (RPM)", + "create.display_source.kinetic_speed.absolute": "無視轉向", + "create.display_source.kinetic_speed.directional": "顯示轉向", + "create.display_source.kinetic_stress": "網路負荷", + "create.display_source.kinetic_stress.display": "顯示訊息", + "create.display_source.kinetic_stress.progress_bar": "進度條", + "create.display_source.kinetic_stress.percent": "百分比", + "create.display_source.kinetic_stress.current": "動能負荷", + "create.display_source.kinetic_stress.max": "總能量", + "create.display_source.kinetic_stress.remaining": "剩餘動能", + "create.display_source.redstone_power": "紅石訊號強度", + "create.display_source.redstone_power.display": "顯示格式", + "create.display_source.redstone_power.number": "數值", + "create.display_source.redstone_power.progress_bar": "進度條", + "create.display_source.boiler.not_enough_space": "空間不足", + "create.display_source.boiler.for_boiler_status": "以顯示鍋爐狀態", + + "create.display_target.line": "第 %1$s 行", + "create.display_target.page": "第 %1$s 頁", + "create.display_target.single_line": "單行", + + "create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", + "create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9", + "create.flap_display.cycles.arrival_time": " ; min;now;15s;30s;45s", + "create.flap_display.cycles.shortened_numbers": " ;K;M", + "create.flap_display.cycles.fluid_units": "mB;B ", + "create.flap_display.cycles.instant": " ; ", + "create.flap_display.cycles.pixel": "█;▓;?", + + "create.super_glue.too_far": "選取的區域過大", + "create.super_glue.cannot_reach": "選取的方塊必須連通", + "create.super_glue.click_to_confirm": "再度點擊以確認", + "create.super_glue.click_to_discard": "潛行右鍵以放棄選取", + "create.super_glue.first_pos": "已選取第一個位置", + "create.super_glue.abort": "放棄選取", + "create.super_glue.not_enough": "庫存中沒有足夠的強力膠", + "create.super_glue.success": "塗抹強力膠…", "create.gui.config.overlay1": "嗨 :)", "create.gui.config.overlay2": "這是一個實例層", "create.gui.config.overlay3": "點擊拖拽你的滑鼠", "create.gui.config.overlay4": "來將它移動到前方", - "create.gui.config.overlay5": "ESC退出目前介面", + "create.gui.config.overlay5": "ESC 退出目前介面", "create.gui.config.overlay6": "並儲存新的位置", - "create.gui.config.overlay7": "輸入/create overlay reset", - "create.gui.config.overlay8": "重置到預設位置", + "create.gui.config.overlay7": "輸入 /create overlay reset", + "create.gui.config.overlay8": "重設到預設位置", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 伺服器每秒TICK被降為 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 伺服器現在每秒TICK被降為 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 伺服器現在不延遲了,TPS正常 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 來讓伺服器的TPS速度恢復正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 來手動降低伺服器TPS", - "create.command.killTPSCommand.argument.tickTime": "tickTime", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 伺服器每秒 tick 被降為 %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 伺服器現在每秒 tick 被降為 >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 伺服器現在不延遲了,fps 正常 :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 來讓伺服器的 fps 速度恢復正常", + "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 來手動降低伺服器 fps", + "create.command.killTPSCommand.argument.tickTime": "TickTime", "create.contraption.minecart_contraption_too_big": "這個礦車結構太大了而無法撿取", "create.contraption.minecart_contraption_illegal_pickup": "一股神秘的力量將這個礦車結構與世界綁在一起", @@ -1216,34 +1746,50 @@ "create.subtitle.contraption_disassemble": "結構停止", "create.subtitle.peculiar_bell_use": "黃銅鐘聲", + "create.subtitle.worldshaper_place": "地形塑造器發射聲", + "create.subtitle.whistle_train_manual": "火車汽笛聲", + "create.subtitle.steam": "蒸氣聲", + "create.subtitle.saw_activate_stone": "機械圓鋸機聲", + "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", + "create.subtitle.crafter_craft": "機械合成器合成聲", + "create.subtitle.wrench_remove": "零件移除聲", + "create.subtitle.train3": "轉向架的車輪隆隆作響", + "create.subtitle.whistle": "汽笛聲", + "create.subtitle.cogs": "齒輪隆隆聲", + "create.subtitle.slime_added": "黏液擠壓", + "create.subtitle.whistle_train_low": "汽笛低嘯", + "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", + "create.subtitle.controller_take": "拿下遙控器", + "create.subtitle.crafter_click": "機械合成器工作聲", + "create.subtitle.depot_plop": "物品著地", + "create.subtitle.confirm": "接受提示聲", "create.subtitle.mixing": "攪拌機噪音", "create.subtitle.mechanical_press_activation_belt": "液壓機工作", "create.subtitle.fwoomp": "馬鈴薯大砲發射", - "create.subtitle.worldshaper_place": "地形塑造器發射聲", - "create.subtitle.crushing_1": "粉碎機咀嚼聲", + "create.subtitle.sanding_long": "打磨的聲響", + "create.subtitle.crushing_1": "粉碎的聲響", "create.subtitle.depot_slide": "物品滑動聲", - "create.subtitle.saw_activate_stone": "機械鋸子聲", - "create.subtitle.blaze_munch": "烈焰使者開心地吃著", - "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", + "create.subtitle.blaze_munch": "烈焰使者咀嚼聲", + "create.subtitle.funnel_flap": "垂簾拍打", "create.subtitle.haunted_bell_use": "靈魂鐘敲響", "create.subtitle.scroll_value": "滾動輸入聲", - "create.subtitle.crafter_craft": "機械合成器合成聲", "create.subtitle.controller_put": "遙控器放置聲", "create.subtitle.cranking": "手搖把手轉動聲", - "create.subtitle.wrench_remove": "零件移除聲", - "create.subtitle.cogs": "齒輪隆隆聲", - "create.subtitle.slime_added": "黏液擠壓", + "create.subtitle.sanding_short": "打磨的聲響", + "create.subtitle.wrench_rotate": "使用扳手", "create.subtitle.potato_hit": "食物撞擊聲", - "create.subtitle.saw_activate_wood": "機械鋸子運作聲", + "create.subtitle.saw_activate_wood": "機械圓鋸機運作聲", + "create.subtitle.whistle_high": "汽笛高嘯", + "create.subtitle.whistle_train_manual_low": "火車汽笛聲", + "create.subtitle.whistle_train": "汽笛聲", "create.subtitle.haunted_bell_convert": "靈魂鐘轉化聲", - "create.subtitle.deployer_polish": "機械手拋光聲", + "create.subtitle.train": "轉向架的車輪隆隆作響", + "create.subtitle.deny": "故障聲", "create.subtitle.controller_click": "遙控器按鍵聲", - "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", + "create.subtitle.whistle_low": "汽笛低嘯", "create.subtitle.copper_armor_equip": "潛水裝裝備聲", - "create.subtitle.controller_take": "拿下遙控器", "create.subtitle.mechanical_press_activation": "液壓機工作", "create.subtitle.contraption_assemble": "結構移動", - "create.subtitle.crafter_click": "機械合成器工作聲", "_": "->------------------------] Item Descriptions [------------------------<-", @@ -1251,30 +1797,30 @@ "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this。(behaviours show on shift)", + "item.create.example_item.tooltip.behaviour1": "Then this item does this(behaviours show on shift)", "item.create.example_item.tooltip.condition2": "And When this", "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "When Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", "block.create.wooden_bracket.tooltip": "木製支架", - "block.create.wooden_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", + "block.create.wooden_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_", "block.create.metal_bracket.tooltip": "金屬支架", - "block.create.metal_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", + "block.create.metal_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_", "block.create.seat.tooltip": "坐墊", - "block.create.seat.tooltip.summary": "坐下來享受旅程吧!坐墊將會把玩家固定在一個移動裝置上。也可以用來作為居家裝飾,畢竟他有許多顏色。", + "block.create.seat.tooltip.summary": "坐下來享受旅程吧!坐墊將會把玩家固定在一個移動裝置上,也可以用來作為居家裝飾,畢竟他有許多顏色", "block.create.seat.tooltip.condition1": "對坐墊右鍵", - "block.create.seat.tooltip.behaviour1": "玩家將坐在_坐墊_上,Left-Shift可離開_坐墊_。", + "block.create.seat.tooltip.behaviour1": "玩家將坐在_坐墊_上,按左側 Shift 可離開_坐墊_", "item.create.blaze_cake.tooltip": "熔岩蛋糕", - "item.create.blaze_cake.tooltip.summary": "對辛苦的_烈焰使者_的美味款待。讓他們興奮起來吧!", + "item.create.blaze_cake.tooltip.summary": "為您辛勤工作的_烈焰使者_提供美味佳餚。讓牠們興奮起來吧!", "item.create.wand_of_symmetry.tooltip": "對稱杖", - "item.create.wand_of_symmetry.tooltip.summary": "完美地鏡面復制工作區域內的方塊放置於破壞", - "item.create.wand_of_symmetry.tooltip.condition1": "當在熱鍵欄時", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持續進行鏡面復制", + "item.create.wand_of_symmetry.tooltip.summary": "完美地鏡面複製工作區域內的方塊放置於破壞", + "item.create.wand_of_symmetry.tooltip.condition1": "當在快捷欄時", + "item.create.wand_of_symmetry.tooltip.behaviour1": "持續進行鏡面複製", "item.create.wand_of_symmetry.tooltip.control1": "當右鍵地面時", "item.create.wand_of_symmetry.tooltip.action1": "_創建_或_移動_鏡子", "item.create.wand_of_symmetry.tooltip.control2": "當右鍵空氣時", @@ -1282,26 +1828,26 @@ "item.create.wand_of_symmetry.tooltip.control3": "當潛行右鍵時", "item.create.wand_of_symmetry.tooltip.action3": "打開_gui介面_", - "item.create.handheld_worldshaper.tooltip": "環境塑形器", - "item.create.handheld_worldshaper.tooltip.summary": "_大面積_更改地形的手持工具", + "item.create.handheld_worldshaper.tooltip": "地形雕塑器", + "item.create.handheld_worldshaper.tooltip.summary": "用於創造_景觀_和_地形特徵_的便利工具", "item.create.handheld_worldshaper.tooltip.control1": "當左鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action1": "設定放置此方塊", + "item.create.handheld_worldshaper.tooltip.action1": "將地形雕塑器放置的方塊設定為所選的方塊", "item.create.handheld_worldshaper.tooltip.control2": "當右鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替換_目標方塊", + "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替換_所選的方塊", "item.create.handheld_worldshaper.tooltip.control3": "當潛行右鍵時", - "item.create.handheld_worldshaper.tooltip.action3": "打開工具的_gui介面_", + "item.create.handheld_worldshaper.tooltip.action3": "打開_操作介面_", "item.create.tree_fertilizer.tooltip": "樹木肥料", "item.create.tree_fertilizer.tooltip.summary": "適用來常見樹木的快速肥料", - "item.create.tree_fertilizer.tooltip.condition1": "在樹苗上使用時", + "item.create.tree_fertilizer.tooltip.condition1": "對樹苗使用時", "item.create.tree_fertilizer.tooltip.behaviour1": "無論_生長時間_多少,直接長大", "item.create.extendo_grip.tooltip": "伸縮機械手", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_。", + "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_", "item.create.extendo_grip.tooltip.condition1": "放置於副手欄時", - "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_。", + "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_", "item.create.extendo_grip.tooltip.condition2": "當裝備銅製後背包時", - "item.create.extendo_grip.tooltip.behaviour2": "_不會消耗耐久_ 但是會抽取銅製後背包裡的_壓縮空氣_", + "item.create.extendo_grip.tooltip.behaviour2": "_不會消耗耐久_,但是會抽取銅製後背包裡的_壓縮空氣_", "item.create.potato_cannon.tooltip": "馬鈴薯大砲", "item.create.potato_cannon.tooltip.summary": "噗~碰!用你種的蔬菜來攻擊敵人。可以用_銅製後背包_的壓縮空氣驅動", @@ -1311,130 +1857,143 @@ "item.create.potato_cannon.tooltip.behaviour2": "_不會消耗耐久_ 但是會抽取銅製後背包裡的_壓縮空氣_", "item.create.filter.tooltip": "過濾器", - "item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用。", - "item.create.filter.tooltip.condition1": "放置於過濾插槽中時", + "item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用", + "item.create.filter.tooltip.condition1": "當放置於過濾插槽中時", "item.create.filter.tooltip.behaviour1": "根據_過濾器_的設定,來_決定_物品是否能夠通過", - "item.create.filter.tooltip.condition2": "當右鍵時", + "item.create.filter.tooltip.condition2": "當點擊右鍵時", "item.create.filter.tooltip.behaviour2": "打開_設定面板_", "item.create.attribute_filter.tooltip": "屬性過濾器", "item.create.attribute_filter.tooltip.summary": "比起普通過濾器,_屬性過濾器_可以根據不同物品的_屬性_來進行過濾", - "item.create.attribute_filter.tooltip.condition1": "放置於過濾插槽中時", + "item.create.attribute_filter.tooltip.condition1": "當放置於過濾插槽中時", "item.create.attribute_filter.tooltip.behaviour1": "根據_過濾器_的配置,來_決定_物品是否能夠通過", - "item.create.attribute_filter.tooltip.condition2": "當右鍵時", + "item.create.attribute_filter.tooltip.condition2": "當點擊右鍵時", "item.create.attribute_filter.tooltip.behaviour2": "打開_配置面板_", "item.create.empty_schematic.tooltip": "空白藍圖", "item.create.empty_schematic.tooltip.summary": "可作為合成材料或在_藍圖桌_使用", "item.create.schematic.tooltip": "藍圖", - "item.create.schematic.tooltip.summary": "將工程結構的_設計圖_放置於_世界中_,並使用_藍圖加農炮_進行構建。", + "item.create.schematic.tooltip.summary": "將工程結構的_設計圖_放置於_世界中_,並使用_藍圖加農炮_進行構建", "item.create.schematic.tooltip.condition1": "當設計圖存在時", "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具調整位置", "item.create.schematic.tooltip.control1": "當潛行右鍵時", - "item.create.schematic.tooltip.action1": "打開一個用來輸入_精確坐標_的介面。", + "item.create.schematic.tooltip.action1": "打開一個用來輸入_精確坐標_的介面", "item.create.schematic_and_quill.tooltip": "藍圖與筆", - "item.create.schematic_and_quill.tooltip.summary": "用來將世界中的結構存到.nbt文件。", + "item.create.schematic_and_quill.tooltip.summary": "用來將世界中的結構存到 .nbt 文件", "item.create.schematic_and_quill.tooltip.condition1": "第一步", "item.create.schematic_and_quill.tooltip.behaviour1": "手持藍圖與右鍵旋轉兩個點", "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl滑鼠滾輪選擇選區大小,右鍵空白處存檔。", + "item.create.schematic_and_quill.tooltip.behaviour2": "按住 Ctrl 滑鼠滾輪選擇選區大小,右鍵空白處存檔", "item.create.schematic_and_quill.tooltip.control1": "右鍵", - "item.create.schematic_and_quill.tooltip.action1": "選取點/確認存檔", - "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl滑鼠滾輪", - "item.create.schematic_and_quill.tooltip.action2": "在_空中_選擇點滾動以調整距離。", + "item.create.schematic_and_quill.tooltip.action1": "選取點 / 確認存檔", + "item.create.schematic_and_quill.tooltip.control2": "按住 Ctrl 滑鼠滾輪", + "item.create.schematic_and_quill.tooltip.action2": "在_空中_選擇點滾動以調整距離", "item.create.schematic_and_quill.tooltip.control3": "當潛行右鍵時", - "item.create.schematic_and_quill.tooltip.action3": "_重置_並刪除選區。", + "item.create.schematic_and_quill.tooltip.action3": "_重設_並刪除選區", "block.create.schematicannon.tooltip": "藍圖加農炮", - "block.create.schematicannon.tooltip.summary": "通過發射方塊以在世界中重新構建已部署的_全息圖_,使用相鄰箱子中的物品及_火藥_作為燃料。", + "block.create.schematicannon.tooltip.summary": "通過發射方塊以在世界中重新構建已部署的_全息圖_,使用相鄰箱子中的物品及_火藥_作為燃料", "block.create.schematicannon.tooltip.condition1": "當你對加農砲右鍵時", "block.create.schematicannon.tooltip.behaviour1": "打開加農砲的設定介面", "block.create.schematic_table.tooltip": "藍圖桌", "block.create.schematic_table.tooltip.summary": "將保存的藍圖圖寫入_空白藍圖_", "block.create.schematic_table.tooltip.condition1": "放入空白藍圖時", - "block.create.schematic_table.tooltip.behaviour1": "從Schematics文件夾上傳所選文件", + "block.create.schematic_table.tooltip.behaviour1": "從 Schematics 文件夾上傳所選文件", - "item.create.goggles.tooltip": "MR護目鏡", - "item.create.goggles.tooltip.summary": "一副特殊的眼鏡,能夠讓你看見_動能_的信息。", + "item.create.goggles.tooltip": "工程師護目鏡", + "item.create.goggles.tooltip.summary": "一副特殊的眼鏡,能夠讓你看見_動能_的訊息", "item.create.goggles.tooltip.condition1": "當裝備後", - "item.create.goggles.tooltip.behaviour1": "將會顯示該機械元件的_速度_、_動能_等數值。", + "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.goggles.tooltip.behaviour2": "將會顯示該儀表所連接網路的_速度_、_動能_等數值", + "item.create.goggles.tooltip.condition3": "當裝備後看向流體容器時", + "item.create.goggles.tooltip.behaviour3": "將會顯示儲存在該容器內的 _流體_ 以及其 _容量_ 等資訊", - "item.create.wrench.tooltip": "板手", - "item.create.wrench.tooltip.summary": "一種常用的工具,能夠調整_動能_的_方向_、_配置_等。", - "item.create.wrench.tooltip.control1": "當右鍵點擊_動能元件_時", + "item.create.wrench.tooltip": "扳手", + "item.create.wrench.tooltip.summary": "一種常用的工具,能夠調整_動能_的_方向_、_配置_等", + "item.create.wrench.tooltip.control1": "右鍵動力元件時", "item.create.wrench.tooltip.action1": "以點擊的面為軸心_旋轉_點擊的方塊", "item.create.wrench.tooltip.control2": "當潛行右鍵時", - "item.create.wrench.tooltip.action2": "將物品_取下_並移動到你的背包中。", + "item.create.wrench.tooltip.action2": "將物品_取下_並移動到你的背包中", "block.create.nozzle.tooltip": "分散網", - "block.create.nozzle.tooltip.summary": "依附在鼓風機上,能夠將鼓風機的效果_分散_各個方向。", + "block.create.nozzle.tooltip.summary": "依附在鼓風機上,能夠將鼓風機的效果_分散_各個方向", "block.create.cuckoo_clock.tooltip": "布穀鳥鐘", "block.create.cuckoo_clock.tooltip.summary": "精美的布穀鳥鐘,能夠報時", - "block.create.cuckoo_clock.tooltip.condition1": "連接機械時", - "block.create.cuckoo_clock.tooltip.behaviour1": "顯示_現在時間_且一天會報時_兩次_。中午一次,黃昏可以睡覺時一次 ", + "block.create.cuckoo_clock.tooltip.condition1": "輸入動力時", + "block.create.cuckoo_clock.tooltip.behaviour1": "顯示_現在時間_且一天會報時_兩次_;中午一次,黃昏可以睡覺時一次 ", "block.create.turntable.tooltip": "轉盤", - "block.create.turntable.tooltip.summary": "讓旋轉機械給你帶來一場刺激的旋轉風車體驗。", + "block.create.turntable.tooltip.summary": "讓旋轉機械給你帶來一場刺激的旋轉風車體驗", + + "block.create.toolbox.tooltip": "工具箱", + "block.create.toolbox.tooltip.summary": "發明家的好夥伴。便利且大量的_容納八種_物品", + "block.create.toolbox.tooltip.condition1": "拾取時", + "block.create.toolbox.tooltip.behaviour1": "_保留內容物_", + "block.create.toolbox.tooltip.condition2": "放置於一定範圍內時", + "block.create.toolbox.tooltip.behaviour2": "_附近玩家_可以按對應的_快捷鍵_ (預設ALT) _遠程_訪問內容物", + "block.create.toolbox.tooltip.condition3": "當點擊右鍵時", + "block.create.toolbox.tooltip.behaviour3": "開啟_工具箱介面_", "block.create.stockpile_switch.tooltip": "存量偵測器", - "block.create.stockpile_switch.tooltip.summary": "根據連接的容器_儲存空間_的占用情況切換紅石訊號強度。", - "block.create.stockpile_switch.tooltip.condition1": "低於_下線_或高於_上線_時", + "block.create.stockpile_switch.tooltip.summary": "根據連接的容器_儲存空間_的占用情況切換紅石訊號強度", + "block.create.stockpile_switch.tooltip.condition1": "低於下限或高於上限時", "block.create.stockpile_switch.tooltip.behaviour1": "提供紅石訊號", "block.create.content_observer.tooltip": "物品偵測器", - "block.create.content_observer.tooltip.summary": "偵測_容器_和_輸送帶_中過濾器匹配的物品。當觀察到包含匹配的物品時,此組件將發出_紅石訊號_。當觀察到的漏斗_轉移匹配的物品_時,此組件將發出_紅石脈沖_。", - - "block.create.adjustable_crate.tooltip": "可調節板條箱", - "block.create.adjustable_crate.tooltip.summary": "這個箱子可以調整容量,最大可以收納_16組_物品。", - "block.create.adjustable_crate.tooltip.condition1": "當你對箱子按右鍵時", - "block.create.adjustable_crate.tooltip.behaviour1": "打開箱子的設定介面", + "block.create.content_observer.tooltip.summary": "偵測_容器_、_管道_或_輸送帶_中,與_過濾器_設定相匹配的_物品_或_流體_", + "block.create.content_observer.tooltip.condition1": "偵測容器時", + "block.create.content_observer.tooltip.behaviour1": "偵測到容器內含_匹配的內容物_時,發出_紅石訊號_", + "block.create.content_observer.tooltip.condition2": "偵測漏斗時", + "block.create.content_observer.tooltip.behaviour2": "偵測到_匹配的物品_被_轉移_時,發出_紅石脈衝_", "block.create.creative_crate.tooltip": "創造板條箱", - "block.create.creative_crate.tooltip.summary": "這個容器可以給臨近的_藍圖大炮_提供無限物品以及燃料 (創造專用物品)", + "block.create.creative_crate.tooltip.summary": "這個容器可以給臨近的_藍圖大炮_提供無限物品以及燃料 (創造模式專屬) ", "block.create.creative_crate.tooltip.condition1": "當標記了物品時", "block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品,並且任何放置到容器中的物品都會被_送入虛空_", + "item.create.creative_blaze_cake.tooltip": "創造熔岩蛋糕", + "item.create.creative_blaze_cake.tooltip.summary": "為您的_烈焰使者_提供特別款待。吃完這個蛋糕後,烈焰使者將_永不耗盡燃料_", + "item.create.creative_blaze_cake.tooltip.condition1": "使用時", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_循環地_更改烈焰使者的燃燒模式", + "block.create.controller_rail.tooltip": "控制鐵軌", - "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。", - "block.create.controller_rail.tooltip.condition1": "被紅石激活時", - "block.create.controller_rail.tooltip.behaviour1": "根據訊號強度_加速_或_減速_經過的礦車。將紅石強度傳播到相鄰的控制鐵軌。", + "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度", + "block.create.controller_rail.tooltip.condition1": "輸入紅石訊號時", + "block.create.controller_rail.tooltip.behaviour1": "根據訊號強度_加速_或_減速_經過的礦車,並將紅石強度傳播到相鄰的控制鐵軌", "item.create.sand_paper.tooltip": "紅砂紙", - "item.create.sand_paper.tooltip.summary": "用來_打磨_物品的砂紙,可以用_機械手_來實現自動化。", + "item.create.sand_paper.tooltip.summary": "用來_打磨_物品的砂紙,可以用_機械手_來實現自動化", "item.create.sand_paper.tooltip.condition1": "使用時", - "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_準心所指_的物品。", + "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_準心所指_的物品", - "item.create.builders_tea.tooltip": "工人茶", - "item.create.builders_tea.tooltip.summary": "神清氣爽的一天,從這杯完美茶飲開始。恢復復_饑餓值_並獲得_加速_效果。", + "item.create.builders_tea.tooltip": "建築工的茶", + "item.create.builders_tea.tooltip.summary": "神清氣爽的一天,從這杯完美茶飲開始。恢復_饑餓值_並獲得_加速_效果", "item.create.refined_radiance.tooltip": "光輝石", - "item.create.refined_radiance.tooltip.summary": "一種用_光輝_鍛造的化合物材料。", + "item.create.refined_radiance.tooltip.summary": "一種用_光輝_鍛造的化合物材料", "item.create.refined_radiance.tooltip.condition1": "工作進度", "item.create.refined_radiance.tooltip.behaviour1": "在未來的更新中會更新更多用途", "item.create.shadow_steel.tooltip": "暗影鋼", - "item.create.shadow_steel.tooltip.summary": "一種用_虛空_鍛造的化合物材料。", + "item.create.shadow_steel.tooltip.summary": "一種用_虛空_鍛造的化合物材料", "item.create.shadow_steel.tooltip.condition1": "工作進度", "item.create.shadow_steel.tooltip.behaviour1": "在未來的更新中會更新更多用途", "item.create.linked_controller.tooltip": "遙控器", - "item.create.linked_controller.tooltip.summary": "提供_六個_連接到相對應_按鍵_的_無線紅石訊號機_ _手持的控制_", - "item.create.linked_controller.tooltip.condition1": "點擊右鍵時", - "item.create.linked_controller.tooltip.behaviour1": "_切換_遙控器,當遙控器啟動時你會失去_移動控制_", - "item.create.linked_controller.tooltip.condition2": "當右鍵時", + "item.create.linked_controller.tooltip.summary": "提供_六個_連接到對應_無線紅石鏈路頻道_的_遙控按鈕_", + "item.create.linked_controller.tooltip.condition1": "當點擊右鍵時", + "item.create.linked_controller.tooltip.behaviour1": "_切換_模式;遙控器啟動時會接管_移動控制_", + "item.create.linked_controller.tooltip.condition2": "當潛行右鍵時", "item.create.linked_controller.tooltip.behaviour2": "打開_設定面板_", - "item.create.linked_controller.tooltip.condition3": "當對無線紅石訊號機點右鍵時", - "item.create.linked_controller.tooltip.behaviour3": "開啟_綁定模式_。按_六個控制鍵_的其中一個來綁定_頻率_到遙控器上", - "item.create.linked_controller.tooltip.condition4": "當對講台按右鍵時", - "item.create.linked_controller.tooltip.behaviour4": "把遙控器放到講台上,可以更方便的控制它。(蹲下右鍵取回)", + "item.create.linked_controller.tooltip.condition3": "當右鍵無線紅石鏈路時", + "item.create.linked_controller.tooltip.behaviour3": "開啟_綁定模式_,按下_六個控制鍵_之一以綁定_頻率_", + "item.create.linked_controller.tooltip.condition4": "當右鍵講台時", + "item.create.linked_controller.tooltip.behaviour4": "把遙控器放到講台上,可以更方便的控制它 (潛行右鍵取回) ", "item.create.diving_helmet.tooltip": "潛水頭盔", "item.create.diving_helmet.tooltip.summary": "和_銅製後背包_一起裝備時可以延長在_水下呼吸_的時間", @@ -1448,22 +2007,39 @@ "item.create.copper_backtank.tooltip.condition2": "當放置時,由轉動來補充驅動", "item.create.copper_backtank.tooltip.behaviour2": "旋轉的速度決定收集_壓縮空氣_的速率", + "block.create.placard.tooltip": "標示牌", + "block.create.placard.tooltip.summary": "用這個精美的牆板將你的_物品_用黃銅_框起來_。對器械安全!", + "block.create.placard.tooltip.condition1": "手持物品右鍵時", + "block.create.placard.tooltip.behaviour1": "_放入_手持的_物品_。若該物品已經存在,則_發出紅石脈衝_", + "block.create.placard.tooltip.condition2": "當點擊左鍵時", + "block.create.placard.tooltip.behaviour2": "_移除_標示牌當前的_物品_", + + "block.create.flywheel.tooltip": "飛輪", + "block.create.flywheel.tooltip.summary": "用雄偉的黃銅飛輪_裝飾_你的_機械_", + "block.create.flywheel.tooltip.condition1": "以動力驅動時", + "block.create.flywheel.tooltip.behaviour1": "開始轉動", + "item.create.diving_boots.tooltip": "潛水鞋", - "item.create.diving_boots.tooltip.summary": "一雙_沈重的鞋子_,提供更好的水下移動", + "item.create.diving_boots.tooltip.summary": "一雙_沈重的鞋子_,可以更順暢地穿越海底", "item.create.diving_boots.tooltip.condition1": "當裝備時", - "item.create.diving_boots.tooltip.behaviour1": "你可以在水下走得更快而且可以跳躍,但是不能游泳。穿著者不會被輸送帶移動。", + "item.create.diving_boots.tooltip.behaviour1": "你可以在水下走得更快而且可以跳躍,但是不能游泳。穿著者不會被輸送帶移動", "item.create.crafting_blueprint.tooltip": "合成藍圖", - "item.create.crafting_blueprint.tooltip.summary": "可以被放置在牆上、地上和天花板。指定一個合成配方,你可以更快速的合成物品。每一格代表一個合成配方", + "item.create.crafting_blueprint.tooltip.summary": "可以被放置在牆上、地上和天花板。指定一個合成配方,你可以更快速的合成物品;每一格代表一個合成配方", "item.create.crafting_blueprint.condition1": "右鍵點擊空格", "item.create.crafting_blueprint.behaviour1": "打開_合成界面_讓你_指定配方_和要顯示的物品", "item.create.crafting_blueprint.condition2": "右鍵點擊編輯過的格子", - "item.create.crafting_blueprint.behaviour2": "根據_物品欄_內的物品_使用_這個_配方_合成。_蹲下_點擊可以一次合成_一組_的物品", + "item.create.crafting_blueprint.behaviour2": "根據_物品欄_內的物品_使用_這個_配方_合成。_潛行右鍵_可以一次合成_一組_的物品", "item.create.minecart_coupling.tooltip": "礦車連軸器", - "item.create.minecart_coupling.tooltip.summary": "將多個_礦車_或運輸結構鏈接在一起,構成雄偉的火車。", - "item.create.minecart_coupling.tooltip.condition1": "作用與礦車時", - "item.create.minecart_coupling.tooltip.behaviour1": "將兩個礦車耦合在一起,在移動時將它們保持_恒定的距離_。", + "item.create.minecart_coupling.tooltip.summary": "將多個_礦車_或運輸結構鏈接在一起,構成雄偉的火車", + "item.create.minecart_coupling.tooltip.condition1": "作用於礦車時", + "item.create.minecart_coupling.tooltip.behaviour1": "將兩個礦車耦合在一起,在移動時將它們保持_恆定的距離_", + + "item.create.experience_nugget.tooltip": "經驗金塊", + "item.create.experience_nugget.tooltip.summary": "_叮!_來自奇妙發明的一點_靈感_", + "item.create.experience_nugget.tooltip.condition1": "使用時", + "item.create.experience_nugget.tooltip.behaviour1": "得到其中包含的_經驗值_", "block.create.peculiar_bell.tooltip": "黃銅鐘", "block.create.peculiar_bell.tooltip.summary": "一個裝飾性的_鐘_,放在_靈魂火_正上方會有意想不到的副作用", @@ -1478,12 +2054,13 @@ "create.ponder.hold_to_ponder": "按住 [%1$s] 來查看此物品的教學", "create.ponder.subject": "本場景的主題", - "create.ponder.pondering": "有關於...", + "create.ponder.pondering": "有關於…", "create.ponder.identify_mode": "暫停模式已啟動\n按 [%1$s] 來取消暫停模式", "create.ponder.associated": "相關物品", "create.ponder.close": "關閉", "create.ponder.identify": "暫停", "create.ponder.next": "下個場景", + "create.ponder.next_up": "接下來:", "create.ponder.previous": "上個場景", "create.ponder.replay": "重播", "create.ponder.think_back": "返回", @@ -1493,72 +2070,74 @@ "create.ponder.categories": "Create 中的分類", "create.ponder.index_description": "點擊其中一個圖像查看和他相關的物品以及方塊", "create.ponder.index_title": "教學首頁", - "create.ponder.shared.movement_anchors": "有了機殼底盤和強力膠就可以移動大型結構", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "潛行 +", - "create.ponder.shared.storage_on_contraption": "與結構相連的儲物空間會自動撿取物品", + "create.ponder.shared.rpm16": "16 RPM", "create.ponder.shared.behaviour_modify_wrench": "使用扳手來調整這個動作", + "create.ponder.shared.storage_on_contraption": "與結構相連的儲物空間會自動撿取物品", + "create.ponder.shared.sneak_and": "潛行 +", "create.ponder.shared.rpm8": "8 RPM", "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "轉速: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "動能產生裝置", - "create.ponder.tag.kinetic_sources.description": "該裝置能夠產生動能", - "create.ponder.tag.contraption_actor": "特殊方塊", - "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.shared.rpm32": "32 RPM", + "create.ponder.shared.rpm16_source": "轉速:16 RPM", + "create.ponder.shared.movement_anchors": "有了機殼底盤和強力膠就可以移動大型結構", "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.tag.contraption_assembly": "方塊連接物件", + "create.ponder.tag.contraption_assembly.description": "此物件用於連接各個零件以便組成一個成品", + "create.ponder.tag.fluids": "流體控制裝置", + "create.ponder.tag.fluids.description": "這些裝置可傳輸並利用流體", + "create.ponder.tag.decoration": "裝飾", + "create.ponder.tag.decoration.description": "這些零件通常用於裝飾", + "create.ponder.tag.windmill_sails": "風車軸承的帆", + "create.ponder.tag.windmill_sails.description": "建造風車時用於產生動能的帆,每個帆對風車產生的效果都是同等的", + "create.ponder.tag.arm_targets": "機械臂的目標物", + "create.ponder.tag.arm_targets.description": "該裝置可作為機械臂的工作目標", + "create.ponder.tag.kinetic_appliances": "動力器械", + "create.ponder.tag.kinetic_appliances.description": "該部件透過動力運作", + "create.ponder.tag.kinetic_sources": "動力源", + "create.ponder.tag.kinetic_sources.description": "該部件能夠產生動力", + "create.ponder.tag.movement_anchor": "運動錨點", + "create.ponder.tag.movement_anchor.description": "允許建立移動裝置的部件,以各種方式為連接的結構設置動畫", + "create.ponder.tag.kinetic_relays": "動力傳輸方塊", + "create.ponder.tag.kinetic_relays.description": "該部件用於傳輸動力", + "create.ponder.tag.contraption_actor": "特殊行為裝置", + "create.ponder.tag.contraption_actor.description": "裝置在移動裝置時表現出特殊行為的方塊", + "create.ponder.tag.creative": "創造模式", + "create.ponder.tag.creative.description": "該裝置無法在生存模式中獲得", + "create.ponder.tag.display_sources": "顯示鏈路的訊號源", + "create.ponder.tag.display_sources.description": "可發送訊號供顯示鏈路讀取的部件或方塊", + "create.ponder.tag.logistics": "傳輸物品", + "create.ponder.tag.logistics.description": "該裝置用於物品的傳輸", + "create.ponder.tag.display_targets": "顯示鏈路的目標", + "create.ponder.tag.display_targets.description": "可接收顯示鏈路的訊號,並處理或顯示訊息的部件或方塊", + "create.ponder.tag.train_related": "鐵道設備", + "create.ponder.tag.train_related.description": "製造或管理火車裝置的零件", "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.analog_lever.text_2": "右鍵以增加紅石訊號強度", + "create.ponder.analog_lever.text_3": "潛行右鍵以降低紅石訊號強度", "create.ponder.andesite_tunnel.header": "使用安山岩物品隧道", "create.ponder.andesite_tunnel.text_1": "安山岩物品隧道可以覆蓋在輸送帶上", - "create.ponder.andesite_tunnel.text_2": "當安山岩物品隧道側邊連接到另一條輸送帶時...", - "create.ponder.andesite_tunnel.text_3": "...隧道將會從經過的整組物品中拿出一個丟到另一條輸送帶上", + "create.ponder.andesite_tunnel.text_2": "當安山岩物品隧道側邊連接到另一條輸送帶時…", + "create.ponder.andesite_tunnel.text_3": "…隧道將會從經過的整組物品中拿出一個丟到另一條輸送帶上", "create.ponder.andesite_tunnel.text_4": "剩餘物品則按照原路輸出", + "create.ponder.auto_schedule.header": "車站與火車調度", + "create.ponder.auto_schedule.text_1": "時刻表可以提供司機員目的地", + "create.ponder.auto_schedule.text_2": "紅石比較器會在有火車時收到訊號", + "create.ponder.auto_schedule.text_3": "火車只能從指定的方向進入車站", + "create.ponder.auto_schedule.text_4": "車站也可以自動分配新的時刻表給司機員", + "create.ponder.auto_schedule.text_5": "置於車站上的時刻表會自動複製給當前的火車", + "create.ponder.auto_schedule.text_6": "與手動調度不同,自動調度並不會使司機員攜帶時刻表在身上", + "create.ponder.basin.header": "在作業盆中處理物品", - "create.ponder.basin.text_1": "作業盆可以放入物品或液體來進行處理", - "create.ponder.basin.text_2": "在每次的處理完成後, 作業盆會試著輸出成品到他的側面下方", - "create.ponder.basin.text_3": "當側面下方有一個有效的容器或設備, 作業盆側面會出現一個輸出嘴", + "create.ponder.basin.text_1": "作業盆可以放入物品或流體來進行處理", + "create.ponder.basin.text_2": "在每次的處理完成後,作業盆會試著輸出成品到他的側面下方", + "create.ponder.basin.text_3": "當側面下方有一個有效的容器或設備,作業盆側面會出現一個輸出嘴", "create.ponder.basin.text_4": "有很多的容器或設備可以觸發上述現象", "create.ponder.basin.text_5": "作業盆輸出的成品會被儲存到該容器或設備內", - "create.ponder.basin.text_6": "如果側面沒有出現輸出嘴, 則作業盆內的成品則不會輸出", + "create.ponder.basin.text_6": "如果側面沒有出現輸出嘴,則作業盆內的成品則不會輸出", "create.ponder.basin.text_7": "這個原理用在產生的成品為下一輪處理的原料時相當有用", "create.ponder.basin.text_8": "期望的成品將會從作業盆中輸出", "create.ponder.basin.text_9": "加裝過濾器可防止未被處理的物品輸出", @@ -1573,7 +2152,7 @@ "create.ponder.belt_connector.header": "使用輸送帶", "create.ponder.belt_connector.text_1": "手持輸送帶對兩根傳動軸右鍵以安裝輸送帶", - "create.ponder.belt_connector.text_2": "不小心點到傳動軸的話可以用潛行+右鍵來取消選取", + "create.ponder.belt_connector.text_2": "不小心點到傳動軸的話可以潛行右鍵來取消選取", "create.ponder.belt_connector.text_3": "輸送帶間只要有空間就能安裝額外的傳動軸", "create.ponder.belt_connector.text_4": "相同輸送帶接出來的傳動軸轉速及轉向會相同", "create.ponder.belt_connector.text_5": "使用扳手可以移除已安裝的傳動軸", @@ -1585,7 +2164,7 @@ "create.ponder.belt_directions.text_3": "2. 輸送帶可以對角連結", "create.ponder.belt_directions.text_4": "3. 輸送帶可以垂直連結", "create.ponder.belt_directions.text_5": "4. 也可以連結在垂直的傳動軸上", - "create.ponder.belt_directions.text_6": "這些都是可以使用的連接方式,輸送帶可以放置的長度為2~20格", + "create.ponder.belt_directions.text_6": "這些都是可以使用的連接方式,輸送帶可以放置的長度為 2 至 20 格", "create.ponder.belt_transport.header": "將輸送帶用於後勤", "create.ponder.belt_transport.text_1": "被啟動的輸送帶能運送物品及實體", @@ -1595,7 +2174,7 @@ "create.ponder.blaze_burner.text_1": "烈焰使者動力爐可以用來加熱作業盆", "create.ponder.blaze_burner.text_2": "你需要餵食可以燃燒的物品來加熱作業盆", "create.ponder.blaze_burner.text_3": "餵食熔岩蛋糕可以讓烈焰使者動力爐加熱到另一個更高的境界", - "create.ponder.blaze_burner.text_4": "使用機械手或機械手臂來將餵食自動化", + "create.ponder.blaze_burner.text_4": "使用機械手或機械臂來將餵食自動化", "create.ponder.brass_funnel.header": "黃銅漏斗", "create.ponder.brass_funnel.text_1": "安山岩漏斗每次只能傳輸一個物品", @@ -1608,24 +2187,24 @@ "create.ponder.brass_tunnel.text_2": "黃銅隧道輸出入口上都有過濾格", "create.ponder.brass_tunnel.text_3": "在輸入口上的過濾器會阻擋不相符的物品", "create.ponder.brass_tunnel.text_4": "在輸出口上的過濾器可依種類整理排列物品", - "create.ponder.brass_tunnel.text_5": "如果數種與過濾相符的物品通過隧道, 隧道的分配模式將決定如何處理這些物品", + "create.ponder.brass_tunnel.text_5": "如果數種與過濾相符的物品通過隧道,隧道的分配模式將決定如何處理這些物品", "create.ponder.brass_tunnel.text_6": "在平行相鄰的輸送帶上,相鄰的黃銅隧道將會成為一組", "create.ponder.brass_tunnel.text_7": "輸入該組內的物品將會採用該組隧道的分配模式輸送", - "create.ponder.brass_tunnel.text_8": "在這個情況下, 物品也能被直接輸入到隧道方塊", + "create.ponder.brass_tunnel.text_8": "在這個情況下,物品也能被直接輸入到隧道方塊", "create.ponder.brass_tunnel_modes.header": "黃銅隧道的分配模式", "create.ponder.brass_tunnel_modes.text_1": "使用扳手來調整隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_10": "'同步輸入' 是一種黃銅隧道的特殊設定", + "create.ponder.brass_tunnel_modes.text_10": "「同步輸入」 是一種黃銅隧道的特殊設定", "create.ponder.brass_tunnel_modes.text_11": "當同組內的所有隧道都有一個可通過的物品時,所有隧道才可輸出物品", "create.ponder.brass_tunnel_modes.text_12": "這確保了同組隧道所在的輸送帶都能以同一速率輸出物品", - "create.ponder.brass_tunnel_modes.text_2": "'分流輸出' 此模式會將物品輸出到該組隧道可用的輸出口", + "create.ponder.brass_tunnel_modes.text_2": "「分流輸出」 此模式會將物品輸出到該組隧道可用的輸出口", "create.ponder.brass_tunnel_modes.text_3": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_4": "'強制分流輸出' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_5": "'輪詢輸入' 模式將會保持整組物品完整性, 然後在有輸出口可以輸出時才輸入物品", + "create.ponder.brass_tunnel_modes.text_4": "「強制分流輸出」 模式不會跳過某個無法輸出物品的輸出口,直到該輸出口可以輸出物品", + "create.ponder.brass_tunnel_modes.text_5": "「輪詢輸入」 模式將會保持整組物品完整性,然後在有輸出口可以輸出時才輸入物品", "create.ponder.brass_tunnel_modes.text_6": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_7": "'強制輪詢輸入' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_8": "'鄰近優先' 模式會將物品輸出到該組隧道離物品輸入口最近的出口", - "create.ponder.brass_tunnel_modes.text_9": "'隨機輸出' 模式會隨機選擇同組隧道的一個輸出口輸出", + "create.ponder.brass_tunnel_modes.text_7": "「強制輪詢輸入」 模式不會跳過某個無法輸出物品的輸出口,直到該輸出口可以輸出物品", + "create.ponder.brass_tunnel_modes.text_8": "「鄰近優先」 模式會將物品輸出到該組隧道離物品輸入口最近的出口", + "create.ponder.brass_tunnel_modes.text_9": "「隨機輸出」 模式會隨機選擇同組隧道的一個輸出口輸出", "create.ponder.cart_assembler.header": "使用礦車裝修站裝修礦車來移動結構", "create.ponder.cart_assembler.text_1": "礦車裝修站會將所有連接到礦車的結構裝在礦車上", @@ -1648,32 +2227,32 @@ "create.ponder.cart_assembler_rails.text_3": "有幾種礦車可以當作錨來使用", "create.ponder.cart_assembler_rails.text_4": "熔爐礦車會盡可能維持熔煉狀態,並會拿取鄰近儲存結構上的燃料", - "create.ponder.chain_drive.header": "使用鏈式傳動箱傳遞動能", - "create.ponder.chain_drive.text_1": "同一排上的鏈式傳動箱會互相傳遞動能", + "create.ponder.chain_drive.header": "使用鏈式傳動箱傳輸動力", + "create.ponder.chain_drive.text_1": "同一排上的鏈式傳動箱會互相傳輸動力", "create.ponder.chain_drive.text_2": "所有傳動軸此時會朝相同方向旋轉", - "create.ponder.chain_drive.text_3": "任一個鏈式傳動箱被旋轉90度時所有鏈式傳動箱仍可正常運作", + "create.ponder.chain_drive.text_3": "任一個鏈式傳動箱被旋轉 90 度時所有鏈式傳動箱仍可正常運作", "create.ponder.chain_gearshift.header": "使用可調式鏈式變速箱來調整轉速", "create.ponder.chain_gearshift.text_1": "未被控制的可調式鏈式變速箱與鏈式傳動箱無異", "create.ponder.chain_gearshift.text_2": "當可調式鏈式變速箱被啟動後,它會把轉速提升兩倍傳至其他鏈式傳動箱", "create.ponder.chain_gearshift.text_3": "當被啟動的可調式鏈式變速箱並不是動能輸入端,則它會把轉速減半", "create.ponder.chain_gearshift.text_4": "上述兩種狀況中,其他鏈式傳動箱都會被可調式鏈式變速箱提升兩倍的轉速", - "create.ponder.chain_gearshift.text_5": "利用紅石訊號的強弱可以調整轉速倍率為x1或x2", + "create.ponder.chain_gearshift.text_5": "利用紅石訊號的強度,轉速倍率可以在 1 至 2 倍之間調整", "create.ponder.chain_gearshift.text_6": "12 RPM", - "create.ponder.chute.header": "使用滑道向下輸送物品", - "create.ponder.chute.text_1": "滑道可以在兩個垂直的儲物空間中輸送物品", + "create.ponder.chute.header": "使用滑槽向下輸送物品", + "create.ponder.chute.text_1": "滑槽可以在兩個垂直的儲物空間中輸送物品", "create.ponder.chute.text_2": "使用扳手可以讓它產生一個觀景窗", - "create.ponder.chute.text_3": "在滑道的側面放置另一個滑道,會產生一個斜狀的滑道", + "create.ponder.chute.text_3": "在滑槽的側面放置另一個滑槽,會產生一個斜狀的滑槽", - "create.ponder.chute_upward.header": "使用滑道向上輸送物品", - "create.ponder.chute_upward.text_1": "在滑道上方或下方使用鼓風機時,物品會根據被向上或向下吹", - "create.ponder.chute_upward.text_2": "裝備MR護目鏡以觀測物品的傳輸方向", - "create.ponder.chute_upward.text_3": "如滑道底端被擋住,則物品只能由側邊進行輸出入", + "create.ponder.chute_upward.header": "使用滑槽向上輸送物品", + "create.ponder.chute_upward.text_1": "在滑槽上方或下方使用鼓風機時,物品會根據被向上或向下吹", + "create.ponder.chute_upward.text_2": "裝備工程師護目鏡以觀測物品的傳輸方向", + "create.ponder.chute_upward.text_3": "如滑槽底端被擋住,則物品只能由側邊進行輸出入", "create.ponder.clockwork_bearing.header": "使用時鐘軸承來建造時鐘結構", "create.ponder.clockwork_bearing.text_1": "時鐘軸承會黏住其前方方塊產生一個時針結構", - "create.ponder.clockwork_bearing.text_2": "在輸入動能後,該結構會依照遊戲時間來旋轉", + "create.ponder.clockwork_bearing.text_2": "在輸入動力後,該結構會依照遊戲時間來旋轉", "create.ponder.clockwork_bearing.text_3": "3:00", "create.ponder.clockwork_bearing.text_4": "4:00", "create.ponder.clockwork_bearing.text_5": "對軸承右鍵會使結構啟動或停止", @@ -1681,43 +2260,50 @@ "create.ponder.clockwork_bearing.text_7": "你必須確保時針分針結構間未被使用強力膠之類的相連零件", "create.ponder.clockwork_bearing.text_8": "分針結構此時將正常運作", - "create.ponder.clutch.header": "使用離合器控制動能", - "create.ponder.clutch.text_1": "離合器能將動能直線傳遞", - "create.ponder.clutch.text_2": "當離合器被啟動,離合器會中斷動能傳遞", + "create.ponder.clutch.header": "使用離合器控制動力", + "create.ponder.clutch.text_1": "離合器能將動力沿直線傳輸", + "create.ponder.clutch.text_2": "當離合器被啟動,離合器會中斷動力傳輸", "create.ponder.cog_speedup.header": "使用大小齒輪來變速", - "create.ponder.cog_speedup.text_1": "大齒輪與小齒輪可以斜向傳遞動能", - "create.ponder.cog_speedup.text_2": "從大齒輪傳遞動能至小齒輪時,轉速加倍", - "create.ponder.cog_speedup.text_3": "從小齒輪傳遞動能至大齒輪時,轉速減半", + "create.ponder.cog_speedup.text_1": "大齒輪與小齒輪可以斜向連接", + "create.ponder.cog_speedup.text_2": "大齒輪帶動小齒輪旋轉時,轉速加倍", + "create.ponder.cog_speedup.text_3": "小齒輪帶動大齒輪旋轉時,轉速減半", - "create.ponder.cogwheel.header": "使用齒輪來傳遞動能", - "create.ponder.cogwheel.text_1": "齒輪會將動力傳遞至臨近的齒輪", + "create.ponder.cogwheel.header": "使用齒輪來傳輸動力", + "create.ponder.cogwheel.text_1": "齒輪會將動力傳輸至臨近的齒輪", "create.ponder.cogwheel.text_2": "以此方式連接的齒輪,旋轉方向相反", - "create.ponder.creative_fluid_tank.header": "創造液體除存罐", - "create.ponder.creative_fluid_tank.text_1": "創造液體除存罐可以提供無限的液體", - "create.ponder.creative_fluid_tank.text_2": "拿著一個液體物品點擊可以設定它", - "create.ponder.creative_fluid_tank.text_3": "現在管線網路可以無限制的從它抽取液體", - "create.ponder.creative_fluid_tank.text_4": "任何被抽進創造液體除存罐的液體都會消失", + "create.ponder.cogwheel_casing.header": "齒輪裝殼", + "create.ponder.cogwheel_casing.text_1": "黃銅或安山岩機殼可用於裝飾齒輪", + "create.ponder.cogwheel_casing.text_2": "裝殼後添加的組件不會與傳動軸相連", + "create.ponder.cogwheel_casing.text_3": "扳手可用於切換連接", - "create.ponder.creative_motor.header": "使用創造馬達產生動能", - "create.ponder.creative_motor.text_1": "創造馬達不僅能夠手動設定輸出動能,而且體積相當小巧", - "create.ponder.creative_motor.text_2": "對其背後面板滾動滾輪,可以改變馬達的轉速", + "create.ponder.creative_fluid_tank.header": "創造流體儲存罐", + "create.ponder.creative_fluid_tank.text_1": "創造流體儲存罐可以提供無限的流體", + "create.ponder.creative_fluid_tank.text_2": "拿著一個流體物品點擊可以設定它", + "create.ponder.creative_fluid_tank.text_3": "現在管線網路可以無限制的從它抽取流體", + "create.ponder.creative_fluid_tank.text_4": "任何被抽進創造流體儲存罐的流體都會消失", + + "create.ponder.creative_motor.header": "使用創造馬達產生動力", + "create.ponder.creative_motor.text_1": "創造馬達不僅能夠手動設定輸出動力,而且體積相當小巧", + "create.ponder.creative_motor.text_2": "對其背後面板滑動滾輪,可以改變馬達的轉速", + + "create.ponder.creative_motor_mojang.header": "Mojang's Enigma", "create.ponder.crushing_wheels.header": "使用粉碎輪處理物品", - "create.ponder.crushing_wheels.text_1": "一對粉碎輪,磨物快又準", - "create.ponder.crushing_wheels.text_2": "接入的動能必須使這兩個輪子契合轉動", + "create.ponder.crushing_wheels.text_1": "一對粉碎輪,可以有效地進行研磨", + "create.ponder.crushing_wheels.text_2": "它們的輸入軸必須使兩個輪子契合的轉動", "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都會被粉碎處理", "create.ponder.crushing_wheels.text_4": "你也可以使用自動化進行物品的輸入以及撿取", "create.ponder.deployer.header": "使用機械手", - "create.ponder.deployer.text_1": "在機械手獲得動能後能夠模仿玩家的各種行為", + "create.ponder.deployer.text_1": "在機械手獲得動力後能夠模仿玩家的各種行為", "create.ponder.deployer.text_10": "對機械手手部右鍵,即可將手上的物品給它使用", "create.ponder.deployer.text_11": "物品也可以自動化輸入到機械手內", "create.ponder.deployer.text_12": "機械手附帶一個過濾格", "create.ponder.deployer.text_13": "當設定了過濾後,只有當它的手中物品與過濾格相符時,它才會工作", - "create.ponder.deployer.text_14": "只有與過濾格相符的物品才可輸入...", - "create.ponder.deployer.text_15": "...不符的物品可被取出來", + "create.ponder.deployer.text_14": "只有與過濾格相符的物品才可輸入…", + "create.ponder.deployer.text_15": "…不符的物品可被取出來", "create.ponder.deployer.text_2": "它只會與它正前方兩格處的位置進行互動", "create.ponder.deployer.text_3": "放在在它面前的方塊不會阻攔它的工作", "create.ponder.deployer.text_4": "機械手可以:", @@ -1728,7 +2314,7 @@ "create.ponder.deployer.text_9": "以及攻擊生物", "create.ponder.deployer_contraption.header": "在裝置上使用機械手", - "create.ponder.deployer_contraption.text_1": "當機械手在移動的結構上時...", + "create.ponder.deployer_contraption.text_1": "當機械手在移動的結構上時…", "create.ponder.deployer_contraption.text_2": "機械手會對每一個經過的方塊使用裝置中任意容器內的物品", "create.ponder.deployer_contraption.text_3": "可以透過過濾格來指定其從存儲空間中抽取的物品", @@ -1736,11 +2322,11 @@ "create.ponder.deployer_modes.text_1": "在設設情況下,機械手模仿玩家的右鍵", "create.ponder.deployer_modes.text_2": "使用扳手可以將模式調整為模仿玩家的左鍵", - "create.ponder.deployer_processing.header": "用機器手處理物品", - "create.ponder.deployer_processing.text_1": "拿著適當物品的機器手可以處理下面的物品", + "create.ponder.deployer_processing.header": "用機械手處理物品", + "create.ponder.deployer_processing.text_1": "拿著適當物品的機械手可以處理下面的物品", "create.ponder.deployer_processing.text_2": "待處理的物品可以是掉落狀態或是被放在置物台上", - "create.ponder.deployer_processing.text_3": "當物品被放在輸送帶上時...", - "create.ponder.deployer_processing.text_4": "機器手會抓住他並且自動處理", + "create.ponder.deployer_processing.text_3": "當物品被放在輸送帶上時…", + "create.ponder.deployer_processing.text_4": "機械手會抓住他並且自動處理", "create.ponder.deployer_redstone.header": "使用紅石控制機械手", "create.ponder.deployer_redstone.text_1": "當機械手收到紅時訊號時會停止工作", @@ -1748,22 +2334,50 @@ "create.ponder.deployer_redstone.text_3": "因此,輸入脈衝訊號可以使其每次只進行一個週期的工作", "create.ponder.depot.header": "使用置物台", - "create.ponder.depot.text_1": "置物台可以被當成一個“靜止的”傳送帶原件使用", - "create.ponder.depot.text_2": "右擊可以手動放置或取下物品", - "create.ponder.depot.text_3": "與傳送帶一樣,它也可以將其內的物品轉送到其他設備中進行加工...", - "create.ponder.depot.text_4": "...同時物品也可以被機械手存取", + "create.ponder.depot.text_1": "置物台可以被當成一個「靜止的」傳送帶原件使用", + "create.ponder.depot.text_2": "右鍵可以手動放置或取下物品", + "create.ponder.depot.text_3": "與傳送帶一樣,它也可以將其內的物品轉送到其他設備中進行加工…", + "create.ponder.depot.text_4": "…同時物品也可以被機械手存取", - "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃燒室", - "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃燒室右擊烈焰人來抓取烈焰人", - "create.ponder.empty_blaze_burner.text_2": "或者,也可以透過右擊烈焰人刷怪籠來填充啟動烈焰人燃燒室", + "create.ponder.display_board.header": "使用顯示板", + "create.ponder.display_board.text_1": "顯示板是可選擇性擴充的標誌", + "create.ponder.display_board.text_2": "它們需要動力才能運作", + "create.ponder.display_board.text_3": "可以透過命名牌顯示文字…", + "create.ponder.display_board.text_4": "…或透過顯示鏈路", + "create.ponder.display_board.text_5": "染料可以應用於顯示板的各行", + "create.ponder.display_board.text_6": "空手點擊可以重設", + + "create.ponder.display_link.header": "設置顯示鏈路", + "create.ponder.display_link.text_1": "顯示鏈路用於可視化動態訊息", + "create.ponder.display_link.text_2": "首先,右鍵目標顯示器…", + "create.ponder.display_link.text_3": "…然後將其放到想要讀取的方塊上", + "create.ponder.display_link.text_4": "打開界面,以選擇和配置想發送的內容", + "create.ponder.display_link.text_5": "顯示器將從鏈路接收訊息", + "create.ponder.display_link.text_6": "並非所有方塊都可以作為訊號源", + "create.ponder.display_link.text_7": "每種相容的方塊都提供獨特的訊息", + "create.ponder.display_link.text_8": "顯示鏈路可以在多種不同的顯示器上運作", + + "create.ponder.display_link_redstone.header": "以紅石控制", + "create.ponder.display_link_redstone.text_1": "接收紅石訊號時,顯示鏈路將停止更新訊息", + "create.ponder.display_link_redstone.text_2": "紅石訊號一旦消失,計時器會重置並立即發送訊息", + "create.ponder.display_link_redstone.text_3": "從訊號源發出的紅石訊號不會造成影響", + + "create.ponder.empty_blaze_burner.header": "使用空的烈焰使者動力爐", + "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰使者動力爐右鍵烈焰使者來抓取烈焰使者", + "create.ponder.empty_blaze_burner.text_2": "或者,也可以透過右鍵烈焰使者刷怪籠來填充啟動烈焰使者動力爐", "create.ponder.empty_blaze_burner.text_3": "這樣,你便有了一個可供部分機器加工的熱源", - "create.ponder.empty_blaze_burner.text_4": "如果是為了美觀,空的烈焰人燃燒室也可以被打火石點燃", + "create.ponder.empty_blaze_burner.text_4": "如果是為了美觀,空的烈焰使者動力爐也可以被打火石點燃", "create.ponder.empty_blaze_burner.text_5": "可以放入靈魂物品將火焰轉化成靈魂火", - "create.ponder.empty_blaze_burner.text_6": "但是,這樣的熱源不足以給機器提加工供足夠的熱量", + "create.ponder.empty_blaze_burner.text_6": "但是,這樣的熱源不足以給機器加工提供足夠的熱量", + + "create.ponder.encased_fluid_pipe.header": "流體管道箱", + "create.ponder.encased_fluid_pipe.text_1": "銅製機殼可以裝飾流體管道", + "create.ponder.encased_fluid_pipe.text_2": "除了遮蔽流體管道以外,流體管道箱並不會改變管道的連接狀態", + "create.ponder.encased_fluid_pipe.text_3": "流體管道箱不會因旁邊新增或移除管道而產生反應", "create.ponder.fan_direction.header": "鼓風機的氣流", - "create.ponder.fan_direction.text_1": "鼓風機使用動能來製造氣流", - "create.ponder.fan_direction.text_2": "流速以及方向由所接收動能的強弱以及方向而定", + "create.ponder.fan_direction.text_1": "鼓風機藉由動力製造氣流", + "create.ponder.fan_direction.text_2": "流速以及方向由輸入軸的強弱以及方向而定", "create.ponder.fan_processing.header": "使用鼓風機加工物品", "create.ponder.fan_processing.text_1": "當氣流吹過熔岩時,氣流會被加熱", @@ -1775,54 +2389,45 @@ "create.ponder.fan_processing.text_7": "鼓風機的轉速對加工的速度沒有影響,只影響氣流的吹拂距離", "create.ponder.fan_processing.text_8": "而那些放置在置物台或者傳送帶上的物品,鼓風機也是可以處理的", - "create.ponder.fan_source.header": "使用鼓風機來產生動能", - "create.ponder.fan_source.text_1": "如鼓風機的扇葉向下朝著熱源放置,鼓風機可以藉此產生動能", - "create.ponder.fan_source.text_2": "當鼓風機接受紅石訊號後,它便會向外供給動能", - - "create.ponder.fluid_pipe_flow.header": "始用銅製管道來移動液體", - "create.ponder.fluid_pipe_flow.text_1": "液體管可以連接兩個或更多的液體來源與目標", + "create.ponder.fluid_pipe_flow.header": "始用銅製管道來移動流體", + "create.ponder.fluid_pipe_flow.text_1": "流體管可以連接兩個或更多的流體來源與目標", "create.ponder.fluid_pipe_flow.text_2": "使用扳手可以在一段直管線上開窗戶", "create.ponder.fluid_pipe_flow.text_3": "有窗戶的管線側面不會連接到其他管線", - "create.ponder.fluid_pipe_flow.text_4": "機械幫浦可以讓管線運輸液體", - "create.ponder.fluid_pipe_flow.text_5": "一開始不會有液體被抽出來", - "create.ponder.fluid_pipe_flow.text_6": "直到兩端被連接起來,才會有液體被抽過去", - "create.ponder.fluid_pipe_flow.text_7": "因此,管線裡不會『物理上的』含有液體", + "create.ponder.fluid_pipe_flow.text_4": "機械幫浦可以讓管線運輸流體", + "create.ponder.fluid_pipe_flow.text_5": "一開始不會有流體被抽出來", + "create.ponder.fluid_pipe_flow.text_6": "直到兩端被連接起來,才會有流體被抽過去", + "create.ponder.fluid_pipe_flow.text_7": "因此,管線裡不會「物理上的」含有流體", - "create.ponder.fluid_pipe_interaction.header": "抽取並填滿液體罐", + "create.ponder.fluid_pipe_interaction.header": "抽取並填滿流體罐", "create.ponder.fluid_pipe_interaction.text_1": "管線網路的終端可以和很多東西互動", "create.ponder.fluid_pipe_interaction.text_2": "任何有意體容量的方塊都可以被抽取和填滿", - "create.ponder.fluid_pipe_interaction.text_3": "在開放端口前的液體源方塊可以被抽走", - "create.ponder.fluid_pipe_interaction.text_4": "當液體被排放出來時會產生新的液體源方塊", + "create.ponder.fluid_pipe_interaction.text_3": "在開放端口前的流體源方塊可以被抽走", + "create.ponder.fluid_pipe_interaction.text_4": "當流體被排放出來時會產生新的流體源方塊", "create.ponder.fluid_pipe_interaction.text_5": "管線也可以直接從其他方塊中抽取流體", - "create.ponder.fluid_tank_sizes.header": "液體罐的尺寸", - "create.ponder.fluid_tank_sizes.text_1": "可以組合液體罐以增加總容量", - "create.ponder.fluid_tank_sizes.text_2": "底部最多可以是 3x3 的正方形 ......", - "create.ponder.fluid_tank_sizes.text_3": "...... 最多可以堆疊 30 層", + "create.ponder.fluid_tank_sizes.header": "流體罐的尺寸", + "create.ponder.fluid_tank_sizes.text_1": "可以組合流體罐以增加總容量", + "create.ponder.fluid_tank_sizes.text_2": "底部最多可以是 3x3 的正方形…", + "create.ponder.fluid_tank_sizes.text_3": "…最多可以堆疊 30 層", "create.ponder.fluid_tank_sizes.text_4": "扳手可以用來開關窗戶", - "create.ponder.fluid_tank_storage.header": "在液體罐中儲存液體", - "create.ponder.fluid_tank_storage.text_1": "液體罐中可儲存大量的液體", - "create.ponder.fluid_tank_storage.text_2": "管線體網路可以從任何一邊抽取或是輸入液體", - "create.ponder.fluid_tank_storage.text_3": "紅石比較器可以輸出液體容量", - "create.ponder.fluid_tank_storage.text_4": "但是,在生存模式你不能直接存入、取出液體", - "create.ponder.fluid_tank_storage.text_5": "你可以用作業盆、分液池或液體灌注器和管線網路互動", - - "create.ponder.flywheel.header": "使用飛輪來產生動能", - "create.ponder.flywheel.text_1": "飛輪和熔爐引擎必須配套使用,方可產生動能", - "create.ponder.flywheel.text_2": "如此產生的動能具有非常大的應力值", - "create.ponder.flywheel.text_3": "使用高爐會使得引擎的效率翻倍", + "create.ponder.fluid_tank_storage.header": "在流體罐中儲存流體", + "create.ponder.fluid_tank_storage.text_1": "流體罐中可儲存大量的流體", + "create.ponder.fluid_tank_storage.text_2": "管線體網路可以從任何一邊抽取或是輸入流體", + "create.ponder.fluid_tank_storage.text_3": "紅石比較器可以輸出流體容量", + "create.ponder.fluid_tank_storage.text_4": "但是,在生存模式你不能直接存入、取出流體", + "create.ponder.fluid_tank_storage.text_5": "你可以用作業盆、分液池或流體灌注器和管線網路互動", "create.ponder.funnel_compat.header": "漏斗的相容性", "create.ponder.funnel_compat.text_1": "漏斗可以與一些其他組件互動", - "create.ponder.funnel_compat.text_2": "動力鋸", + "create.ponder.funnel_compat.text_2": "機械圓鋸機", "create.ponder.funnel_compat.text_3": "置物台", "create.ponder.funnel_compat.text_4": "分液池", "create.ponder.funnel_direction.header": "物流方向", "create.ponder.funnel_direction.text_1": "直接放置時,漏斗會將物品從容器中取出", - "create.ponder.funnel_direction.text_2": "潛行時放置時,漏斗會將物品置入容器中", - "create.ponder.funnel_direction.text_3": "使用扳手可以改變漏斗的存/取模式", + "create.ponder.funnel_direction.text_2": "潛行放置時,漏斗會將物品置入容器中", + "create.ponder.funnel_direction.text_3": "使用扳手可以改變漏斗的存取模式", "create.ponder.funnel_direction.text_4": "對大多數朝向放置的漏斗都具有此特性", "create.ponder.funnel_direction.text_5": "在傳送帶末端放置的漏斗會根據傳送帶的傳動方向存/取物品", @@ -1834,66 +2439,61 @@ "create.ponder.funnel_transfer.header": "直接運輸", "create.ponder.funnel_transfer.text_1": "漏斗無法將物品傳輸到非開放式的物品欄中", - "create.ponder.funnel_transfer.text_2": "溜槽和智慧溜槽更適用於這樣的場景", + "create.ponder.funnel_transfer.text_2": "滑槽和智慧滑槽更適用於這樣的場景", "create.ponder.funnel_transfer.text_3": "水平傳輸也是如此,也許傳送帶更方便快捷", - "create.ponder.furnace_engine.header": "使用熔爐引擎生產動能", - "create.ponder.furnace_engine.text_1": "熔爐引擎會在與其相連熔爐工作時生產動能", - "create.ponder.furnace_engine.text_2": "如此產生的動能具有非常大的應力值", - "create.ponder.furnace_engine.text_3": "使用高爐會使得引擎的效率翻倍", - - "create.ponder.gantry_carriage.header": "使用起重機取物器", - "create.ponder.gantry_carriage.text_1": "起重機取物器可以被放置在起重機杆上,並且可以沿著起重機杆運動", + "create.ponder.gantry_carriage.header": "使用起重機", + "create.ponder.gantry_carriage.text_1": "起重機可以被放置在起重機導軌上,並且可以沿著起重機導軌運動", "create.ponder.gantry_carriage.text_2": "起重機可以移動其黏附的方塊", "create.ponder.gantry_cascaded.header": "串聯起重機", - "create.ponder.gantry_cascaded.text_1": "無需強力膠,取物器便可與起重機杆相連", - "create.ponder.gantry_cascaded.text_2": "即使是在移動的起重機杆上也是如此", - "create.ponder.gantry_cascaded.text_3": "因此,起重機系統可以串聯起來,如此可以影響到多軸向的運動", + "create.ponder.gantry_cascaded.text_1": "無需強力膠,起重機便可與導軌相連", + "create.ponder.gantry_cascaded.text_2": "即使是在移動的起重機導軌上也是如此", + "create.ponder.gantry_cascaded.text_3": "因此,起重機系統可以串聯起來,以在多個軸上運動", "create.ponder.gantry_direction.header": "起重機移動方向", - "create.ponder.gantry_direction.text_1": "起重機杆可以有相反的方向", - "create.ponder.gantry_direction.text_2": "取物器的移動方向取決於起重機杆的方向", - "create.ponder.gantry_direction.text_3": "......以及起重機杆的旋轉方向", - "create.ponder.gantry_direction.text_4": "在旋轉傳遞中,此規則同樣適用", + "create.ponder.gantry_direction.text_1": "導軌可以以相反的方向運作", + "create.ponder.gantry_direction.text_2": "起重機的移動方向取決於導軌的朝向", + "create.ponder.gantry_direction.text_3": "…以及導軌的轉向", + "create.ponder.gantry_direction.text_4": "規則同樣適用於起重機的動力傳輸", - "create.ponder.gantry_redstone.header": "起重機的力傳遞", - "create.ponder.gantry_redstone.text_1": "被紅石訊號啟動的起重機,將不會移動其上的取物器", - "create.ponder.gantry_redstone.text_2": "作為替代,杆上的動能會傳遞到取物器的輸出杆上", + "create.ponder.gantry_redstone.header": "起重機的動力傳輸", + "create.ponder.gantry_redstone.text_1": "以紅石訊號充能導軌,可以讓起重機停止移動", + "create.ponder.gantry_redstone.text_2": "作為替代,導軌上的動力會傳輸到起重機的輸出軸上", - "create.ponder.gantry_shaft.header": "使用起重機杆", - "create.ponder.gantry_shaft.text_1": "起重機杆組成了起重機結構的基礎。與其相接的載物器可以沿著杆進行移動。", - "create.ponder.gantry_shaft.text_2": "起重機結構可以移動與其相接的方塊。", + "create.ponder.gantry_shaft.header": "使用起重機導軌", + "create.ponder.gantry_shaft.text_1": "起重機導軌組成了起重機結構的基礎,與其相接的起重機可以沿著杆進行移動", + "create.ponder.gantry_shaft.text_2": "起重機結構可以移動與其相接的方塊", - "create.ponder.gearbox.header": "使用十字齒輪箱傳遞動能", + "create.ponder.gearbox.header": "使用十字齒輪箱傳輸動力", "create.ponder.gearbox.text_1": "更改旋轉軸,很容易使得整個旋轉體系變得臃腫不堪", "create.ponder.gearbox.text_2": "十字齒輪箱則是替代方案,它的體積更為小巧緊", "create.ponder.gearbox.text_3": "側邊連接的傳動桿,旋轉方向與輸入端一致", "create.ponder.gearbox.text_4": "直線連接的傳動桿,旋轉方向會被反轉", - "create.ponder.gearshift.header": "使用反轉齒輪箱控制動能", + "create.ponder.gearshift.header": "使用反轉齒輪箱控制動力", "create.ponder.gearshift.text_1": "反轉齒輪箱可以直線傳輸旋轉", - "create.ponder.gearshift.text_2": "通入紅石訊號後,輸出端的旋轉方向會被反轉", + "create.ponder.gearshift.text_2": "輸入紅石訊號後,輸出端的旋轉方向會被反轉", - "create.ponder.hand_crank.header": "使用手搖把手產生動能", - "create.ponder.hand_crank.text_1": "玩家可以使用手搖把手來手動產生動能", + "create.ponder.hand_crank.header": "使用手搖把手產生動力", + "create.ponder.hand_crank.text_1": "玩家可以使用手搖把手來手動產生動力", "create.ponder.hand_crank.text_2": "按住右鍵可以逆時針旋轉它", "create.ponder.hand_crank.text_3": "它產生的轉速相對較高", "create.ponder.hand_crank.text_4": "潛行長按右鍵可以順時針旋轉它", - "create.ponder.hose_pulley.header": "使用軟管滑輪抽取、填滿液體", - "create.ponder.hose_pulley.text_1": "軟管滑輪可以用來抽取、填滿大量的液體", + "create.ponder.hose_pulley.header": "使用軟管滑輪抽取、填滿流體", + "create.ponder.hose_pulley.text_1": "軟管滑輪可以用來抽取、填滿大量的流體", "create.ponder.hose_pulley.text_2": "你可以透過輸入轉動來控制軟管的高度", "create.ponder.hose_pulley.text_3": "反轉時可以收回軟管", "create.ponder.hose_pulley.text_4": "另一邊可以連接管線", - "create.ponder.hose_pulley.text_5": "相連的管線網路可以提供液體 ......", - "create.ponder.hose_pulley.text_6": "...... 或是從池子裡抽取液體", + "create.ponder.hose_pulley.text_5": "相連的管線網路可以提供流體…", + "create.ponder.hose_pulley.text_6": "…或是從池子裡抽取流體", "create.ponder.hose_pulley.text_7": "抽取或填滿的速度取決於管線系統的吞吐量", - "create.ponder.hose_pulley_infinite.header": "被動填充和排放大量液體", - "create.ponder.hose_pulley_infinite.text_1": "將軟管滑輪接觸到足夠大的海洋中時 ......", - "create.ponder.hose_pulley_infinite.text_2": "海洋會被視為無限液體源", - "create.ponder.hose_pulley_infinite.text_3": "管線網路可以無限的抽取、排放液體到海洋中而不影響海洋", + "create.ponder.hose_pulley_infinite.header": "被動填充和排放大量流體", + "create.ponder.hose_pulley_infinite.text_1": "將軟管滑輪接觸到足夠大的海洋中時…", + "create.ponder.hose_pulley_infinite.text_2": "海洋會被視為無限流體源", + "create.ponder.hose_pulley_infinite.text_3": "管線網路可以無限的抽取、排放流體到海洋中而不影響海洋", "create.ponder.hose_pulley_level.header": "軟管滑輪抽取、填滿水平面", "create.ponder.hose_pulley_level.text_1": "完全縮回時,軟管滑輪無法操作", @@ -1902,21 +2502,32 @@ "create.ponder.hose_pulley_level.text_4": "而填充工作將由下而上進行將由上而下進行", "create.ponder.hose_pulley_level.text_5": "水平面不會超過軟管末端", - "create.ponder.item_drain.header": "使用分液池清空液體容器", - "create.ponder.item_drain.text_1": "分液池可以從液體容器中清空抽取液體", - "create.ponder.item_drain.text_2": "點擊右鍵可以把你手上的液體倒進去", - "create.ponder.item_drain.text_3": "當從旁邊輸入物品 ......", - "create.ponder.item_drain.text_4": "...... 他會從上方滑過,並清空裡面的液體", - "create.ponder.item_drain.text_5": "現在液體網路可以抽取分液池中的液體了", + "create.ponder.item_drain.header": "使用分液池清空流體容器", + "create.ponder.item_drain.text_1": "分液池可以從流體容器中清空抽取流體", + "create.ponder.item_drain.text_2": "點擊右鍵可以把你手上的流體倒進去", + "create.ponder.item_drain.text_3": "當從旁邊輸入物品…", + "create.ponder.item_drain.text_4": "…他會從上方滑過,並清空裡面的流體", + "create.ponder.item_drain.text_5": "現在流體網路可以抽取分液池中的流體了", - "create.ponder.large_cogwheel.header": "使用大齒輪傳遞動能", + "create.ponder.item_vault_sizes.header": "倉儲的尺寸", + "create.ponder.item_vault_sizes.text_1": "倉儲可以合併,以增加容量", + "create.ponder.item_vault_sizes.text_2": "它們的直徑可達 3 個方塊寬…", + "create.ponder.item_vault_sizes.text_3": "…而長度可以增長到直徑的 3 倍", + + "create.ponder.item_vault_storage.header": "儲存物品至倉儲", + "create.ponder.item_vault_storage.text_1": "倉儲可用於存儲大量物品", + "create.ponder.item_vault_storage.text_2": "但是,不能手動存放或提取內容物", + "create.ponder.item_vault_storage.text_3": "任何用於物品傳輸的部件都可以嵌入…", + "create.ponder.item_vault_storage.text_4": "…並從該容器中提取內容物", + + "create.ponder.large_cogwheel.header": "使用大齒輪傳輸動力", "create.ponder.large_cogwheel.text_1": "大齒輪可以以特定的角度相互連接", "create.ponder.large_cogwheel.text_2": "可以利用大齒輪變更旋轉軸向", "create.ponder.linear_chassis_attachment.header": "使用機殼底盤黏合方塊", "create.ponder.linear_chassis_attachment.text_1": "它的開放面可以變為黏性面", - "create.ponder.linear_chassis_attachment.text_2": "再次點擊黏性面,可以將它的相反面也變得具有黏性", - "create.ponder.linear_chassis_attachment.text_3": "空手潛行右擊可以移除此面的黏性物", + "create.ponder.linear_chassis_attachment.text_2": "再度點擊黏性面,可以將它的相反面也變得具有黏性", + "create.ponder.linear_chassis_attachment.text_3": "空手潛行右鍵可以移除此面的黏性物", "create.ponder.linear_chassis_attachment.text_4": "黏性面可以將此面前方的一長條方塊黏住", "create.ponder.linear_chassis_attachment.text_5": "使用扳手可以精確控制底盤的影響範圍", "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑動滾輪,你可以一次性調節所有底盤的影響範圍", @@ -1928,164 +2539,164 @@ "create.ponder.linear_chassis_group.text_2": "其中的一個底盤若被移動,其餘的底盤也會跟著移動", "create.ponder.linear_chassis_group.text_3": "不同種類的底盤,或者是朝向不一致的底盤,將不會相連", - "create.ponder.mechanical_arm.header": "設定動力臂", - "create.ponder.mechanical_arm.text_1": "你得在放置動力臂之前就設定好它的輸入以及輸出端", - "create.ponder.mechanical_arm.text_2": "手持動力臂右擊某個存儲空間,可以將其指定為目標", - "create.ponder.mechanical_arm.text_3": "再次右擊可以將其在輸入端(藍色)以及輸出端(橙色)之間切換", - "create.ponder.mechanical_arm.text_4": "左擊此組件可以移除選擇", - "create.ponder.mechanical_arm.text_5": "將動力臂放下來後,它會將此前選擇的方塊作為目標", - "create.ponder.mechanical_arm.text_6": "在有效範圍內,機械手臂可以有任意數量的輸出以及輸入端", + "create.ponder.mechanical_arm.header": "設置機械臂", + "create.ponder.mechanical_arm.text_1": "你得在放置機械臂之前就設定好它的輸入以及輸出端", + "create.ponder.mechanical_arm.text_2": "手持機械臂右鍵某個存儲空間,可以將其指定為目標", + "create.ponder.mechanical_arm.text_3": "再度右鍵可以將其在輸入端 (藍色) 以及輸出端 (橙色) 之間切換", + "create.ponder.mechanical_arm.text_4": "左鍵組件可以移除選擇", + "create.ponder.mechanical_arm.text_5": "將機械臂放下來後,它會將此前選擇的方塊作為目標", + "create.ponder.mechanical_arm.text_6": "在有效範圍內,機械臂可以有任意數量的輸出以及輸入端", "create.ponder.mechanical_arm.text_7": "然而,並不是所有的存儲空間可以被直接互動", "create.ponder.mechanical_arm.text_8": "在此情況下,漏斗和置物台可以解決此問題", - "create.ponder.mechanical_arm_filtering.header": "過濾動力臂的輸出端", + "create.ponder.mechanical_arm_filtering.header": "過濾機械臂的輸出端", "create.ponder.mechanical_arm_filtering.text_1": "輸入", "create.ponder.mechanical_arm_filtering.text_2": "輸出", "create.ponder.mechanical_arm_filtering.text_3": "有時,你會想著利用某種過濾限煞車力臂的目標", - "create.ponder.mechanical_arm_filtering.text_4": "動力臂自身並不提供任何過濾選項", - "create.ponder.mechanical_arm_filtering.text_5": "然而,若將黃銅漏斗作為目標,則漏斗的過濾槽則可以應用至動力臂上", - "create.ponder.mechanical_arm_filtering.text_6": "動力臂足夠智慧,它不會去拿取那些它無法分配的物品", + "create.ponder.mechanical_arm_filtering.text_4": "機械臂自身並不提供任何過濾選項", + "create.ponder.mechanical_arm_filtering.text_5": "然而,若將黃銅漏斗作為目標,則漏斗的過濾槽則可以應用至機械臂上", + "create.ponder.mechanical_arm_filtering.text_6": "機械臂足夠聰明,它不會去拿取那些它無法分配的物品", - "create.ponder.mechanical_arm_modes.header": "動力臂的分配模式", + "create.ponder.mechanical_arm_modes.header": "機械臂的分配模式", "create.ponder.mechanical_arm_modes.text_1": "輸入", "create.ponder.mechanical_arm_modes.text_2": "輸出", - "create.ponder.mechanical_arm_modes.text_3": "若動力臂必須在數個有效的輸出端之間作出選擇...", - "create.ponder.mechanical_arm_modes.text_4": "...它會依照自己的設定選擇特定的行為", + "create.ponder.mechanical_arm_modes.text_3": "若機械臂必須在數個有效的輸出端之間作出選擇…", + "create.ponder.mechanical_arm_modes.text_4": "…它會依照自己的設定選擇特定的行為", "create.ponder.mechanical_arm_modes.text_5": "手持扳手對其滑動滾輪,可以改變其設定", "create.ponder.mechanical_arm_modes.text_6": "輪詢調度模式很好理解,即循環輸出至所有有效的輸出端", "create.ponder.mechanical_arm_modes.text_7": "如果某個輸出端無法容納更多物品,則它會被跳過", - "create.ponder.mechanical_arm_modes.text_8": "強制輪詢調度不會跳過任何輸出端,動力臂會一直等待,直到輸出端有空位容納物品輸入", - "create.ponder.mechanical_arm_modes.text_9": "最近優先模式會使得動力臂先將物品輸出至更早被選擇的輸出端", + "create.ponder.mechanical_arm_modes.text_8": "強制輪詢調度不會跳過任何輸出端,機械臂會一直等待,直到輸出端有空位容納物品輸入", + "create.ponder.mechanical_arm_modes.text_9": "最近優先模式會使得機械臂先將物品輸出至更早被選擇的輸出端", - "create.ponder.mechanical_arm_redstone.header": "利用紅石訊號控制動力臂", - "create.ponder.mechanical_arm_redstone.text_1": "通入紅石訊號後,動力臂會停止工作", + "create.ponder.mechanical_arm_redstone.header": "利用紅石訊號控制機械臂", + "create.ponder.mechanical_arm_redstone.text_1": "輸入紅石訊號後,機械臂會停止工作", "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它會完成目前正在進行的工作週期", - "create.ponder.mechanical_arm_redstone.text_3": "因此,通入單次負紅石脈衝可以精確控制動力臂,使其每次只進行單個週期的工作", + "create.ponder.mechanical_arm_redstone.text_3": "因此,輸入單次負紅石脈衝可以精確控制機械臂,使其每次只進行單個週期的工作", - "create.ponder.mechanical_bearing.header": "使用動力軸承移動結構", - "create.ponder.mechanical_bearing.text_1": "動力軸承會與其前方的方塊黏合在一起", - "create.ponder.mechanical_bearing.text_2": "接收到動能後,它會將這一黏合結構組裝為旋轉裝置", + "create.ponder.mechanical_bearing.header": "使用機械軸承移動結構", + "create.ponder.mechanical_bearing.text_1": "機械軸承會與其前方的方塊黏合在一起", + "create.ponder.mechanical_bearing.text_2": "接收到動力後,它會將這一黏合結構組裝為旋轉裝置", - "create.ponder.mechanical_crafter.header": "設置動力合成器", - "create.ponder.mechanical_crafter.text_1": "動力合成器陣列可用於自動化任何合成配方的製作", + "create.ponder.mechanical_crafter.header": "設置機械合成器", + "create.ponder.mechanical_crafter.text_1": "機械合成器陣列可用於自動化任何合成配方的製作", "create.ponder.mechanical_crafter.text_2": "使用扳手可以調控合成器的合成通路", "create.ponder.mechanical_crafter.text_3": "所有的合成通路必須匯集到任意一側的一個出口,整套合成器方可算是設置正確", "create.ponder.mechanical_crafter.text_4": "輸出產物會被放入位於出口的存儲空間中", - "create.ponder.mechanical_crafter.text_5": "動力合成器的運轉需要動能的供應", - "create.ponder.mechanical_crafter.text_6": "右擊合成器正面,可以手動放入物品", + "create.ponder.mechanical_crafter.text_5": "機械合成器的運轉需要動力的供應", + "create.ponder.mechanical_crafter.text_6": "右鍵合成器正面,可以手動放入物品", "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就會開始", - "create.ponder.mechanical_crafter.text_8": "而對於那些沒有完全占滿所有合成器槽位的配方,你可以通入紅石訊號強制開啟合成", + "create.ponder.mechanical_crafter.text_8": "而對於那些沒有完全占滿所有合成器槽位的配方,你可以輸入紅石訊號強制啟動合成", "create.ponder.mechanical_crafter_connect.header": "為合成器連接物品欄", "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自動接受向其輸入的物品", "create.ponder.mechanical_crafter_connect.text_2": "對其背面使用扳手,可以連接合成器", "create.ponder.mechanical_crafter_connect.text_3": "所有相連的合成器可以訪問同一個位置的輸入", - "create.ponder.mechanical_crafter_covers.header": "蓋住動力合成器的合成槽", + "create.ponder.mechanical_crafter_covers.header": "蓋住機械合成器的合成槽", "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要額外的合成器,來補足合成通路上的間隙", "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽蓋板,合成器會在合成進行時的行為就如同一個空的合成槽位", "create.ponder.mechanical_crafter_covers.text_3": "被蓋住的合成器並不會阻斷共享輸入端的影響", "create.ponder.mechanical_drill.header": "使用機械鑽頭破壞方塊", - "create.ponder.mechanical_drill.text_1": "當向其通入動能後,機械鑽頭會破壞它面前的方塊", - "create.ponder.mechanical_drill.text_2": "它的挖掘速度取決於通入的動能轉速", + "create.ponder.mechanical_drill.text_1": "當向其輸入動力後,機械鑽頭會破壞它面前的方塊", + "create.ponder.mechanical_drill.text_2": "它的挖掘速度取決於輸入軸的轉速", "create.ponder.mechanical_drill_contraption.header": "在裝置中使用機械鑽頭", - "create.ponder.mechanical_drill_contraption.text_1": "在運動裝置中使用機械鑽頭時...", - "create.ponder.mechanical_drill_contraption.text_2": "...它會破壞掉它撞上的方塊", + "create.ponder.mechanical_drill_contraption.text_1": "在運動裝置中使用機械鑽頭時…", + "create.ponder.mechanical_drill_contraption.text_2": "…它會破壞掉它撞上的方塊", - "create.ponder.mechanical_harvester.header": "在裝置中使用動力收割機", - "create.ponder.mechanical_harvester.text_1": "在運動裝置中使用動力收割機時...", + "create.ponder.mechanical_harvester.header": "在裝置中使用機械收割機", + "create.ponder.mechanical_harvester.text_1": "在運動裝置中使用機械收割機時…", "create.ponder.mechanical_harvester.text_2": "它會採收其路徑上的作物,並重設這些作物的生長進度", - "create.ponder.mechanical_mixer.header": "使用動力攪拌器處理物品", + "create.ponder.mechanical_mixer.header": "使用機械攪拌器處理物品", "create.ponder.mechanical_mixer.text_1": "使用攪拌器和工作盆,你可以自動化某些合成配方", "create.ponder.mechanical_mixer.text_2": "有效配方包括各種無序合成配方,以及一些額外的配方", - "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃燒室提供熱量", + "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰使者動力爐提供熱量", "create.ponder.mechanical_mixer.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - "create.ponder.mechanical_piston.header": "使用動力活塞移動結構", - "create.ponder.mechanical_piston.text_1": "動力活塞可以移動它前方的方塊", - "create.ponder.mechanical_piston.text_2": "移動速度和方向取決於通入活塞的動能", - "create.ponder.mechanical_piston.text_3": "黏性動力活塞可以將相接的方塊拉回來", + "create.ponder.mechanical_piston.header": "使用機械活塞移動結構", + "create.ponder.mechanical_piston.text_1": "機械活塞可以移動它前方的方塊", + "create.ponder.mechanical_piston.text_2": "移動速度和方向取決於輸入軸", + "create.ponder.mechanical_piston.text_3": "黏性機械活塞可以將相接的方塊拉回來", - "create.ponder.mechanical_piston_modes.header": "動力活塞的移動模式", + "create.ponder.mechanical_piston_modes.header": "機械活塞的移動模式", "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移動的結構就會回退到方塊狀態", "create.ponder.mechanical_piston_modes.text_2": "你也可以將其設定為從不方塊化,或者只在起始位置方塊化", - "create.ponder.mechanical_plough.header": "在裝置中使用動力犁", - "create.ponder.mechanical_plough.text_1": "在運動裝置中使用動力犁時...", - "create.ponder.mechanical_plough.text_2": "...它會破壞掉那些不具有固體碰撞箱的方塊", - "create.ponder.mechanical_plough.text_3": "此外,動力犁可以耕地", - "create.ponder.mechanical_plough.text_4": "...它也可以在不傷害實體的情況下推動它們", + "create.ponder.mechanical_plough.header": "在裝置中使用機械犁", + "create.ponder.mechanical_plough.text_1": "在運動裝置中使用機械犁時…", + "create.ponder.mechanical_plough.text_2": "…它會破壞掉那些不具有固體碰撞箱的方塊", + "create.ponder.mechanical_plough.text_3": "此外,機械犁可以耕地", + "create.ponder.mechanical_plough.text_4": "…它也可以在不傷害實體的情況下推動它們", - "create.ponder.mechanical_press.header": "使用機械液壓機處理物品", - "create.ponder.mechanical_press.text_1": "機械液壓機可以處理位於其下方的物品", + "create.ponder.mechanical_press.header": "使用機械鍛壓機處理物品", + "create.ponder.mechanical_press.text_1": "機械鍛壓機可以處理位於其下方的物品", "create.ponder.mechanical_press.text_2": "在其下方丟入物品,或者將物品放在置物台上,都算作有效的物品輸入", - "create.ponder.mechanical_press.text_3": "若物品被輸入時正位於傳送帶上...", + "create.ponder.mechanical_press.text_3": "若物品被輸入時正位於傳送帶上…", "create.ponder.mechanical_press.text_4": "輥軋機會使物品停下,然後自動處理這一物品", - "create.ponder.mechanical_press_compacting.header": "使用機械液壓機壓縮物品", + "create.ponder.mechanical_press_compacting.header": "使用機械鍛壓機壓縮物品", "create.ponder.mechanical_press_compacting.text_1": "對放置於工作盆內的物品進行輥軋,可以將這些物品壓縮在一起", "create.ponder.mechanical_press_compacting.text_2": "壓縮意指任何同種物品填滿了 2x2 或者 3x3 網格的配方,以及一些額外的配方", - "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃燒室提供熱量", + "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰使者動力爐提供熱量", "create.ponder.mechanical_press_compacting.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - "create.ponder.mechanical_pump_flow.header": "使用機械幫浦抽運送液體", + "create.ponder.mechanical_pump_flow.header": "使用機械幫浦抽運送流體", "create.ponder.mechanical_pump_flow.text_1": "機械幫浦為與其連接的管線提供動力", - "create.ponder.mechanical_pump_flow.text_2": "轉動時,箭頭指向液體的方向", - "create.ponder.mechanical_pump_flow.text_3": "在他後面的網路現在可以抽取液體 ......", - "create.ponder.mechanical_pump_flow.text_4": "...... 當前面的網絡向外傳輸時", - "create.ponder.mechanical_pump_flow.text_5": "反轉輸入的動力可以反轉液體的方向", + "create.ponder.mechanical_pump_flow.text_2": "轉動時,箭頭指向流體的方向", + "create.ponder.mechanical_pump_flow.text_3": "在他後面的網路現在可以抽取流體…", + "create.ponder.mechanical_pump_flow.text_4": "…當前面的網路向外傳輸時", + "create.ponder.mechanical_pump_flow.text_5": "反轉輸入的動力可以反轉流體的方向", "create.ponder.mechanical_pump_flow.text_6": "扳手可以手動調整方向", "create.ponder.mechanical_pump_speed.header": "機械幫浦的吞吐量", "create.ponder.mechanical_pump_speed.text_1": "無論轉速如何,機械幫浦都只能影響相連的 16 個方塊以內的管線", - "create.ponder.mechanical_pump_speed.text_2": "加快旋轉速度會改變液動傳播的速度 ......", - "create.ponder.mechanical_pump_speed.text_3": "...... 以及流體轉移的速度", + "create.ponder.mechanical_pump_speed.text_2": "加快旋轉速度會改變液動傳播的速度…", + "create.ponder.mechanical_pump_speed.text_3": "…以及流體轉移的速度", "create.ponder.mechanical_pump_speed.text_4": "在同一個管線網路中機械幫浦可以結合他們的吞吐量", "create.ponder.mechanical_pump_speed.text_5": "改變它們的方向可以對齊它們的流動方向", - "create.ponder.mechanical_saw_breaker.header": "使用動力鋸伐木", - "create.ponder.mechanical_saw_breaker.text_1": "向其通入動能後,動力鋸可以直接砍伐掉它面前的樹木", + "create.ponder.mechanical_saw_breaker.header": "使用機械圓鋸機伐木", + "create.ponder.mechanical_saw_breaker.text_1": "向其輸入動力後,機械圓鋸機可以直接砍伐掉它面前的樹木", "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵樹,鋸子必須破壞掉樹與地面連接的最後一個方塊", - "create.ponder.mechanical_saw_contraption.header": "在裝置中使用動力鋸", - "create.ponder.mechanical_saw_contraption.text_1": "若在運動裝置中使用動力鋸...", - "create.ponder.mechanical_saw_contraption.text_2": "...它會將撞到它的樹木破壞掉", + "create.ponder.mechanical_saw_contraption.header": "在裝置中使用機械圓鋸機", + "create.ponder.mechanical_saw_contraption.text_1": "若在運動裝置中使用機械圓鋸機…", + "create.ponder.mechanical_saw_contraption.text_2": "…它會將撞到它的樹木破壞掉", - "create.ponder.mechanical_saw_processing.header": "使用動力鋸處理物品", - "create.ponder.mechanical_saw_processing.text_1": "面向朝上的動力鋸可以將物品處理為其變種", - "create.ponder.mechanical_saw_processing.text_2": "處理過後的物品的彈出方向始終與通入鋸中的旋轉轉向相反", - "create.ponder.mechanical_saw_processing.text_3": "鋸子可以", - "create.ponder.mechanical_saw_processing.text_4": "若輸入原料有多種可能產物,你可以用動力鋸上的過濾槽指定只產出某種產物", - "create.ponder.mechanical_saw_processing.text_5": "若沒有使用過濾槽,動力鋸會在各產物中按順序循環輸出", + "create.ponder.mechanical_saw_processing.header": "使用機械圓鋸機處理物品", + "create.ponder.mechanical_saw_processing.text_1": "面朝上方的機械圓鋸機可以加工各種物品", + "create.ponder.mechanical_saw_processing.text_2": "處理後的物品總是逆著機械圓鋸機的轉向移動", + "create.ponder.mechanical_saw_processing.text_3": "機械圓鋸機可以配合輸送帶運駔", + "create.ponder.mechanical_saw_processing.text_4": "當原料有多種可產出的產品時,過濾槽可以指定產品的種類", + "create.ponder.mechanical_saw_processing.text_5": "若沒有使用過濾槽,機械圓鋸機循環的生產可產出的產品", "create.ponder.millstone.header": "使用石磨處理物品", "create.ponder.millstone.text_1": "石磨會對輸入的物品進行磨製", - "create.ponder.millstone.text_2": "在其側邊使用齒輪與其相耦合,方可為其通入動力", + "create.ponder.millstone.text_2": "在其側邊使用齒輪與其相耦合,方可為其輸入動力", "create.ponder.millstone.text_3": "頂部可以丟入或者塞入物品", - "create.ponder.millstone.text_4": "一段時間過後,右擊石磨可以拿出其中的產物", + "create.ponder.millstone.text_4": "一段時間過後,右鍵石磨可以拿出其中的產物", "create.ponder.millstone.text_5": "產物的提取也是可以自動化的", "create.ponder.nixie_tube.header": "使用真空管顯示器", - "create.ponder.nixie_tube.text_1": "通入紅石訊號後,真空管顯示器會顯示出紅石訊號的強度", - "create.ponder.nixie_tube.text_2": "使用命名牌在鐵砧上為其命名,可以自訂它的顯示文本", + "create.ponder.nixie_tube.text_1": "輸入紅石訊號後,真空管顯示器會顯示出紅石訊號的強度", + "create.ponder.nixie_tube.text_2": "使用命名牌在鐵砧上為其命名,可以自訂它的顯示文字", "create.ponder.nixie_tube.text_3": "使用染料右鍵點擊可以上色", "create.ponder.piston_pole.header": "活塞延長杆", - "create.ponder.piston_pole.text_1": "若無相接的延長杆,動力活塞無法移動其他方塊", + "create.ponder.piston_pole.text_1": "若無相接的延長杆,機械活塞無法移動其他方塊", "create.ponder.piston_pole.text_2": "在其背面安裝的延長杆長度,決定了活塞的推動範圍", - "create.ponder.portable_fluid_interface.header": "移動式液體口", - "create.ponder.portable_fluid_interface.text_1": "任何管道線都無法與移動裝置上的液體罐連接", - "create.ponder.portable_fluid_interface.text_2": "該元件可以與液體罐相互作用,而無需停止裝置", + "create.ponder.portable_fluid_interface.header": "移動式流體口", + "create.ponder.portable_fluid_interface.text_1": "任何管道線都無法與移動裝置上的流體罐連接", + "create.ponder.portable_fluid_interface.text_2": "該元件可以與流體罐相互作用,而無需停止裝置", "create.ponder.portable_fluid_interface.text_3": "放置第二個,中間間隔 1 或 2 個方塊", - "create.ponder.portable_fluid_interface.text_4": "每當他們擦身而過時,他們就會建立聯繫", - "create.ponder.portable_fluid_interface.text_5": "啟用時,移動式液體口將代表裝置上的『所有』水箱", - "create.ponder.portable_fluid_interface.text_6": "現在可以輸入液體 ......", - "create.ponder.portable_fluid_interface.text_7": "...... 或從裝置中抽取", - "create.ponder.portable_fluid_interface.text_8": "一段時間沒有液體交換後,裝置將繼續前進", + "create.ponder.portable_fluid_interface.text_4": "每當它們擦身而過時,它們就會建立聯繫", + "create.ponder.portable_fluid_interface.text_5": "啟用時,移動式流體口將代表裝置上的「所有」水箱", + "create.ponder.portable_fluid_interface.text_6": "現在可以輸入流體…", + "create.ponder.portable_fluid_interface.text_7": "…或從裝置中抽取", + "create.ponder.portable_fluid_interface.text_8": "一段時間沒有流體交換後,裝置將繼續前進", "create.ponder.portable_storage_interface.header": "裝置存儲交換", "create.ponder.portable_storage_interface.text_1": "玩家無法與運動裝置內的存儲空間進行互動", @@ -2093,12 +2704,12 @@ "create.ponder.portable_storage_interface.text_3": "放置第二個介面時,記得要與裝置介面相隔 1 格或者 2 格的距離", "create.ponder.portable_storage_interface.text_4": "當它們彼此經過時,它們會連接在一起", "create.ponder.portable_storage_interface.text_5": "連接狀態下,固定側介面便會作為整個裝置的存儲空間代理", - "create.ponder.portable_storage_interface.text_6": "物品會被輸入到裝置內...", - "create.ponder.portable_storage_interface.text_7": "...或是從裝置中提取出來", + "create.ponder.portable_storage_interface.text_6": "物品會被輸入到裝置內…", + "create.ponder.portable_storage_interface.text_7": "…或是從裝置中提取出來", "create.ponder.portable_storage_interface.text_8": "物品交換完畢後,裝置仍然會停留在原地一小會,然後才會繼續前行", "create.ponder.portable_storage_interface_redstone.header": "紅石控制", - "create.ponder.portable_storage_interface_redstone.text_1": "通入紅石訊號可以阻止固定側介面的連接行為", + "create.ponder.portable_storage_interface_redstone.text_1": "輸入紅石訊號可以阻止固定側介面的連接行為", "create.ponder.powered_latch.header": "使用閂鎖器控制訊號", "create.ponder.powered_latch.text_1": "閂鎖器是一種可以用紅石訊號控制的拉杆", @@ -2109,152 +2720,277 @@ "create.ponder.powered_toggle_latch.header": "使用T型正反器控制訊號", "create.ponder.powered_toggle_latch.text_1": "T型正反器是一種可以用紅石訊號控制的拉杆", "create.ponder.powered_toggle_latch.text_2": "後方訊號輸入可以改變它的狀態", - "create.ponder.powered_toggle_latch.text_3": "...開啟或者是關閉", + "create.ponder.powered_toggle_latch.text_3": "…開啟或者是關閉", "create.ponder.powered_toggle_latch.text_4": "你也可以手動切換其狀態", + "create.ponder.pulse_extender.header": "使用脈衝延長器控制訊號", + "create.ponder.pulse_extender.text_1": "脈衝延長器可以延長通過的訊號", + "create.ponder.pulse_extender.text_2": "它們會在短暫延遲後被開啟…", + "create.ponder.pulse_extender.text_3": "…並於設定的延遲過後關閉", + "create.ponder.pulse_extender.text_4": "使用滑鼠滾輪可以設定延遲", + "create.ponder.pulse_extender.text_5": "延遲最長可達 30 分鐘", + "create.ponder.pulse_repeater.header": "使用脈衝中繼器控制訊號", - "create.ponder.pulse_repeater.text_1": "脈衝中繼器會將所有通入的紅石訊號縮減為一次脈衝", + "create.ponder.pulse_repeater.text_1": "脈衝中繼器會在延遲後發出一個短脈衝", + "create.ponder.pulse_repeater.text_2": "使用滑鼠滾輪可以設定延遲", + "create.ponder.pulse_repeater.text_3": "延遲最長可達 30 分鐘", "create.ponder.radial_chassis.header": "使用旋轉底盤黏著方塊", "create.ponder.radial_chassis.text_1": "同一行上的旋轉底盤會相互連接在一起", "create.ponder.radial_chassis.text_2": "當其中的一個底盤被裝置帶動時,其餘的底盤也會被帶動", "create.ponder.radial_chassis.text_3": "底盤的側邊可以變為黏性面", - "create.ponder.radial_chassis.text_4": "再次點擊黏性面,可以讓其所有面都變得帶黏性", - "create.ponder.radial_chassis.text_5": "空手潛行右擊可以移除其上的黏性物", - "create.ponder.radial_chassis.text_6": "若有物品與底盤的黏性面相接觸...", - "create.ponder.radial_chassis.text_7": "...底盤便會與同層且位於半徑內的所有可及方塊黏著在一起", + "create.ponder.radial_chassis.text_4": "再度點擊黏性面,可以讓其所有面都變得帶黏性", + "create.ponder.radial_chassis.text_5": "空手潛行右鍵可以移除其上的黏性物", + "create.ponder.radial_chassis.text_6": "若有物品與底盤的黏性面相接觸…", + "create.ponder.radial_chassis.text_7": "…底盤便會與同層且位於半徑內的所有可及方塊黏著在一起", "create.ponder.radial_chassis.text_8": "使用扳手可以精確指定底盤的影響範圍", "create.ponder.radial_chassis.text_9": "黏性面一側的不可及方塊不會被黏著", - "create.ponder.redstone_contact.header": "接觸式紅石訊號發生器", - "create.ponder.redstone_contact.text_1": "當兩個接觸式紅石訊號發生器面對面時,它們會發出紅石訊號", - "create.ponder.redstone_contact.text_2": "並且,若有一方位於運動裝置上,此特性也能正常生效", + "create.ponder.redstone_contact.header": "接觸式偵測器", + "create.ponder.redstone_contact.text_1": "當兩個接觸式偵測器面對面時,它們會發出紅石訊號", + "create.ponder.redstone_contact.text_2": "若其中一方位於運動裝置上,它們仍正常生效", - "create.ponder.redstone_link.header": "使用無線紅石訊號機", - "create.ponder.redstone_link.text_1": "無線紅石訊號機可以無線傳輸紅石訊號", - "create.ponder.redstone_link.text_2": "潛行右擊可以改變其接收模式", - "create.ponder.redstone_link.text_3": "手持扳手右擊也可以", + "create.ponder.redstone_link.header": "使用無線紅石鏈路", + "create.ponder.redstone_link.text_1": "無線紅石鏈路可以無線傳輸紅石訊號", + "create.ponder.redstone_link.text_2": "潛行右鍵可以改變其接收模式", + "create.ponder.redstone_link.text_3": "手持扳手右鍵也可以", "create.ponder.redstone_link.text_4": "接收端會發出由傳輸端發來的訊號,有效距離為 128 格", "create.ponder.redstone_link.text_5": "在它們所帶的槽位中放上物品,可以為它們指定頻道", "create.ponder.redstone_link.text_6": "只有頻道相互匹配的機方可互通", "create.ponder.rope_pulley.header": "使用繩索滑輪移動結構", - "create.ponder.rope_pulley.text_1": "繩索滑輪在接受動能時可以垂直移動方塊結構", - "create.ponder.rope_pulley.text_2": "移動的方向及速度取決於提供的轉速", + "create.ponder.rope_pulley.text_1": "繩索滑輪在輸入動力時可以垂直移動方塊結構", + "create.ponder.rope_pulley.text_2": "移動的方向及速度取決於輸入軸", "create.ponder.rope_pulley_attachment.header": "繩索滑輪與裝置一同運動", - "create.ponder.rope_pulley_attachment.text_1": "當繩索滑輪本身在裝置中被帶動時...", - "create.ponder.rope_pulley_attachment.text_2": "...它附著在滑輪上的結構會被滑輪拉著一同移動", + "create.ponder.rope_pulley_attachment.text_1": "當繩索滑輪本身在裝置中被帶動時…", + "create.ponder.rope_pulley_attachment.text_2": "…它附著在滑輪上的結構會被滑輪拉著一同移動", "create.ponder.rope_pulley_attachment.text_3": "注意,只有繩索滑輪停止工作時才能被移動", "create.ponder.rope_pulley_modes.header": "繩索滑輪的運動模式", "create.ponder.rope_pulley_modes.text_1": "當繩索滑輪停止運動時,它所附屬的移動結構便會方塊化", "create.ponder.rope_pulley_modes.text_2": "你可以調整整個結構永不方塊化,或者僅在結構的初始位置方塊化", + "create.ponder.rose_quartz_lamp.header": "玫瑰石英燈", + "create.ponder.rose_quartz_lamp.text_1": "玫瑰石英燈由紅石訊號開啟", + "create.ponder.rose_quartz_lamp.text_2": "之後它們會持續發出紅石能量", + "create.ponder.rose_quartz_lamp.text_3": "當多個燈排列成一組…", + "create.ponder.rose_quartz_lamp.text_4": "…訊號會集中到新開啟的燈,其餘的將熄滅", + "create.ponder.rose_quartz_lamp.text_5": "比較器的輸出強度,取決於開啟的燈的距離", + "create.ponder.rose_quartz_lamp.text_6": "也可以透過扳手手動切換", + "create.ponder.rotation_speed_controller.header": "使用轉速控制器", - "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳遞至它上方的大齒輪", + "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳輸至它上方的大齒輪", "create.ponder.rotation_speed_controller.text_2": "在其側面滾動滑鼠滾輪,可以調節輸出轉速", "create.ponder.sail.header": "使用風帆來組裝風車", "create.ponder.sail.text_1": "風帆是製作風車的趁手材料", "create.ponder.sail.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", - "create.ponder.sail.text_3": "手持染料右擊可對其染色", - "create.ponder.sail.text_4": "手持剪刀右擊可剪除帆布,使其變迴風帆框架", + "create.ponder.sail.text_3": "手持染料右鍵可對其染色", + "create.ponder.sail.text_4": "手持剪刀右鍵可剪除帆布,使其變迴風帆框架", "create.ponder.sail_frame.header": "使用風帆框架來組裝風車", "create.ponder.sail_frame.text_1": "風帆框架是製作風車的趁手材料", "create.ponder.sail_frame.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", "create.ponder.sequenced_gearshift.header": "使用可編程齒輪箱來控制轉速", - "create.ponder.sequenced_gearshift.text_1": "可編程齒輪箱能夠根據玩家設置的預設時序表來傳遞旋轉", - "create.ponder.sequenced_gearshift.text_2": "對其右擊可以打開設置面板", + "create.ponder.sequenced_gearshift.text_1": "可編程齒輪箱能夠根據玩家設置的預設時序表來傳輸動力", + "create.ponder.sequenced_gearshift.text_2": "右鍵可以打開設置面板", "create.ponder.sequenced_gearshift.text_3": "接受紅石訊號時,它會開始執行其內部已設定好的時序指令表", - "create.ponder.sequenced_gearshift.text_4": "當完成時序指令表後,它會進入待機狀態,再次接受紅石訊號後,它才會再次執行時序指令表內容", + "create.ponder.sequenced_gearshift.text_4": "當完成時序指令表後,它會進入待機狀態,再度接受紅石訊號後,它才會再度執行時序指令表內容", "create.ponder.sequenced_gearshift.text_5": "紅石比較器可以讀取目前時序指令表完成進度", - "create.ponder.shaft.header": "使用傳動軸來傳送動能", - "create.ponder.shaft.text_1": "傳動軸可以直線傳送動能", + "create.ponder.shaft.header": "使用傳動軸來傳輸動力", + "create.ponder.shaft.text_1": "傳動軸可以直線傳輸動力", "create.ponder.shaft_casing.header": "包裹傳動軸", "create.ponder.shaft_casing.text_1": "黃銅及安山岩機殼可以用來裝飾傳動軸", - "create.ponder.smart_chute.header": "使用智慧滑道來過濾物品", - "create.ponder.smart_chute.text_1": "智慧滑道是一種可以被控制的滑道", - "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,溜槽只會傳輸這一指定標記的物品", + "create.ponder.smart_chute.header": "使用智慧滑槽來過濾物品", + "create.ponder.smart_chute.text_1": "智慧滑槽是一種可以被控制的滑槽", + "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,滑槽只會傳輸這一指定標記的物品", "create.ponder.smart_chute.text_3": "使用滑鼠滾輪可以指定被過濾的物品數量", - "create.ponder.smart_chute.text_4": "通入紅石訊號,智慧溜槽將會完全暫停工作", + "create.ponder.smart_chute.text_4": "輸入紅石訊號,智慧滑槽將會完全暫停工作", - "create.ponder.smart_pipe.header": "使用智慧液體管道控制液體", - "create.ponder.smart_pipe.text_1": "智慧液體管道可以按照液體類型控制液體流", - "create.ponder.smart_pipe.text_2": "當直接放置在源頭時,他們可以指定要提取的液體類型", - "create.ponder.smart_pipe.text_3": "只需用包含所需液體的任何項目右鍵點擊其過濾槽", - "create.ponder.smart_pipe.text_4": "在管網裡時,智慧液體管道只會讓匹配的液體經過", + "create.ponder.smart_pipe.header": "使用智慧流體管道控制流體", + "create.ponder.smart_pipe.text_1": "智慧流體管道可以按照流體類型控制流體流", + "create.ponder.smart_pipe.text_2": "當直接放置在源頭時,它們可以指定要提取的流體類型", + "create.ponder.smart_pipe.text_3": "只需用包含所需流體的任何項目右鍵點擊其過濾槽", + "create.ponder.smart_pipe.text_4": "在管網裡時,智慧流體管道只會讓匹配的流體經過", - "create.ponder.speedometer.header": "使用速度計來監測轉速", - "create.ponder.speedometer.text_1": "速度計能顯示相接組件的轉速", - "create.ponder.speedometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.speedometer.text_3": "紅石比較器可以根據速度計的數值輸出不同強弱的紅石訊號", + "create.ponder.speedometer.header": "使用轉速計來監測轉速", + "create.ponder.speedometer.text_1": "轉速計能顯示相接組件的轉速", + "create.ponder.speedometer.text_2": "當佩戴工程師護目鏡時,可以看到儀表所顯示的更詳細的數據", + "create.ponder.speedometer.text_3": "紅石比較器可以根據轉速計的數值輸出不同強弱的紅石訊號", - "create.ponder.spout_filling.header": "使用液體灌注器填充物品", - "create.ponder.spout_filling.text_1": "液體灌注器可以填充下方的液體容器", - "create.ponder.spout_filling.text_2": "無法手動接觸液體灌注器中的液體", - "create.ponder.spout_filling.text_3": "管道可用於為其提供液體", + "create.ponder.spout_filling.header": "使用流體灌注器填充物品", + "create.ponder.spout_filling.text_1": "流體灌注器可以填充下方的流體容器", + "create.ponder.spout_filling.text_2": "無法手動接觸流體灌注器中的流體", + "create.ponder.spout_filling.text_3": "管道可用於為其提供流體", "create.ponder.spout_filling.text_4": "輸入物品可以是掉落狀態或是被放在置物台上", - "create.ponder.spout_filling.text_5": "當物品放在輸送帶上時 ......", - "create.ponder.spout_filling.text_6": "液體灌注器會停下他並且自動填滿", + "create.ponder.spout_filling.text_5": "當物品放在輸送帶上時…", + "create.ponder.spout_filling.text_6": "流體灌注器會停下他並且自動填滿", "create.ponder.stabilized_bearings.header": "裝置固定朝向", - "create.ponder.stabilized_bearings.text_1": "當動力軸承在結構被帶動時...", - "create.ponder.stabilized_bearings.text_2": "...它會確保它轉盤的垂直朝向不變", - "create.ponder.stabilized_bearings.text_3": "跟預設的一樣,動力軸承會黏著它前方的方塊", + "create.ponder.stabilized_bearings.text_1": "當機械軸承在結構被帶動時…", + "create.ponder.stabilized_bearings.text_2": "…它會確保它轉盤的垂直朝向不變", + "create.ponder.stabilized_bearings.text_3": "跟預設的一樣,機械軸承會黏著它前方的方塊", "create.ponder.stabilized_bearings.text_4": "這種情況下,它所黏著的子結構的垂直朝向也不會改變", + "create.ponder.steam_engine.header": "設置蒸汽機", + "create.ponder.steam_engine.text_1": "蒸汽機可以放置在流體儲存罐上", + "create.ponder.steam_engine.text_10": "Lvl 4", + "create.ponder.steam_engine.text_11": "4 個引擎", + "create.ponder.steam_engine.text_12": "Lvl 8", + "create.ponder.steam_engine.text_13": "8 個引擎", + "create.ponder.steam_engine.text_2": "手持傳動軸右鍵以輸出動力", + "create.ponder.steam_engine.text_3": "給予足夠的熱量、水和鍋爐空間…", + "create.ponder.steam_engine.text_4": "…它們會產生動力", + "create.ponder.steam_engine.text_5": "最低配備為 4 個流體儲存罐", + "create.ponder.steam_engine.text_6": "在烈焰使者動力爐的幫助下,功率可以得到提升", + "create.ponder.steam_engine.text_7": "更高的功率需要更多的熱量、水和空間", + "create.ponder.steam_engine.text_8": "可以使用工程師護目鏡檢查鍋爐的當前功率", + "create.ponder.steam_engine.text_9": "每提升一級功率,可以額外使一個蒸汽機滿負荷輸出", + + "create.ponder.steam_whistle.header": "設置汽笛", + "create.ponder.steam_whistle.text_1": "汽笛可以放置在流體儲存罐上", + "create.ponder.steam_whistle.text_2": "當儲存罐的熱量足夠…", + "create.ponder.steam_whistle.text_3": "…汽笛將被觸發並發出一個音", + "create.ponder.steam_whistle.text_4": "增加汽笛以降低音高", + "create.ponder.steam_whistle.text_5": "使用扳手可以設置音調在三個八度間切換", + "create.ponder.steam_whistle.text_6": "工程師護目鏡可以查看汽笛的音高", + "create.ponder.sticker.header": "使用方塊黏著器來黏取方塊", "create.ponder.sticker.text_1": "方塊黏著器是一個很棒的裝置,他受控於紅石訊號", "create.ponder.sticker.text_2": "當接收到訊號時,他會黏起面前的一個方塊", "create.ponder.sticker.text_3": "如果此時方塊黏著器被移動,被黏到的方塊會跟著移動", - "create.ponder.sticker.text_4": "再次接收到訊號後,黏著器會放下它面前的方塊", + "create.ponder.sticker.text_4": "再度接收到訊號後,黏著器會放下它面前的方塊", - "create.ponder.stressometer.header": "使用動能錶來監測應力", - "create.ponder.stressometer.text_1": "動能錶能顯示目前動能網路內的應力訊息", - "create.ponder.stressometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.stressometer.text_3": "紅石比較器可以根據動能錶的數值輸出不同強弱的紅石訊號", + "create.ponder.stressometer.header": "使用動力計來監測動力", + "create.ponder.stressometer.text_1": "動力計能顯示目前動能網路內的動力訊息", + "create.ponder.stressometer.text_2": "當佩戴工程師護目鏡時,可以看到儀表所顯示的更詳細的數據", + "create.ponder.stressometer.text_3": "紅石比較器可以根據動力計的數值輸出不同強弱的紅石訊號", "create.ponder.super_glue.header": "使用強力膠來黏附方塊", "create.ponder.super_glue.text_1": "強力膠可以在任意兩個方塊間使用", - "create.ponder.super_glue.text_2": "當被黏合的方塊被組裝為裝置時,他們會一起運動", - "create.ponder.super_glue.text_3": "當強力膠在副手時...", - "create.ponder.super_glue.text_4": "...新放置的方塊會自動被黏附在所放置方塊的面上", - "create.ponder.super_glue.text_5": "左擊可以清除強力膠", + "create.ponder.super_glue.text_2": "當被黏合的方塊被組裝為裝置時,它們會一起運動", + "create.ponder.super_glue.text_3": "當強力膠在副手時…", + "create.ponder.super_glue.text_4": "…新放置的方塊會自動被黏附在所放置方塊的面上", + "create.ponder.super_glue.text_5": "左鍵可以清除強力膠", + "create.ponder.super_glue.text_6": "附掛在其他方塊之上的方塊通常不需要使用強力膠", - "create.ponder.valve_handle.header": "使用閥門手輪產生動能", - "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪來產生動能", - "create.ponder.valve_handle.text_2": "右擊可使它逆時針旋轉", + "create.ponder.track_chunks.header": "通過未加載的區塊", + "create.ponder.track_chunks.text_1": "軌道在未加載的區塊仍會運作", + "create.ponder.track_chunks.text_2": "火車可以順利的通過未被加載的區域", + "create.ponder.track_chunks.text_3": "它們仍會在車站及紅色信號處停止", + "create.ponder.track_chunks.text_4": "但是機械鑽頭與其他車載機器會停止運作", + "create.ponder.track_chunks.text_5": "一旦接近玩家火車將重新出現", + + "create.ponder.track_observer.header": "偵測火車", + "create.ponder.track_observer.text_1": "選取一個火車軌道並將火車感測器放在旁邊", + "create.ponder.track_observer.text_2": "感測器會檢測所有經過標記的火車", + "create.ponder.track_observer.text_3": "感測器可以設定為當比對到特定貨物時才啟動", + + "create.ponder.track_placement.header": "鋪設火車軌道", + "create.ponder.track_placement.text_1": "一種專為火車裝置設計的新型鐵軌", + "create.ponder.track_placement.text_2": "若要同時鋪設多條軌道,右鍵點擊已鋪設的軌道", + "create.ponder.track_placement.text_3": "然後選擇或放置第二個軌道", + "create.ponder.track_placement.text_4": "軌道也可以鋪設成彎道或斜坡", + "create.ponder.track_placement.text_5": "軌道在連接時會嘗試讓每個彎道的大小相等", + "create.ponder.track_placement.text_6": "連接時按住衝刺鍵…", + "create.ponder.track_placement.text_7": "…將創建最長且適合的彎道", + "create.ponder.track_placement.text_8": "副手持有的材料會自動鋪設在軌道下方", + + "create.ponder.track_portal.header": "軌道與地獄", + "create.ponder.track_portal.text_1": "對著地獄傳送門鋪設軌道…", + "create.ponder.track_portal.text_2": "…將嘗試在另一邊的傳送門鋪設成對的軌道", + "create.ponder.track_portal.text_3": "現在這條軌道上的火車可以跨次元旅行", + + "create.ponder.train_assembly.header": "組裝火車", + "create.ponder.train_assembly.text_1": "選擇一截軌道並在旁邊設置車站", + "create.ponder.train_assembly.text_10": "每列火車都需要安裝火車控制台", + "create.ponder.train_assembly.text_11": "可選擇安裝第二個控制台讓火車從車站的兩個方向出發", + "create.ponder.train_assembly.text_12": "開啟車站介面並確認組裝", + "create.ponder.train_assembly.text_13": "火車只能在車站拆解成方塊", + "create.ponder.train_assembly.text_14": "地圖會在車站的位置畫上標記", + "create.ponder.train_assembly.text_15": "組裝好的火車可以用扳手重新設置到相鄰的軌道", + "create.ponder.train_assembly.text_2": "車站是軌道網的路徑點", + "create.ponder.train_assembly.text_3": "開啟UI並切換到組裝模式以打造新火車", + "create.ponder.train_assembly.text_4": "在組裝時,時刻表上的火車不會接近此車站", + "create.ponder.train_assembly.text_5": "在軌道上設置火車機殼以創建新的轉向架", + "create.ponder.train_assembly.text_6": "再度點擊軌道以循環改變轉向架種類", + "create.ponder.train_assembly.text_7": "用強力膠連接方塊", + "create.ponder.train_assembly.text_8": "若組裝好的火車可在安裝於上的箱子或桶子中找到燃料,可以移動得更快速", + "create.ponder.train_assembly.text_9": "保險庫中的燃料不會被火車消耗", + + "create.ponder.train_controls.header": "控制火車", + "create.ponder.train_controls.text_1": "每列火車都需要火車控制台", + "create.ponder.train_controls.text_2": "組裝好後右鍵點擊控制台開始駕駛", + "create.ponder.train_controls.text_3": "使用移動鍵加速及導引火車方向", + "create.ponder.train_controls.text_4": "可以用滑鼠滾輪微調極速", + "create.ponder.train_controls.text_5": "按住空白鍵以接近最近的車站", + "create.ponder.train_controls.text_6": "火車只能在車站被拆解成方塊", + "create.ponder.train_controls.text_7": "安裝的汽笛可以按衝刺鍵觸發", + "create.ponder.train_controls.text_8": "潛行或再度點擊可以停止控制火車", + + "create.ponder.train_schedule.header": "使用火車時刻表", + "create.ponder.train_schedule.text_1": "時刻表讓其他司機員可以控制列車", + "create.ponder.train_schedule.text_2": "將時刻表拿在手上右鍵開啟介面", + "create.ponder.train_schedule.text_3": "計畫完成後就可以將時刻表給司機員", + "create.ponder.train_schedule.text_4": "任何坐在火車控制台前的生物及烈焰使者動力爐,都是合格的司機員", + "create.ponder.train_schedule.text_5": "用栓繩拴住生物可以使牠們更方便地坐上座位", + "create.ponder.train_schedule.text_6": "時刻表可以隨時從司機員身上回收", + + "create.ponder.train_signal_placement.header": "設置火車訊號機", + "create.ponder.train_signal_placement.text_1": "選擇一截軌道並在旁邊設置訊號機", + "create.ponder.train_signal_placement.text_2": "訊號機會控制非玩家駕駛的火車", + "create.ponder.train_signal_placement.text_3": "被調度的火車不會以反方向穿越訊號", + "create.ponder.train_signal_placement.text_4": "…除非添加第二個反方向的訊號", + "create.ponder.train_signal_placement.text_5": "連接真空管顯示器可以讓訊號燈更顯眼", + + "create.ponder.train_signal_redstone.header": "訊號與紅石", + "create.ponder.train_signal_redstone.text_1": "紅石訊號會使訊號機保持紅色", + "create.ponder.train_signal_redstone.text_2": "相反地,紅色訊號會使紅石比較器輸出紅石訊號", + + "create.ponder.train_signal_signaling.header": "使用訊號避免相撞", + "create.ponder.train_signal_signaling.text_1": "火車訊號機將一條軌道分成許多區間", + "create.ponder.train_signal_signaling.text_2": "若一個區間被占用,則不允許其他火車進入該區間", + "create.ponder.train_signal_signaling.text_3": "因此每個區間只能同時有一列火車", + "create.ponder.train_signal_signaling.text_4": "扳手可以設定第二種訊號模式", + "create.ponder.train_signal_signaling.text_5": "黃銅訊號區間通常會產生標準訊號", + "create.ponder.train_signal_signaling.text_6": "這種特殊訊號會讓火車在第二種情形下停止", + "create.ponder.train_signal_signaling.text_7": "它會使火車在進入區間時停止…", + "create.ponder.train_signal_signaling.text_8": "…讓火車無法離開這個區間", + "create.ponder.train_signal_signaling.text_9": "這協助排隊等候的火車遠離繁忙的區間", + + "create.ponder.valve_handle.header": "使用閥門手輪產生動力", + "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪以產生動力", + "create.ponder.valve_handle.text_2": "右鍵可使它逆時針旋轉", "create.ponder.valve_handle.text_3": "它的轉速慢而精確", - "create.ponder.valve_handle.text_4": "潛行右擊可使它順時針旋轉", + "create.ponder.valve_handle.text_4": "潛行右鍵可使它順時針旋轉", "create.ponder.valve_handle.text_5": "可以透過染色來美化閥門手輪", - "create.ponder.valve_pipe.header": "使用液體閥門控制液體流量", - "create.ponder.valve_pipe.text_1": "閥門管道有助於控制通過管線網路傳播的液體", - "create.ponder.valve_pipe.text_2": "用轉動輸入控制現在是否允許液體通過", - "create.ponder.valve_pipe.text_3": "打開方向旋轉,液體閥門將會打開", + "create.ponder.valve_pipe.header": "使用流體閥門控制流體流量", + "create.ponder.valve_pipe.text_1": "閥門管道有助於控制通過管線網路傳輸的流體", + "create.ponder.valve_pipe.text_2": "它們的轉軸控制了流體是否允許通過", + "create.ponder.valve_pipe.text_3": "沿開啟的方向旋轉,流體閥門將會打開", "create.ponder.valve_pipe.text_4": "反方向的旋轉會關閉閥門", - "create.ponder.water_wheel.header": "使用水車產生動能", - "create.ponder.water_wheel.text_1": "水車利用臨近的水流來進行應力發生", - "create.ponder.water_wheel.text_2": "水車接觸水流的麵越多,它的轉速越高", + "create.ponder.water_wheel.header": "使用水車產生動力", + "create.ponder.water_wheel.text_1": "水車利用臨近的水流產生動力", + "create.ponder.water_wheel.text_2": "水車接觸水流的面越多,它的轉速越高", "create.ponder.water_wheel.text_3": "水車葉片應逆著水流方向擺放", "create.ponder.water_wheel.text_4": "如果順著水流擺放,它的效率則會降低", "create.ponder.weighted_ejector.header": "使用彈射置物台", - "create.ponder.weighted_ejector.text_1": "手持彈射置物台時,潛行時右擊可以設置彈射目標位置", + "create.ponder.weighted_ejector.text_1": "手持彈射置物台時,潛行右鍵可以設置彈射目標位置", "create.ponder.weighted_ejector.text_10": "現在,只有等被放置的物品數量等於所設定數量時,彈射置物台才會彈射物品", "create.ponder.weighted_ejector.text_11": "當其他實體站在彈射置物台上時會被直接彈射", "create.ponder.weighted_ejector.text_2": "現在,放置下的彈射置物台會將物品彈射至目標位置", "create.ponder.weighted_ejector.text_3": "限制範圍內的任意距離和高度均可作為有效目標地點", "create.ponder.weighted_ejector.text_4": "但是,目標位置與置物台的連線,必須垂直於置物台的側面", "create.ponder.weighted_ejector.text_5": "如果沒有設置有效目標位置,彈射置物台會直接將其前方一格設為默認目標位置", - "create.ponder.weighted_ejector.text_6": "提供動能可為其蓄力", + "create.ponder.weighted_ejector.text_6": "提供動力可為其蓄力", "create.ponder.weighted_ejector.text_7": "蓄力完畢後,放置在它上方的物品會被立刻彈射出去", "create.ponder.weighted_ejector.text_8": "如果目標為容器,則彈射置物台會等待容器有位置後再彈射物品", "create.ponder.weighted_ejector.text_9": "使用扳手可以調整彈射所要求的物品數量", @@ -2265,22 +3001,23 @@ "create.ponder.weighted_ejector_tunnel.header": "使用彈射置物台來分流物品", "create.ponder.weighted_ejector_tunnel.text_1": "與黃銅隧道搭配使用時,彈射置物台可以將物品以特定數量進行分流", - "create.ponder.weighted_ejector_tunnel.text_2": "首先,將黃銅隧道調整為“最近優先”模式,從而讓它優先側面輸出", + "create.ponder.weighted_ejector_tunnel.text_2": "首先,將黃銅隧道調整為「最近優先」模式,從而讓它優先側面輸出", "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所設置的物品數量則為被分流出去的物品數量", - "create.ponder.weighted_ejector_tunnel.text_4": "當所設置的物品數量被分流出去後...", - "create.ponder.weighted_ejector_tunnel.text_5": "...剩餘的物品則會繼續前進", + "create.ponder.weighted_ejector_tunnel.text_4": "當所設置的物品數量被分流出去後…", + "create.ponder.weighted_ejector_tunnel.text_5": "…剩餘的物品則會繼續前進", - "create.ponder.windmill_source.header": "使用風車軸承產生動能", - "create.ponder.windmill_source.text_1": "風車軸承會黏著它面前的方塊結構", - "create.ponder.windmill_source.text_2": "如果黏著的方塊結構包含足夠的風帆方塊即為風車", - "create.ponder.windmill_source.text_3": "右鍵啟動風車後,風車開始提供動能", - "create.ponder.windmill_source.text_4": "產生的動能將取決於所黏風帆方塊之數量", - "create.ponder.windmill_source.text_5": "使用扳手來調整其旋轉方向", - "create.ponder.windmill_source.text_6": "對風車軸承右鍵可使其停止方便你維修風車", + "create.ponder.windmill_source.header": "使用風車軸承產生動力", + "create.ponder.windmill_source.text_1": "風車軸承會黏住它面前的結構", + "create.ponder.windmill_source.text_2": "藉由強力膠建造可動結構", + "create.ponder.windmill_source.text_3": "如果該結構包含足夠多的風帆,他能作為風車運作", + "create.ponder.windmill_source.text_4": "右鍵啟動風車後,風車軸承將提供動力", + "create.ponder.windmill_source.text_5": "風帆的數量決定了旋轉的轉速", + "create.ponder.windmill_source.text_6": "使用扳手來調整其旋轉方向", + "create.ponder.windmill_source.text_7": "對風車軸承右鍵可使其停止,方便你維修風車", "create.ponder.windmill_structure.header": "風車結構", - "create.ponder.windmill_structure.text_1": "任一包含至少8個風帆方塊的結構即為有效的風車", + "create.ponder.windmill_structure.text_1": "任一包含至少 8 個風帆方塊的結構即為有效的風車", "_": "Thank you for translating Create!" -} +} \ No newline at end of file From b8884fabad063549c347c46117a2e091afc4a732 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 13 Aug 2022 14:52:53 +0200 Subject: [PATCH 20/32] PR Datagen --- src/generated/resources/.cache/cache | 21 +- .../resources/assets/create/lang/en_us.json | 116 +- .../assets/create/lang/unfinished/es_cl.json | 94 +- .../assets/create/lang/unfinished/fr_fr.json | 114 +- .../assets/create/lang/unfinished/ja_jp.json | 1788 ++++----- .../assets/create/lang/unfinished/nl_nl.json | 116 +- .../assets/create/lang/unfinished/pt_pt.json | 94 +- .../assets/create/lang/unfinished/ro_ro.json | 94 +- .../assets/create/lang/unfinished/ru_ru.json | 898 ++--- .../assets/create/lang/unfinished/uk_ua.json | 3027 +++++++++++++++ .../assets/create/lang/unfinished/zh_cn.json | 10 +- .../assets/create/lang/unfinished/zh_tw.json | 3296 ++++++++--------- .../assets/create/lang/{uk_ua => uk_ua.json} | 0 13 files changed, 6348 insertions(+), 3320 deletions(-) create mode 100644 src/generated/resources/assets/create/lang/unfinished/uk_ua.json rename src/main/resources/assets/create/lang/{uk_ua => uk_ua.json} (100%) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 5e99bd512..3dd959ef5 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -559,22 +559,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -7af10a14db169232d2bc4a564e7e2f204f7de8fc assets/create/lang/en_us.json +b093292a09f18cce236ddb4ab0461891c5a70fe6 assets/create/lang/en_us.json 603af7f8a80b09da7ef5765f2aa863bbef1fc8ea assets/create/lang/unfinished/de_de.json -83e92f5c2516919b59b4d015814ce3f0cdaca948 assets/create/lang/unfinished/es_cl.json +48858781b80b77a0d00b6fab733482ae4a9115fc assets/create/lang/unfinished/es_cl.json ee47168049448ffa0959210d8f06b8f4b7219c85 assets/create/lang/unfinished/es_es.json -ceea8ef9caee6d0eafa27f0d6c959d732a544f52 assets/create/lang/unfinished/fr_fr.json +8fd4488ce0579f7b71a7cf20fe5556cdbb515834 assets/create/lang/unfinished/fr_fr.json d4266c22c1265a2ef0784a13b223e4bb17ec11d0 assets/create/lang/unfinished/it_it.json -b17fe248508a55a47ab7b685ee72f5aec199bd48 assets/create/lang/unfinished/ja_jp.json +6578c40b206d61ac0aad1311d02c9bdbcd5f9d45 assets/create/lang/unfinished/ja_jp.json f642160ce3c6ffe0ded12c7e05a15cb6536c4def assets/create/lang/unfinished/ko_kr.json -b63513673554b0ed939ef66f65896be678e8c0d2 assets/create/lang/unfinished/nl_nl.json +fdc3bda8618e963b6023af13caa0050f48ba0c26 assets/create/lang/unfinished/nl_nl.json c498bb7eb6f030b7b4934882e8bfc418dd8f6174 assets/create/lang/unfinished/pl_pl.json b9e51c59ae50ae274d0c56f60803d8a397524547 assets/create/lang/unfinished/pt_br.json -bb1b327b6a0ffd6fb416f78a276b4269071d50c0 assets/create/lang/unfinished/pt_pt.json -823a9e54460d3840a089ea04ed8c97b9d62ca4d5 assets/create/lang/unfinished/ro_ro.json -eb144197fc255fef12b57c8aa82789d93737f144 assets/create/lang/unfinished/ru_ru.json -1fba9ab348aa9cbae212657aeec53f577aca19ab assets/create/lang/unfinished/zh_cn.json -fadbc9906e1859f62e451d3b89e210c9b8b7a4c4 assets/create/lang/unfinished/zh_tw.json +2b1ecada0e99852d604fd718e6ef87dbaff180e6 assets/create/lang/unfinished/pt_pt.json +71d01c97da2fd3c15576fb183871833b272174bf assets/create/lang/unfinished/ro_ro.json +6be78dc74952189c50f70df3182c3614cd49fdec assets/create/lang/unfinished/ru_ru.json +573a499be537300fb93d254b45923de80978d434 assets/create/lang/unfinished/uk_ua.json +2e6e637071b2ea70de178c77fe8b85544cc89a6b assets/create/lang/unfinished/zh_cn.json +5ec18f7aee828e35dcf76d491b26d76fc81b010e assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 0e9bf4a3a..2da1a5d09 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -666,28 +666,28 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Welcome to Create", - "advancement.create.root.desc": "Here be Contraptions", + "advancement.create.root.desc": "Here Be Contraptions", "advancement.create.andesite_alloy": "Sturdier Rocks", "advancement.create.andesite_alloy.desc": "Obtain some Andesite Alloy, Create's most important resource", "advancement.create.andesite_casing": "The Andesite Age", - "advancement.create.andesite_casing.desc": "Apply Andesite Alloy to wood creating a basic casing for your machines", - "advancement.create.mechanical_press": "Bonk", + "advancement.create.andesite_casing.desc": "Apply Andesite Alloy to stripped wood, creating a basic casing for your machines", + "advancement.create.mechanical_press": "Bonk!", "advancement.create.mechanical_press.desc": "Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "Wind maker", - "advancement.create.encased_fan.desc": "Place and activate an Encased Fan", + "advancement.create.encased_fan": "Wind Maker", + "advancement.create.encased_fan.desc": "Place and power an Encased Fan", "advancement.create.fan_processing": "Processing by Particle", "advancement.create.fan_processing.desc": "Use an Encased Fan to process materials", - "advancement.create.saw_processing": "Workshop's most feared", + "advancement.create.saw_processing": "Workshop's Most Feared", "advancement.create.saw_processing.desc": "Use an upright Mechanical Saw to process materials", "advancement.create.compacting": "Compactification", - "advancement.create.compacting.desc": "Use a Press and a Basin to create less items from more items", + "advancement.create.compacting.desc": "Use a Mechanical Press and a Basin to create fewer items from more", "advancement.create.belt": "Kelp Drive", "advancement.create.belt.desc": "Connect two Shafts with a Mechanical Belt", "advancement.create.funnel": "Airport Aesthetic", "advancement.create.funnel.desc": "Extract or insert items into a container using a Funnel", "advancement.create.chute": "Vertical Logistics", "advancement.create.chute.desc": "Transport some items by Chute", - "advancement.create.mechanical_mixer": "Mixing it up", + "advancement.create.mechanical_mixer": "Mixing It Up", "advancement.create.mechanical_mixer.desc": "Combine ingredients in a Mechanical Mixer", "advancement.create.burner": "Sentient Fireplace", "advancement.create.burner.desc": "Obtain a Blaze Burner", @@ -702,25 +702,25 @@ "advancement.create.super_glue": "Area of Connect", "advancement.create.super_glue.desc": "Super Glue some blocks into a group", "advancement.create.contraption_actors": "Moving with Purpose", - "advancement.create.contraption_actors.desc": "Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "Kitted out", - "advancement.create.wrench_goggles.desc": "Equip Engineer's goggles and a Wrench", + "advancement.create.contraption_actors.desc": "Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "Kitted Out", + "advancement.create.wrench_goggles.desc": "Equip Engineer's Goggles and a Wrench", "advancement.create.stressometer": "Stress for Nerds", - "advancement.create.stressometer.desc": "Get an exact readout with the help of Goggles and a Stressometer", - "advancement.create.cuckoo_clock": "Is it Time?", + "advancement.create.stressometer.desc": "Get an exact readout with the help of Engineer's Goggles and a Stressometer", + "advancement.create.cuckoo_clock": "Is It Time?", "advancement.create.cuckoo_clock.desc": "Witness your Cuckoo Clock announce bedtime", "advancement.create.windmill_maxed": "A Strong Breeze", "advancement.create.windmill_maxed.desc": "Assemble a windmill of maximum strength", "advancement.create.ejector_maxed": "Springboard Champion", - "advancement.create.ejector_maxed.desc": "Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.ejector_maxed.desc": "Get launched more than 30 blocks by a Weighted Ejector", "advancement.create.pulley_maxed": "Rope to Nowhere", "advancement.create.pulley_maxed.desc": "Extend a Rope Pulley over 200 blocks deep", "advancement.create.cart_pickup": "Strong Arms", "advancement.create.cart_pickup.desc": "Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.anvil_plough": "Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "Launch an Anvil with Mechanical ploughs", + "advancement.create.anvil_plough.desc": "Launch an Anvil with Mechanical Ploughs", "advancement.create.lava_wheel_00000": "Magma Wheel", "advancement.create.lava_wheel_00000.desc": "This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.hand_crank_000": "Workout Session", @@ -729,62 +729,62 @@ "advancement.create.belt_funnel_kiss.desc": "Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed": "Perfectly Stressed", "advancement.create.stressometer_maxed.desc": "Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "More Sturdier Rocks", - "advancement.create.copper.desc": "Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.copper": "Cuprum Bokum", + "advancement.create.copper.desc": "Amass some Copper Ingots for your exploits in fluid manipulation", "advancement.create.copper_casing": "The Copper Age", - "advancement.create.copper_casing.desc": "Apply Copper Ingots to wood creating a waterproof casing for your machines", + "advancement.create.copper_casing.desc": "Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines", "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Watch a fluid containing item be filled using a Spout", + "advancement.create.spout.desc": "Watch a fluid-containing item be filled by a Spout", "advancement.create.drain": "Tumble Draining", - "advancement.create.drain.desc": "Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.drain.desc": "Watch a fluid-containing item be emptied by an Item Drain", "advancement.create.steam_engine": "The Powerhouse", - "advancement.create.steam_engine.desc": "Use a Steam engine to generate torque", + "advancement.create.steam_engine.desc": "Use a Steam Engine to generate torque", "advancement.create.steam_whistle": "Voice of an Angel", "advancement.create.steam_whistle.desc": "Activate a Steam Whistle", "advancement.create.backtank": "Pressure to Go", - "advancement.create.backtank.desc": "Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.backtank.desc": "Create a Copper Backtank and make it accumulate air pressure", "advancement.create.diving_suit": "Ready for the Depths", - "advancement.create.diving_suit.desc": "Equip a diving helmet together with your backtank and jump into water", + "advancement.create.diving_suit.desc": "Equip a Diving Helmet and a Copper Backtank, then jump into water", "advancement.create.mechanical_pump_0": "Under Pressure", "advancement.create.mechanical_pump_0.desc": "Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Flow Discovery", "advancement.create.glass_pipe.desc": "Use your Wrench on a pipe that contains a fluid", "advancement.create.water_supply": "Puddle Collector", - "advancement.create.water_supply.desc": "Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.water_supply.desc": "Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", "advancement.create.hose_pulley": "Industrial Spillage", "advancement.create.hose_pulley.desc": "Lower a Hose Pulley and watch it drain or fill a body of fluid", "advancement.create.chocolate_bucket": "A World of Imagination", - "advancement.create.chocolate_bucket.desc": "Obtain a Bucket of Molten Chocolate", + "advancement.create.chocolate_bucket.desc": "Obtain a bucket of molten chocolate", "advancement.create.honey_drain": "Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.honey_drain.desc": "Use pipes to pull honey from a Bee Nest or Beehive", "advancement.create.hose_pulley_lava": "Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "Pump from a body of Lava large enough to be considered infinite", + "advancement.create.hose_pulley_lava.desc": "Pump from a body of lava large enough to be considered infinite", "advancement.create.steam_engine_maxed": "Full Steam", "advancement.create.steam_engine_maxed.desc": "Run a boiler at the maximum level of power", "advancement.create.foods": "Balanced Diet", - "advancement.create.foods.desc": "Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.foods.desc": "Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", "advancement.create.diving_suit_lava": "Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.diving_suit_lava.desc": "Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", "advancement.create.chained_drain": "On a Roll", - "advancement.create.chained_drain.desc": "Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "Don't cross the Streams!", + "advancement.create.chained_drain.desc": "Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "Don't Cross the Streams!", "advancement.create.cross_streams.desc": "Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.pipe_organ": "The Pipe Organ", - "advancement.create.pipe_organ.desc": "Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.pipe_organ.desc": "Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", "advancement.create.brass": "Real Alloys", - "advancement.create.brass.desc": "Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", + "advancement.create.brass.desc": "Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer", "advancement.create.brass_casing": "The Brass Age", - "advancement.create.brass_casing.desc": "Apply Brass Ingots to wood creating a casing for more sophisticated machines", + "advancement.create.brass_casing.desc": "Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines", "advancement.create.rose_quartz": "Pink Diamonds", "advancement.create.rose_quartz.desc": "Polish some Rose Quartz", "advancement.create.deployer": "Artificial Intelligence", - "advancement.create.deployer.desc": "Place and activate a Deployer, the perfect reflection of yourself", + "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself", "advancement.create.precision_mechanism": "Complex Curiosities", "advancement.create.precision_mechanism.desc": "Assemble a Precision Mechanism", "advancement.create.speed_controller": "Engineers Hate Him!", - "advancement.create.speed_controller.desc": "Fine tune your contraption with a Rotation Speed Controller", + "advancement.create.speed_controller.desc": "Fine-tune your Contraption with a Rotation Speed Controller", "advancement.create.mechanical_arm": "Busy Hands", - "advancement.create.mechanical_arm.desc": "Watch your Mechanical Arm transport its first Item", + "advancement.create.mechanical_arm.desc": "Watch your Mechanical Arm transport its first item", "advancement.create.mechanical_crafter": "Automated Assembly", "advancement.create.mechanical_crafter.desc": "Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "A Pair of Giants", @@ -794,7 +794,7 @@ "advancement.create.clockwork_bearing": "Contraption O'Clock", "advancement.create.clockwork_bearing.desc": "Assemble a structure mounted on a Clockwork Bearing", "advancement.create.display_link": "Big Data", - "advancement.create.display_link.desc": "Use a Display link to visualise information", + "advancement.create.display_link.desc": "Use a Display Link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "Defeat an enemy with your Potato Cannon", "advancement.create.extendo_grip": "Boioioing!", @@ -803,54 +803,54 @@ "advancement.create.linked_controller.desc": "Activate a Redstone Link using a Linked Controller", "advancement.create.arm_blaze_burner": "Combust-o-Tron", "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner", - "advancement.create.crusher_maxed_0000": "Crushing it", - "advancement.create.crusher_maxed_0000.desc": "Operate a Pair of Crushing wheels at max speed", + "advancement.create.crusher_maxed_0000": "Crushing It", + "advancement.create.crusher_maxed_0000.desc": "Operate a pair of Crushing Wheels at maximum speed", "advancement.create.arm_many_targets": "Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with ten or more output locations", + "advancement.create.arm_many_targets.desc": "Program a Mechanical Arm with 10 or more output locations", "advancement.create.potato_cannon_collide": "Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.potato_cannon_collide.desc": "Cause Potato Cannon projectiles of different types to collide with each other", "advancement.create.self_deploying": "Self-Driving Cart", "advancement.create.self_deploying.desc": "Create a Minecart Contraption that places tracks in front of itself", "advancement.create.fist_bump": "Pound It, Bro!", "advancement.create.fist_bump.desc": "Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000": "Desperate Measures", "advancement.create.crafter_lazy_000.desc": "Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "To full Extent", - "advancement.create.extendo_grip_dual.desc": "Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "To Full Extent", + "advancement.create.extendo_grip_dual.desc": "Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", "advancement.create.musical_arm": "DJ Mechanico", "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", "advancement.create.sturdy_sheet": "The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.sturdy_sheet.desc": "Assemble a Sturdy Sheet by refining Powdered Obsidian", "advancement.create.train_casing_00": "The Logistical Age", - "advancement.create.train_casing_00.desc": "Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train_casing_00.desc": "Use Sturdy Sheets to create a casing for railway components", "advancement.create.train": "All Aboard!", "advancement.create.train.desc": "Assemble your first Train", "advancement.create.conductor": "Conductor Instructor", - "advancement.create.conductor.desc": "Instruct a Train driver with a Schedule", + "advancement.create.conductor.desc": "Instruct a Train driver with a Train Schedule", "advancement.create.track_signal": "Traffic Control", "advancement.create.track_signal.desc": "Place a Train Signal", "advancement.create.display_board_0": "Dynamic Timetables", "advancement.create.display_board_0.desc": "Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "A new Gauge", + "advancement.create.track_0": "A New Gauge", "advancement.create.track_0.desc": "Obtain some Train Tracks", - "advancement.create.train_whistle": "Choo choo!", + "advancement.create.train_whistle": "Choo Choo!", "advancement.create.train_whistle.desc": "Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_portal": "Dimensional Commuter", - "advancement.create.train_portal.desc": "Ride a train through a Nether Portal", + "advancement.create.train_portal.desc": "Ride a Train through a Nether portal", "advancement.create.track_crafting_factory": "Track Factory", - "advancement.create.track_crafting_factory.desc": "Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.track_crafting_factory.desc": "Produce more than 1000 Train Tracks with the same Mechanical Press", "advancement.create.long_bend": "The Longest Bend", - "advancement.create.long_bend.desc": "Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_bend.desc": "Create a curved track section that spans more than 30 blocks in length", "advancement.create.long_train": "Ambitious Endeavours", - "advancement.create.long_train.desc": "Create a Train with at least six Carriages", + "advancement.create.long_train.desc": "Create a Train with at least 6 carriages", "advancement.create.long_travel": "Field Trip", "advancement.create.long_travel.desc": "Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.train_roadkill": "Road Kill", - "advancement.create.train_roadkill.desc": "Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.train_roadkill.desc": "Run over an enemy with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal": "Expert Driver", - "advancement.create.red_signal.desc": "Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal.desc": "Run a red Train Signal§7\n(Hidden Advancement)", "advancement.create.train_crash": "Terrible Service", - "advancement.create.train_crash.desc": "Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash.desc": "Witness a Train crash as a passenger§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards": "Blind Spot", "advancement.create.train_crash_backwards.desc": "Crash into another Train while driving backwards§7\n(Hidden Advancement)", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 7e64c3997..edf9286e0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -672,23 +672,23 @@ "advancement.create.andesite_alloy.desc": "Los materiales de create tienen nombres raros. La Aleación de Andesita es uno de ellos.", "advancement.create.andesite_casing": "La Edad de la Andesita", "advancement.create.andesite_casing.desc": "Utilice un poco de madera y aleación de andesita para crear una cubierta básica.", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more", "advancement.create.belt": "Unidad de Algas", "advancement.create.belt.desc": "Conecta dos ejes con una cinta mecánica.", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.chute": "Viniendose Abajo", "advancement.create.chute.desc": "Coloca un tolvogán, la contraparte vertical de las cintas mecánicas.", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", @@ -703,25 +703,25 @@ "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench", "advancement.create.stressometer": "Pero, ¿qué tan estresado exactamente?", "advancement.create.stressometer.desc": "Coloca y dale poder a un Estresómetro. Míralo con tus gafas para leer el número exacto.", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", @@ -730,48 +730,48 @@ "advancement.create.belt_funnel_kiss.desc": "Haz que dos ingresos montados en una cinta mecánica se besen.", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation", "advancement.create.copper_casing": "La Edad del Cobre", "advancement.create.copper_casing.desc": "Utiliza planchas de cobre y un poco de madera para crear cubiertas de cobre.", "advancement.create.spout": "Splash", "advancement.create.spout.desc": "Observa cómo se llena un objeto de líquido con un surtidor.", "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Flujo Espía", "advancement.create.glass_pipe.desc": "Observa cómo se propaga el fluido a través de una tubería con ventana. Puedes añadir una ventana a una tubería recta con tu Llave Inglesa.", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", "advancement.create.hose_pulley": "Derrame industrial", "advancement.create.hose_pulley.desc": "Baja una polea manguera y observa cómo drena o llena un cuerpo de fluido.", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", "advancement.create.brass": "Aleaciones de verdad", "advancement.create.brass.desc": "Usa cobre triturado y zinc triturado para crear algo de latón.", "advancement.create.brass_casing": "La Edad del Latón", @@ -795,7 +795,7 @@ "advancement.create.clockwork_bearing": "Contrapción en Punto", "advancement.create.clockwork_bearing.desc": "Ensambla una estructura montada sobre un rodamiento de relojería.", "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information", "advancement.create.potato_cannon": "¡Fwoomp!", "advancement.create.potato_cannon.desc": "Derrota a un enemigo con tu Cañón de Papas.", "advancement.create.extendo_grip": "¡Boioioing!", @@ -804,54 +804,54 @@ "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.arm_blaze_burner": "Combustrón 3001", "advancement.create.arm_blaze_burner.desc": "Instruye a un brazo mecánico para que alimente tu Quemador Blaze.", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed", "advancement.create.arm_many_targets": "Organizatrón 3000", "advancement.create.arm_many_targets.desc": "Programa un brazo mecánico con 10 o más localizaciones de salida.", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.fist_bump": "¡Dame el puño, hermano!", "advancement.create.fist_bump.desc": "Haz que dos Desplegadores se golpeen con el puño.", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", "advancement.create.musical_arm": "¡Póneme mi tema principal!", "advancement.create.musical_arm.desc": "Observa cómo un brazo mecánico opera un tocadiscos.", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components", "advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0": "UNLOCALIZED: A New Gauge", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages", "advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index d1a89c2a2..e0e717886 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -671,24 +671,24 @@ "advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks", "advancement.create.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.", "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to wood creating a basic casing for your machines", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to stripped wood, creating a basic casing for your machines", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more", "advancement.create.belt": "UNLOCALIZED: Kelp Drive", "advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.chute": "UNLOCALIZED: Vertical Logistics", "advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", @@ -703,25 +703,25 @@ "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench", "advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds", - "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Goggles and a Stressometer", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Engineer's Goggles and a Stressometer", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", @@ -730,62 +730,62 @@ "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation", "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to wood creating a waterproof casing for your machines", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines", "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid containing item be filled using a Spout", + "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid-containing item be filled by a Spout", "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery", "advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", "advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage", "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", "advancement.create.brass": "UNLOCALIZED: Real Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", + "advancement.create.brass.desc": "UNLOCALIZED: Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer", "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to wood creating a casing for more sophisticated machines", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines", "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and activate a Deployer, the perfect reflection of yourself", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself", "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine tune your contraption with a Rotation Speed Controller", + "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine-tune your Contraption with a Rotation Speed Controller", "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first Item", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first item", "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", @@ -795,7 +795,7 @@ "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock", "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing", "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information", "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", @@ -804,54 +804,54 @@ "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed", "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations", + "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with 10 or more output locations", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", "advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico", "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components", "advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0": "UNLOCALIZED: A New Gauge", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages", "advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 8acd5879b..931b1f96b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 650", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -13,7 +13,7 @@ "block.create.andesite_encased_large_cogwheel": "安山岩ケース入り大きな歯車", "block.create.andesite_encased_shaft": "安山岩ケース入りシャフト", "block.create.andesite_funnel": "安山岩ファンネル", - "block.create.andesite_ladder": "UNLOCALIZED: Andesite Ladder", + "block.create.andesite_ladder": "安山岩のはしご", "block.create.andesite_pillar": "安山岩の柱", "block.create.andesite_tunnel": "安山岩トンネル", "block.create.asurine": "瑠璃岩", @@ -40,7 +40,7 @@ "block.create.brass_encased_large_cogwheel": "真鍮ケース入り大きな歯車", "block.create.brass_encased_shaft": "真鍮ケース入りシャフト", "block.create.brass_funnel": "真鍮ファンネル", - "block.create.brass_ladder": "UNLOCALIZED: Brass Ladder", + "block.create.brass_ladder": "真鍮のはしご", "block.create.brass_tunnel": "真鍮トンネル", "block.create.brown_nixie_tube": "茶色のニキシー管", "block.create.brown_sail": "茶色の帆", @@ -56,16 +56,16 @@ "block.create.cogwheel": "歯車", "block.create.content_observer": "コンテンツオブザーバー", "block.create.controller_rail": "コントローラーレール", - "block.create.controls": "UNLOCALIZED: Train Controls", + "block.create.controls": "列車運転台", "block.create.copper_backtank": "銅のバックタンク", "block.create.copper_casing": "銅ケーシング", - "block.create.copper_ladder": "UNLOCALIZED: Copper Ladder", + "block.create.copper_ladder": "銅のはしご", "block.create.copper_shingle_slab": "銅の屋根板のハーフブロック", "block.create.copper_shingle_stairs": "銅の屋根板の階段", "block.create.copper_shingles": "銅の屋根板", "block.create.copper_tile_slab": "銅タイルのハーフブロック", "block.create.copper_tile_stairs": "銅タイルの階段", - "block.create.copper_tiles": "銅のタイル", + "block.create.copper_tiles": "銅タイル", "block.create.copper_valve_handle": "銅のバルブハンドル", "block.create.creative_crate": "クリエティブクレート", "block.create.creative_fluid_tank": "クリエイティブ液体タンク", @@ -201,8 +201,8 @@ "block.create.deployer": "デプロイヤー", "block.create.depot": "デポ", "block.create.diorite_pillar": "閃緑岩の柱", - "block.create.display_board": "UNLOCALIZED: Display Board", - "block.create.display_link": "UNLOCALIZED: Display Link", + "block.create.display_board": "ディスプレイボード", + "block.create.display_link": "ディスプレイリンク", "block.create.dripstone_pillar": "鍾乳石の柱", "block.create.encased_chain_drive": "ケース入りチェーンドライブ", "block.create.encased_fan": "ケース入りファン", @@ -213,15 +213,15 @@ "block.create.exposed_copper_tile_slab": "風化した銅タイルのハーフブロック", "block.create.exposed_copper_tile_stairs": "風化した銅タイルの階段", "block.create.exposed_copper_tiles": "風化した銅タイル", - "block.create.fake_track": "UNLOCALIZED: Track Marker for Maps", + "block.create.fake_track": "地図用線路マーカー", "block.create.fluid_pipe": "液体パイプ", "block.create.fluid_tank": "液体タンク", "block.create.fluid_valve": "液体バルブ", "block.create.flywheel": "弾み車", - "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_door": "UNLOCALIZED: Framed Glass Door", - "block.create.framed_glass_pane": "ガラス板窓", - "block.create.framed_glass_trapdoor": "UNLOCALIZED: Framed Glass Trapdoor", + "block.create.framed_glass": "縁付きガラス", + "block.create.framed_glass_door": "縁付きガラスのドア", + "block.create.framed_glass_pane": "縁付きガラス板", + "block.create.framed_glass_trapdoor": "縁付きガラスのトラップドア", "block.create.gantry_carriage": "ガントリーキャリッジ", "block.create.gantry_shaft": "ガントリーシャフト", "block.create.gearbox": "ギアボックス", @@ -248,7 +248,7 @@ "block.create.item_vault": "アイテム保管庫", "block.create.jungle_window": "ジャングルの窓", "block.create.jungle_window_pane": "ジャングルの板窓", - "block.create.large_bogey": "UNLOCALIZED: Large Bogey", + "block.create.large_bogey": "大きな台車", "block.create.large_cogwheel": "大きな歯車", "block.create.layered_andesite": "安山岩の組石", "block.create.layered_asurine": "瑠璃岩の組石", @@ -302,8 +302,8 @@ "block.create.mechanical_pump": "メカニカルポンプ", "block.create.mechanical_saw": "メカニカルソー", "block.create.metal_bracket": "金属ブラケット", - "block.create.metal_girder": "UNLOCALIZED: Metal Girder", - "block.create.metal_girder_encased_shaft": "UNLOCALIZED: Metal Girder Encased Shaft", + "block.create.metal_girder": "鉄骨", + "block.create.metal_girder_encased_shaft": "鉄骨入りシャフト", "block.create.millstone": "石臼", "block.create.minecart_anchor": "トロッコアンカー", "block.create.mysterious_cuckoo_clock": "鳩時計", @@ -318,7 +318,7 @@ "block.create.orange_toolbox": "橙色の工具箱", "block.create.orange_valve_handle": "橙色のバルブハンドル", "block.create.ornate_iron_window": "鉄の装飾ガラス", - "block.create.ornate_iron_window_pane": "鉄の装飾板ガラス", + "block.create.ornate_iron_window_pane": "鉄の装飾ガラス板", "block.create.oxidized_copper_shingle_slab": "酸化した銅の屋根板のハーフブロック", "block.create.oxidized_copper_shingle_stairs": "酸化した銅の屋根板の階段", "block.create.oxidized_copper_shingles": "酸化した銅の屋根板", @@ -329,10 +329,10 @@ "block.create.pink_nixie_tube": "桃色のニキシー管", "block.create.pink_sail": "桃色の帆", "block.create.pink_seat": "桃色のシート", - "block.create.pink_toolbox": "桃色の", + "block.create.pink_toolbox": "桃色の工具箱", "block.create.pink_valve_handle": "桃色のバルブハンドル", "block.create.piston_extension_pole": "ピストン延長ポール", - "block.create.placard": "UNLOCALIZED: Placard", + "block.create.placard": "プラカード", "block.create.polished_cut_andesite": "磨かれた安山岩の切石", "block.create.polished_cut_andesite_slab": "磨かれた安山岩の切石のハーフブロック", "block.create.polished_cut_andesite_stairs": "磨かれた安山岩の切石の階段", @@ -392,7 +392,7 @@ "block.create.portable_fluid_interface": "ポータブル液体インターフェース", "block.create.portable_storage_interface": "ポータブルストーレジインターフェース", "block.create.powered_latch": "パワードラッチ", - "block.create.powered_shaft": "UNLOCALIZED: Powered Shaft", + "block.create.powered_shaft": "パワードシャフト", "block.create.powered_toggle_latch": "パワードトグルラッチ", "block.create.pulley_magnet": "プーリーマグネット", "block.create.pulse_extender": "パルスエクステンダー", @@ -403,7 +403,7 @@ "block.create.purple_toolbox": "紫色の工具箱", "block.create.purple_valve_handle": "紫色のバルブハンドル", "block.create.radial_chassis": "ラジアルシャーシ", - "block.create.railway_casing": "UNLOCALIZED: Train Casing", + "block.create.railway_casing": "鉄道用ケーシング", "block.create.raw_zinc_block": "亜鉛の原石ブロック", "block.create.red_nixie_tube": "赤色のニキシー管", "block.create.red_sail": "赤色の帆", @@ -415,9 +415,9 @@ "block.create.refined_radiance_casing": "光輝ケーシング", "block.create.rope": "ロープ", "block.create.rope_pulley": "ローププーリー", - "block.create.rose_quartz_block": "UNLOCALIZED: Block of Rose Quartz", - "block.create.rose_quartz_lamp": "UNLOCALIZED: Rose Quartz Lamp", - "block.create.rose_quartz_tiles": "UNLOCALIZED: Rose Quartz Tiles", + "block.create.rose_quartz_block": "ローズクォーツブロック", + "block.create.rose_quartz_lamp": "ローズクォーツランプ", + "block.create.rose_quartz_tiles": "ローズクォーツタイル", "block.create.rotation_speed_controller": "回転速度コントローラー", "block.create.sail_frame": "帆フレーム", "block.create.schematic_table": "概略図台", @@ -438,7 +438,7 @@ "block.create.small_asurine_brick_stairs": "小さな瑠璃岩レンガの階段", "block.create.small_asurine_brick_wall": "小さな瑠璃岩レンガの塀", "block.create.small_asurine_bricks": "小さな瑠璃岩レンガ", - "block.create.small_bogey": "UNLOCALIZED: Small Bogey", + "block.create.small_bogey": "小さな台車", "block.create.small_calcite_brick_slab": "小さな方解石レンガのハーフブロック", "block.create.small_calcite_brick_stairs": "小さな方解石レンガの階段", "block.create.small_calcite_brick_wall": "小さな方解石レンガの塀", @@ -471,7 +471,7 @@ "block.create.small_ochrum_brick_stairs": "小さな黄土岩レンガの階段", "block.create.small_ochrum_brick_wall": "小さな黄土岩レンガの塀", "block.create.small_ochrum_bricks": "小さな黄土岩レンガ", - "block.create.small_rose_quartz_tiles": "UNLOCALIZED: Small Rose Quartz Tiles", + "block.create.small_rose_quartz_tiles": "小さなローズクォーツタイル", "block.create.small_scorchia_brick_slab": "小さなスコーチアレンガのハーフブロック", "block.create.small_scorchia_brick_stairs": "小さなスコーチアレンガの階段", "block.create.small_scorchia_brick_wall": "小さなスコーチアレンガの塀", @@ -494,21 +494,21 @@ "block.create.spout": "アイテム注液口", "block.create.spruce_window": "マツの窓", "block.create.spruce_window_pane": "マツの板窓", - "block.create.steam_engine": "UNLOCALIZED: Steam Engine", - "block.create.steam_whistle": "UNLOCALIZED: Steam Whistle", - "block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension", + "block.create.steam_engine": "蒸気エンジン", + "block.create.steam_whistle": "汽笛", + "block.create.steam_whistle_extension": "延長汽笛", "block.create.sticker": "スティッカー", "block.create.sticky_mechanical_piston": "メカニカル粘着ピストン", "block.create.stockpile_switch": "在庫スイッチ", "block.create.stressometer": "応力メーター", "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイル板ガラス", - "block.create.track": "UNLOCALIZED: Train Track", - "block.create.track_observer": "UNLOCALIZED: Train Observer", - "block.create.track_signal": "UNLOCALIZED: Train Signal", - "block.create.track_station": "UNLOCALIZED: Train Station", - "block.create.train_door": "UNLOCALIZED: Train Door", - "block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor", + "block.create.tiled_glass_pane": "タイルガラス板", + "block.create.track": "鉄道用線路", + "block.create.track_observer": "列車検知装置", + "block.create.track_signal": "鉄道信号機", + "block.create.track_station": "鉄道駅ブロック", + "block.create.train_door": "鉄道用ドア", + "block.create.train_trapdoor": "鉄道用トラップドア", "block.create.tuff_pillar": "凝灰岩の柱", "block.create.turntable": "ターンテーブル", "block.create.veridium": "翡翠岩", @@ -567,7 +567,7 @@ "enchantment.create.capacity": "容量増加", "enchantment.create.potato_recovery": "ポテト回収", - "entity.create.carriage_contraption": "UNLOCALIZED: Carriage Contraption", + "entity.create.carriage_contraption": "鉄道からくり", "entity.create.contraption": "からくり", "entity.create.crafting_blueprint": "クラフトブループリント", "entity.create.gantry_contraption": "ガントリーからくり", @@ -592,11 +592,11 @@ "item.create.builders_tea": "建築家のお茶", "item.create.chest_minecart_contraption": "チェスト付きからくりトロッコ", "item.create.chocolate_bucket": "チョコレート入りバケツ", - "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", + "item.create.chocolate_glazed_berries": "チョコレートベリー", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "ネザーラックの粉", "item.create.copper_backtank": "銅のバックタンク", - "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_backtank_placeable": "設置可能な銅のバックタンク", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", @@ -631,7 +631,7 @@ "item.create.honey_bucket": "ハチミツ入りバケツ", "item.create.honeyed_apple": "リンゴのハチミツかけ", "item.create.incomplete_precision_mechanism": "組み立て中の精密機構", - "item.create.incomplete_track": "UNLOCALIZED: Incomplete Track", + "item.create.incomplete_track": "組み立て中の鉄道用線路", "item.create.iron_sheet": "鉄板", "item.create.linked_controller": "リンクコントローラー", "item.create.minecart_contraption": "からくりトロッコ", @@ -646,15 +646,15 @@ "item.create.refined_radiance": "高貴な光輝", "item.create.rose_quartz": "ローズクォーツ", "item.create.sand_paper": "紙やすり", - "item.create.schedule": "UNLOCALIZED: Train Schedule", + "item.create.schedule": "鉄道時刻表", "item.create.schematic": "概略図", "item.create.schematic_and_quill": "概略図と羽根ペン", "item.create.shadow_steel": "シャドウスチール", - "item.create.sturdy_sheet": "UNLOCALIZED: Sturdy Sheet", + "item.create.sturdy_sheet": "頑丈な板", "item.create.super_glue": "超粘着剤", "item.create.sweet_roll": "スイートロール", "item.create.tree_fertilizer": "樹木の肥料", - "item.create.unprocessed_obsidian_sheet": "UNLOCALIZED: Unprocessed Obsidian Sheet", + "item.create.unprocessed_obsidian_sheet": "未処理の黒曜石板", "item.create.vertical_gearbox": "垂直ギアボックス", "item.create.wand_of_symmetry": "対称の杖", "item.create.wheat_flour": "小麦粉", @@ -667,199 +667,199 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Createへようこそ", - "advancement.create.root.desc": "素晴らしいからくり仕掛けを作る時間だ!", - "advancement.create.andesite_alloy": "大いに押韻", - "advancement.create.andesite_alloy.desc": "Createの素材には変な名前がついています、安山岩合金もその一つです", + "advancement.create.root.desc": "素晴らしいからくり仕掛け作りの時間だ!", + "advancement.create.andesite_alloy": "頑丈な岩", + "advancement.create.andesite_alloy.desc": "Createで最も重要な素材、安山岩合金を手に入れる。", "advancement.create.andesite_casing": "安山岩の時代", - "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", - "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", - "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", - "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", - "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", - "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.andesite_casing.desc": "安山岩合金を木材に使って、基本の機械のケーシングを作る", + "advancement.create.mechanical_press": "ドン!", + "advancement.create.mechanical_press.desc": "メカニカルプレスで板を作る", + "advancement.create.encased_fan": "風のタクト", + "advancement.create.encased_fan.desc": "ケース入りファンを設置して稼働させる", + "advancement.create.fan_processing": "パーティクル加工", + "advancement.create.fan_processing.desc": "ケース入りファンを使って素材を加工する", + "advancement.create.saw_processing": "工房で最も恐ろしい", + "advancement.create.saw_processing.desc": "メカニカルソーを上向きに置いて素材を加工する", + "advancement.create.compacting": "小型化", + "advancement.create.compacting.desc": "プレスと鉢でより少ないアイテムからよりたくさんのアイテムを作る", "advancement.create.belt": "ベルトコンブア", "advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ", - "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", - "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", - "advancement.create.chute": "転がり落ちる", + "advancement.create.funnel": "空港の美学", + "advancement.create.funnel.desc": "ファンネルで収納ブロックからアイテムを入出力する", + "advancement.create.chute": "垂直輸送", "advancement.create.chute.desc": "メカニカルベルトの垂直バージョン、シュートを設置する", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", - "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", - "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", - "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.mechanical_mixer": "めちゃくちゃにしてやる", + "advancement.create.mechanical_mixer.desc": "材料をメカニカルミキサーで混ぜる", + "advancement.create.burner": "生きてる暖炉", + "advancement.create.burner.desc": "ブレイズバーナーを入手する", "advancement.create.water_wheel": "水力を使おう", - "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", - "advancement.create.windmill": "微風", - "advancement.create.windmill.desc": "風車を組み立てる", - "advancement.create.shifting_gears": "ギアシフト!", - "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", - "advancement.create.millstone": "ポケットクラッシャー", - "advancement.create.millstone.desc": "石臼を置いて、回転させる", - "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", - "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", - "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", - "advancement.create.stressometer": "正確な応力は?", + "advancement.create.water_wheel.desc": "水車を置いて、回転させる", + "advancement.create.windmill": "そよ風", + "advancement.create.windmill.desc": "風車を組み立てて、回転させる", + "advancement.create.shifting_gears": "ギアシフト", + "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせれば、回転速度を変えられる", + "advancement.create.millstone": "身を粉にして働く", + "advancement.create.millstone.desc": "石臼を置いて、素材をすり潰す", + "advancement.create.super_glue": "領域展開", + "advancement.create.super_glue.desc": "複数のブロックをまとめて接着する", + "advancement.create.contraption_actors": "動きの使い方", + "advancement.create.contraption_actors.desc": "ドリルか、ソー、ハーベスターのいずれかがついたからくりを作る", + "advancement.create.portable_storage_interface": "ドライブスルー", + "advancement.create.portable_storage_interface.desc": "ポータブルストレージインターフェースでからくりからアイテムを搬出入する", + "advancement.create.wrench_goggles": "装備支給", + "advancement.create.wrench_goggles.desc": "エンジニアのゴーグルとレンチを装備する", + "advancement.create.stressometer": "必要な応力は?", "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", - "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", - "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", - "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", - "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", - "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", - "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", - "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", - "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", - "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", - "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", - "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", - "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.cuckoo_clock": "今何時?", + "advancement.create.cuckoo_clock.desc": "鳩時計が就寝の時間を告げるのを目撃する", + "advancement.create.windmill_maxed": "雄風", + "advancement.create.windmill_maxed.desc": "最強の風車を組み立てる", + "advancement.create.ejector_maxed": "飛び込みチャンピオン", + "advancement.create.ejector_maxed.desc": "重量射出機で30ブロック以上飛ぶ", + "advancement.create.pulley_maxed": "ロープは続くよどこまでも", + "advancement.create.pulley_maxed.desc": "ローププーリーを200ブロック以上伸ばす", + "advancement.create.cart_pickup": "力ずく", + "advancement.create.cart_pickup.desc": "200ブロック以上が取り付けられたからくりトロッコを回収する", + "advancement.create.anvil_plough": "鍛冶屋の大砲", + "advancement.create.anvil_plough.desc": "メカニカルプラウで金床を打ち上げる", + "advancement.create.lava_wheel_00000": "マグマ車", + "advancement.create.lava_wheel_00000.desc": "こんなの動くべきじゃない§7\n(隠し進捗)", + "advancement.create.hand_crank_000": "トレーニングの時間", + "advancement.create.hand_crank_000.desc": "疲れ果て、完全に空腹になるまでハンドクランクを回す§7\n(隠し進捗)", "advancement.create.belt_funnel_kiss": "コウノトリの羽ばたき", "advancement.create.belt_funnel_kiss.desc": "2つのベルトに載せたファンネルにキスをさせる", - "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", - "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.stressometer_maxed": "無駄のない動き", + "advancement.create.stressometer_maxed.desc": "応力メーターがちょうど100%を指すのを読み取る§7\n(隠し進捗)", + "advancement.create.copper": "もっと頑丈な岩", + "advancement.create.copper.desc": "液体を取り扱うために、銅を貯めておく", "advancement.create.copper_casing": "銅の時代", - "advancement.create.copper_casing.desc": "銅と木材を使って銅ケーシングを作る", + "advancement.create.copper_casing.desc": "銅のインゴットを木材に使って防水の機械のケーシングを作る", "advancement.create.spout": "ぱしゃぱしゃ", "advancement.create.spout.desc": "アイテム注液口が液体を充填している様子を見る", - "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", - "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", - "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", - "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", - "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", - "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", - "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", - "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", + "advancement.create.drain": "回転式排液機", + "advancement.create.drain.desc": "液体が入ったアイテムがアイテム排液口によって空になる様子を見る", + "advancement.create.steam_engine": "発電所", + "advancement.create.steam_engine.desc": "蒸気エンジンでトルクを生み出す", + "advancement.create.steam_whistle": "天使の歌声", + "advancement.create.steam_whistle.desc": "汽笛を稼働させる", + "advancement.create.backtank": "圧力、お持ち帰りで!", + "advancement.create.backtank.desc": "銅のバックタンクを作り、圧縮空気を溜める", + "advancement.create.diving_suit": "深海に潜る準備", + "advancement.create.diving_suit.desc": "銅のバックタンクと潜水ヘルメットを装備し、水に飛び込む", + "advancement.create.mechanical_pump_0": "圧をかける", + "advancement.create.mechanical_pump_0.desc": "メカニカルポンプを設置して、稼働させる", "advancement.create.glass_pipe": "フロウ・スパイ", - "advancement.create.glass_pipe.desc": "まっすぐな液体パイプにレンチを使って、窓から通る液体を見る", - "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.glass_pipe.desc": "液体が入ったパイプにレンチを使う", + "advancement.create.water_supply": "水たまり収集機", + "advancement.create.water_supply.desc": "パイプまたはポンプの端から、水を吸い込む", "advancement.create.hose_pulley": "工業排水", "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", - "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", - "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", - "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", - "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", - "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", - "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", - "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", - "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", - "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", - "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.chocolate_bucket": "空想世界", + "advancement.create.chocolate_bucket.desc": "溶けたチョコレート入りバケツを手に入れる", + "advancement.create.honey_drain": "自動養蜂", + "advancement.create.honey_drain.desc": "パイプで養蜂箱やハチの巣からハチミツを吸う", + "advancement.create.hose_pulley_lava": "地球の蛇口", + "advancement.create.hose_pulley_lava.desc": "無限と言えるほどに広い溶岩湖から溶岩を汲み上げる", + "advancement.create.steam_engine_maxed": "全速前進だ!", + "advancement.create.steam_engine_maxed.desc": "ボイラーを最大レベルで稼働させる", + "advancement.create.foods": "バランスのとれたおやつ", + "advancement.create.foods.desc": "チョコレートベリー、リンゴのハチミツかけ、スイートロールを全て同じ注液口で作る", + "advancement.create.diving_suit_lava": "ストライダーと泳ごう", + "advancement.create.diving_suit_lava.desc": "銅の潜水具と共にマグマダイブしてみる§7\n(隠し進捗)", + "advancement.create.chained_drain": "うまく回ってます", + "advancement.create.chained_drain.desc": "並んだアイテム排液口の上をアイテムが通るのを見る§7\n(隠し進捗)", + "advancement.create.cross_streams": "液体を交差させるな!", + "advancement.create.cross_streams.desc": "液体ネットワークの中で2種類の液体が出会う様子を見る§7\n(隠し進捗)", + "advancement.create.pipe_organ": "パイプオルガン", + "advancement.create.pipe_organ.desc": "音程の違う12個の汽笛を1つの液体タンクに設置する§7\n(隠し進捗)", "advancement.create.brass": "本物の合金", - "advancement.create.brass.desc": "砕いた銅と砕いた亜鉛を使って真鍮を作る", + "advancement.create.brass.desc": "銅と亜鉛のインゴットをブレイズ付きミキサーを使って真鍮を作る", "advancement.create.brass_casing": "真鍮の時代", - "advancement.create.brass_casing.desc": "新しく入手した真鍮と木材を使って、次世代のケーシングを作る", - "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", - "advancement.create.deployer": "突く、置く、殴る!", + "advancement.create.brass_casing.desc": "真鍮のインゴットを木材に使って、高度な機械のケーシングを作る。", + "advancement.create.rose_quartz": "ピンク色のダイヤモンド", + "advancement.create.rose_quartz.desc": "ローズクォーツを磨く", + "advancement.create.deployer": "人工知能", "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", "advancement.create.precision_mechanism": "手間暇かけた骨董品", "advancement.create.precision_mechanism.desc": "精密機構を組み立てる", - "advancement.create.speed_controller": "もう全部あいつ一人でいいんじゃないかな", - "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", + "advancement.create.speed_controller": "もう全部あいつ1人でいいんじゃないかな", + "advancement.create.speed_controller.desc": "回転速度コントローラーでからくりを微調整する", "advancement.create.mechanical_arm": "手が離せない!", - "advancement.create.mechanical_arm.desc": "搬入元と搬出先を設定したメカニカルアームを設置して稼働させ、あなたのために一生懸命働いている様子を見る", - "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.mechanical_arm.desc": "メカニカルアームがはじめてアイテムを運ぶ様子を見る", + "advancement.create.mechanical_crafter": "自動組み立て", + "advancement.create.mechanical_crafter.desc": "メカニカルクラフターをいくつか置き、動力を供給する", "advancement.create.crushing_wheel": "巨大な一対", - "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", - "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", - "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.crushing_wheel.desc": "一組の破砕ホイールを設置して稼働させる", + "advancement.create.haunted_bell": "シャドーセンス", + "advancement.create.haunted_bell.desc": "憑りつかれた鐘を鳴らす", "advancement.create.clockwork_bearing": "時計仕掛け", "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングでからくりを組み立てる", - "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.display_link": "ビッグデータ", + "advancement.create.display_link.desc": "ディスプレイリンクで情報を視覚化する", "advancement.create.potato_cannon": "バキューン!", "advancement.create.potato_cannon.desc": "ポテトキャノンで敵を倒す", "advancement.create.extendo_grip": "ビヨヨーン!", "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", - "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", - "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", - "advancement.create.arm_blaze_burner": "燃料補給", + "advancement.create.linked_controller": "遠隔操作", + "advancement.create.linked_controller.desc": "リンクコントローラーから送信した信号をレッドストーンリンクに受信させる", + "advancement.create.arm_blaze_burner": "燃料補給マシーン", "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", - "advancement.create.arm_many_targets": "整理整頓", + "advancement.create.crusher_maxed_0000": "破砕の勢い", + "advancement.create.crusher_maxed_0000.desc": "破砕ホイールを最高速度で稼働させる", + "advancement.create.arm_many_targets": "整理整頓マシーン", "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", - "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", - "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", - "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.potato_cannon_collide": "野菜花火", + "advancement.create.potato_cannon_collide.desc": "違う種類のポテトキャノンの弾同士をぶつける", + "advancement.create.self_deploying": "自動運転トロッコ", + "advancement.create.self_deploying.desc": "自分の前に線路を置くからくりトロッコを作る", "advancement.create.fist_bump": "グータッチだ、兄弟!", - "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる", - "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", - "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", - "advancement.create.musical_arm": "お気に入りの曲を流して!", - "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", - "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", - "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", - "advancement.create.train": "UNLOCALIZED: All Aboard!", - "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", - "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", - "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", - "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", - "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", - "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", - "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", - "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", - "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", - "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", - "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", - "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", - "advancement.create.long_travel": "UNLOCALIZED: Field Trip", - "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", - "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", - "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", - "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", - "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", - "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", + "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる§7\n(隠し進捗)", + "advancement.create.crafter_lazy_000": "苦肉の策", + "advancement.create.crafter_lazy_000.desc": "メカニカルクラフターを極端に遅く稼働させ、インフラ整備を先延ばしにする§7\n(隠し進捗)", + "advancement.create.extendo_grip_dual": "脱法リーチ", + "advancement.create.extendo_grip_dual.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる§7\n(隠し進捗)", + "advancement.create.musical_arm": "DJ メカニコ", + "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る§7\n(隠し進捗)", + "advancement.create.sturdy_sheet": "もっとも頑丈な岩", + "advancement.create.sturdy_sheet.desc": "黒曜石の粉を精製して頑丈な板を組み立てる", + "advancement.create.train_casing_00": "大交通時代", + "advancement.create.train_casing_00.desc": "頑丈な板をつかって鉄道用のケーシングを作る", + "advancement.create.train": "出発進行!", + "advancement.create.train.desc": "最初の列車を作る", + "advancement.create.conductor": "人材育成", + "advancement.create.conductor.desc": "時刻表で運転手に指示する", + "advancement.create.track_signal": "運行管理", + "advancement.create.track_signal.desc": "鉄道信号機を設置する", + "advancement.create.display_board_0": "ダイナミックな時刻表", + "advancement.create.display_board_0.desc": " ディスプレイリンクを使って、ディスプレイボードに列車の到着時間を表示させる", + "advancement.create.track_0": "新型ゲージ", + "advancement.create.track_0.desc": "鉄道用線路を手に入れる", + "advancement.create.train_whistle": "ポッポー!", + "advancement.create.train_whistle.desc": "汽笛を列車に組み込み、運転中に鳴らす", + "advancement.create.train_portal": "異次元通勤", + "advancement.create.train_portal.desc": "ネザーポータルを列車で通過する", + "advancement.create.track_crafting_factory": "線路工場", + "advancement.create.track_crafting_factory.desc": "同じメカニカルプレスで1000個以上の鉄道用線路を作る", + "advancement.create.long_bend": "超しなやか", + "advancement.create.long_bend.desc": "30ブロック以上の長さに曲がった線路を作る", + "advancement.create.long_train": "意欲的な取り組み", + "advancement.create.long_train.desc": "6両以上の編成で列車を作る", + "advancement.create.long_travel": "修学旅行", + "advancement.create.long_travel.desc": "列車で5000ブロック以上移動し、シートから降りる", + "advancement.create.train_roadkill": "轢き殺し", + "advancement.create.train_roadkill.desc": "列車で敵を轢く§7\n(隠し進捗)", + "advancement.create.red_signal": "運転の達人", + "advancement.create.red_signal.desc": "列車で赤信号を走る§7\n(隠し進捗)", + "advancement.create.train_crash": "ひどいおもてなし", + "advancement.create.train_crash.desc": "乗客として列車事故に遭遇する§7\n(隠し進捗)", + "advancement.create.train_crash_backwards": "盲点", + "advancement.create.train_crash_backwards.desc": "後ろ向きに走っている途中に他の列車と追突する§7\n(隠し進捗)", "_": "->------------------------] UI & Messages [------------------------<-", "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", + "itemGroup.create.palettes": "Create's 建築ブロック", "death.attack.create.crush": "%1$sは破砕ホイールによって処理された", "death.attack.create.crush.player": "%1$sは%2$sに破砕ホイールに投入された", @@ -872,10 +872,10 @@ "death.attack.create.mechanical_saw": "%1$sはメカニカルソーで半分にカットされた", "death.attack.create.mechanical_saw.player": "%1$sは%2$sによってメカニカルソーの回転する刃に投げ込まれた", "death.attack.create.potato_cannon": "%1$sは%2$sのポテトキャノンに撃ち抜かれた", - "death.attack.create.potato_cannon.item": "%1$sは%2$sの%3$sに撃た抜かれた", + "death.attack.create.potato_cannon.item": "%1$sは%2$sの%3$sに撃ち抜かれた", "death.attack.create.cuckoo_clock_explosion": "%1$sは改造された鳩時計に爆破された", - "death.attack.create.cuckoo_clock_explosion.player": "%1$sは何者かによって改造された鳩時計に爆破された", - "death.attack.create.run_over": "UNLOCALIZED: %1$s was run over by %2$s", + "death.attack.create.cuckoo_clock_explosion.player": "%1$sは改造された鳩時計に爆破された", + "death.attack.create.run_over": "%1$sは%2$sに轢き殺された", "create.block.deployer.damage_source_name": "悪いデプロイヤー", "create.block.cart_assembler.invalid": "トロッコアセンブラはレールの上にのみ設置できます", @@ -909,12 +909,12 @@ "create.recipe.automatic_shaped": "自動定形クラフト", "create.recipe.block_cutting": "自動石切", "create.recipe.wood_cutting": "自動製材", - "create.recipe.sandpaper_polishing": "紙やすりでの研磨", - "create.recipe.mystery_conversion": "神秘の変転", + "create.recipe.sandpaper_polishing": "紙やすりによる研磨", + "create.recipe.mystery_conversion": "不思議な変転", "create.recipe.spout_filling": "アイテムへの注液", "create.recipe.draining": "アイテムからの排液", - "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", - "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.item_application": "手動によるアイテム使用", + "create.recipe.item_application.any_axe": "任意の斧", "create.recipe.sequenced_assembly": "組立ライン", "create.recipe.assembly.next": "次の工程: %1$s", "create.recipe.assembly.step": "手順: %1$s:", @@ -922,7 +922,7 @@ "create.recipe.assembly.pressing": "プレスする", "create.recipe.assembly.spout_filling_fluid": "%1$sを注液", "create.recipe.assembly.deploying_item": "%1$sを組み込む", - "create.recipe.assembly.cutting": "ソーでの切断", + "create.recipe.assembly.cutting": "ソーによる切断", "create.recipe.assembly.repeat": "%1$s回繰り返す", "create.recipe.assembly.junk": "ランダムな仕損品", "create.recipe.processing.chance": "%1$s%%チャンス", @@ -938,26 +938,26 @@ "create.generic.length": "長さ", "create.generic.speed": "回転速度", "create.generic.delay": "遅延", - "create.generic.duration": "UNLOCALIZED: Duration", - "create.generic.timeUnit": "UNLOCALIZED: Time Unit", + "create.generic.duration": "時間", + "create.generic.timeUnit": "単位", "create.generic.unit.ticks": "ティック", "create.generic.unit.seconds": "秒", "create.generic.unit.minutes": "分", - "create.generic.daytime.hour": "UNLOCALIZED: Hour", - "create.generic.daytime.minute": "UNLOCALIZED: Minute", - "create.generic.daytime.second": "UNLOCALIZED: Second", - "create.generic.daytime.pm": "UNLOCALIZED: pm", - "create.generic.daytime.am": "UNLOCALIZED: am", + "create.generic.daytime.hour": "時間", + "create.generic.daytime.minute": "分", + "create.generic.daytime.second": "秒", + "create.generic.daytime.pm": "午後", + "create.generic.daytime.am": "午前", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.unit.buckets": "UNLOCALIZED: B", + "create.generic.unit.millibuckets": "mB", + "create.generic.unit.buckets": "B", "create.generic.clockwise": "時計回り", "create.generic.counter_clockwise": "反時計回り", - "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", - "create.generic.pitch": "UNLOCALIZED: Pitch: %1$s", - "create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G", + "create.generic.in_quotes": "「%1$s」", + "create.generic.pitch": "音程: %1$s", + "create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G", "create.action.scroll": "スクロール", "create.action.confirm": "確認", @@ -994,8 +994,8 @@ "create.orientation.orthogonal": "直交", "create.orientation.diagonal": "対角線", "create.orientation.horizontal": "横型", - "create.orientation.alongZ": "Z に沿る", - "create.orientation.alongX": "X に沿る", + "create.orientation.alongZ": "Z軸に沿る", + "create.orientation.alongX": "X軸に沿る", "create.gui.terrainzapper.title": "携帯型ブロックザッパー", "create.gui.terrainzapper.searchDiagonal": "対角線にフォロー", @@ -1003,7 +1003,7 @@ "create.gui.terrainzapper.patternSection": "模様", "create.gui.terrainzapper.pattern.solid": "敷き詰め", "create.gui.terrainzapper.pattern.checkered": "市松模様", - "create.gui.terrainzapper.pattern.inversecheckered": "逆市松模様", + "create.gui.terrainzapper.pattern.inversecheckered": "市松模様(反転)", "create.gui.terrainzapper.pattern.chance25": "25%", "create.gui.terrainzapper.pattern.chance50": "50%", "create.gui.terrainzapper.pattern.chance75": "75%", @@ -1027,7 +1027,7 @@ "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", "create.terrainzapper.usingBlock": "使用中: %1$s", - "create.terrainzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", + "create.terrainzapper.leftClickToSet": "ブロックをスニークせず右クリックでブロックを選択", "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", "create.minecart_coupling.unloaded": "列車の一部があるチャンクがロードされていません", @@ -1059,29 +1059,29 @@ "create.logistics.secondFrequency": "二次周波数", "create.logistics.filter.apply": "フィルターを%1$sに適用しました。", "create.logistics.filter.apply_click_again": "フィルターを%1$sに適用しました。再度クリックすると数量をコピーします", - "create.logistics.filter.apply_count": "搬出カウントをフィルターに適用しました。", + "create.logistics.filter.apply_count": "搬出入数をフィルターに適用しました。", "create.gui.goggles.generator_stats": "原動機の統計:", "create.gui.goggles.kinetic_stats": "動力の統計:", - "create.gui.goggles.at_current_speed": "現在の回転速度", + "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": "このからくりは組み立てることができません。:", "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": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールが不足しています。", - "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nAが最低でも%2$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": "ネットワークの応力", - "create.gui.stressometer.capacity": "残りの応力許容量", + "create.gui.stressometer.capacity": "残りの許容応力", "create.gui.stressometer.overstressed": "応力超過", "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く_回転_していない_ようです。", - "create.gui.contraptions.network_overstressed": "この仕掛けは_応力超過_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", + "create.gui.contraptions.not_fast_enough": "この %1$s は_十分速く回転していない_ようです。", + "create.gui.contraptions.network_overstressed": "この機構は_応力超過_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", "create.gui.adjustable_crate.title": "可変クレート", "create.gui.adjustable_crate.storageSpace": "収納スペース", "create.gui.stockpile_switch.title": "在庫スイッチ", @@ -1093,7 +1093,7 @@ "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": "ピストン/プーリー/ガントリーを動かすために回す", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "ピストン/プーリー/ガントリーを回す", "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", "create.gui.sequenced_gearshift.instruction.delay.descriptive": "一定時間待つ", @@ -1148,7 +1148,7 @@ "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます", + "create.schematic.tool.rotate.description.0": "概略図を中心に回転させます", "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", @@ -1188,13 +1188,13 @@ "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストを印刷します。", - "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", + "create.gui.schematicannon.slot.schematic": "概略図をここに入れてください。特定の場所に配置されていることを確認してください。", "create.gui.schematicannon.option.skipMissing.description": "配置に必要なブロックを見つけられない場合、次の場所に進みます。", "create.gui.schematicannon.option.skipTileEntities.description": "チェストなどのデータ保持ブロックの置き換えによる消滅を回避します。", "create.gui.schematicannon.option.dontReplaceSolid.description": "その作業範囲の固体ブロックを置き換えることはなく、非固体ブロックと空気のみを置き換えます。", "create.gui.schematicannon.option.replaceWithSolid.description": "固体ブロックを設置する場合にのみ、その位置の固体ブロックを置き換えます。", "create.gui.schematicannon.option.replaceWithAny.description": "任意のブロックを設置する場合に、その位置の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "空気を含め、あらゆるブロックを設置する場合に作業領域のあらゆるブロックを一掃します。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "空気を含め、あらゆるブロックを設置する場合に作業範囲のあらゆるブロックを一掃します。", "create.schematicannon.status.idle": "停止中", "create.schematicannon.status.ready": "準備完了", @@ -1204,7 +1204,7 @@ "create.schematicannon.status.stopped": "停止", "create.schematicannon.status.noGunpowder": "火薬不足", "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", - "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", + "create.schematicannon.status.targetOutsideRange": "対象が遠すぎます", "create.schematicannon.status.searching": "検索中", "create.schematicannon.status.skipping": "スキップ", "create.schematicannon.status.missingBlock": "不明なブロック:", @@ -1238,7 +1238,7 @@ "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", "create.item_attributes.renamed": "名前付きか", "create.item_attributes.renamed.inverted": "名前付きでないか", - "create.item_attributes.damaged": "破損してるか", + "create.item_attributes.damaged": "破損しているか", "create.item_attributes.damaged.inverted": "破損していないか", "create.item_attributes.badly_damaged": "ひどく損傷してるか", "create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか", @@ -1299,15 +1299,15 @@ "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がないか", "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", - "create.gui.attribute_filter.selected_attributes": "選択された属性:", + "create.gui.attribute_filter.selected_attributes": "選択した属性:", "create.gui.attribute_filter.add_attribute": "属性をリストに追加する", "create.gui.attribute_filter.add_inverted_attribute": "反属性をリストに追加する", - "create.gui.attribute_filter.allow_list_disjunctive": "ホワイトリスト(いずれか)", + "create.gui.attribute_filter.allow_list_disjunctive": "ホワイトリスト(いずれか)", "create.gui.attribute_filter.allow_list_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.allow_list_conjunctive": "ホワイトリスト(全て)", + "create.gui.attribute_filter.allow_list_conjunctive": "ホワイトリスト(全て)", "create.gui.attribute_filter.allow_list_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", "create.gui.attribute_filter.deny_list": "ブラックリスト", - "create.gui.attribute_filter.deny_list.description": "選択された属性を持たない場合、アイテムは通り抜けます。", + "create.gui.attribute_filter.deny_list.description": "選択した属性を持たない場合、アイテムは通り抜けます。", "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", "create.tooltip.holdForDescription": "説明を表示するには [%1$s] を長押し", @@ -1316,7 +1316,7 @@ "create.tooltip.keyCtrl": "Ctrl", "create.tooltip.speedRequirement": "必要な回転速度: %1$s", "create.tooltip.speedRequirement.none": "無し", - "create.tooltip.speedRequirement.slow": "UNLOCALIZED: Slow", + "create.tooltip.speedRequirement.slow": "低速", "create.tooltip.speedRequirement.medium": "中速", "create.tooltip.speedRequirement.fast": "高速", "create.tooltip.stressImpact": "応力への影響: %1$s", @@ -1324,8 +1324,8 @@ "create.tooltip.stressImpact.medium": "中", "create.tooltip.stressImpact.high": "高", "create.tooltip.stressImpact.overstressed": "応力超過", - "create.tooltip.up_to": "UNLOCALIZED: Up to %1$s", - "create.tooltip.capacityProvided": "応力許容量: %1$s", + "create.tooltip.up_to": "最大%1$s", + "create.tooltip.capacityProvided": "許容応力: %1$s", "create.tooltip.capacityProvided.low": "小", "create.tooltip.capacityProvided.medium": "中", "create.tooltip.capacityProvided.high": "大", @@ -1337,9 +1337,9 @@ "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.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": "射出スタック量", @@ -1347,7 +1347,7 @@ "create.mechanical_arm.selection_mode.round_robin": "順繰り分配", "create.mechanical_arm.selection_mode.forced_round_robin": "強制順繰り分配", - "create.mechanical_arm.selection_mode.prefer_first": "最初のターゲットを優先", + "create.mechanical_arm.selection_mode.prefer_first": "最初の対象を優先", "create.tunnel.selection_mode.split": "スタック分割", "create.tunnel.selection_mode.forced_split": "強制スタック分割", @@ -1366,11 +1366,11 @@ "create.tooltip.chute.fans_pull_up": "ファンが上から吸い込んでいます", "create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます", "create.tooltip.chute.contains": "内容物: %1$s x%2$s", - "create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information", - "create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use", - "create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack", - "create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "配布中", + "create.tooltip.deployer.header": "デプロイヤーの情報", + "create.tooltip.deployer.using": "モード: 使用", + "create.tooltip.deployer.punching": "モード: 攻撃", + "create.tooltip.deployer.contains": "アイテム: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "配布中:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "右クリックで取り出し", @@ -1394,336 +1394,336 @@ "create.hint.hose_pulley.title": "底なし汲み上げ可能", "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", - "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", - "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", + "create.hint.mechanical_arm_no_targets.title": "対象が見つかりません", + "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_対象_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", "create.hint.empty_bearing.title": "ベアリングの更新", "create.hint.empty_bearing": "_素手_でベアリングを_右クリック_して、その前に先ほど作った構造物を_接続_します。", "create.hint.full_deployer.title": "デプロイヤーのアイテムが溢れています", - "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などの手段を利用して、溢れないようにしてください。", + "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などを使って、あふれないようにしてください。", - "create.backtank.low": "UNLOCALIZED: Backtank pressure low", - "create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted", + "create.backtank.low": "バックタンクの空気圧が低下しています", + "create.backtank.depleted": "バックタンクの空気圧が不足しています", - "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", - "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", + "create.hint.derailed_train.title": "列車が脱線しています", + "create.hint.derailed_train": "この_列車_は繋がった線路の上に乗っていないようです。レンチで右クリックして近くの線路に移してください。", - "create.boiler.status": "UNLOCALIZED: Boiler Status: %1$s", - "create.boiler.status_short": "UNLOCALIZED: Boiler: %1$s", - "create.boiler.passive": "UNLOCALIZED: Passive", - "create.boiler.idle": "UNLOCALIZED: Idle", - "create.boiler.lvl": "UNLOCALIZED: Lvl %1$s", - "create.boiler.max_lvl": "UNLOCALIZED: Max", - "create.boiler.size": "UNLOCALIZED: Size", - "create.boiler.size_dots": "UNLOCALIZED: ....... ", - "create.boiler.water": "UNLOCALIZED: Water", - "create.boiler.water_dots": "UNLOCALIZED: ... ", - "create.boiler.heat": "UNLOCALIZED: Heat", - "create.boiler.heat_dots": "UNLOCALIZED: ...... ", - "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", - "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.boiler.status": "ボイラー状態: %1$s", + "create.boiler.status_short": "ボイラー: %1$s", + "create.boiler.passive": "レベル最小", + "create.boiler.idle": "停止中", + "create.boiler.lvl": "レベル%1$s", + "create.boiler.max_lvl": "レベル最大", + "create.boiler.size": "容量", + "create.boiler.size_dots": "... ", + "create.boiler.water": "水量", + "create.boiler.water_dots": "... ", + "create.boiler.heat": "熱量", + "create.boiler.heat_dots": "... ", + "create.boiler.via_one_engine": "1基のエンジン経由", + "create.boiler.via_engines": "%1$s基のエンジン経由", - "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", - "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", - "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", - "create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action", - "create.gui.schedule.add_entry": "UNLOCALIZED: Add Action", - "create.gui.schedule.move_up": "UNLOCALIZED: Move up", - "create.gui.schedule.move_down": "UNLOCALIZED: Move down", - "create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition", - "create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition", + "create.gui.schedule.lmb_edit": "左クリックで編集", + "create.gui.schedule.rmb_remove": "右クリックで削除", + "create.gui.schedule.duplicate": "複製", + "create.gui.schedule.remove_entry": "動作を削除", + "create.gui.schedule.add_entry": "動作を追加", + "create.gui.schedule.move_up": "上に移動", + "create.gui.schedule.move_down": "下に移動", + "create.gui.schedule.add_condition": "条件を追加", + "create.gui.schedule.alternative_condition": "いずれか条件", - "create.schedule.instruction_type": "UNLOCALIZED: Next Action:", - "create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor", - "create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station", - "create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:", - "create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name", - "create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard", - "create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'", - "create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match", - "create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title", - "create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:", - "create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title", - "create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays", - "create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name", - "create.schedule.instruction.throttle": "UNLOCALIZED: Limit Max Speed", - "create.schedule.instruction.throttle.summary": "UNLOCALIZED: Change Max Speed to %1$s", - "create.schedule.instruction.throttle_edit_box": "UNLOCALIZED: Throttle", - "create.schedule.instruction.throttle_edit_box_1": "UNLOCALIZED: Affects the top speed of the Train", - "create.schedule.condition_type": "UNLOCALIZED: Continue if/after:", - "create.schedule.condition.editor": "UNLOCALIZED: Condition Editor", - "create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay", - "create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s", - "create.schedule.condition.delay.status": "UNLOCALIZED: Departs in %1$s", - "create.schedule.condition.idle": "UNLOCALIZED: Cargo Inactivity", - "create.schedule.condition.idle_short": "UNLOCALIZED: Cargo Idle: %1$s", - "create.schedule.condition.idle.status": "UNLOCALIZED: Cargo Idle for %1$s", - "create.schedule.condition.for_x_time": "UNLOCALIZED: for %1$s", - "create.schedule.condition.unloaded": "UNLOCALIZED: Chunk Unloaded", - "create.schedule.condition.unloaded.status": "UNLOCALIZED: Waiting for chunk unload", - "create.schedule.condition.powered": "UNLOCALIZED: Station Powered", - "create.schedule.condition.powered.status": "UNLOCALIZED: Waiting for redstone", - "create.schedule.condition.time_of_day": "UNLOCALIZED: Time of Day", - "create.schedule.condition.time_of_day.scheduled": "UNLOCALIZED: Scheduled Time: %1$s", - "create.schedule.condition.time_of_day.digital_format": "UNLOCALIZED: %1$s:%3$s %4$s", - "create.schedule.condition.time_of_day.rotation": "UNLOCALIZED: Rotation", - "create.schedule.condition.time_of_day.rotation.every_24": "UNLOCALIZED: Every Day", - "create.schedule.condition.time_of_day.rotation.every_12": "UNLOCALIZED: Every 12:00", - "create.schedule.condition.time_of_day.rotation.every_6": "UNLOCALIZED: Every 6:00", - "create.schedule.condition.time_of_day.rotation.every_4": "UNLOCALIZED: Every 4:00", - "create.schedule.condition.time_of_day.rotation.every_3": "UNLOCALIZED: Every 3:00", - "create.schedule.condition.time_of_day.rotation.every_2": "UNLOCALIZED: Every 2:00", - "create.schedule.condition.time_of_day.rotation.every_1": "UNLOCALIZED: Every 1:00", - "create.schedule.condition.time_of_day.rotation.every_0_45": "UNLOCALIZED: Every 0:45", - "create.schedule.condition.time_of_day.rotation.every_0_30": "UNLOCALIZED: Every 0:30", - "create.schedule.condition.time_of_day.rotation.every_0_15": "UNLOCALIZED: Every 0:15", - "create.schedule.condition.time_of_day.status": "UNLOCALIZED: Departs at ", - "create.schedule.condition.threshold.train_holds": "UNLOCALIZED: Train holds %1$s", - "create.schedule.condition.threshold.greater": "UNLOCALIZED: more than", - "create.schedule.condition.threshold.less": "UNLOCALIZED: less than", - "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", - "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", - "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", - "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", - "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", - "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", - "create.schedule.condition.threshold.buckets": "UNLOCALIZED: Buckets", - "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", - "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", - "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", - "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", - "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", - "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", - "create.schedule.condition.redstone_link.status": "UNLOCALIZED: Waiting for redstone link", - "create.schedule.condition.redstone_link_on": "UNLOCALIZED: Link On", - "create.schedule.condition.redstone_link_off": "UNLOCALIZED: Link Off", - "create.schedule.condition.redstone_link.powered": "UNLOCALIZED: Powered", - "create.schedule.condition.redstone_link.unpowered": "UNLOCALIZED: Not powered", - "create.schedule.condition.redstone_link.frequency_state": "UNLOCALIZED: Frequency state:", - "create.schedule.condition.redstone_link.frequency_powered": "UNLOCALIZED: Frequency powered:", - "create.schedule.condition.redstone_link.frequency_unpowered": "UNLOCALIZED: Frequency not powered:", - "create.schedule.condition.player_count": "UNLOCALIZED: Players Seated", - "create.schedule.condition.player_count.summary": "UNLOCALIZED: %1$s Player", - "create.schedule.condition.player_count.summary_plural": "UNLOCALIZED: %1$s Players", - "create.schedule.condition.player_count.seated": "UNLOCALIZED: %1$s seated", - "create.schedule.condition.player_count.players": "UNLOCALIZED: Players", - "create.schedule.condition.player_count.condition": "UNLOCALIZED: Conditional", - "create.schedule.condition.player_count.exactly": "UNLOCALIZED: Exactly", - "create.schedule.condition.player_count.or_above": "UNLOCALIZED: Or above", - "create.schedule.condition.player_count.status": "UNLOCALIZED: Passengers: %1$s/%2$s", - "create.schedule.loop": "UNLOCALIZED: Loop Forever", - "create.schedule.loop1": "UNLOCALIZED: Schedule starts over", - "create.schedule.loop2": "UNLOCALIZED: when completed", - "create.schedule.reset": "UNLOCALIZED: Reset Progress", - "create.schedule.skip": "UNLOCALIZED: Skip current Stop", - "create.schedule.applied_to_train": "UNLOCALIZED: Train is now following this Schedule", - "create.schedule.non_controlling_seat": "UNLOCALIZED: Conductor needs to sit in front of a Controls block", - "create.schedule.remove_with_empty_hand": "UNLOCALIZED: Remove current Schedule with an Empty Hand", - "create.schedule.auto_removed_from_train": "UNLOCALIZED: Auto-Schedule discarded", - "create.schedule.removed_from_train": "UNLOCALIZED: Schedule retrieved from Train", - "create.schedule.no_stops": "UNLOCALIZED: This Schedule does not have any Stops yet", - "create.schedule.continued": "UNLOCALIZED: Schedule resumed", + "create.schedule.instruction_type": "次の動作:", + "create.schedule.instruction.editor": "命令エディタ", + "create.schedule.instruction.destination": "駅へ移動", + "create.schedule.instruction.destination.summary": "止まる駅:", + "create.schedule.instruction.filter_edit_box": "駅名", + "create.schedule.instruction.filter_edit_box_1": " * を使うと任意の文章を指定できます", + "create.schedule.instruction.filter_edit_box_2": "例: '私の駅, *乗線'", + "create.schedule.instruction.filter_edit_box_3": "列車は一致し開いている駅の中で最も近い駅を選びます", + "create.schedule.instruction.rename": "時刻表名の変更", + "create.schedule.instruction.rename.summary": "新しいタイトル", + "create.schedule.instruction.name_edit_box": "時刻表名", + "create.schedule.instruction.name_edit_box_1": "この文字はディスプレイの表示に影響します", + "create.schedule.instruction.name_edit_box_2": "デフォルトは次の行き先の名前です", + "create.schedule.instruction.throttle": "最大速度を制限する", + "create.schedule.instruction.throttle.summary": "最大速度を変更する%1$s", + "create.schedule.instruction.throttle_edit_box": "スロットル", + "create.schedule.instruction.throttle_edit_box_1": "列車の最大速度に影響します", + "create.schedule.condition_type": "もし~ならば/~後に再開:", + "create.schedule.condition.editor": "条件エディタ", + "create.schedule.condition.delay": "待機する", + "create.schedule.condition.delay_short": "待機: %1$s", + "create.schedule.condition.delay.status": "出発まで%1$s", + "create.schedule.condition.idle": "貨物のやりとりが停止しているなら", + "create.schedule.condition.idle_short": "貨物のやりとりが停止: %1$s", + "create.schedule.condition.idle.status": "%1$s貨物のやりとりが停止", + "create.schedule.condition.for_x_time": "%1$s間", + "create.schedule.condition.unloaded": "チャンクロードが解除されたら", + "create.schedule.condition.unloaded.status": "チャンクアンロードを待っています", + "create.schedule.condition.powered": "駅が赤石信号を受けたら", + "create.schedule.condition.powered.status": "レッドストーン信号を待っています", + "create.schedule.condition.time_of_day": "指定時刻", + "create.schedule.condition.time_of_day.scheduled": "予定時刻: %1$s", + "create.schedule.condition.time_of_day.digital_format": "%4$s%1$s:%3$s", + "create.schedule.condition.time_of_day.rotation": "繰り返し", + "create.schedule.condition.time_of_day.rotation.every_24": "1日ごと", + "create.schedule.condition.time_of_day.rotation.every_12": "12時間ごと", + "create.schedule.condition.time_of_day.rotation.every_6": "6時間ごと", + "create.schedule.condition.time_of_day.rotation.every_4": "4時間ごと", + "create.schedule.condition.time_of_day.rotation.every_3": "3時間ごと", + "create.schedule.condition.time_of_day.rotation.every_2": "2時間ごと", + "create.schedule.condition.time_of_day.rotation.every_1": "1時間ごと", + "create.schedule.condition.time_of_day.rotation.every_0_45": "45分ごと", + "create.schedule.condition.time_of_day.rotation.every_0_30": "30分ごと", + "create.schedule.condition.time_of_day.rotation.every_0_15": "15分ごと", + "create.schedule.condition.time_of_day.status": "出発時刻: ", + "create.schedule.condition.threshold.train_holds": "鉄道が指定%1$s積んだら", + "create.schedule.condition.threshold.greater": "以上", + "create.schedule.condition.threshold.less": "以下", + "create.schedule.condition.threshold.equal": "ぴったり", + "create.schedule.condition.threshold.x_units_of_item": "%1$s %2$sの%3$s", + "create.schedule.condition.threshold.matching_content": "一致する貨物", + "create.schedule.condition.threshold.item_measure": "アイテム単位", + "create.schedule.condition.threshold.items": "個", + "create.schedule.condition.threshold.stacks": "スタック", + "create.schedule.condition.threshold.buckets": "バケツ", + "create.schedule.condition.threshold.status": "貨物: %1$s/%2$s%3$s", + "create.schedule.condition.threshold.place_item": "参照アイテム", + "create.schedule.condition.threshold.place_item_2": "フィルターも使えます", + "create.schedule.condition.fluid_threshold": "液体貨物の状態", + "create.schedule.condition.item_threshold": "アイテム貨物の状態", + "create.schedule.condition.redstone_link": "レッドストーンリンク", + "create.schedule.condition.redstone_link.status": "レッドストーンリンクを待つ", + "create.schedule.condition.redstone_link_on": "リンクがオンなら", + "create.schedule.condition.redstone_link_off": "リンクがオフなら", + "create.schedule.condition.redstone_link.powered": "オン", + "create.schedule.condition.redstone_link.unpowered": "オフ", + "create.schedule.condition.redstone_link.frequency_state": "周波数の状態: ", + "create.schedule.condition.redstone_link.frequency_powered": "周波数がオンなら:", + "create.schedule.condition.redstone_link.frequency_unpowered": "周波数がオフなら:", + "create.schedule.condition.player_count": "座っているプレイヤー数", + "create.schedule.condition.player_count.summary": "%1$s人のプレイヤー", + "create.schedule.condition.player_count.summary_plural": "%1$s人のプレイヤー", + "create.schedule.condition.player_count.seated": "%1$sが着席", + "create.schedule.condition.player_count.players": "人のプレイヤー", + "create.schedule.condition.player_count.condition": "条件", + "create.schedule.condition.player_count.exactly": "ちょうど", + "create.schedule.condition.player_count.or_above": "以上", + "create.schedule.condition.player_count.status": "乗客数: %1$s/%2$s", + "create.schedule.loop": "無限ループ", + "create.schedule.loop1": "予定を最初からやり直す", + "create.schedule.loop2": "完了したら", + "create.schedule.reset": "進行度をリセット", + "create.schedule.skip": "現在の動作をスキップ", + "create.schedule.applied_to_train": "今この列車は時刻表に従っています", + "create.schedule.non_controlling_seat": "車掌は運転台ブロックの正面に座っている必要があります", + "create.schedule.remove_with_empty_hand": "先に素手で時刻表を回収してください", + "create.schedule.auto_removed_from_train": "自動で適用された時刻表を削除しました", + "create.schedule.removed_from_train": "列車から時刻表を取り出しました", + "create.schedule.no_stops": "この時刻表には停車駅がありません", + "create.schedule.continued": "運行を再開しました", - "create.track.selection_cleared": "UNLOCALIZED: Selection Cleared", - "create.track.valid_connection": "UNLOCALIZED: Can Connect ✔", - "create.track.second_point": "UNLOCALIZED: Place track or select a second point", - "create.track.too_far": "UNLOCALIZED: Too far away", - "create.track.original_missing": "UNLOCALIZED: Original block removed, Sneak-click to reset", - "create.track.perpendicular": "UNLOCALIZED: Cannot connect perpendicularly", - "create.track.ascending_s_curve": "UNLOCALIZED: Cannot create sloped S-Bends", - "create.track.too_sharp": "UNLOCALIZED: Turn too sharp", - "create.track.too_steep": "UNLOCALIZED: Slope too steep", - "create.track.slope_turn": "UNLOCALIZED: Cannot enter or leave slope on a turn", - "create.track.opposing_slopes": "UNLOCALIZED: Cannot connect opposing slopes", - "create.track.leave_slope_ascending": "UNLOCALIZED: Cannot leave this slope while ascending", - "create.track.leave_slope_descending": "UNLOCALIZED: Cannot leave this slope while descending", - "create.track.turn_90": "UNLOCALIZED: Can only turn up to 90 Degrees", - "create.track.junction_start": "UNLOCALIZED: Cannot start connection from a Junction", - "create.track.turn_start": "UNLOCALIZED: Cannot start connection from a Turn", - "create.track.not_enough_tracks": "UNLOCALIZED: Not holding enough tracks", - "create.track.not_enough_pavement": "UNLOCALIZED: Not holding enough pavement blocks", + "create.track.selection_cleared": "選択を破棄しました", + "create.track.valid_connection": "接続可能 ✔", + "create.track.second_point": "線路を置くか、次の位置を指定してください", + "create.track.too_far": "遠すぎます", + "create.track.original_missing": "元のブロックが存在しません。スニーククリックでリセットできます", + "create.track.perpendicular": "垂直には接続できません", + "create.track.ascending_s_curve": "傾斜のあるS字カーブは作成できません", + "create.track.too_sharp": "カーブが急すぎます", + "create.track.too_steep": "傾斜が急すぎます", + "create.track.slope_turn": "ターンで傾斜から出たり入ったりすることはできません", + "create.track.opposing_slopes": "逆向きのカーブの傾斜は接続できません", + "create.track.leave_slope_ascending": "この登り傾斜から離脱することはできません", + "create.track.leave_slope_descending": "この下り傾斜から離脱することはできません", + "create.track.turn_90": "90度を超えるターンは設置できません", + "create.track.junction_start": "分岐から接続は始められません", + "create.track.turn_start": "ターンから接続は始められません", + "create.track.not_enough_tracks": "線路が足りません", + "create.track.not_enough_pavement": "道床ブロックが足りません", - "create.portal_track.failed": "UNLOCALIZED: Cannot place portal track:", - "create.portal_track.missing": "UNLOCALIZED: Target portal not generated yet", - "create.portal_track.blocked": "UNLOCALIZED: Target location blocked (%1$s,%2$s,%3$s)", + "create.portal_track.failed": "ポータル線路を設置できません:", + "create.portal_track.missing": "対象のポータルはまだ生成されていません", + "create.portal_track.blocked": "対象の位置は塞がっています(%1$s,%2$s,%3$s)", - "create.station.idle": "UNLOCALIZED: Station is Idle", - "create.station.assembly_title": "UNLOCALIZED: Train Assembly", - "create.station.close": "UNLOCALIZED: Close Window", - "create.station.cancel": "UNLOCALIZED: Cancel Assembly", - "create.station.failed": "UNLOCALIZED: Assembly Failed", - "create.station.icon_type": "UNLOCALIZED: Icon Type", - "create.station.create_train": "UNLOCALIZED: Create new Train", - "create.station.assemble_train": "UNLOCALIZED: Assemble Train", - "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", - "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", - "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", - "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", - "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", - "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", - "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", - "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", - "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", - "create.station.carriage_number": "UNLOCALIZED: Carriage %1$s:", - "create.station.retry": "UNLOCALIZED: Resolve this and retry", - "create.station.no_bogeys": "UNLOCALIZED: No Bogeys", - "create.station.one_bogey": "UNLOCALIZED: 1 Bogey", - "create.station.more_bogeys": "UNLOCALIZED: %1$s Bogeys", - "create.station.how_to": "UNLOCALIZED: Use Train Casing on highlighted Tracks to create bogeys.", - "create.station.how_to_1": "UNLOCALIZED: Remove bogeys by breaking the block on top.", - "create.station.how_to_2": "UNLOCALIZED: Build carriages attached to one or two bogeys each.", + "create.station.idle": "駅は待機中です", + "create.station.assembly_title": "列車組み立て", + "create.station.close": "ウィンドウを閉じる", + "create.station.cancel": "組み立てをキャンセル", + "create.station.failed": "組み立てに失敗しました", + "create.station.icon_type": "アイコンの種類", + "create.station.create_train": "新しい列車の作成", + "create.station.assemble_train": "列車を組み立て", + "create.station.disassemble_train": "列車を分解", + "create.station.remove_schedule": "時刻表を取り出し", + "create.station.remove_auto_schedule": "自動で適用された時刻表を破棄", + "create.station.no_assembly_diagonal": "交差線路の上では", + "create.station.no_assembly_diagonal_1": "列車を組み立てられません", + "create.station.no_assembly_curve": "カーブしている線路の上では", + "create.station.no_assembly_curve_1": "列車を組み立てられません", + "create.station.train_not_aligned": "すべての車両が並んでいないため、", + "create.station.train_not_aligned_1": "列車を編集できません", + "create.station.carriage_number": "%1$s両目:", + "create.station.retry": "解決してやり直してください", + "create.station.no_bogeys": "台車がありません", + "create.station.one_bogey": "台車1台", + "create.station.more_bogeys": "台車%1$s台", + "create.station.how_to": "鉄道用ケーシングを強調表示された線路に使うと台車を作れます", + "create.station.how_to_1": "上の方のブロックを壊せば台車を壊せます", + "create.station.how_to_2": "車両を作るには1台か2台の台車を繋げてください", - "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", - "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", - "create.train_assembly.no_bogeys": "UNLOCALIZED: No Bogeys Found", - "create.train_assembly.not_connected_in_order": "UNLOCALIZED: Bogeys are not connected in order", - "create.train_assembly.bogeys_too_close": "UNLOCALIZED: Bogeys %1$s and %2$s are too close to each other", - "create.train_assembly.single_bogey_carriage": "UNLOCALIZED: This Bogey type cannot support a carriage on its own", - "create.train_assembly.nothing_attached": "UNLOCALIZED: No structure attached to Bogey %1$s", - "create.train_assembly.no_controls": "UNLOCALIZED: At least one forward-facing controls block needs to be mounted on the train", - "create.train_assembly.sideways_controls": "UNLOCALIZED: A mounted controls block is facing sideways", - "create.train_assembly.bogey_created": "UNLOCALIZED: Bogey created. Click again to cycle type", - "create.train_assembly.requires_casing": "UNLOCALIZED: Use Railway Casing to create bogeys on tracks", + "create.train_assembly.too_many_bogeys": "台車が多すぎます: %1$s", + "create.train_assembly.frontmost_bogey_at_station": "先頭の台車は駅マーカーの上にある必要があります", + "create.train_assembly.no_bogeys": "台車が見つかりません", + "create.train_assembly.not_connected_in_order": "台車は順番に接続されていません", + "create.train_assembly.bogeys_too_close": "台車%1$sと台車%2$sは近すぎます", + "create.train_assembly.single_bogey_carriage": "このタイプの台車は単体で列車にできません", + "create.train_assembly.nothing_attached": "台車%1$sには構造物が接続されていません", + "create.train_assembly.no_controls": "最低一つは前向きの運転台ブロックを列車に乗せる必要があります", + "create.train_assembly.sideways_controls": "乗っている運転台ブロックは横向きです", + "create.train_assembly.bogey_created": "台車を作りました。もう一度クリックすれば循環して種類を変えられます", + "create.train_assembly.requires_casing": "線路に台車を作るには鉄道用ケーシングを使ってください", - "create.track_target.set": "UNLOCALIZED: Targeted track selected", - "create.track_target.success": "UNLOCALIZED: Successfully bound to targeted track", - "create.track_target.clear": "UNLOCALIZED: Cleared track selection", - "create.track_target.missing": "UNLOCALIZED: Right-click the targeted train track first", - "create.track_target.too_far": "UNLOCALIZED: Targeted track is too far from here", - "create.track_target.no_junctions": "UNLOCALIZED: Targeted track cannot be an intersection", - "create.track_target.occupied": "UNLOCALIZED: Targeted track is occupied", - "create.track_target.invalid": "UNLOCALIZED: Cannot target this track here", + "create.track_target.set": "対象となる線路を選択しました", + "create.track_target.success": "対象の線路との接続に成功しました", + "create.track_target.clear": "線路の選択を解除しました", + "create.track_target.missing": "まず対象となる線路を右クリックしてください", + "create.track_target.too_far": "対象となる線路はここから遠すぎます", + "create.track_target.no_junctions": "対象となる線路は交差できません", + "create.track_target.occupied": "対象となる線路はふさがっています", + "create.track_target.invalid": "この線路を選択することはできません", - "create.train.unnamed": "UNLOCALIZED: Unnamed Train", - "create.train.cannot_relocate_moving": "UNLOCALIZED: Cannot relocate a moving Train", - "create.train.relocate": "UNLOCALIZED: Click a Track to Relocate %1$s to. Sneak-Click to abort", - "create.train.relocate.abort": "UNLOCALIZED: Relocation aborted", - "create.train.relocate.success": "UNLOCALIZED: Relocation successful", - "create.train.relocate.valid": "UNLOCALIZED: Can relocate to here, Click to Confirm", - "create.train.relocate.invalid": "UNLOCALIZED: Cannot relocate Train to here", - "create.train.relocate.too_far": "UNLOCALIZED: Cannot relocate Train this far away", - "create.train.departing_from": "UNLOCALIZED: Departing from %1$s", - "create.train.arrived_at": "UNLOCALIZED: Arrived at %1$s", - "create.train.status": "UNLOCALIZED: Information about Train: %1$s", - "create.train.status.back_on_track": "UNLOCALIZED: Train is back on Track", - "create.train.status.collision": "UNLOCALIZED: Collision with other Train", - "create.train.status.end_of_track": "UNLOCALIZED: A Carriage has reached the end of its Track", - "create.train.status.double_portal": "UNLOCALIZED: A Carriage cannot enter a portal whilst leaving another", - "create.train.status.coupling_stress": "UNLOCALIZED: Forced stop due to Stress on Couplings", - "create.train.status.track_missing": "UNLOCALIZED: Tracks are missing beneath the Train", - "create.train.status.paused_for_manual": "UNLOCALIZED: Schedule paused for manual controls", - "create.train.status.opposite_driver": "UNLOCALIZED: Path requires a driver facing the opposite direction", - "create.train.status.missing_driver": "UNLOCALIZED: Driver has gone missing", - "create.train.status.found_driver": "UNLOCALIZED: A new driver has been found", - "create.train.status.navigation_success": "UNLOCALIZED: Navigation succeeded", - "create.train.status.no_match": "UNLOCALIZED: No station on graph matches '%1$s'", - "create.train.status.no_path": "UNLOCALIZED: No suitable path to the next Scheduled destination could be found", + "create.train.unnamed": "無名の列車", + "create.train.cannot_relocate_moving": "動いている列車は移動できません", + "create.train.relocate": "%1$sを移動する線路をクリックしてください。スニーククリックでキャンセルできます。", + "create.train.relocate.abort": "列車の移動をキャンセルしました", + "create.train.relocate.success": "移動が成功しました", + "create.train.relocate.valid": "列車はここに移動可能です。クリックで適用", + "create.train.relocate.invalid": "列車をここに移動することはできません", + "create.train.relocate.too_far": "列車を移動させるには遠すぎます", + "create.train.departing_from": "%1$sから出発", + "create.train.arrived_at": "%1$sに到着", + "create.train.status": " 列車情報: %1$s", + "create.train.status.back_on_track": "列車は再び線路の上に戻りました", + "create.train.status.collision": "他の列車と衝突しました", + "create.train.status.end_of_track": "車両が線路の端に到達しました", + "create.train.status.double_portal": "ポータルから出て来ている間に別のポータルに車両が入ることはできません", + "create.train.status.coupling_stress": "連結器に大きな力がかかったため強制停止しました", + "create.train.status.track_missing": "列車が線路上にありません", + "create.train.status.paused_for_manual": "手動操縦のため、時刻表の運行を一時停止しました", + "create.train.status.opposite_driver": "この経路には逆向きの運転手が必要です", + "create.train.status.missing_driver": "運転手がいません", + "create.train.status.found_driver": "新しい運転手が見つかりました", + "create.train.status.navigation_success": "経路探索に成功しました", + "create.train.status.no_match": "線路ネットワークに'%1$s'と一致する駅が見つかりません", + "create.train.status.no_path": "次の行先への適切な経路が見つかりません", - "create.track_signal.cannot_change_mode": "UNLOCALIZED: Unable to switch mode of this Signal", - "create.track_signal.mode_change.entry_signal": "UNLOCALIZED: -> Allow passage if section unoccupied", - "create.track_signal.mode_change.cross_signal": "UNLOCALIZED: -> Allow passage if section fully traversable", + "create.track_signal.cannot_change_mode": "この信号のモードを切り替えることはできません", + "create.track_signal.mode_change.entry_signal": " -> 区間が空いているなら通過を許可", + "create.track_signal.mode_change.cross_signal": " -> 区間をよどみなく走行できるなら通過を許可", - "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", - "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", - "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.start_controlling": "運転中: %1$s", + "create.contraption.controls.stop_controlling": "運転終了", + "create.contraption.controls.approach_station": "%1$sキーを長押しで%2$sに停車", - "create.display_link.set": "UNLOCALIZED: Targeted position selected", - "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", - "create.display_link.clear": "UNLOCALIZED: Cleared position selection", - "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here", - "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again", - "create.display_link.title": "UNLOCALIZED: Display Link", - "create.display_link.no_source": "UNLOCALIZED: Not a Display Source", - "create.display_link.no_target": "UNLOCALIZED: Not a Display Target", - "create.display_link.reading_from": "UNLOCALIZED: Read from:", - "create.display_link.writing_to": "UNLOCALIZED: Send to:", - "create.display_link.attached_side": "UNLOCALIZED: Block on attached side", - "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location", - "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible", - "create.display_link.information_type": "UNLOCALIZED: Type of Information", - "create.display_link.display_on": "UNLOCALIZED: Write data to:", - "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:", + "create.display_link.set": "対象の位置を選択しました", + "create.display_link.success": "対象の位置と結び付けられました", + "create.display_link.clear": "選択した位置を破棄しました", + "create.display_link.too_far": "対象の位置はここから遠すぎます", + "create.display_link.invalid": "適切な対象ではありません、再設置してください", + "create.display_link.title": "ディスプレイリンク", + "create.display_link.no_source": "情報源がありません", + "create.display_link.no_target": "表示先がありません", + "create.display_link.reading_from": "受信元:", + "create.display_link.writing_to": "送信先:", + "create.display_link.attached_side": "接続面のブロック", + "create.display_link.targeted_location": "対象の位置のブロック", + "create.display_link.view_compatible": "クリックして互換性のあるすべてのものを表示", + "create.display_link.information_type": "情報の種類", + "create.display_link.display_on": "データの書き込み先:", + "create.display_link.display_on_multiline": "表示を始める行:", - "create.display_source.label": "UNLOCALIZED: Attached Label", - "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", - "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", - "create.display_source.list_items": "UNLOCALIZED: List matching Items", - "create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids", - "create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids", - "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", - "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", - "create.display_source.fill_level.display": "UNLOCALIZED: Display Format", - "create.display_source.fill_level.percent": "UNLOCALIZED: Percent", - "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", - "create.display_source.value_list.display": "UNLOCALIZED: Value Display", - "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened", - "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number", - "create.display_source.value_list.thousand": "UNLOCALIZED: k", - "create.display_source.value_list.million": "UNLOCALIZED: m", - "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths", - "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard", - "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID", - "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", - "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", - "create.display_source.time_of_day": "UNLOCALIZED: Time of Day", - "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch", - "create.display_source.time.format": "UNLOCALIZED: Time Format", - "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour", - "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour", - "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", - "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput", - "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval", - "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second", - "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", - "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", - "create.display_source.train_status": "UNLOCALIZED: Train Schedule Status", - "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary", - "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter", - "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", - "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", - "create.display_source.station_summary.now": "UNLOCALIZED: now", - "create.display_source.station_summary.minutes": "UNLOCALIZED: min", - "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", - "create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", - "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", - "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", - "create.display_source.entity_name": "UNLOCALIZED: Entity Name", - "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", - "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", - "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", - "create.display_source.kinetic_stress": "UNLOCALIZED: Network Stress", - "create.display_source.kinetic_stress.display": "UNLOCALIZED: Displayed Info", - "create.display_source.kinetic_stress.progress_bar": "UNLOCALIZED: Progress Bar", - "create.display_source.kinetic_stress.percent": "UNLOCALIZED: Percentage", - "create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress in SU", - "create.display_source.kinetic_stress.max": "UNLOCALIZED: Total Capacity", - "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Remaining SU", - "create.display_source.redstone_power": "UNLOCALIZED: Redstone Power", - "create.display_source.redstone_power.display": "UNLOCALIZED: Display Format", - "create.display_source.redstone_power.number": "UNLOCALIZED: Number", - "create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar", - "create.display_source.boiler.not_enough_space": "UNLOCALIZED: Not enough space ", - "create.display_source.boiler.for_boiler_status": "UNLOCALIZED: for Boiler Status", + "create.display_source.label": "ラベル", + "create.display_source.combine_item_names": "アイテム名を結合", + "create.display_source.count_items": "一致するアイテムの量", + "create.display_source.list_items": "一致するアイテムの一覧", + "create.display_source.fluid_amount": "一致する液体の量", + "create.display_source.list_fluids": "一致する液体の一覧", + "create.display_source.nixie_tube": "ニキシー管の表示内容をコピー", + "create.display_source.fill_level": "収納ブロックの使用率", + "create.display_source.fill_level.display": "表示形式", + "create.display_source.fill_level.percent": "パーセント", + "create.display_source.fill_level.progress_bar": "プログレスバー", + "create.display_source.value_list.display": "数値の表示形式", + "create.display_source.value_list.shortened": "短縮", + "create.display_source.value_list.full_number": "完全な数値", + "create.display_source.value_list.thousand": "k", + "create.display_source.value_list.million": "m", + "create.display_source.player_deaths": "プレイヤーの死亡回数", + "create.display_source.scoreboard": "スコアボード", + "create.display_source.scoreboard.objective": "Objective ID", + "create.display_source.scoreboard.objective_not_found": "'%1$s' not found", + "create.display_source.scoreboard.objective.deaths": "プレイヤーの死亡回数", + "create.display_source.time_of_day": "現在時刻", + "create.display_source.stop_watch": "ストップウォッチ", + "create.display_source.time.format": "時刻の表示形式", + "create.display_source.time.12_hour": "12時間制", + "create.display_source.time.24_hour": "24時間制", + "create.display_source.accumulate_items": "蓄積アイテムカウンター", + "create.display_source.item_throughput": "アイテム処理量", + "create.display_source.item_throughput.interval": "間隔", + "create.display_source.item_throughput.interval.second": "毎秒", + "create.display_source.item_throughput.interval.minute": "毎分", + "create.display_source.item_throughput.interval.hour": "毎時", + "create.display_source.train_status": "鉄道運行の状態", + "create.display_source.station_summary": "鉄道駅の概要", + "create.display_source.station_summary.filter": "駅名フィルター", + "create.display_source.station_summary.train_name_column": "列車名の表示幅", + "create.display_source.station_summary.platform_column": "プラットフォームの表示幅", + "create.display_source.station_summary.now": "到着", + "create.display_source.station_summary.minutes": "分後", + "create.display_source.station_summary.seconds": "%1$s秒後", + "create.display_source.observed_train_name": "検知した列車名", + "create.display_source.max_enchant_level": "最大エンチャントコスト", + "create.display_source.boiler_status": "ボイラー状態", + "create.display_source.entity_name": "エンティティ名", + "create.display_source.kinetic_speed": "回転速度(RPM)", + "create.display_source.kinetic_speed.absolute": "回転方向を無視", + "create.display_source.kinetic_speed.directional": "回転方向を含める", + "create.display_source.kinetic_stress": "ネットワークの応力", + "create.display_source.kinetic_stress.display": "表示する情報", + "create.display_source.kinetic_stress.progress_bar": "プログレスバー", + "create.display_source.kinetic_stress.percent": "パーセント", + "create.display_source.kinetic_stress.current": "使用しているSU", + "create.display_source.kinetic_stress.max": "許容応力の合計", + "create.display_source.kinetic_stress.remaining": "残りのSU", + "create.display_source.redstone_power": "レッドストーン強度", + "create.display_source.redstone_power.display": "表示形式", + "create.display_source.redstone_power.number": "数値", + "create.display_source.redstone_power.progress_bar": "プログレスバー", + "create.display_source.boiler.not_enough_space": "ボイラーステータスの表示に", + "create.display_source.boiler.for_boiler_status": "十分なスペースがありません ", - "create.display_target.line": "UNLOCALIZED: Line %1$s", - "create.display_target.page": "UNLOCALIZED: Page %1$s", - "create.display_target.single_line": "UNLOCALIZED: Single Line", + "create.display_target.line": "%1$s行目", + "create.display_target.page": "%1$sページ目", + "create.display_target.single_line": "単一行", - "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", - "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", - "create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s", - "create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", - "create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ", - "create.flap_display.cycles.instant": "UNLOCALIZED: ; ", - "create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒", + "create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", + "create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9", + "create.flap_display.cycles.arrival_time": " ; 分;現在;15秒;30秒;45秒", + "create.flap_display.cycles.shortened_numbers": " ;K;M", + "create.flap_display.cycles.fluid_units": "mB;B ", + "create.flap_display.cycles.instant": " ; ", + "create.flap_display.cycles.pixel": "█;▓;▒", - "create.super_glue.too_far": "UNLOCALIZED: Selected area is too big", - "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", - "create.super_glue.click_to_confirm": "UNLOCALIZED: Click again to confirm", - "create.super_glue.click_to_discard": "UNLOCALIZED: Sneak-click to discard selection", - "create.super_glue.first_pos": "UNLOCALIZED: First position selected", - "create.super_glue.abort": "UNLOCALIZED: Selection discarded", - "create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory", - "create.super_glue.success": "UNLOCALIZED: Applying Glue...", + "create.super_glue.too_far": "選択した範囲が大きすぎます", + "create.super_glue.cannot_reach": "選択したブロックは繋がっているべきです", + "create.super_glue.click_to_confirm": "もう一度クリックで続行", + "create.super_glue.click_to_discard": "スニークしながらクリックで選択範囲を破棄", + "create.super_glue.first_pos": "始点を選択しました", + "create.super_glue.abort": "選択を破棄しました", + "create.super_glue.not_enough": "インベントリに十分な超粘着剤がありません。", + "create.super_glue.success": "超粘着剤を適用中...", "create.gui.config.overlay1": "やぁ(・∀・)", "create.gui.config.overlay2": "これはオーバーレイのサンプルです", @@ -1742,8 +1742,8 @@ "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", "create.command.killTPSCommand.argument.tickTime": "tickTime", - "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力がからくりカートを世界に縛り付けています。", + "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません", + "create.contraption.minecart_contraption_illegal_pickup": "超自然的な力が、からくりカートを世界に縛り付けています", "_": "->------------------------] Subtitles [------------------------<-", @@ -1751,17 +1751,17 @@ "create.subtitle.contraption_disassemble": "からくりが止まる", "create.subtitle.peculiar_bell_use": "風変わりな鐘が鳴る", "create.subtitle.worldshaper_place": "ワールドシェーパーが設置する", - "create.subtitle.whistle_train_manual": "UNLOCALIZED: Train honks", - "create.subtitle.steam": "UNLOCALIZED: Steam noises", + "create.subtitle.whistle_train_manual": "汽車の汽笛が鳴る", + "create.subtitle.steam": "蒸気の音", "create.subtitle.saw_activate_stone": "メカニカルソーが動作する", "create.subtitle.schematicannon_finish": "概略図砲が作業を終える", "create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする", "create.subtitle.wrench_remove": "機械を壊す", - "create.subtitle.train3": "UNLOCALIZED: Bogey wheels rumble muffled", - "create.subtitle.whistle": "UNLOCALIZED: Whistling", + "create.subtitle.train3": "台車の車輪がゴロゴロと音を立てる", + "create.subtitle.whistle": "汽笛が鳴る", "create.subtitle.cogs": "歯車がゴロゴロと鳴る", "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", - "create.subtitle.whistle_train_low": "UNLOCALIZED: Low whistling", + "create.subtitle.whistle_train_low": "汽笛が低く鳴る", "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", "create.subtitle.controller_take": "書見台が空になる", "create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音", @@ -1773,24 +1773,24 @@ "create.subtitle.sanding_long": "研磨音", "create.subtitle.crushing_1": "粉砕音", "create.subtitle.depot_slide": "アイテムが滑る", - "create.subtitle.blaze_munch": "ブレイズの咀嚼音", + "create.subtitle.blaze_munch": "ブレイズが食べる音", "create.subtitle.funnel_flap": "ファンネルがはためく", "create.subtitle.haunted_bell_use": "憑りつかれた鐘が鳴る", "create.subtitle.scroll_value": "スクロールのカチカチ音", "create.subtitle.controller_put": "コントローラのトントン音", "create.subtitle.cranking": "ハンドクランクが回る", "create.subtitle.sanding_short": "研磨音", - "create.subtitle.wrench_rotate": "レンチが使用される", - "create.subtitle.potato_hit": "野菜の衝撃", + "create.subtitle.wrench_rotate": "レンチが使われる", + "create.subtitle.potato_hit": "野菜が砕ける", "create.subtitle.saw_activate_wood": "メカニカルソーが動作する", - "create.subtitle.whistle_high": "UNLOCALIZED: High whistling", - "create.subtitle.whistle_train_manual_low": "UNLOCALIZED: Train honks", - "create.subtitle.whistle_train": "UNLOCALIZED: Whistling", + "create.subtitle.whistle_high": "汽笛が高く鳴る", + "create.subtitle.whistle_train_manual_low": "汽車の汽笛が鳴る", + "create.subtitle.whistle_train": "汽車の汽笛が鳴る", "create.subtitle.haunted_bell_convert": "憑りつかれた鐘が目覚める", - "create.subtitle.train": "UNLOCALIZED: Bogey wheels rumble", + "create.subtitle.train": "台車の車輪が鳴る", "create.subtitle.deny": "失敗音", "create.subtitle.controller_click": "コントローラーのカチカチ音", - "create.subtitle.whistle_low": "UNLOCALIZED: Low whistling", + "create.subtitle.whistle_low": "汽笛が低く鳴る", "create.subtitle.copper_armor_equip": "潜水服がチャリンと鳴る", "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", "create.subtitle.contraption_assemble": "からくりが動く", @@ -1801,25 +1801,25 @@ "item.create.example_item.tooltip": "アイテムの例(ただ単にこのツールチップが存在することを示すマーカー)", "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。アンダーバーで用語を強調表示します。", "item.create.example_item.tooltip.condition1": "これをしたとき", - "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことを行います。(シフトを押したときに表示される)", + "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことをします。(シフトを押したときに表示される)", "item.create.example_item.tooltip.condition2": "そしてこれをしたとき", "item.create.example_item.tooltip.behaviour2": "好きなだけ挙動を追加できます。", "item.create.example_item.tooltip.control1": "Ctrlを押したとき", "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", "block.create.wooden_bracket.tooltip": "木製ブラケット", - "block.create.wooden_bracket.tooltip.summary": "補強用の温かみのある木の欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", + "block.create.wooden_bracket.tooltip.summary": "この補強用の温かみのある腕木で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", "block.create.metal_bracket.tooltip": "金属ブラケット", - "block.create.metal_bracket.tooltip.summary": "補強用の頑丈で工業的な欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", + "block.create.metal_bracket.tooltip.summary": "この補強用の工業的で頑丈な腕金で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_からくり_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", + "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_からくり_の上にプレイヤーを固定します。もちろん家具にも使えます。染色も。", "block.create.seat.tooltip.condition1": "右クリックしたとき", "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", "item.create.blaze_cake.tooltip": "ブレイズケーキ", - "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_達に美味しいご馳走を。彼らを燃え上がらせよう(物理)!", + "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_たちに美味しいごちそうを。彼らを燃え上がらせよう(物理)!", "item.create.wand_of_symmetry.tooltip": "対称の杖", "item.create.wand_of_symmetry.tooltip.summary": "対象の鏡をまたいだ範囲内のブロック設置を完全に複製します。", @@ -1833,11 +1833,11 @@ "item.create.wand_of_symmetry.tooltip.action3": "_設定画面_を開きます。", "item.create.handheld_worldshaper.tooltip": "携帯型ワールドシェーパー", - "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作成する便利なツール。", + "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作るのに便利な道具。", "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", + "item.create.handheld_worldshaper.tooltip.action1": "見ているブロックをこの道具に設定します。", "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_を目標の場所に適用します。", + "item.create.handheld_worldshaper.tooltip.action2": "選択されている_ブラシ_や_ツール_を目標の場所に適用します。", "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", "item.create.handheld_worldshaper.tooltip.action3": "_設定画面_を開きます。", @@ -1855,7 +1855,7 @@ "item.create.potato_cannon.tooltip": "ポテトキャノン", "item.create.potato_cannon.tooltip.summary": "バキューン!自分が育てた野菜を敵に発射します。_銅のバックタンク_の圧縮空気でも動かせます。", - "item.create.potato_cannon.tooltip.condition1": "左クリックしたとき", + "item.create.potato_cannon.tooltip.condition1": "右クリックしたとき", "item.create.potato_cannon.tooltip.behaviour1": "_インベントリ_の中から_適切_なアイテムを発射します。", "item.create.potato_cannon.tooltip.condition2": "銅のバックタンクを装備した時", "item.create.potato_cannon.tooltip.behaviour2": "_耐久値_を消費しなくなります。代わりに_圧縮空気_をタンクから消費します", @@ -1875,10 +1875,10 @@ "item.create.attribute_filter.tooltip.behaviour2": "_設定画面_を開きます。", "item.create.empty_schematic.tooltip": "空の概略図", - "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図台_での書き込みに使われます。", + "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図台_からの書き込みに使われます。", "item.create.schematic.tooltip": "概略図", - "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", + "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保存します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築できます。", "item.create.schematic.tooltip.condition1": "持ったとき", "item.create.schematic.tooltip.behaviour1": "画面上のツールを使ってホログラムを配置します。", "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", @@ -1892,7 +1892,7 @@ "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。もう一度右クリックして保存します。", "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", - "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", + "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押しているとき", "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。_スクロール_して距離を調整します。", "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", @@ -1910,7 +1910,7 @@ "item.create.goggles.tooltip": "ゴーグル", "item.create.goggles.tooltip.summary": "有用な_回転力_の_情報_を視界に映す眼鏡。", "item.create.goggles.tooltip.condition1": "着用したとき", - "item.create.goggles.tooltip.behaviour1": "設置された機械の_回転速度_および、_機械_の_応力への影響_と_許容量_を_色付きのインジケーター_で表示します。", + "item.create.goggles.tooltip.behaviour1": "設置した機械の_回転速度_および、_機械_の_応力への影響_と_許容応力_を_色付きのインジケーター_で表示します。", "item.create.goggles.tooltip.condition2": "計器を見たとき", "item.create.goggles.tooltip.behaviour2": "計器が接続されている動力ネットワークの_回転速度_または_応力_に関する詳細情報を表示します。", "item.create.goggles.tooltip.condition3": "液体コンテナを見たとき", @@ -1927,12 +1927,12 @@ "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", "block.create.cuckoo_clock.tooltip": "鳩時計", - "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい細工。", - "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", + "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい機械細工。", + "block.create.cuckoo_clock.tooltip.condition1": "動力を供給したとき", "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。、_正午_と夕暮れに_プレイヤーが眠れる_時間になるとすぐに_再生_します。", "block.create.turntable.tooltip": "ターンテーブル", - "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", + "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えよう。", "block.create.toolbox.tooltip": "工具箱", "block.create.toolbox.tooltip.summary": "発明家の最愛の仲間。異なる8種類のアイテムを大量に_収納_できる便利グッズ。", @@ -1940,30 +1940,30 @@ "block.create.toolbox.tooltip.behaviour1": "インベントリの_内容_を_保持_します", "block.create.toolbox.tooltip.condition2": "範囲内に置いたとき", "block.create.toolbox.tooltip.behaviour2": "_近く_にいる_プレイヤー_が_工具箱_の_キーバインド_を押すと、工具箱に_触れずに_アクセスできます", - "block.create.toolbox.tooltip.condition3": "左クリックした時", + "block.create.toolbox.tooltip.condition3": "右クリックした時", "block.create.toolbox.tooltip.behaviour3": "_収納UI_を開きます", "block.create.stockpile_switch.tooltip": "在庫スイッチ", - "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_によってレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", + "block.create.stockpile_switch.tooltip.summary": "接続した収納ブロックの_空き容量_によってレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転する_しきい値_を設定できます。", "block.create.stockpile_switch.tooltip.condition1": "右クリックしたとき", "block.create.stockpile_switch.tooltip.behaviour1": "_設定画面_を開きます。", "block.create.content_observer.tooltip": "コンテンツオブザーバー", - "block.create.content_observer.tooltip.summary": "設定された_フィルター_に一致する_コンテナ_や_メカニカルベルト_内の_アイテム_を_検出_します。観察している_収納ブロック_、_ベルト_、または_シュート_に一致するアイテムが含まれている場合、このは_レッドストーン信号_を発します。観察している_ファンネル_が一致するアイテムを_運搬_すると、このコンポーネントは_レッドストーンパルス_を発します。", + "block.create.content_observer.tooltip.summary": "_収納ブロック_や_メカニカルベルト_内の設定した_フィルター_に一致する_アイテム_を_検出_します。", "block.create.content_observer.tooltip.condition1": "収納ブロックを観察するとき", - "block.create.content_observer.tooltip.behaviour1": "観測するコンテナが_一致するコンテンツ_が入っている間、_レッドストーン信号_を発する。", + "block.create.content_observer.tooltip.behaviour1": "観測する収納ブロックが_一致するコンテンツ_が入っている間、_レッドストーン信号_を発する。", "block.create.content_observer.tooltip.condition2": "ファンネルを観察するとき", "block.create.content_observer.tooltip.behaviour2": "_一致するアイテム_が_輸送_されると、_レッドストーンパルス_を発します。", "block.create.creative_crate.tooltip": "クリエイティブクレート", "block.create.creative_crate.tooltip.summary": "あらゆるアイテムを無限に複製する_収納ブロック_。隣接する_概略図砲_へブロックを無限に供給します。", "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", - "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。", + "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定したアイテムが_無限_に_搬出_されます。このクレートに_搬入_したアイテムは_消滅_します。", "item.create.creative_blaze_cake.tooltip": "クリエイティブブレイズケーキ", - "item.create.creative_blaze_cake.tooltip.summary": "ブレイズバーナーの火力をコントロールすることができる特別なケーキ。ブレイズバーナーたちがこれを食べれば絶対燃え尽きない(物理)だろう。", - "item.create.creative_blaze_cake.tooltip.condition1": "ブレイズバーナーを左クリックしたとき", - "item.create.creative_blaze_cake.tooltip.behaviour1": "ブレイズバーナーの火力をロックします。再度使用するとブレイズバーナーの火力を循環させます", + "item.create.creative_blaze_cake.tooltip.summary": "ブレイズバーナーの火力をコントロールすることができる特別なケーキ。ブレイズバーナーたちがこれを食べれば絶対燃え尽きない(物理)。", + "item.create.creative_blaze_cake.tooltip.condition1": "ブレイズバーナーを使ったとき", + "item.create.creative_blaze_cake.tooltip.behaviour1": "ブレイズバーナーの火力を固定します。再度使用するとブレイズバーナーの火力を循環して切り替えます", "block.create.controller_rail.tooltip": "コントローラーレール", "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", @@ -1971,7 +1971,7 @@ "block.create.controller_rail.tooltip.behaviour1": "通過する_トロッコ_を_信号の強度_に対応した移動速度に_加速_または_減速_します。また、隣接するコントローラレールにレッドストーン信号を伝達します。2つのコントローラレールに強度の異なるレッドストーン信号を供給すると、それらの間のレールはその信号の変化を補間します。", "item.create.sand_paper.tooltip": "紙やすり", - "item.create.sand_paper.tooltip.summary": "_素材_を_磨く_のに使える荒い紙。デプロイヤーに自動的で磨かせることもできます。", + "item.create.sand_paper.tooltip.summary": "_素材_を_磨く_のに使える荒い紙。デプロイヤーに自動で磨かせることもできます。", "item.create.sand_paper.tooltip.condition1": "使ったとき", "item.create.sand_paper.tooltip.behaviour1": "_オフハンド_で持っていたり、_視線先_の_ドロップ状態のアイテム_を磨きます。", @@ -1989,15 +1989,15 @@ "item.create.shadow_steel.tooltip.behaviour1": "この素材の使用方法は将来のリリースで実装予定です。", "item.create.linked_controller.tooltip": "リンクコントローラー", - "item.create.linked_controller.tooltip.summary": "_6つのボタン_に割り当てられた_レッドストーンリンク_周波数を_片手_で_制御_できます。", - "item.create.linked_controller.tooltip.condition1": "左クリック", + "item.create.linked_controller.tooltip.summary": "_6つのボタン_に割り当てられた周波数の_レッドストーンリンク_を_片手_で_制御_できます。", + "item.create.linked_controller.tooltip.condition1": "右クリック", "item.create.linked_controller.tooltip.behaviour1": "コントローラーを_オンオフ_します。_制御_がオンのときは_移動_できません。", - "item.create.linked_controller.tooltip.condition2": "スニークしながら左クリック", + "item.create.linked_controller.tooltip.condition2": "スニークしながら右クリック", "item.create.linked_controller.tooltip.behaviour2": "手動_設定画面_を開きます", - "item.create.linked_controller.tooltip.condition3": "レッドストーンリンク受信機を左クリックしたとき", + "item.create.linked_controller.tooltip.condition3": "レッドストーンリンク受信機を右クリックしたとき", "item.create.linked_controller.tooltip.behaviour3": "_割り当てモード_をオンにします。_6つのコントロール_のうち1つを押してリンクの周波数に_割り当て_ます。", - "item.create.linked_controller.tooltip.condition4": "書見台を左クリックしたとき", - "item.create.linked_controller.tooltip.behaviour4": "コントローラーを書見台に設置し、簡単に使えるようにします。(スニーク中に左クリックで取り出せます)", + "item.create.linked_controller.tooltip.condition4": "書見台を右クリックしたとき", + "item.create.linked_controller.tooltip.behaviour4": "コントローラーを書見台に設置し、簡単に使えるようにします。(スニークしながら右クリックで取り出せます)", "item.create.diving_helmet.tooltip": "潜水ヘルメット", "item.create.diving_helmet.tooltip.summary": "_銅のバックタンク_と一緒に使うと、長時間_水中_で_呼吸_できるようになるヘルメット。", @@ -2011,17 +2011,17 @@ "item.create.copper_backtank.tooltip.condition2": "設置して動力を供給したとき", "item.create.copper_backtank.tooltip.behaviour2": "_圧縮空気_を_集めます_。速度は回転速度によって決まります。", - "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", - "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", - "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", - "block.create.placard.tooltip.behaviour1": "UNLOCALIZED: _Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.", - "block.create.placard.tooltip.condition2": "UNLOCALIZED: When Punched", - "block.create.placard.tooltip.behaviour2": "UNLOCALIZED: _Removes_ the current _item_ in the frame.", + "block.create.placard.tooltip": "プラカード", + "block.create.placard.tooltip.summary": "このイカした真鍮の壁掛けパネルにアイテムを飾ろう。からくりにつけても大丈夫!", + "block.create.placard.tooltip.condition1": "右クリックしたとき", + "block.create.placard.tooltip.behaviour1": "持っている_アイテム_をプラカードに_入れます_。すでに一致するアイテムが入っていた場合、短い_レッドストーン_信号を_発します_。", + "block.create.placard.tooltip.condition2": "殴ったとき", + "block.create.placard.tooltip.behaviour2": "額縁から今入っているアイテムを_外します", - "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", - "block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.", - "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.", + "block.create.flywheel.tooltip": "弾み車", + "block.create.flywheel.tooltip.summary": "この立派な真鍮の車輪で_機械_を_飾ろう_", + "block.create.flywheel.tooltip.condition1": "動力を供給したとき", + "block.create.flywheel.tooltip.behaviour1": "回り始めます", "item.create.diving_boots.tooltip": "潜水ブーツ", "item.create.diving_boots.tooltip.summary": "海底を歩けるようになる_重いブーツ_。", @@ -2029,11 +2029,11 @@ "item.create.diving_boots.tooltip.behaviour1": "_沈むのが早くなり_、_泳げなく_なります。その代わり、水中で_歩いたり_、_ジャンプ_したりできます。また、メカニカルベルトの影響を受けなくなります。", "item.create.crafting_blueprint.tooltip": "クラフトブループリント", - "item.create.crafting_blueprint.tooltip.summary": "壁に_貼り_、_材料_の_配置_を_指定_することで手作業でのクラフトを簡単にできます。各スロットが1つのレシピを表しています。", - "item.create.crafting_blueprint.condition1": "空きスロットを左クリックしたとき", + "item.create.crafting_blueprint.tooltip.summary": "壁に_貼り_、_材料_の_配置_を_指定_することで手作業によるクラフトを簡単にできます。各スロットが1つのレシピを表しています。", + "item.create.crafting_blueprint.condition1": "空きスロットを右クリックしたとき", "item.create.crafting_blueprint.behaviour1": "_レシピ_や表示するアイテムを_設定_できる_クラフトメニュー_を開きます。", - "item.create.crafting_blueprint.condition2": "設定済みスロットを左クリックしたとき", - "item.create.crafting_blueprint.behaviour2": "_インベントリ_にある一致する材料で_設定されたレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", + "item.create.crafting_blueprint.condition2": "設定済みスロットを右クリックしたとき", + "item.create.crafting_blueprint.behaviour2": "_インベントリ_にある一致する材料で_設定したレシピ_を_クラフト_します。_スニーク_すれば最大_スタック_分を一気にクラフトできます", "item.create.minecart_coupling.tooltip": "トロッコ連結器", "item.create.minecart_coupling.tooltip.summary": "壮大な列車を作るために_トロッコ_や_からくり車両_を_連結_しよう。", @@ -2041,12 +2041,12 @@ "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", "item.create.experience_nugget.tooltip": "経験値の塊", - "item.create.experience_nugget.tooltip.summary": "_チャリン!_あなたの素晴らしい発明から、_発想_の欠片を。", + "item.create.experience_nugget.tooltip.summary": "_チャリン!_素晴らしい発明から、_発想_の欠片を。", "item.create.experience_nugget.tooltip.condition1": "使ったとき", - "item.create.experience_nugget.tooltip.behaviour1": "アイテムと引き換えに中に入った_経験値_を取り出します", + "item.create.experience_nugget.tooltip.behaviour1": "アイテムと引き換えに中の_経験値_を取り出します", "block.create.peculiar_bell.tooltip": "風変わりな鐘", - "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い方が見つかるかも...", + "block.create.peculiar_bell.tooltip.summary": "装飾用の_真鍮の鐘_。_魂の炎_の真上に置くと、別の使い道が見つかるかも...", "block.create.haunted_bell.tooltip": "憑りつかれた鐘", "block.create.haunted_bell.tooltip.summary": "ネザーに彷徨う魂が宿る、呪われた鐘", @@ -2064,7 +2064,7 @@ "create.ponder.close": "閉じる", "create.ponder.identify": "ブロック名を確認", "create.ponder.next": "次のシーン", - "create.ponder.next_up": "UNLOCALIZED: Up Next:", + "create.ponder.next_up": "次:", "create.ponder.previous": "前のシーン", "create.ponder.replay": "最初から", "create.ponder.think_back": "戻る", @@ -2077,44 +2077,44 @@ "create.ponder.shared.rpm16": "16 RPM", "create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます", "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", - "create.ponder.shared.sneak_and": "スニーク +", + "create.ponder.shared.sneak_and": "スニーク + ", "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.ctrl_and": "Ctrl + ", "create.ponder.shared.rpm32": "32 RPM", "create.ponder.shared.rpm16_source": "動力源: 16 RPM", "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", "create.ponder.tag.redstone": "制御機械", - "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械です", + "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械", "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", - "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", + "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械", "create.ponder.tag.fluids": "液体制御機械", - "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械です", + "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械", "create.ponder.tag.decoration": "装飾", - "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", + "create.ponder.tag.decoration.description": "主に装飾に使うブロック", "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", - "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", - "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", - "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", + "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても効率は同じ", + "create.ponder.tag.arm_targets": "メカニカルアームの対象", + "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロック", "create.ponder.tag.kinetic_appliances": "作業機械", - "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", + "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械", "create.ponder.tag.kinetic_sources": "原動機", - "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", + "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械", "create.ponder.tag.movement_anchor": "からくり機械", - "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", + "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすからくりを作る機械", "create.ponder.tag.kinetic_relays": "伝達機械", - "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", + "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械", "create.ponder.tag.contraption_actor": "からくり構造部品", - "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", + "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械", "create.ponder.tag.creative": "クリエイティブ限定", - "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", - "create.ponder.tag.display_sources": "UNLOCALIZED: Sources for Display Links", - "create.ponder.tag.display_sources.description": "UNLOCALIZED: Components or Blocks which offer some data that can be read with a Display Link", + "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械", + "create.ponder.tag.display_sources": "ディスプレイリンクの情報源", + "create.ponder.tag.display_sources.description": "ディスプレイリンクでデータを読み取れる機械/ブロック", "create.ponder.tag.logistics": "輸送機械", - "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", - "create.ponder.tag.display_targets": "UNLOCALIZED: Targets for Display Links", - "create.ponder.tag.display_targets.description": "UNLOCALIZED: Components or Blocks which can process and display the data received from a Display Link", - "create.ponder.tag.train_related": "UNLOCALIZED: Railway Equipment", - "create.ponder.tag.train_related.description": "UNLOCALIZED: Components used in the construction or management of Train Contraptions", + "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械", + "create.ponder.tag.display_targets": "ディスプレイリンクの表示先", + "create.ponder.tag.display_targets.description": "ディスプレイリンクから受け取ったデータを処理・表示できる機械/ブロック", + "create.ponder.tag.train_related": "鉄道用品", + "create.ponder.tag.train_related.description": "からくり鉄道の建築、管理に使う機械", "create.ponder.analog_lever.header": "アナログレバーによる信号制御", "create.ponder.analog_lever.text_1": "アナログレバーはコンパクトに正確なレッドストーン動力を出力できます。", @@ -2127,13 +2127,13 @@ "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", - "create.ponder.auto_schedule.header": "UNLOCALIZED: Stations & Scheduling", - "create.ponder.auto_schedule.text_1": "UNLOCALIZED: Schedules can be used to provide drivers with a destination", - "create.ponder.auto_schedule.text_2": "UNLOCALIZED: Comparators will receive a signal whenever a Train is present", - "create.ponder.auto_schedule.text_3": "UNLOCALIZED: Mind that a Station can only be approached from the indicated direction", - "create.ponder.auto_schedule.text_4": "UNLOCALIZED: Stations can also be used to assign new Schedules automatically", - "create.ponder.auto_schedule.text_5": "UNLOCALIZED: The Schedule placed on a station will automatically copy itself to present trains", - "create.ponder.auto_schedule.text_6": "UNLOCALIZED: As opposed to manual scheduling, drivers will not take the item with them", + "create.ponder.auto_schedule.header": "鉄道駅 & 時刻表", + "create.ponder.auto_schedule.text_1": "時刻表は運転手に行先を伝えます", + "create.ponder.auto_schedule.text_2": "列車が停車するたびにコンパレーターはレッドストーン信号を発します", + "create.ponder.auto_schedule.text_3": "駅には表示された方向からしか近づけないことに注意してください", + "create.ponder.auto_schedule.text_4": "また、駅は新しい時刻表を自動で割り当てることもできます", + "create.ponder.auto_schedule.text_5": "時刻表を駅ブロックに置くと、自動でそれを停車している列車にコピーします", + "create.ponder.auto_schedule.text_6": "手動で渡す場合と異なり、運転手がアイテムを持ち運ぶことはありません", "create.ponder.basin.header": "鉢によるアイテム加工", "create.ponder.basin.text_1": "鉢には素材となるアイテムや液体を入れられます", @@ -2158,9 +2158,9 @@ "create.ponder.belt_connector.text_1": "メカニカルベルトを持って2つのシャフトを右クリックすると、シャフトにベルトコンベアを繋げて設置されます", "create.ponder.belt_connector.text_2": "誤ったシャフトをクリックしてしまった場合、スニークしながら右クリックでキャンセルできます", "create.ponder.belt_connector.text_3": "ベルト内のどこでも、シャフトを追加できます", - "create.ponder.belt_connector.text_4": "ベルトを介して接続されたシャフトは、同じ速度・方向で回転します", - "create.ponder.belt_connector.text_5": "追加したシャフトは、レンチで取り除けま", - "create.ponder.belt_connector.text_6": "メカニカルベルトは見栄えのために染色できます", + "create.ponder.belt_connector.text_4": "ベルトを介して接続したシャフトは、同じ速度・方向で回転します", + "create.ponder.belt_connector.text_5": "追加したシャフトは、レンチで取り除けます", + "create.ponder.belt_connector.text_6": "メカニカルベルトは染色して見栄えをよくできます", "create.ponder.belt_directions.header": "メカニカルベルトの有効な向きについて", "create.ponder.belt_directions.text_1": "ベルトは自由な方向に接続できるわけではありません", @@ -2171,7 +2171,7 @@ "create.ponder.belt_directions.text_6": "これらはすべて接続できる方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", "create.ponder.belt_transport.header": "メカニカルベルトによる運搬", - "create.ponder.belt_transport.text_1": "ベルトを動かすと、アイテムやエンティティを運べます", + "create.ponder.belt_transport.text_1": "ベルトを稼働させると、アイテムやエンティティを運べます", "create.ponder.belt_transport.text_2": "素手で右クリックすると、ベルトからアイテムを取り出せます", "create.ponder.blaze_burner.header": "ブレイズバーナーへの餌やり", @@ -2192,13 +2192,13 @@ "create.ponder.brass_tunnel.text_3": "搬入側のフィルターは、単純に一致しないアイテムを搬入しないようにします", "create.ponder.brass_tunnel.text_4": "搬出側のフィルターは、搬出するアイテムを種類別に分類できます", "create.ponder.brass_tunnel.text_5": "通過するアイテムが複数の口から搬出できる場合は、モードによってどのように搬出されるかが決まります", - "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮製トンネルは接続されます", + "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮トンネルは接続されます", "create.ponder.brass_tunnel.text_7": "搬入したアイテムは、接続されているすべての搬出口に分配されます", "create.ponder.brass_tunnel.text_8": "アイテムをトンネルへ直接搬入することもできます", "create.ponder.brass_tunnel_modes.header": "真鍮トンネルの動作モード", "create.ponder.brass_tunnel_modes.text_1": "真鍮トンネルはレンチを使って分配モードを変更できます", - "create.ponder.brass_tunnel_modes.text_10": "「同期」は、真鍮製トンネルのデフォルト設定です", + "create.ponder.brass_tunnel_modes.text_10": "「同期」は、真鍮トンネルのデフォルト設定です", "create.ponder.brass_tunnel_modes.text_11": "アイテムはグループ内の全てのトンネルがアイテムを搬入できる場合のみ通過を許可します", "create.ponder.brass_tunnel_modes.text_12": "これにより、影響を受ける全てのベルトに同じ割合でアイテムを供給できます", "create.ponder.brass_tunnel_modes.text_2": "「スタック分割」は、アイテムを通せる搬出口の間でアイテムスタックを均等に分配しようとします", @@ -2208,7 +2208,7 @@ "create.ponder.brass_tunnel_modes.text_6": "繰り返しになりますが、搬出口がアイテムを通せない場合はスキップされます", "create.ponder.brass_tunnel_modes.text_7": "「強制順繰り分配」は、搬出をスキップしません", "create.ponder.brass_tunnel_modes.text_8": "「近い所を優先」アイテムの搬入口に最も近い搬出口から優先して分配します ", - "create.ponder.brass_tunnel_modes.text_9": "「ランダム」は、スタック全体をランダムに選択された搬出口に分配します ", + "create.ponder.brass_tunnel_modes.text_9": "「ランダム」は、スタック全体をランダムに選択した搬出口に分配します ", "create.ponder.cart_assembler.header": "トロッコアセンブラによる構造物の移動", "create.ponder.cart_assembler.text_1": "レッドストーン信号を受けたアセンブラは通過するトロッコに、取り付けられた構造物を取り付けます", @@ -2218,7 +2218,7 @@ "create.ponder.cart_assembler_dual.header": "列車を組み立てる", "create.ponder.cart_assembler_dual.text_1": "2つのトロッコアセンブラが構造物を共有している場合...", "create.ponder.cart_assembler_dual.text_2": "...どちらかにレッドストーン信号を与えると、列車が組み立てられます", - "create.ponder.cart_assembler_dual.text_3": "トロッコ連結器で接続されたトロッコと同様の動作をします", + "create.ponder.cart_assembler_dual.text_3": "トロッコ連結器で接続したトロッコと同様の動作をします", "create.ponder.cart_assembler_modes.header": "からくり付きトロッコの方向設定", "create.ponder.cart_assembler_modes.text_1": "トロッコの構造物は、トロッコの動きに合わせて回転します", @@ -2226,14 +2226,14 @@ "create.ponder.cart_assembler_modes.text_3": "アセンブラが「常に向きを固定する」に設定されている場合、からくりの向きは変わりません", "create.ponder.cart_assembler_rails.header": "その他のトロッコとレールの種類", - "create.ponder.cart_assembler_rails.text_1": "通常のレールに設置されたトロッコアセンブラは、通過するカートの動きに影響を与えません", + "create.ponder.cart_assembler_rails.text_1": "通常のレールに設置したトロッコアセンブラは、通過するカートの動きに影響を与えません", "create.ponder.cart_assembler_rails.text_2": "パワードレールやコントローラーレールでは、レッドストーン信号を受けるまでトロッコは固定されます", "create.ponder.cart_assembler_rails.text_3": "他のトロッコを使うこともできます", "create.ponder.cart_assembler_rails.text_4": "かまど付きトロッコは、構造物の収納ブロックから燃料を確保します", "create.ponder.chain_drive.header": "ケース入りチェーンドライブによる回転力の伝達", "create.ponder.chain_drive.text_1": "チェーンドライブは、一列に並べると回転を伝達します", - "create.ponder.chain_drive.text_2": "このように、に接続された全てのシャフトは、回転方向が同じです", + "create.ponder.chain_drive.text_2": "このように接続された全てのシャフトは、回転方向が同じです", "create.ponder.chain_drive.text_3": "列の任意の部分を90度方向を変えて設置できます", "create.ponder.chain_gearshift.header": "チェーンギアシフトによる回転速度の制御", @@ -2244,12 +2244,12 @@ "create.ponder.chain_gearshift.text_5": "レッドストーン信号の強度で、比率を1と2の間でより正確に調整できます", "create.ponder.chain_gearshift.text_6": "12 RPM", - "create.ponder.chute.header": "シュートでの下方向へ運搬", + "create.ponder.chute.header": "シュートによる下方向へ運搬", "create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます", "create.ponder.chute.text_2": "レンチを使って、窓を付けられます", "create.ponder.chute.text_3": "シュートを側面に配置すると、斜めに接続されます", - "create.ponder.chute_upward.header": "シュートでの上方向へ運搬", + "create.ponder.chute_upward.header": "シュートによる上方向へ運搬", "create.ponder.chute_upward.text_1": "シュートの上部または下部にファンを配置すると、アイテムを上方向へ運搬できます", "create.ponder.chute_upward.text_2": "エンジニアのゴーグルを付けてシュートを見ると、移動方向が表示されます", "create.ponder.chute_upward.text_3": "ブロックで詰まっている端では、アイテムを側面から搬出入する必要があります", @@ -2261,7 +2261,7 @@ "create.ponder.clockwork_bearing.text_4": "4:00", "create.ponder.clockwork_bearing.text_5": "ベアリングを右クリックして、構造物のアニメーションを開始・停止します", "create.ponder.clockwork_bearing.text_6": "時針の前に、2つ目の構造物を追加できます", - "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などでくっついていないことを確認してください", + "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などで取り付けられていないか確認してください", "create.ponder.clockwork_bearing.text_8": "2つ目の構造物は分針として回転します", "create.ponder.clutch.header": "クラッチによる回転力の制御", @@ -2275,7 +2275,7 @@ "create.ponder.cogwheel.header": "歯車による回転力の伝達", "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", - "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", + "create.ponder.cogwheel.text_2": "このように連結した隣り合うシャフトは、反対方向に回転します", "create.ponder.cogwheel_casing.header": "ケース入り歯車", "create.ponder.cogwheel_casing.text_1": "真鍮や安山岩のケーシングは歯車を飾ることもできます", @@ -2285,20 +2285,20 @@ "create.ponder.creative_fluid_tank.header": "クリエイティブ液体タンク", "create.ponder.creative_fluid_tank.text_1": "クリエイティブ液体タンクは、液体を無限に供給できます", "create.ponder.creative_fluid_tank.text_2": "液体容器アイテムで右クリックで液体を指定できます", - "create.ponder.creative_fluid_tank.text_3": "液体ネットワークはタンクから指定された液体を無限に引き出すことができます", + "create.ponder.creative_fluid_tank.text_3": "液体ネットワークはタンクから指定した液体を無限に吸いだせます", "create.ponder.creative_fluid_tank.text_4": "クリエイティブ液体タンクに押し入れた液体は消滅します", "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで出力を調整できる原動機です", "create.ponder.creative_motor.text_2": "背面パネルを見ながらスクロールすると、モーターの回転速度を変更できます", - "create.ponder.creative_motor_mojang.header": "UNLOCALIZED: Mojang's Enigma", + "create.ponder.creative_motor_mojang.header": "Mojangの謎", "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", "create.ponder.crushing_wheels.text_1": "一対の破砕ホイールは、非常に効果的にアイテムを粉砕できます", - "create.ponder.crushing_wheels.text_2": "動作には、互いに逆方向で回転させる必要があります", + "create.ponder.crushing_wheels.text_2": "動作には、互いに反対方向に回転させる必要があります", "create.ponder.crushing_wheels.text_3": "上からアイテムを投げ入れたりして、搬入すると加工されます", - "create.ponder.crushing_wheels.text_4": "アイテムを搬出入を自動化することもできます", + "create.ponder.crushing_wheels.text_4": "アイテムの搬出入を自動化することもできます", "create.ponder.deployer.header": "デプロイヤーの使い方", "create.ponder.deployer.text_1": "回転力を供給したデプロイヤーは、プレイヤーの動作を模倣できます", @@ -2324,10 +2324,10 @@ "create.ponder.deployer_modes.header": "デプロイヤーの動作モード", "create.ponder.deployer_modes.text_1": "デフォルトでは、デプロイヤーは右クリックの動作を模倣します", - "create.ponder.deployer_modes.text_2": "レンチを使えば、左クリックの動作を模倣するように設定できます", + "create.ponder.deployer_modes.text_2": "レンチを使えば、右クリックの動作を模倣するように設定できます", "create.ponder.deployer_processing.header": "デプロイヤーによるアイテムの処理", - "create.ponder.deployer_processing.text_1": "装着されたアイテムで、デプロイヤーの先にあるアイテムを処理することができます", + "create.ponder.deployer_processing.text_1": "装着したアイテムで、デプロイヤーの先にあるアイテムを処理できます", "create.ponder.deployer_processing.text_2": "加工したいアイテムはドロップしたり、デプロイヤーの下のデポに置いてください", "create.ponder.deployer_processing.text_3": "ベルトでアイテムを供給すると", "create.ponder.deployer_processing.text_4": "デプロイヤーが自動でアイテムを止め、加工します。", @@ -2335,39 +2335,39 @@ "create.ponder.deployer_redstone.header": "レッドストーン信号によるデプロイヤーの制御", "create.ponder.deployer_redstone.text_1": "レッドストーン信号を受けている間、デプロイヤーは稼働しません", "create.ponder.deployer_redstone.text_2": "デプロイヤーは停止する前に、開始したサイクルは終了させます", - "create.ponder.deployer_redstone.text_3": "その為、反転したパルス信号を使って丁度1サイクルだけ稼働させられます", + "create.ponder.deployer_redstone.text_3": "その為、反転したパルス信号を使ってちょうど1サイクルだけ稼働させられます", "create.ponder.depot.header": "デポの使い方", "create.ponder.depot.text_1": "デポは動かないメカニカルベルトのようなブロックです", - "create.ponder.depot.text_2": "右クリックして、手動でアイテム搬出入できます", + "create.ponder.depot.text_2": "右クリックして、手動でアイテムを搬出入できます", "create.ponder.depot.text_3": "メカニカルベルトのように、載せたアイテムを加工できます", "create.ponder.depot.text_4": "また、メカニカルアームにアイテムを供給することもできます", - "create.ponder.display_board.header": "UNLOCALIZED: Using Display Boards", - "create.ponder.display_board.text_1": "UNLOCALIZED: Display Boards are a scalable alternative to the sign", - "create.ponder.display_board.text_2": "UNLOCALIZED: They require Rotational Force to operate", - "create.ponder.display_board.text_3": "UNLOCALIZED: Text can be displayed using Name Tags...", - "create.ponder.display_board.text_4": "UNLOCALIZED: ...or through the use of Display Links", - "create.ponder.display_board.text_5": "UNLOCALIZED: Dyes can be applied to individual lines of the board", - "create.ponder.display_board.text_6": "UNLOCALIZED: Lines can be reset by clicking them with an empty hand", + "create.ponder.display_board.header": "ディスプレイボードの使い方", + "create.ponder.display_board.text_1": "ディスプレイボードは看板に代わる、より拡張性の高いブロックです", + "create.ponder.display_board.text_2": "稼働には回転力が必要です", + "create.ponder.display_board.text_3": "文字の表示には名札を使うか...", + "create.ponder.display_board.text_4": "ディスプレイリンクを通して行えます", + "create.ponder.display_board.text_5": "ボードは、行ごとにそれぞれ染料で染色できます", + "create.ponder.display_board.text_6": "素手で右クリックすると、リセットできます", - "create.ponder.display_link.header": "UNLOCALIZED: Setting up Display Links", - "create.ponder.display_link.text_1": "UNLOCALIZED: Display Links can be used to visualise dynamic information", - "create.ponder.display_link.text_2": "UNLOCALIZED: First, right-click the target display...", - "create.ponder.display_link.text_3": "UNLOCALIZED: ...then attach it to the block to read from", - "create.ponder.display_link.text_4": "UNLOCALIZED: Open the Interface to select and configure what is sent", - "create.ponder.display_link.text_5": "UNLOCALIZED: The display will now receive information from the link", - "create.ponder.display_link.text_6": "UNLOCALIZED: Not every block can act as a source", - "create.ponder.display_link.text_7": "UNLOCALIZED: Each compatible block provides unique information", - "create.ponder.display_link.text_8": "UNLOCALIZED: The Display Link can work with several different displays", + "create.ponder.display_link.header": "ディスプレイリンクの設置", + "create.ponder.display_link.text_1": "ディスプレイリンクは、変化する情報の視覚化に使えます", + "create.ponder.display_link.text_2": "はじめに、対象となるディスプレイを右クリックし...", + "create.ponder.display_link.text_3": "...それから情報を読み出すブロックに取り付けます", + "create.ponder.display_link.text_4": "選択・設定をするためにUIを開いてください", + "create.ponder.display_link.text_5": "これで、ディスプレイがリンクからの情報を受信するようになりました", + "create.ponder.display_link.text_6": "全てのブロックが情報源として使えるわけではありません", + "create.ponder.display_link.text_7": "互換性のあるブロックはそれぞれ固有の情報を提供します", + "create.ponder.display_link.text_8": "ディスプレイリンクは、複数の異なるディスプレイと連動できます", - "create.ponder.display_link_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.display_link_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Display Links stop sending updates", - "create.ponder.display_link_redstone.text_2": "UNLOCALIZED: Once unpowered, the Timer is reset and new info is sent immediately", - "create.ponder.display_link_redstone.text_3": "UNLOCALIZED: Signals emitted from the source do not affect the Link", + "create.ponder.display_link_redstone.header": "レッドストーンによる制御", + "create.ponder.display_link_redstone.text_1": "レッドストーン信号を受ける間、ディスプレイリンクは情報の更新を停止します", + "create.ponder.display_link_redstone.text_2": "信号が切れると、タイマーがリセットされ、新しい情報が即座に送信されます", + "create.ponder.display_link_redstone.text_3": "ただし、情報元から発せられるレッドストーン信号はリンクに影響を与えません", "create.ponder.empty_blaze_burner.header": "空のブレイズバーナーの使い方", - "create.ponder.empty_blaze_burner.text_1": "空のバーナーでブレイズを右クリックすると捕獲できます", + "create.ponder.empty_blaze_burner.text_1": "空のバーナーで右クリックするとブレイズを捕獲できます", "create.ponder.empty_blaze_burner.text_2": "また、ブレイズはスポーンブロックから直接捕獲することもできます", "create.ponder.empty_blaze_burner.text_3": "これで、様々な機械で利用できる理想的な熱源が得られます", "create.ponder.empty_blaze_burner.text_4": "空のブレイズバーナーは火打石と打ち金を使って火を付ければ装飾にも使えます", @@ -2375,7 +2375,7 @@ "create.ponder.empty_blaze_burner.text_6": "しかし、これは加工用の熱源には適していません", "create.ponder.encased_fluid_pipe.header": "ケース入り液体パイプ", - "create.ponder.encased_fluid_pipe.text_1": "銅ケーシングで液体パイプを飾ることができます", + "create.ponder.encased_fluid_pipe.text_1": "銅ケーシングで液体パイプを飾れます", "create.ponder.encased_fluid_pipe.text_2": "ただの飾りではなく、ケース入りパイプは接続がロックされます", "create.ponder.encased_fluid_pipe.text_3": "隣接するブロックの設置や破壊などの更新に反応しなくなります", @@ -2387,20 +2387,20 @@ "create.ponder.fan_processing.text_1": "溶岩を通過した気流は、加熱されます", "create.ponder.fan_processing.text_2": "この気流に当てられたアイテムは精錬されます", "create.ponder.fan_processing.text_3": "ただし、食品は焼却されてしまいます", - "create.ponder.fan_processing.text_4": "食品加工には、代わりに火を使った燻製気流を利用する必要があります", + "create.ponder.fan_processing.text_4": "食品加工には、代わりに火を使った燻製気流を使ってください", "create.ponder.fan_processing.text_5": "水を通過する気流は、洗浄気流になります", - "create.ponder.fan_processing.text_6": "この気流を使って、いくつかの面白い加工ができます", + "create.ponder.fan_processing.text_6": "この気流を使えば、面白い加工ができます", "create.ponder.fan_processing.text_7": "ファンの速度は処理速度とは関係がなく、範囲のみが変わります", - "create.ponder.fan_processing.text_8": "ファンでの加工は、デポやベルト上のアイテムにも行われます", + "create.ponder.fan_processing.text_8": "ファンによる加工は、デポやベルト上のアイテムにも行われます", "create.ponder.fluid_pipe_flow.header": "銅パイプを使った液体の移動", - "create.ponder.fluid_pipe_flow.text_1": "液体パイプは2つ以上の液体源と輸送先を繋ぐことができます", + "create.ponder.fluid_pipe_flow.text_1": "液体パイプは2つ以上の液体源と輸送先を繋げられます", "create.ponder.fluid_pipe_flow.text_2": "レンチを使うと、まっすぐなパイプに窓を付けられます", "create.ponder.fluid_pipe_flow.text_3": "窓付きパイプは側面と隣接するパイプとつながりません", "create.ponder.fluid_pipe_flow.text_4": "メカニカルポンプを使えば液体を輸送できます", "create.ponder.fluid_pipe_flow.text_5": "はじめは液体が輸送されません", - "create.ponder.fluid_pipe_flow.text_6": "液れが終点まで届くと徐々に輸送されていきます", - "create.ponder.fluid_pipe_flow.text_7": "つまり、パイプブロック自体には液体は物理的に入っていないということです", + "create.ponder.fluid_pipe_flow.text_6": "流れが終点まで届くと徐々に輸送されていきます", + "create.ponder.fluid_pipe_flow.text_7": "つまり、パイプブロック自体に液体は入っていないということです", "create.ponder.fluid_pipe_interaction.header": "液体容器の排出と充填", "create.ponder.fluid_pipe_interaction.text_1": "液体ネットワークは終点でさまざまなブロックとやりとりできます", @@ -2409,21 +2409,21 @@ "create.ponder.fluid_pipe_interaction.text_4": "また、開いたスペースに液体ブロックを設置できます", "create.ponder.fluid_pipe_interaction.text_5": "パイプは、いくつかのブロックから直接液体を吸い込めます", - "create.ponder.fluid_tank_sizes.header": "液体タンクのサイズ", + "create.ponder.fluid_tank_sizes.header": "液体タンクの寸法", "create.ponder.fluid_tank_sizes.text_1": "液体タンクは複数組み合わせて容量を増やせます。", "create.ponder.fluid_tank_sizes.text_2": "横幅は最大3ブロック", "create.ponder.fluid_tank_sizes.text_3": "高さは30ブロック以上重ねられます", "create.ponder.fluid_tank_sizes.text_4": "レンチを使って、タンクの窓を付け外しできます", "create.ponder.fluid_tank_storage.header": "液体タンクへの液体の貯蔵", - "create.ponder.fluid_tank_storage.text_1": "液体タンクは大量の液体を貯蔵することができます", + "create.ponder.fluid_tank_storage.text_1": "液体タンクは大量の液体を貯蔵できます", "create.ponder.fluid_tank_storage.text_2": "どの方向からでも液体を搬出入できます", "create.ponder.fluid_tank_storage.text_3": "コンパレーターで液体量を測れます", - "create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を出し入れできません。", - "create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を出し入れできます。", + "create.ponder.fluid_tank_storage.text_4": "しかし、サバイバルモードでは手動で液体を搬出入できません。", + "create.ponder.fluid_tank_storage.text_5": "鉢、アイテム排液口、アイテム注液口などを使えばアイテムから液体を搬出入できます。", "create.ponder.funnel_compat.header": "ファンネルの互換性", - "create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性が良いです", + "create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性がいいです", "create.ponder.funnel_compat.text_2": "上向きのメカニカルソー", "create.ponder.funnel_compat.text_3": "デポ", "create.ponder.funnel_compat.text_4": "アイテム排液口など", @@ -2438,7 +2438,7 @@ "create.ponder.funnel_intro.header": "ファンネルの使い方", "create.ponder.funnel_intro.text_1": "ファンネルは、収納ブロックのアイテムを運搬するのに使います", - "create.ponder.funnel_redstone.header": "レッドストーンコントロール", + "create.ponder.funnel_redstone.header": "レッドストーンによる制御", "create.ponder.funnel_redstone.text_1": "レッドストーン信号によって、ファンネルが動作を防げます", "create.ponder.funnel_transfer.header": "直接運搬", @@ -2461,12 +2461,12 @@ "create.ponder.gantry_direction.text_3": "また、シャフトの回転方向によっても決まります", "create.ponder.gantry_direction.text_4": "キャリッジへ伝達する回転力も同じルールが適用されます", - "create.ponder.gantry_redstone.header": "ガントリーでの回転力の伝播", + "create.ponder.gantry_redstone.header": "ガントリーによる回転力の伝達", "create.ponder.gantry_redstone.text_1": "レッドストーン信号を受けたガントリーシャフトは、キャリッジの移動を停止します", - "create.ponder.gantry_redstone.text_2": "代わりに、その回転力がキャリッジの出力軸から伝達されます", + "create.ponder.gantry_redstone.text_2": "代わりに、その回転力をキャリッジの出力軸に伝達します", "create.ponder.gantry_shaft.header": "ガントリーシャフトの使い方", - "create.ponder.gantry_shaft.text_1": "ガントリーシャフトは、ガントリー機構の基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", + "create.ponder.gantry_shaft.text_1": "ガントリーシャフトは、ガントリーからくりの基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", "create.ponder.gantry_shaft.text_2": "ガントリーによるからくりは、取り付けたブロックを動かせます", "create.ponder.gearbox.header": "ギアボックスによる回転力の伝達", @@ -2488,16 +2488,16 @@ "create.ponder.hose_pulley.header": "ホースプーリーを使った液体の吸入・放出", "create.ponder.hose_pulley.text_1": "ホースプーリーは、大規模な液体の吸入や放出に使います", "create.ponder.hose_pulley.text_2": "回転力の出入口はプーリーのホースの高さを変えるのに使います", - "create.ponder.hose_pulley.text_3": "回転方向を逆にするとプーリーが収納されます", + "create.ponder.hose_pulley.text_3": "回転方向を逆にするとホースが収納されます", "create.ponder.hose_pulley.text_4": "反対側にはパイプを接続できます", - "create.ponder.hose_pulley.text_5": "接続された液体ネットワークはプーリーに液体を供給し、放出できます", - "create.ponder.hose_pulley.text_6": "また、プーリーから吸い出し、代わりに吸入することもできます", + "create.ponder.hose_pulley.text_5": "接続された液体ネットワークでプーリーに液体を供給すると、放出できます", + "create.ponder.hose_pulley.text_6": "また、プーリーから吸い出すことで、代わりに吸入できます", "create.ponder.hose_pulley.text_7": "プーリーの吸入・放出速度は液体ネットワークの性能で決まります", "create.ponder.hose_pulley_infinite.header": "大規模な液体の無限の吸入・放出", "create.ponder.hose_pulley_infinite.text_1": "ホースプーリーを十分に大きな海に設置すると", "create.ponder.hose_pulley_infinite.text_2": "海に影響を与えずに液体を吸入・放出できます", - "create.ponder.hose_pulley_infinite.text_3": "つまり、液体ネットワークはこのプーリーから液体を無限に出し入れできます", + "create.ponder.hose_pulley_infinite.text_3": "つまり、液体ネットワークはこのプーリーから液体を無限に搬出入できます", "create.ponder.hose_pulley_level.header": "ホースプーリーの吸入・放出レベル", "create.ponder.hose_pulley_level.text_1": "完全に収納された状態では、ホースプーリーは稼働しません", @@ -2508,31 +2508,31 @@ "create.ponder.item_drain.header": "アイテム排液口で液体容器を空にする", "create.ponder.item_drain.text_1": "アイテム排液口はアイテムから液体を取り出せます", - "create.ponder.item_drain.text_2": "右クリックすると、持っているアイテムの中の液体を注ぐことができます", + "create.ponder.item_drain.text_2": "右クリックすると、持っているアイテムの中の液体を注げます", "create.ponder.item_drain.text_3": "横からアイテムを入れると...", "create.ponder.item_drain.text_4": "...中に詰まった液体を出しながら横に転がっていきます", "create.ponder.item_drain.text_5": "液体ネットワークで、排液口から液体を取り出せます", "create.ponder.item_vault_sizes.header": "アイテム保管庫の寸法", - "create.ponder.item_vault_sizes.text_1": "アイテム保管庫はいくつか繋げて容量を増やすことができます", + "create.ponder.item_vault_sizes.text_1": "アイテム保管庫はいくつか繋げて容量を増やせます", "create.ponder.item_vault_sizes.text_2": "そのベースとなる正方形の辺の長さは最大3ブロックまで...", "create.ponder.item_vault_sizes.text_3": "...長さはその三倍まで伸ばせます", - "create.ponder.item_vault_storage.header": "保管庫でのアイテムの保管", + "create.ponder.item_vault_storage.header": "保管庫によるアイテムの保管", "create.ponder.item_vault_storage.text_1": "アイテム保管庫は、大量のアイテムを保管できます", - "create.ponder.item_vault_storage.text_2": "ただし、アイテムを手動で搬出入することはできません。", + "create.ponder.item_vault_storage.text_2": "ただし、アイテムを手動で搬出入することはできません", "create.ponder.item_vault_storage.text_3": "アイテム運搬用の機械ならどれを使っても搬入と...", "create.ponder.item_vault_storage.text_4": "搬出ができます", "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", - "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", + "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えて伝達するのに役立ちます", "create.ponder.linear_chassis_attachment.header": "リニアシャーシによるブロックの取り付け", "create.ponder.linear_chassis_attachment.text_1": "リニアシャーシの特定の面は特殊な粘着面にできます", "create.ponder.linear_chassis_attachment.text_2": "もう一度クリックすると、反対側の面も粘着面になります", "create.ponder.linear_chassis_attachment.text_3": "素手でスニークしながら右クリックすると粘着剤を剥がせます", - "create.ponder.linear_chassis_attachment.text_4": "リニアシャーシの特殊な粘着面は、ブロックの列をまとめてくっつけることができます", + "create.ponder.linear_chassis_attachment.text_4": "リニアシャーシの特殊な粘着面は、ブロックの列をまとめて取り付けられます", "create.ponder.linear_chassis_attachment.text_5": "レンチを使って、このシャーシの粘着範囲を正確に調整できます", "create.ponder.linear_chassis_attachment.text_6": "CTRLを押しながらスクロールすると、接続している全てのシャーシブロックの範囲を一気に調整できます", "create.ponder.linear_chassis_attachment.text_7": "他の面にブロックを接着するには、超粘着剤を使う必要があります", @@ -2545,20 +2545,20 @@ "create.ponder.mechanical_arm.header": "メカニカルアームの設定", "create.ponder.mechanical_arm.text_1": "メカニカルアームを設置する前に、搬入元と搬出先を設定しなければなりません", - "create.ponder.mechanical_arm.text_2": "特定のブロックをターゲットと設定するには、アームを持ったまま右クリックしましょう", + "create.ponder.mechanical_arm.text_2": "特定のブロックを対象に設定するには、アームを持ったまま右クリックしてください", "create.ponder.mechanical_arm.text_3": "搬入元(青)と搬出先(オレンジ)を切り替えるには、もう1度右クリックします", - "create.ponder.mechanical_arm.text_4": "アームを持ったまま左クリックすると選択が解除されます", - "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定されたブロックをターゲットにします", + "create.ponder.mechanical_arm.text_4": "アームを持ったまま右クリックすると選択が解除されます", + "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定したブロックを対象にします", "create.ponder.mechanical_arm.text_6": "範囲内であれば、複数の搬入元と搬出先を設定できます", - "create.ponder.mechanical_arm.text_7": "しかし、あらゆる機械やブロックをターゲットにできるわけではありません", + "create.ponder.mechanical_arm.text_7": "ただし、あらゆる機械やブロックを対象にできるわけではありません", "create.ponder.mechanical_arm.text_8": "そんな時はファンネルやデポを経由させましょう", "create.ponder.mechanical_arm_filtering.header": "メカニカルアームの搬出フィルタリング", "create.ponder.mechanical_arm_filtering.text_1": "搬入元", "create.ponder.mechanical_arm_filtering.text_2": "搬出先", "create.ponder.mechanical_arm_filtering.text_3": "フィルターを使ってアームが搬出入するアイテムを制限したいと思っても", - "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体には、フィルタリングオプションがありません", - "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮製ファンネル等をターゲットにした場合、アームにそのフィルターが反映されます", + "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体は、フィルターを設定できません", + "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮ファンネルなどを対象にした場合、アームにそのフィルターが反映されます", "create.ponder.mechanical_arm_filtering.text_6": "アームは賢いので、搬出できないアイテムを拾うことはありません", "create.ponder.mechanical_arm_modes.header": "メカニカルアームの分配モード", @@ -2570,7 +2570,7 @@ "create.ponder.mechanical_arm_modes.text_6": "「順繰り分配」は、有効な全ての搬出先へ順番に搬出します", "create.ponder.mechanical_arm_modes.text_7": "搬出先がそれ以上のアイテムを受け取れない場合、そこへの搬出はスキップされます", "create.ponder.mechanical_arm_modes.text_8": "「強制順繰り分配」は、搬出をスキップせず、空きがでるまで待機します", - "create.ponder.mechanical_arm_modes.text_9": "「最初のターゲットを優先」は、設定した順番が先の方のターゲットに優先して搬出します", + "create.ponder.mechanical_arm_modes.text_9": "「最初の対象を優先」は、設定した順番が先の方の対象に優先して搬出します", "create.ponder.mechanical_arm_redstone.header": "メカニカルアームのレッドストーン制御", "create.ponder.mechanical_arm_redstone.text_1": "レッドストーン信号を受けると、メカニカルアームは稼働しません", @@ -2584,9 +2584,9 @@ "create.ponder.mechanical_crafter.header": "メカニカルクラフターの配置", "create.ponder.mechanical_crafter.text_1": "メカニカルクラフターは、あらゆるクラフトレシピを自動化できます", "create.ponder.mechanical_crafter.text_2": "レンチを使えばクラフターがアイテムを移動させるベルトの向きを変えられます", - "create.ponder.mechanical_crafter.text_3": "動かすためにはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", + "create.ponder.mechanical_crafter.text_3": "稼働にはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", "create.ponder.mechanical_crafter.text_4": "完成品は外に向かうベルトが指す方向にある収納ブロックに搬出されます", - "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを動かすには回転力が必要です", + "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを稼働には回転力が必要です", "create.ponder.mechanical_crafter.text_6": "前面を右クリックすると手動でアイテムを搬入できます", "create.ponder.mechanical_crafter.text_7": "1つのクラフターに続くベルトの全スロットにアイテムが入ると、クラフトが開始されます", "create.ponder.mechanical_crafter.text_8": "スロットが埋まっていなくても、レッドストーンパルスを使って強制的にクラフトを開始できます", @@ -2594,7 +2594,7 @@ "create.ponder.mechanical_crafter_connect.header": "メカニカルクラフターの搬入口の共有", "create.ponder.mechanical_crafter_connect.text_1": "アイテムは自動でクラフターに搬入することもできます", "create.ponder.mechanical_crafter_connect.text_2": "背面でレンチを使うと、メカニカルクラフターが接続されます", - "create.ponder.mechanical_crafter_connect.text_3": "接続された全てのクラフターは、同じ搬入口からアイテムを搬入できるようになります", + "create.ponder.mechanical_crafter_connect.text_3": "接続した全てのクラフターは、同じ搬入口からアイテムを搬入できるようになります", "create.ponder.mechanical_crafter_covers.header": "メカニカルクラフターとスロットカバー", "create.ponder.mechanical_crafter_covers.text_1": "一部のレシピでは、ベルトの流れの隙間を埋める為に追加のクラフターが必要になります", @@ -2606,11 +2606,11 @@ "create.ponder.mechanical_drill.text_2": "採掘速度は回転速度で決まります", "create.ponder.mechanical_drill_contraption.header": "からくりに組み込んでのメカニカルドリルの使い方", - "create.ponder.mechanical_drill_contraption.text_1": "からくりの一部として、メカニカルドリルを動かすと...", + "create.ponder.mechanical_drill_contraption.text_1": "メカニカルドリルを組み込んだからくりを動かすと...", "create.ponder.mechanical_drill_contraption.text_2": "...ドリルは、移動先のブロックを破壊します", "create.ponder.mechanical_harvester.header": "からくりに組み込んでのメカニカルハーベスターの使い方", - "create.ponder.mechanical_harvester.text_1": "からくりの一部として、ハーベスターを動かすと...", + "create.ponder.mechanical_harvester.text_1": "ハーベスター組み込んだからくりを動かすと...", "create.ponder.mechanical_harvester.text_2": "...成熟した作物を収穫し、成長をリセットします", "create.ponder.mechanical_mixer.header": "メカニカルミキサーによるアイテム加工", @@ -2626,7 +2626,7 @@ "create.ponder.mechanical_piston_modes.header": "メカニカルピストンの動作モード", "create.ponder.mechanical_piston_modes.text_1": "ピストンの動作が止まると、移動した構造物はブロックへ戻ります", - "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定したりできます", + "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でしかブロックに戻らないように設定したりできます", "create.ponder.mechanical_plough.header": "からくりに組み込んでのメカニカルプラウの使い方", "create.ponder.mechanical_plough.text_1": "プラウを組み込んだからくりを動かすと...", @@ -2635,19 +2635,19 @@ "create.ponder.mechanical_plough.text_4": "また、エンティティを傷つけずに飛ばすこともできます", "create.ponder.mechanical_press.header": "メカニカルプレスによるアイテム加工", - "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置されたアイテムを加工できます", + "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置したアイテムを加工できます", "create.ponder.mechanical_press.text_2": "加工するアイテムは下に落としたり、プレス機の下にあるデポに置いたりしてください", "create.ponder.mechanical_press.text_3": "アイテムがベルトで供給されると...", "create.ponder.mechanical_press.text_4": "...プレスが自動でアイテムを止め、加工します", - "create.ponder.mechanical_press_compacting.header": "メカニカルプレスでの圧縮加工", + "create.ponder.mechanical_press_compacting.header": "メカニカルプレスによる圧縮加工", "create.ponder.mechanical_press_compacting.text_1": "鉢に入れられたアイテムをプレスし、圧縮加工できます", "create.ponder.mechanical_press_compacting.text_2": "圧縮加工には、2x2、3x3のクラフトレシピに加え、いくつかの追加レシピがあります", "create.ponder.mechanical_press_compacting.text_3": "これらのレシピの中には、ブレイズバーナーの熱を必要とするものがあります", "create.ponder.mechanical_press_compacting.text_4": "フィルタースロットは、2つのレシピが競合するときに使えます", "create.ponder.mechanical_pump_flow.header": "メカニカルポンプによる液体輸送", - "create.ponder.mechanical_pump_flow.text_1": "メカニカルポンプは、接続されたネットワークの液体の流れを制御します", + "create.ponder.mechanical_pump_flow.text_1": "メカニカルポンプは、接続したネットワークの液体の流れを制御します", "create.ponder.mechanical_pump_flow.text_2": "稼働させると、矢印が液体の流れる方向を示します", "create.ponder.mechanical_pump_flow.text_3": "後ろのネットワークが液体を吸い取っているのに対し...", "create.ponder.mechanical_pump_flow.text_4": "...前のネットワークが液体を外側に送っています", @@ -2658,25 +2658,25 @@ "create.ponder.mechanical_pump_speed.text_1": "速度に関わらず、メカニカルポンプは16ブロック先までのパイプに影響を与えます", "create.ponder.mechanical_pump_speed.text_2": "回転速度を速くすることで、流れの送られる速度と...", "create.ponder.mechanical_pump_speed.text_3": "...液体の輸送速度が変わります", - "create.ponder.mechanical_pump_speed.text_4": "液体ネットワーク内のポンプはそれぞれ別の速度で動かすことができます", - "create.ponder.mechanical_pump_speed.text_5": "向きを交互にすることで、流れの方向を揃えることができます", + "create.ponder.mechanical_pump_speed.text_4": "液体ネットワーク内のポンプはそれぞれ別の速度で動力を供給できます", + "create.ponder.mechanical_pump_speed.text_5": "向きを交互にすることで、流れの方向を揃えられます", "create.ponder.mechanical_saw_breaker.header": "メカニカルソーによる伐採", "create.ponder.mechanical_saw_breaker.text_1": "メカニカルソーは回転力を供給すると、目の前の木を伐採できます", "create.ponder.mechanical_saw_breaker.text_2": "木を完全に伐採するには、木と地面を繋ぐ最後の根本を伐採しなければなりません", "create.ponder.mechanical_saw_contraption.header": "からくりに組み込んでのメカニカルソーの使い方", - "create.ponder.mechanical_saw_contraption.text_1": "ソーを組み込んだからくりを動かすと...", - "create.ponder.mechanical_saw_contraption.text_2": "...ソーは木を伐採します", + "create.ponder.mechanical_saw_contraption.text_1": "メカニカルソーを組み込んだからくりを動かすと...", + "create.ponder.mechanical_saw_contraption.text_2": "...メカニカルソーは木を伐採します", - "create.ponder.mechanical_saw_processing.header": "メカニカルソーでのアイテム加工", + "create.ponder.mechanical_saw_processing.header": "メカニカルソーによるアイテム加工", "create.ponder.mechanical_saw_processing.text_1": "上向きのメカニカルソーは、様々なアイテムを加工できます", - "create.ponder.mechanical_saw_processing.text_2": "加工されたアイテムは、常にソーの回転方向とは逆に移動します", + "create.ponder.mechanical_saw_processing.text_2": "加工したアイテムは、常にソーの回転方向とは逆に移動します", "create.ponder.mechanical_saw_processing.text_3": "ソーはメカニカルベルトと繋げて加工できます", "create.ponder.mechanical_saw_processing.text_4": "複数の完成品がある場合、フィルタースロットでどの完成品を作るかを指定できます", "create.ponder.mechanical_saw_processing.text_5": "フィルターがない場合、ソーは全ての加工を順番に繰り返します", - "create.ponder.millstone.header": "石臼でのアイテム加工", + "create.ponder.millstone.header": "石臼によるアイテム加工", "create.ponder.millstone.text_1": "石臼はアイテムを粉砕加工する機械です", "create.ponder.millstone.text_2": "歯車を使って、側面から回転力を供給できます", "create.ponder.millstone.text_3": "上からアイテムを投げ入れてアイテムを搬入できます", @@ -2693,17 +2693,17 @@ "create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります", "create.ponder.portable_fluid_interface.header": "からくり液体交換", - "create.ponder.portable_fluid_interface.text_1": "移動しているからくりの液体タンクは、どんなパイプでも出し入れできません", - "create.ponder.portable_fluid_interface.text_2": "この機械は、からくりをブロックに戻すことなく液体を出し入れできます", + "create.ponder.portable_fluid_interface.text_1": "移動しているからくりの液体タンクは、どんなパイプでも搬出入できません", + "create.ponder.portable_fluid_interface.text_2": "この機械は、からくりをブロックに戻すことなく液体を搬出入できます", "create.ponder.portable_fluid_interface.text_3": "1~2ブロックの隙間を開けて2つ目のインターフェースを設置しましょう", "create.ponder.portable_fluid_interface.text_4": "すれ違ったときに必ず接続されます", "create.ponder.portable_fluid_interface.text_5": "接続中は、設置されている方のインターフェースはからくり内全てのタンクのように振る舞います", "create.ponder.portable_fluid_interface.text_6": "液体の搬入と...", "create.ponder.portable_fluid_interface.text_7": "...搬出ができます", - "create.ponder.portable_fluid_interface.text_8": "しばらく中身が出し入れされないと、このからくりはまた動き出します", + "create.ponder.portable_fluid_interface.text_8": "しばらく中身が搬出入されないと、このからくりはまた動き出します", - "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", - "create.ponder.portable_storage_interface.text_1": "稼働中のからくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", + "create.ponder.portable_storage_interface.header": "からくり内の収納ブロックとの搬出入", + "create.ponder.portable_storage_interface.text_1": "からくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", "create.ponder.portable_storage_interface.text_2": "この装置は、からくりを停止することなく、収納ブロックと搬出入できます", "create.ponder.portable_storage_interface.text_3": "1~2ブロックの間隔をあけて、2つ目のインターフェースを設置しましょう", "create.ponder.portable_storage_interface.text_4": "両者がすれ違うたびに接続されます", @@ -2748,7 +2748,7 @@ "create.ponder.radial_chassis.text_6": "ブロックが粘着面に設置されていると...", "create.ponder.radial_chassis.text_7": "...その範囲内の繋がっている全てのブロックが取り付けられます", "create.ponder.radial_chassis.text_8": "レンチを使って、シャーシの範囲の半径を正確に指定できます", - "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックはくっつきません", + "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックは取りつきません", "create.ponder.redstone_contact.header": "レッドストーンコンタクト", "create.ponder.redstone_contact.text_1": "向かい合ったレッドストーンコンタクトは、レッドストーン信号を出力します", @@ -2768,20 +2768,20 @@ "create.ponder.rope_pulley_attachment.header": "プーリーをからくりの一部として動かす", "create.ponder.rope_pulley_attachment.text_1": "プーリーがからくりによって動かされると...", - "create.ponder.rope_pulley_attachment.text_2": "...プーリーと接続している構造物も一緒に動かされます", + "create.ponder.rope_pulley_attachment.text_2": "...プーリーと接続している構造物も一緒に動きます", "create.ponder.rope_pulley_attachment.text_3": "プーリーが稼働している間は動かせないことに注意してください", "create.ponder.rope_pulley_modes.header": "ローププーリーの動作モード", "create.ponder.rope_pulley_modes.text_1": "プーリーの動きが止まると、移動した構造物はブロックに戻ります", - "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定したりできます", + "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でしかブロックに戻らないように設定したりできます", - "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", - "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", - "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", - "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", - "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", - "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", - "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rose_quartz_lamp.header": "ローズクォーツランプ", + "create.ponder.rose_quartz_lamp.text_1": "ローズクォーツランプはレッドストーン信号を受けるとオンになります", + "create.ponder.rose_quartz_lamp.text_2": "するとその後もレッドストーン信号を発し続けます", + "create.ponder.rose_quartz_lamp.text_3": "複数のランプを並べて設置すると...", + "create.ponder.rose_quartz_lamp.text_4": "...ランプをオンにすると信号はそこに集中し、他のランプはオフになります", + "create.ponder.rose_quartz_lamp.text_5": "オンのランプの距離に応じてコンパレーターは信号を発します", + "create.ponder.rose_quartz_lamp.text_6": "レンチでランプを手動で切り替えることもできます", "create.ponder.rotation_speed_controller.header": "回転速度コントローラーの使い方", "create.ponder.rotation_speed_controller.text_1": "コントローラーは、側面の軸から上の大きな歯車に回転を伝達します", @@ -2801,14 +2801,14 @@ "create.ponder.sequenced_gearshift.text_1": "シーケンスギアシフトは、設定されたプログラムに従って回転を伝達します", "create.ponder.sequenced_gearshift.text_2": "右クリックで設定画面を開けます", "create.ponder.sequenced_gearshift.text_3": "レッドストーン信号を受けると、設定されたプログラムを実行します", - "create.ponder.sequenced_gearshift.text_4": "終了すると止まり、また次のレッドストーン信号を受けると同じように実行します", - "create.ponder.sequenced_gearshift.text_5": "レッドストーンコンパレータで、現在の進捗を読み取れます", + "create.ponder.sequenced_gearshift.text_4": "終了すると止まり、また次のレッドストーン信号を受けると同じように動作します", + "create.ponder.sequenced_gearshift.text_5": "レッドストーンコンパレーターで、現在の進捗を読み取れます", "create.ponder.shaft.header": "シャフトによる回転力の伝達", "create.ponder.shaft.text_1": "シャフトはまっすぐに回転を伝達します", "create.ponder.shaft_casing.header": "ケース入りシャフト", - "create.ponder.shaft_casing.text_1": "真鍮製、安山岩製ケーシングを使って、シャフトを装飾できます", + "create.ponder.shaft_casing.text_1": "真鍮、安山岩ケーシングを使って、シャフトを装飾できます", "create.ponder.smart_chute.header": "スマートシュートによるアイテムのフィルタリング", "create.ponder.smart_chute.text_1": "スマートシュートは、垂直方向のシュートにフィルター機能を追加したものです", @@ -2819,50 +2819,50 @@ "create.ponder.smart_pipe.header": "スマートパイプによる液体制御", "create.ponder.smart_pipe.text_1": "スマートパイプは液体の種類によって流れを制御できます", "create.ponder.smart_pipe.text_2": "搬入元に直接つなげることで、搬出する液体の種類を指定できます", - "create.ponder.smart_pipe.text_3": "フィルタースロットを右クリックして、液体の入ったアイテムを装着して指定することもできます", - "create.ponder.smart_pipe.text_4": "スマートパイプは、パイプネットワークの搬出先に設置すると指定された液体のみを流します", + "create.ponder.smart_pipe.text_3": "フィルタースロットに液体の入ったアイテムを右クリックして指定できます", + "create.ponder.smart_pipe.text_4": "スマートパイプは、パイプネットワークの搬出先に設置すると、指定した液体のみを流します", "create.ponder.speedometer.header": "速度メーターによる動力情報の監視", - "create.ponder.speedometer.text_1": "速度メーターは、接続された機械の現在の回転速度を表示します", + "create.ponder.speedometer.text_1": "速度メーターは、接続した機械の回転速度を表示します", "create.ponder.speedometer.text_2": "エンジニアのゴーグルを装着していると、より詳細な情報を得られます", - "create.ponder.speedometer.text_3": "コンパレータは、速度メーターの測定値に応じたレッドストーン信号を出力します", + "create.ponder.speedometer.text_3": "コンパレーターは、速度メーターの測定値に応じたレッドストーン信号を出力します", "create.ponder.spout_filling.header": "アイテム注液口によるアイテム充填", - "create.ponder.spout_filling.text_1": "注液口は、その下に用意されたアイテムを液体で満たすことができます", - "create.ponder.spout_filling.text_2": "注液口の中身は手動で出し入れすることはできません", + "create.ponder.spout_filling.text_1": "注液口は、その下に用意したアイテムを液体で満たせます", + "create.ponder.spout_filling.text_2": "注液口の中身は手動で搬出入できません", "create.ponder.spout_filling.text_3": "代わりに、パイプを使って液体を供給しましょう", "create.ponder.spout_filling.text_4": "容器アイテムは、注液口の下のデポに置きましょう", "create.ponder.spout_filling.text_5": "ベルトでアイテムを供給すると...", "create.ponder.spout_filling.text_6": "...注液口が自動でアイテムを止め、加工します", "create.ponder.stabilized_bearings.header": "からくりの角度の固定", - "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているとき...", + "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているなら...", "create.ponder.stabilized_bearings.text_2": "...自身の角度を真っ直ぐに保とうとします", "create.ponder.stabilized_bearings.text_3": "ベアリングにブロックを取り付けると", "create.ponder.stabilized_bearings.text_4": "ベアリングに取り付けたサブのからくり全体が角度を真っ直ぐに保ったままになります", - "create.ponder.steam_engine.header": "UNLOCALIZED: Setting up Steam Engines", - "create.ponder.steam_engine.text_1": "UNLOCALIZED: Steam Engines can be placed on a Fluid Tank", - "create.ponder.steam_engine.text_10": "UNLOCALIZED: Lvl 4", - "create.ponder.steam_engine.text_11": "UNLOCALIZED: 4 Engines", - "create.ponder.steam_engine.text_12": "UNLOCALIZED: Lvl 8", - "create.ponder.steam_engine.text_13": "UNLOCALIZED: 8 Engines", - "create.ponder.steam_engine.text_2": "UNLOCALIZED: Clicking the engine with a Shaft creates the Kinetic Output", - "create.ponder.steam_engine.text_3": "UNLOCALIZED: With sufficient Heat, Water and Boiler space...", - "create.ponder.steam_engine.text_4": "UNLOCALIZED: ...they will generate Rotational Force", - "create.ponder.steam_engine.text_5": "UNLOCALIZED: The minimal setup requires 4 Fluid Tanks", - "create.ponder.steam_engine.text_6": "UNLOCALIZED: With the help of Blaze Burners, the power output can be increased", - "create.ponder.steam_engine.text_7": "UNLOCALIZED: Higher power levels require more Water, Size and Heat", - "create.ponder.steam_engine.text_8": "UNLOCALIZED: The boiler's current power level can be inspected with Engineer's Goggles", - "create.ponder.steam_engine.text_9": "UNLOCALIZED: With each added power level, an additional Engine can output at full capacity", + "create.ponder.steam_engine.header": "蒸気エンジンの設置", + "create.ponder.steam_engine.text_1": "蒸気エンジンは液体タンクに設置できます", + "create.ponder.steam_engine.text_10": "レベル4", + "create.ponder.steam_engine.text_11": "4基の蒸気エンジン", + "create.ponder.steam_engine.text_12": "レべル8", + "create.ponder.steam_engine.text_13": "8基の蒸気エンジン", + "create.ponder.steam_engine.text_2": "シャフトで蒸気エンジンをクリックして回転力の出力口を作れます", + "create.ponder.steam_engine.text_3": "十分な容量と水量、そして熱量があれば...", + "create.ponder.steam_engine.text_4": "...回転力を生成できます", + "create.ponder.steam_engine.text_5": "最低でも、4つの液体タンクが必要です", + "create.ponder.steam_engine.text_6": "ブレイズバーナーの助けを借りれば、出力を増やせます", + "create.ponder.steam_engine.text_7": "レベルを上げるには、より多くの容量、水量、熱量が必要です", + "create.ponder.steam_engine.text_8": "レベルは、エンジニアのゴーグルで確認できます", + "create.ponder.steam_engine.text_9": "レベルを上げるごとに、最大出力を出せるエンジンを増やせます", - "create.ponder.steam_whistle.header": "UNLOCALIZED: Setting up Steam Whistles", - "create.ponder.steam_whistle.text_1": "UNLOCALIZED: Steam Whistles can be placed on a Fluid Tank", - "create.ponder.steam_whistle.text_2": "UNLOCALIZED: If the tank receives sufficient heat...", - "create.ponder.steam_whistle.text_3": "UNLOCALIZED: ...the Whistle will play a note when activated", - "create.ponder.steam_whistle.text_4": "UNLOCALIZED: Use a Whistle item on the block to lower its pitch", - "create.ponder.steam_whistle.text_5": "UNLOCALIZED: Cycle between three different octaves using a Wrench", - "create.ponder.steam_whistle.text_6": "UNLOCALIZED: Engineer's Goggles can help to find out the current pitch of a Whistle", + "create.ponder.steam_whistle.header": "汽笛の設置", + "create.ponder.steam_whistle.text_1": "汽笛は液体タンクに設置できます", + "create.ponder.steam_whistle.text_2": "タンクが十分な熱量を受けていれば...", + "create.ponder.steam_whistle.text_3": "...汽笛はレッドストーン信号を受けたとき、音を鳴らします", + "create.ponder.steam_whistle.text_4": "ブロックにアイテムの汽笛を使うことで、音程を下げられます", + "create.ponder.steam_whistle.text_5": "レンチを使って、3つのオクターブを循環して切り替えられます", + "create.ponder.steam_whistle.text_6": "エンジニアのゴーグルは、汽笛の音程を調べるのに役立ちます", "create.ponder.sticker.header": "スティッカーを使ったブロックの付け外し", "create.ponder.sticker.text_1": "スティッカーは、ブロックの付け外しをレッドストーン信号で制御できます", @@ -2871,112 +2871,112 @@ "create.ponder.sticker.text_4": "もう一度信号を受けると、ブロックは外れます", "create.ponder.stressometer.header": "応力メーターによる動力情報の監視", - "create.ponder.stressometer.text_1": "応力メーターは、接続された動力ネットワークの現在の応力許容量を表示します", + "create.ponder.stressometer.text_1": "応力メーターは、接続した動力ネットワークの許容応力を表示します", "create.ponder.stressometer.text_2": "エンジニアのゴーグルを装着していると、より詳しい数値を見られます", - "create.ponder.stressometer.text_3": "コンパレータは、応力メーターの測定値に応じたレッドストーン信号を出力します", + "create.ponder.stressometer.text_3": "コンパレーターは、応力メーターの測定値に応じたレッドストーン信号を出力します", "create.ponder.super_glue.header": "超粘着剤によるブロックの取り付け", - "create.ponder.super_glue.text_1": "超粘着剤は、任意の2つのブロックの間に塗れます", - "create.ponder.super_glue.text_2": "貼り付けたブロックは、からくりに組み込まれると一緒に動きます", - "create.ponder.super_glue.text_3": "超粘着剤をオフハンドで持つと...", - "create.ponder.super_glue.text_4": "...設置したブロックは置いたブロックの面と接着されます", - "create.ponder.super_glue.text_5": "左クリックすれば超粘着剤を剥がせます", - "create.ponder.super_glue.text_6": "UNLOCALIZED: Blocks hanging on others usually do not require glue", + "create.ponder.super_glue.text_1": "超粘着剤はブロックをまとめて、動く構造物を作れます", + "create.ponder.super_glue.text_2": "2つの角をクリックすると、新しい「粘着」領域が作られます", + "create.ponder.super_glue.text_3": "領域を削除するには、超粘着剤を持って殴ってください", + "create.ponder.super_glue.text_4": "領域を共有する隣接するブロックは互いにくっつきます", + "create.ponder.super_glue.text_5": "重なった領域は一緒に移動します", + "create.ponder.super_glue.text_6": "他のブロックにぶら下げるブロックは、基本的に超粘着剤を必要としません", - "create.ponder.track_chunks.header": "UNLOCALIZED: Traversing unloaded Chunks", - "create.ponder.track_chunks.text_1": "UNLOCALIZED: Tracks stay functional outside of loaded chunks", - "create.ponder.track_chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", - "create.ponder.track_chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", - "create.ponder.track_chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.track_chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", + "create.ponder.track_chunks.header": "ロードされていないチャンクの旅", + "create.ponder.track_chunks.text_1": "線路はロードされたチャンクの外でも機能し続けます", + "create.ponder.track_chunks.text_2": "列車は世界の処理されていない場所でも問題なく走行します", + "create.ponder.track_chunks.text_3": "駅や赤信号で止まるのは変わりません", + "create.ponder.track_chunks.text_4": "ただし、ドリルなど、組み込んだ機械は動作しません", + "create.ponder.track_chunks.text_5": "プレイヤーが近づくと、列車は再び現れます", - "create.ponder.track_observer.header": "UNLOCALIZED: Detecting Trains", - "create.ponder.track_observer.text_1": "UNLOCALIZED: Select a Train Track then place the Observer nearby", - "create.ponder.track_observer.text_2": "UNLOCALIZED: The Observer will detect any Trains passing over the marker", - "create.ponder.track_observer.text_3": "UNLOCALIZED: Observers can be filtered to activate for matching cargo", + "create.ponder.track_observer.header": "列車の検知", + "create.ponder.track_observer.text_1": "鉄道用線路を選択し、その後列車検知装置を近くに置いてください", + "create.ponder.track_observer.text_2": "列車検知装置はそのマーカーに列車が通るとそれを検知します", + "create.ponder.track_observer.text_3": "列車検知装置はフィルターに一致する貨物があったときだけ動作するようにできます", - "create.ponder.track_placement.header": "UNLOCALIZED: Placing Train Tracks", - "create.ponder.track_placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions", - "create.ponder.track_placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track", - "create.ponder.track_placement.text_3": "UNLOCALIZED: Then place or select a second track", - "create.ponder.track_placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes", - "create.ponder.track_placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized", - "create.ponder.track_placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...", - "create.ponder.track_placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead", - "create.ponder.track_placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically", + "create.ponder.track_placement.header": "鉄道用線路の設置", + "create.ponder.track_placement.text_1": "からくり鉄道のために設計された新型レール", + "create.ponder.track_placement.text_2": "線路を一括して設置するには、まず既存の線路をクリックしてください", + "create.ponder.track_placement.text_3": "次に、2つ目の線路を設置または選択します", + "create.ponder.track_placement.text_4": "線路はターンや傾斜として設置することもできます", + "create.ponder.track_placement.text_5": "繋げたとき、線路はそれぞれのターンが均等な大きさになるよう配置されます", + "create.ponder.track_placement.text_6": "ダッシュキーを押しながら繋げると...", + "create.ponder.track_placement.text_7": "...代わりにできるだけ長くなめらかなターンを作ります", + "create.ponder.track_placement.text_8": "オフハンドに持った素材は線路の下に自動で敷き詰められます", - "create.ponder.track_portal.header": "UNLOCALIZED: Tracks and the Nether", - "create.ponder.track_portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...", - "create.ponder.track_portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side", - "create.ponder.track_portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions", + "create.ponder.track_portal.header": "ネザーへの線路", + "create.ponder.track_portal.text_1": "鉄道用線路をネザーポータルに設置すると...", + "create.ponder.track_portal.text_2": "...向こう側に対となる線路の設置を試みます", + "create.ponder.track_portal.text_3": "この線路上の列車はディメンションを超えて進めます", - "create.ponder.train_assembly.header": "UNLOCALIZED: Assembling Trains", - "create.ponder.train_assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", - "create.ponder.train_assembly.text_10": "UNLOCALIZED: Every Train requires Train Controls on board", - "create.ponder.train_assembly.text_11": "UNLOCALIZED: An optional second one allows departure from Stations in both directions", - "create.ponder.train_assembly.text_12": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", - "create.ponder.train_assembly.text_13": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", - "create.ponder.train_assembly.text_14": "UNLOCALIZED: When used on a station, maps will add a labeled marker at the location", - "create.ponder.train_assembly.text_15": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", - "create.ponder.train_assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", - "create.ponder.train_assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", - "create.ponder.train_assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", - "create.ponder.train_assembly.text_5": "UNLOCALIZED: Create new bogeys by using Train Casing on Tracks", - "create.ponder.train_assembly.text_6": "UNLOCALIZED: Click the track again to cycle between bogey designs", - "create.ponder.train_assembly.text_7": "UNLOCALIZED: Attach blocks with the help of Super Glue", - "create.ponder.train_assembly.text_8": "UNLOCALIZED: Assembled Trains will move faster if they can find fuel in assembled chests or barrels", - "create.ponder.train_assembly.text_9": "UNLOCALIZED: Fuel stored in Vaults will not be consumed by the train", + "create.ponder.train_assembly.header": "列車の組み立て", + "create.ponder.train_assembly.text_1": "鉄道用線路を選択した後、駅を近くに置いてください", + "create.ponder.train_assembly.text_10": "列車には鉄道用運転台が必要です", + "create.ponder.train_assembly.text_11": "もうひとつ置くことで駅から両方向に発車発車をさせることもできます", + "create.ponder.train_assembly.text_12": "駅のUIを開いて、組み立て処理を実行してください", + "create.ponder.train_assembly.text_13": "列車は駅でしかブロックに戻すことは出きません", + "create.ponder.train_assembly.text_14": "地図を駅を使うと、その場所にラベル付きのマーカーが追加されます", + "create.ponder.train_assembly.text_15": "組み立てた列車はレンチで近くの線路に移動できます", + "create.ponder.train_assembly.text_2": "駅は線路網における道しるべとなります", + "create.ponder.train_assembly.text_3": "新しい列車を作るには、UIを開いて組み立てモードに切り替えてください", + "create.ponder.train_assembly.text_4": "組み立て中、定時運行している列車はこの駅に近づきません", + "create.ponder.train_assembly.text_5": "線路の上に鉄道ケーシングを使って新しい台車を作ってください。", + "create.ponder.train_assembly.text_6": "もう一度線路をクリックすると台車のデザインが循環して切り替わります", + "create.ponder.train_assembly.text_7": "超粘着剤を使ってブロックを取り付けてください", + "create.ponder.train_assembly.text_8": "組み立てた列車は組み込まれたチェストや樽から燃料を探し出せる場合、より速く走ります", + "create.ponder.train_assembly.text_9": "燃料をアイテム保管庫に入れておけば、列車によって消費されません", - "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", - "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", - "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", - "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", - "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", - "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", - "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", - "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", - "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + "create.ponder.train_controls.header": "列車の操縦", + "create.ponder.train_controls.text_1": "鉄道運転台はすべてのからくり鉄道に必要です", + "create.ponder.train_controls.text_2": "列車を組み立て、運転台を右クリックして操縦を始められます", + "create.ponder.train_controls.text_3": "列車の加速と進路決定は移動キーで行えます", + "create.ponder.train_controls.text_4": "必要に応じて、最高速度をマウスホイールで調整できます", + "create.ponder.train_controls.text_5": "スペースキーを長押しすることで、近くの駅に停車できます", + "create.ponder.train_controls.text_6": "列車は駅でしかブロックに戻せません", + "create.ponder.train_controls.text_7": "組み込んだ汽笛はダッシュキーで鳴らせます", + "create.ponder.train_controls.text_8": "スニークかもう一度クリックで列車の運転をやめられます", - "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", - "create.ponder.train_schedule.text_1": "UNLOCALIZED: Schedules allow Trains to be controlled by other Drivers", - "create.ponder.train_schedule.text_2": "UNLOCALIZED: Right-click with the item in hand to open its Interface", - "create.ponder.train_schedule.text_3": "UNLOCALIZED: Once programmed, the Schedule can be handed off to a Train Driver", - "create.ponder.train_schedule.text_4": "UNLOCALIZED: Any mob or blaze burner sitting in front of Train Controls is an eligible conductor", - "create.ponder.train_schedule.text_5": "UNLOCALIZED: Creatures on a lead can be given their seat more conveniently", - "create.ponder.train_schedule.text_6": "UNLOCALIZED: Schedules can be retrieved from Drivers at any moment", + "create.ponder.train_schedule.header": "鉄道時刻表の使い方", + "create.ponder.train_schedule.text_1": "時刻表を使えば、列車を他の運転手に運転させられます", + "create.ponder.train_schedule.text_2": "アイテムを持って右クリックで設定画面を開けます", + "create.ponder.train_schedule.text_3": "一度時刻表を組めば、運転手に渡せます", + "create.ponder.train_schedule.text_4": "任意のモブか、ブレイズバーナーを運転台の真正面に座らせれば車掌にできます", + "create.ponder.train_schedule.text_5": "リードにモブを結べば、シートをクリックして簡単に座らせられます", + "create.ponder.train_schedule.text_6": "時刻表はいつでもモブから取りもどせます", - "create.ponder.train_signal_placement.header": "UNLOCALIZED: Placing Train Signals", - "create.ponder.train_signal_placement.text_1": "UNLOCALIZED: Select a Train Track then place the Signal nearby", - "create.ponder.train_signal_placement.text_2": "UNLOCALIZED: Signals control the flow of Trains not driven by players", - "create.ponder.train_signal_placement.text_3": "UNLOCALIZED: Scheduled Trains will never cross signals in the opposite direction", - "create.ponder.train_signal_placement.text_4": "UNLOCALIZED: ...unless a second signal is added facing the opposite way.", - "create.ponder.train_signal_placement.text_5": "UNLOCALIZED: Nixie tubes can be attached to make a signal's lights more visible", + "create.ponder.train_signal_placement.header": "鉄道信号機の設置", + "create.ponder.train_signal_placement.text_1": "鉄道用線路を選択して信号機を近くに置いてください", + "create.ponder.train_signal_placement.text_2": "信号機はプレイヤーが運転していない列車の運行を制御します", + "create.ponder.train_signal_placement.text_3": "定時運行している列車は決して信号機を逆向きに通過できません...", + "create.ponder.train_signal_placement.text_4": "...もう一つ、反対向きの信号機があれば話は別ですが", + "create.ponder.train_signal_placement.text_5": "ニキシー管を取り付けて、信号機の光をより見やすくできます", - "create.ponder.train_signal_redstone.header": "UNLOCALIZED: Signals & Redstone", - "create.ponder.train_signal_redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", - "create.ponder.train_signal_redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.train_signal_redstone.header": "信号機 & レッドストーン", + "create.ponder.train_signal_redstone.text_1": "レッドストーン信号で信号機の表示を強制できます", + "create.ponder.train_signal_redstone.text_2": "逆に、コンパレーターは赤信号の時にレッドストーン信号を発します", - "create.ponder.train_signal_signaling.header": "UNLOCALIZED: Collision Prevention with Signals", - "create.ponder.train_signal_signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", - "create.ponder.train_signal_signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", - "create.ponder.train_signal_signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", - "create.ponder.train_signal_signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", - "create.ponder.train_signal_signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", - "create.ponder.train_signal_signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", - "create.ponder.train_signal_signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", - "create.ponder.train_signal_signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", - "create.ponder.train_signal_signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.train_signal_signaling.header": "信号機による衝突防止", + "create.ponder.train_signal_signaling.text_1": "鉄道信号機は鉄道用線路を区間に区切ります", + "create.ponder.train_signal_signaling.text_2": "区間に列車がある場合、他の列車は中への侵入が許可されません", + "create.ponder.train_signal_signaling.text_3": "従って、区間には一度に1つの列車しか存在できません", + "create.ponder.train_signal_signaling.text_4": "二つ目の信号機モードはレンチによって有効にできます", + "create.ponder.train_signal_signaling.text_5": "真鍮の信号機の区間は通常、普通の信号機とつながります", + "create.ponder.train_signal_signaling.text_6": "この特別な信号は、第二の条件下で列車を停止させられます", + "create.ponder.train_signal_signaling.text_7": "それは区間に入ろうとした列車を停止させます...", + "create.ponder.train_signal_signaling.text_8": "...すぐに区間を離れられない場合", + "create.ponder.train_signal_signaling.text_9": "これで、待っている列車を混雑する区間の中に入らないようにできます", "create.ponder.valve_handle.header": "バルブハンドルによる回転力の生成", "create.ponder.valve_handle.text_1": "バルブハンドルは手動で回転力を生み出す原動機です", "create.ponder.valve_handle.text_2": "右クリックし続けると、反時計回りに回転します", - "create.ponder.valve_handle.text_3": "回転速度はゆっくりですが、正確です", + "create.ponder.valve_handle.text_3": "回転速度はゆっくりですが、一定です", "create.ponder.valve_handle.text_4": "スニーク状態で右クリックし続けると、時計回りに回転します", "create.ponder.valve_handle.text_5": "バルブハンドルは、染色できます", "create.ponder.valve_pipe.header": "バルブによる液体制御", "create.ponder.valve_pipe.text_1": "バルブは、液体ネットワークに流れる液体を制御するのに役立ちます", - "create.ponder.valve_pipe.text_2": "回転力で、液体が現在通過できるか制御します", + "create.ponder.valve_pipe.text_2": "回転力で、液体が通過できるか制御できます", "create.ponder.valve_pipe.text_3": "開放方向に回転力を与えるとバルブが開きます", "create.ponder.valve_pipe.text_4": "回転方向を逆にすることでバルブを閉められます", @@ -2987,16 +2987,16 @@ "create.ponder.water_wheel.text_4": "逆向きに設置すると、回転速度が落ちてしまいます", "create.ponder.weighted_ejector.header": "重量射出機の使い方", - "create.ponder.weighted_ejector.text_1": "射出機を持ちスニークしながら右クリックすると、ターゲットとなる位置を設定できます", + "create.ponder.weighted_ejector.text_1": "射出機を持ってスニークしながら右クリックすると、対象となる位置を設定できます", "create.ponder.weighted_ejector.text_10": "スタック数を設定すると、保持しているスタックがその量に達したときのみ射出するようになります", "create.ponder.weighted_ejector.text_11": "他のエンティティが射出機を踏むと、いつでも射出機が稼働します", - "create.ponder.weighted_ejector.text_2": "設置された射出機は、設定した場所に物体を発射します", - "create.ponder.weighted_ejector.text_3": "ターゲットは、範囲内であれば高さや距離は問いません", - "create.ponder.weighted_ejector.text_4": "ただし、真正面方向以外へは射出できません", - "create.ponder.weighted_ejector.text_5": "有効なターゲットが設定されていない場合、真正面のブロックがターゲットになります", + "create.ponder.weighted_ejector.text_2": "設置した射出機は、設定した場所に物体を発射します", + "create.ponder.weighted_ejector.text_3": "範囲内であれば高さや距離は問いません", + "create.ponder.weighted_ejector.text_4": "ただし、真正面以外へは射出できません", + "create.ponder.weighted_ejector.text_5": "有効な位置が設定されていない場合、真正面のブロックが対象になります", "create.ponder.weighted_ejector.text_6": "巻き上げるには、回転力を供給する必要があります", "create.ponder.weighted_ejector.text_7": "上にアイテムを置くと、射出機が稼働します", - "create.ponder.weighted_ejector.text_8": "ターゲットが満杯の収納ブロックの場合、射出機はそのブロックに空きがでるまで待機します", + "create.ponder.weighted_ejector.text_8": "対象が満杯の収納ブロックの場合、射出機はそのブロックに空きがでるまで待機します", "create.ponder.weighted_ejector.text_9": "レンチを使って、スタック量を調整できます", "create.ponder.weighted_ejector_redstone.header": "レッドストーン信号による重量射出機の制御", @@ -3004,20 +3004,20 @@ "create.ponder.weighted_ejector_redstone.text_2": "また、オブザーバーは射出機の稼働を検知できます", "create.ponder.weighted_ejector_tunnel.header": "重量射出機によるアイテムスタックの分割", - "create.ponder.weighted_ejector_tunnel.text_1": "真鍮製トンネルと組み合わせて、アイテムスタックを特定の量だけ分割できます", - "create.ponder.weighted_ejector_tunnel.text_2": "まず、側面の搬出口を優先させる為に、真鍮製トンネルを[最寄りを優先] に設定します", + "create.ponder.weighted_ejector_tunnel.text_1": "真鍮トンネルと組み合わせて、アイテムスタックの特定の量だけを分割できます", + "create.ponder.weighted_ejector_tunnel.text_2": "まず、側面の搬出口を優先させる為に、真鍮トンネルを「最寄りを優先」に設定します", "create.ponder.weighted_ejector_tunnel.text_3": "次に、射出機に分割したいスタック量を設定します", - "create.ponder.weighted_ejector_tunnel.text_4": "設定された量のアイテムスタックは側面の搬出口から搬出され...", + "create.ponder.weighted_ejector_tunnel.text_4": "設定した量のアイテムスタックは側面の搬出口から搬出され...", "create.ponder.weighted_ejector_tunnel.text_5": "...残りのアイテムはそのまま搬出されます", "create.ponder.windmill_source.header": "風車ベアリングによる回転力の生成", "create.ponder.windmill_source.text_1": "風車ベアリングは手前にブロックを取り付けられます", - "create.ponder.windmill_source.text_2": "帆とみなされるブロックを十分な数取り付けられていれば、風車として機能します", - "create.ponder.windmill_source.text_3": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", - "create.ponder.windmill_source.text_4": "回転速度は帆ブロックの数で決まります", - "create.ponder.windmill_source.text_5": "レンチを使って回転方向を変えられます", - "create.ponder.windmill_source.text_6": "いつでもベアリングを右クリックすれば、回転を停止させて構造物を組み立てなおせます", - "create.ponder.windmill_source.text_7": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", + "create.ponder.windmill_source.text_2": "超粘着剤を使って動く構造物を作ってください", + "create.ponder.windmill_source.text_3": "帆とみなされる十分な数のブロックが取り付けられていれば、風車として機能します", + "create.ponder.windmill_source.text_4": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", + "create.ponder.windmill_source.text_5": "回転速度は帆ブロックの数で決まります", + "create.ponder.windmill_source.text_6": "レンチを使って回転方向を変えられます", + "create.ponder.windmill_source.text_7": "ベアリングを右クリックすれば、いつでも回転を停止させて構造物を組み立て直せます", "create.ponder.windmill_structure.header": "からくり風車", "create.ponder.windmill_structure.text_1": "帆とみなされるブロックが8個以上あれば、どのような構造物でも風車として動きます", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 97dd84710..c84094e49 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -667,28 +667,28 @@ "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "UNLOCALIZED: Welcome to Create", - "advancement.create.root.desc": "UNLOCALIZED: Here be Contraptions", + "advancement.create.root.desc": "UNLOCALIZED: Here Be Contraptions", "advancement.create.andesite_alloy": "UNLOCALIZED: Sturdier Rocks", "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Obtain some Andesite Alloy, Create's most important resource", "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to wood creating a basic casing for your machines", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.andesite_casing.desc": "UNLOCALIZED: Apply Andesite Alloy to stripped wood, creating a basic casing for your machines", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more", "advancement.create.belt": "UNLOCALIZED: Kelp Drive", "advancement.create.belt.desc": "UNLOCALIZED: Connect two Shafts with a Mechanical Belt", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.chute": "UNLOCALIZED: Vertical Logistics", "advancement.create.chute.desc": "UNLOCALIZED: Transport some items by Chute", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", @@ -703,25 +703,25 @@ "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench", "advancement.create.stressometer": "UNLOCALIZED: Stress for Nerds", - "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Goggles and a Stressometer", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.stressometer.desc": "UNLOCALIZED: Get an exact readout with the help of Engineer's Goggles and a Stressometer", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", @@ -730,62 +730,62 @@ "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation", "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to wood creating a waterproof casing for your machines", + "advancement.create.copper_casing.desc": "UNLOCALIZED: Apply Copper Ingots to stripped wood, creating a waterproof casing for your machines", "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid containing item be filled using a Spout", + "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid-containing item be filled by a Spout", "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "UNLOCALIZED: Flow Discovery", "advancement.create.glass_pipe.desc": "UNLOCALIZED: Use your Wrench on a pipe that contains a fluid", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", "advancement.create.hose_pulley": "UNLOCALIZED: Industrial Spillage", "advancement.create.hose_pulley.desc": "UNLOCALIZED: Lower a Hose Pulley and watch it drain or fill a body of fluid", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", "advancement.create.brass": "UNLOCALIZED: Real Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Create some Brass from Copper and Zinc ingots in your Blaze-powered Mixer", + "advancement.create.brass.desc": "UNLOCALIZED: Create Brass Ingots by alloying Copper and Zinc Ingots in your Blaze-heated Mechanical Mixer", "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to wood creating a casing for more sophisticated machines", + "advancement.create.brass_casing.desc": "UNLOCALIZED: Apply Brass Ingots to stripped wood, creating a casing for more sophisticated machines", "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", "advancement.create.deployer": "UNLOCALIZED: Artificial Intelligence", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and activate a Deployer, the perfect reflection of yourself", + "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself", "advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities", "advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism", "advancement.create.speed_controller": "UNLOCALIZED: Engineers Hate Him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine tune your contraption with a Rotation Speed Controller", + "advancement.create.speed_controller.desc": "UNLOCALIZED: Fine-tune your Contraption with a Rotation Speed Controller", "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first Item", + "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Watch your Mechanical Arm transport its first item", "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", @@ -795,7 +795,7 @@ "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption O'Clock", "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a structure mounted on a Clockwork Bearing", "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information", "advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!", "advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon", "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", @@ -804,54 +804,54 @@ "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.arm_blaze_burner": "UNLOCALIZED: Combust-o-Tron", "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed", "advancement.create.arm_many_targets": "UNLOCALIZED: Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with ten or more output locations", + "advancement.create.arm_many_targets.desc": "UNLOCALIZED: Program a Mechanical Arm with 10 or more output locations", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", "advancement.create.musical_arm": "UNLOCALIZED: DJ Mechanico", "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox§7\n(Hidden Advancement)", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components", "advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0": "UNLOCALIZED: A New Gauge", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages", "advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 945cd07c0..29041f07f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -672,23 +672,23 @@ "advancement.create.andesite_alloy.desc": "Materiais do Create tem nomes estranhos, a liga de andesito é um deles.", "advancement.create.andesite_casing": "A era do andesito", "advancement.create.andesite_casing.desc": "Use um pouco de liga de andesito e madeira para fazer um revestimento basico.", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more", "advancement.create.belt": "Correia de alga", "advancement.create.belt.desc": "Conecte dois eixos com uma esteira mecanica.", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.chute": "Caindo", "advancement.create.chute.desc": "coloque uma calha a versão vertical da esteira mecanica.", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", @@ -703,25 +703,25 @@ "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench", "advancement.create.stressometer": "Mas quão estressado exatamente?", "advancement.create.stressometer.desc": "Coloque e energise o estressómetro. Olhe a este por atraves dos seus óculos para ler o valor exato.", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", @@ -730,48 +730,48 @@ "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two Belt-mounted Funnels kiss§7\n(Hidden Advancement)", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation", "advancement.create.copper_casing": "A era do cobre", "advancement.create.copper_casing.desc": "Use um pouco de chapas de cobre e madeira para criar um pouco de revestimentos de cobre.", "advancement.create.spout": "Sploosh", "advancement.create.spout.desc": "Assista um item ser enchido usando uma bica.", "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Espião de fluxo", "advancement.create.glass_pipe.desc": "Assista fluidos se propagarem por através de canos de fluido com janela. Canos retos ficam com janelas quando uma chave inglesa é usada neles.", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", "advancement.create.hose_pulley": "Vazamento industrial", "advancement.create.hose_pulley.desc": "desça uma polia de mangueira e assista esta drenar ou encher qualquer corpo de fluido.", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", "advancement.create.brass": "Ligas de verdade", "advancement.create.brass.desc": "Use cobre esmagado e zinco esmagado para criar um pouco de latão.", "advancement.create.brass_casing": "a era do latão", @@ -795,7 +795,7 @@ "advancement.create.clockwork_bearing": "Hora da engenhoca", "advancement.create.clockwork_bearing.desc": "Ative uma estrutura conectada a um rolamento de rêlogio.", "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "Derrote um inimigo com o seu canhão de batata.", "advancement.create.extendo_grip": "Boioioing!", @@ -804,54 +804,54 @@ "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.arm_blaze_burner": "Combuste-tron", "advancement.create.arm_blaze_burner.desc": "Instrua um braço mecânico para alimentar seu queimador de blaze.", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed", "advancement.create.arm_many_targets": "Organiza-tron", "advancement.create.arm_many_targets.desc": "Programe um braço mecânico com dez ou mais locais de saida.", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump§7\n(Hidden Advancement)", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", "advancement.create.musical_arm": "toque minha musica!", "advancement.create.musical_arm.desc": "Assista um braço mecânico operar seu toca-discos.", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components", "advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0": "UNLOCALIZED: A New Gauge", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages", "advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 7bd844304..26c30e017 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -672,23 +672,23 @@ "advancement.create.andesite_alloy.desc": "Materialele Create-ului au nume ciudate, Aliajul Din Andezit este unul dintre ele.", "advancement.create.andesite_casing": "Epoca Andezitului", "advancement.create.andesite_casing.desc": "Folosește niște Aliaj De Andezit și Lemn ca să creezi o Carcasă de bază.", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!", "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", + "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan", "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared", "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more", "advancement.create.belt": "Conducere de Alge", "advancement.create.belt.desc": "Conectează două rotoare cu o Bandă Mecanică.", "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", "advancement.create.chute": "Rostogolind în Jos", "advancement.create.chute.desc": "Plasează un Tobogan, partea verticală echivalentă a unei Benzi.", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up", "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", @@ -703,25 +703,25 @@ "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench", "advancement.create.stressometer": "Dar Cât De Stresat, Mai Exact?", "advancement.create.stressometer.desc": "Plasează și alimentează un Stresometru. Uită-te la el prin Ochelari ca să îi citești valoarea exactă.", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?", "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector", "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs", "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", @@ -730,48 +730,48 @@ "advancement.create.belt_funnel_kiss.desc": "Fă două săruturi de Pâlnii montate pe Bandă.", "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation", "advancement.create.copper_casing": "Epoca de cupru", "advancement.create.copper_casing.desc": "Folosește niște and Wood to create some Copper Casings.", "advancement.create.spout": "Splosh", "advancement.create.spout.desc": "Privește un obiect de fluid fiind umplut folosind o Duză.", "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain", "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque", "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure", "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water", "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", "advancement.create.glass_pipe": "Spion De Flux", "advancement.create.glass_pipe.desc": "Privește un fluid propagându-se printr-o Conductă De Fluide De Sticlă. Conducte De Fluide Drepte devin de sticlă când o cheie este folosită pe ele.", "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", "advancement.create.hose_pulley": "Vărsare Industrială", "advancement.create.hose_pulley.desc": "Coboară un Scripete De Furtun și privește-l scurgând sau umplând un corp de fluid.", "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate", "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive", "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite", "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!", "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", "advancement.create.brass": "Aliaje reale", "advancement.create.brass.desc": "Folosește Cupru Zdrobit și Zinc Zdrobit ca să creezi niște Alamă.", "advancement.create.brass_casing": "Epoca Alamei", @@ -795,7 +795,7 @@ "advancement.create.clockwork_bearing": "Ora Invențiilor", "advancement.create.clockwork_bearing.desc": "Asamblează o structură montată pe un Rulment De Ceasornic.", "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information", "advancement.create.potato_cannon": "Fwoomp!", "advancement.create.potato_cannon.desc": "Înfrânge un inamic cu Tunul tău De Cartofi.", "advancement.create.extendo_grip": "Boioioing!", @@ -804,54 +804,54 @@ "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", "advancement.create.arm_blaze_burner": "Arzător-o-Tron", "advancement.create.arm_blaze_burner.desc": "Instructează un Braț Mecanic să hrănească Arzătorul tău De Dogoreală.", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed", "advancement.create.arm_many_targets": "Organiz-o-Tron", "advancement.create.arm_many_targets.desc": "Programează un Braț Mecanic cu zece sau mai multe locații de ieșire.", "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other", "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", "advancement.create.fist_bump": "Bate-o, Bro!", "advancement.create.fist_bump.desc": "Fă două Deployere să bată pumnul.", "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", "advancement.create.musical_arm": "Cântă-mi melodia mea tematică!", "advancement.create.musical_arm.desc": "Privește un Braț Mecanic operând Tonomatul tău.", "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian", "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components", "advancement.create.train": "UNLOCALIZED: All Aboard!", "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule", "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", + "advancement.create.track_0": "UNLOCALIZED: A New Gauge", "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", + "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!", "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal", "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press", "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length", "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages", "advancement.create.long_travel": "UNLOCALIZED: Field Trip", "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)", "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)", "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)", "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", 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 23607e4da..e4df406f7 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: 4", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -27,7 +27,7 @@ "block.create.black_seat": "Чёрное сиденье", "block.create.black_toolbox": "Чёрный ящик для инструментов", "block.create.black_valve_handle": "Чёрный ручной вентиль", - "block.create.blaze_burner": "Горелка Всполоха", + "block.create.blaze_burner": "Горелка всполоха", "block.create.blue_nixie_tube": "Синий газоразрядный индикатор", "block.create.blue_sail": "Синий парус", "block.create.blue_seat": "Синее сиденье", @@ -71,7 +71,7 @@ "block.create.creative_fluid_tank": "Творческий жидкостный бак", "block.create.creative_motor": "Творческий мотор", "block.create.crimsite": "Кримзит", - "block.create.crimsite_pillar": "Кримзитовая коллона", + "block.create.crimsite_pillar": "Кримзитовая колонна", "block.create.crimson_window": "Багровое окно", "block.create.crimson_window_pane": "Панель из багрового окна", "block.create.crushing_wheel": "Колесо дробления", @@ -127,7 +127,7 @@ "block.create.cut_diorite_wall": "Резная диоритовая ограда", "block.create.cut_dripstone": "Резной натёчный камень", "block.create.cut_dripstone_brick_slab": "Плита из натёчнокаменного кирпича", - "block.create.cut_dripstone_brick_stairs": "Ступеньки из натёчнокаменного кирпича ", + "block.create.cut_dripstone_brick_stairs": "Ступеньки из натёчнокаменного кирпича", "block.create.cut_dripstone_brick_wall": "Ограда из натёчнокаменного кирпича", "block.create.cut_dripstone_bricks": "Резные кирпичи из натёчного камня", "block.create.cut_dripstone_slab": "Плита из резного натёчного камня", @@ -152,7 +152,7 @@ "block.create.cut_ochrum": "Резной охрум", "block.create.cut_ochrum_brick_slab": "Плита из резных охрумовых кирпичей", "block.create.cut_ochrum_brick_stairs": "Ступеньки из резных охрумовых кирпичей", - "block.create.cut_ochrum_brick_wall": "Резная ограда из резных охрумовых кирпичей", + "block.create.cut_ochrum_brick_wall": "Ограда из резных охрумовых кирпичей", "block.create.cut_ochrum_bricks": "Резные кирпичи из охрума", "block.create.cut_ochrum_slab": "Резная плита из охрума", "block.create.cut_ochrum_stairs": "Резные ступеньки из охрума", @@ -196,7 +196,7 @@ "block.create.cyan_valve_handle": "Бирюзовый ручной вентиль", "block.create.dark_oak_window": "Окно из тёмного дуба", "block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб", - "block.create.deepslate_pillar": "Колонна из глубинного сланца", + "block.create.deepslate_pillar": "Глубинносланцевая колонна", "block.create.deepslate_zinc_ore": "Цинконосный глубинный сланец", "block.create.deployer": "Автономный активатор", "block.create.depot": "Депо", @@ -213,7 +213,7 @@ "block.create.exposed_copper_tile_slab": "Плита из потемневший медной плитки", "block.create.exposed_copper_tile_stairs": "Ступеньки из потемневший медной плитки", "block.create.exposed_copper_tiles": "Потемневшая медная плитка", - "block.create.fake_track": "Маркер станции для карт", + "block.create.fake_track": "Маркер станции для карты", "block.create.fluid_pipe": "Жидкостная труба", "block.create.fluid_tank": "Жидкостный бак", "block.create.fluid_valve": "Жидкостный клапан", @@ -283,7 +283,7 @@ "block.create.limestone": "Известняк", "block.create.limestone_pillar": "Известковая колонна", "block.create.linear_chassis": "Линейное шасси", - "block.create.lit_blaze_burner": "Зажжённая горелка Всполоха", + "block.create.lit_blaze_burner": "Зажжённая горелка всполоха", "block.create.magenta_nixie_tube": "Пурпурный газоразрядный индикатор", "block.create.magenta_sail": "Пурпурный парус", "block.create.magenta_seat": "Пурпурное сиденье", @@ -305,7 +305,7 @@ "block.create.metal_girder": "Металлическая балка", "block.create.metal_girder_encased_shaft": "Вал в металлической балке", "block.create.millstone": "Жёрнов", - "block.create.minecart_anchor": "Вагонеточный якорь", + "block.create.minecart_anchor": "Вагонеточная опора", "block.create.mysterious_cuckoo_clock": "Часы с кукушкой", "block.create.nixie_tube": "Газоразрядный индикатор", "block.create.nozzle": "Форсунка", @@ -416,16 +416,16 @@ "block.create.rope": "Канат", "block.create.rope_pulley": "Лебёдка", "block.create.rose_quartz_block": "Блок розового кварца", - "block.create.rose_quartz_lamp": "Фонарь из розового кварца", + "block.create.rose_quartz_lamp": "Редстоуновый фонарь из розового кварца", "block.create.rose_quartz_tiles": "Плитка из розового кварца", "block.create.rotation_speed_controller": "Регулятор скорости вращения", "block.create.sail_frame": "Рама паруса", "block.create.schematic_table": "Схематичный стол", "block.create.schematicannon": "Схематичная пушка", "block.create.scorchia": "Тёмный пепел", - "block.create.scorchia_pillar": "Колонна из тёмного пепла", + "block.create.scorchia_pillar": "Тёмнопепловая колонна", "block.create.scoria": "Пепел", - "block.create.scoria_pillar": "Колонна из пепла", + "block.create.scoria_pillar": "Пепловая колонна", "block.create.secondary_linear_chassis": "Вторичное линейное шасси", "block.create.sequenced_gearshift": "Последовательная коробка передач", "block.create.shadow_steel_casing": "Теневой корпус", @@ -472,9 +472,9 @@ "block.create.small_ochrum_brick_wall": "Ограда из мелкого охрумого кирпича", "block.create.small_ochrum_bricks": "Мелкие охрумовые кирпичи", "block.create.small_rose_quartz_tiles": "Мелкая плитка из розового кварца", - "block.create.small_scorchia_brick_slab": "Плита из мелкого тёмно-пеплового кирпича", - "block.create.small_scorchia_brick_stairs": "Ступеньки из мелкого тёмно-пеплового кирпича", - "block.create.small_scorchia_brick_wall": "Ограда из мелкого тёмно-пеплового кирпича", + "block.create.small_scorchia_brick_slab": "Плита из мелкого тёмнопеплового кирпича", + "block.create.small_scorchia_brick_stairs": "Ступеньки из мелкого тёмнопеплового кирпича", + "block.create.small_scorchia_brick_wall": "Ограда из мелкого тёмнопеплового кирпича", "block.create.small_scorchia_bricks": "Мелкие тёмно-пепловые кирпичи", "block.create.small_scoria_brick_slab": "Плита из мелких пепловых кирпичей", "block.create.small_scoria_brick_stairs": "Ступеньки из мелких пепловых кирпичей", @@ -499,7 +499,7 @@ "block.create.steam_whistle_extension": "Удлинитель парового свистка", "block.create.sticker": "Блок-липучка", "block.create.sticky_mechanical_piston": "Липкий механический поршень", - "block.create.stockpile_switch": "Настраиваемый компаратор", + "block.create.stockpile_switch": "Наблюдатель заполненности", "block.create.stressometer": "Стрессометр", "block.create.tiled_glass": "Плиточное стекло", "block.create.tiled_glass_pane": "Плиточная стеклянная панель", @@ -515,8 +515,8 @@ "block.create.veridium_pillar": "Веридиумавая колонна", "block.create.vertical_framed_glass": "Вертикальное обрамлённое стекло", "block.create.vertical_framed_glass_pane": "Вертикальная обрамлённая стеклянная панель", - "block.create.warped_window": "Искаженное окно", - "block.create.warped_window_pane": "Панель из искаженного окна", + "block.create.warped_window": "Искажённое окно", + "block.create.warped_window_pane": "Панель из искажённого окна", "block.create.water_wheel": "Водяное колесо", "block.create.waxed_copper_shingle_slab": "Вощёная плита из медной черепицы", "block.create.waxed_copper_shingle_stairs": "Вощёные ступеньки из медной черепицы", @@ -574,22 +574,22 @@ "entity.create.potato_projectile": "Картофельный снаряд", "entity.create.seat": "Сиденье", "entity.create.stationary_contraption": "Стационарная штуковина", - "entity.create.super_glue": "Супер-клей", + "entity.create.super_glue": "Суперклей", "fluid.create.potion": "Зелье", - "fluid.create.tea": "Чай Строителя", + "fluid.create.tea": "Чай строителя", "item.create.andesite_alloy": "Андезитовый сплав", "item.create.attribute_filter": "Фильтр атрибутов", "item.create.bar_of_chocolate": "Плитка шоколада", "item.create.belt_connector": "Механический ремень", - "item.create.blaze_cake": "Торт Всполоха", - "item.create.blaze_cake_base": "Основа торта Всполоха", + "item.create.blaze_cake": "Торт всполоха", + "item.create.blaze_cake_base": "Основа торта всполоха", "item.create.brass_hand": "Латунная рука", "item.create.brass_ingot": "Латунный слиток", "item.create.brass_nugget": "Кусочек латуни", "item.create.brass_sheet": "Латунный лист", - "item.create.builders_tea": "Чай Строителя", + "item.create.builders_tea": "Чай строителя", "item.create.chest_minecart_contraption": "Грузовая вагонеточная штуковина", "item.create.chocolate_bucket": "Ведро шоколада", "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", @@ -601,7 +601,7 @@ "item.create.copper_sheet": "Медный лист", "item.create.crafter_slot_cover": "Заглушка на слот крафтера", "item.create.crafting_blueprint": "Чёртеж", - "item.create.creative_blaze_cake": "Творческий торт Всполоха", + "item.create.creative_blaze_cake": "Творческий торт всполоха", "item.create.crushed_aluminum_ore": "Дроблёная алюминиевая руда", "item.create.crushed_copper_ore": "Дроблёная медная руда", "item.create.crushed_gold_ore": "Дроблёная золотая руда", @@ -619,12 +619,12 @@ "item.create.diving_helmet": "Шлем для дайвинга", "item.create.dough": "Тесто", "item.create.electron_tube": "Электронная лампа", - "item.create.empty_blaze_burner": "Пустая горелка Всполоха", + "item.create.empty_blaze_burner": "Пустая горелка всполоха", "item.create.empty_schematic": "Пустая схематика", "item.create.experience_nugget": "Кусочек опыта", "item.create.extendo_grip": "Удлинённая рука", "item.create.filter": "Фильтр", - "item.create.furnace_minecart_contraption": "Штуковина самоходной вагонетки", + "item.create.furnace_minecart_contraption": "Самоходная вагонеточная штуковина", "item.create.goggles": "Инженерные очки", "item.create.golden_sheet": "Золотой лист", "item.create.handheld_worldshaper": "Ручной редактор мира", @@ -651,7 +651,7 @@ "item.create.schematic_and_quill": "Схематика и перо", "item.create.shadow_steel": "Теневая сталь", "item.create.sturdy_sheet": "Прочный лист", - "item.create.super_glue": "Супер-клей", + "item.create.super_glue": "Суперклей", "item.create.sweet_roll": "Сладкий рулет", "item.create.tree_fertilizer": "Удобрение для деревьев", "item.create.unprocessed_obsidian_sheet": "Необработанный обсидиановый лист", @@ -669,191 +669,191 @@ "advancement.create.root": "Добро пожаловать в Create!", "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", "advancement.create.andesite_alloy": "Повторение — мать учения", - "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав.", + "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", "advancement.create.andesite_casing": "Андезитовый век", - "advancement.create.andesite_casing.desc": "Используйте немного Андезитового сплава и дерева для создания корпуса.", + "advancement.create.andesite_casing.desc": "Используйте немного Андезитового сплава и дерева для создания Андезитового корпуса", "advancement.create.mechanical_press": "Пресс делает «Бонк!»", - "advancement.create.mechanical_press.desc": "Создайте несколько листов в Механическом прессе.", + "advancement.create.mechanical_press.desc": "Создайте несколько листов в Механическом прессе", "advancement.create.encased_fan": "Механический маг воздуха", - "advancement.create.encased_fan.desc": "Разместите и активируйте Вентилятор в корпусе.", + "advancement.create.encased_fan.desc": "Разместите и активируйте Вентилятор в корпусе", "advancement.create.fan_processing": "Обработка воздухом", - "advancement.create.fan_processing.desc": "Используйте Вентилятор в корпусе для обработки предметов.", + "advancement.create.fan_processing.desc": "Используйте Вентилятор в корпусе для обработки предметов", "advancement.create.saw_processing": "Ужас лесопилки", "advancement.create.saw_processing.desc": "Используйте вертикальную Механическую пилу для обработки материалов", "advancement.create.compacting": "Компактификация", - "advancement.create.compacting.desc": "Используйте Пресс и Чашу, чтобы создавать меньше предметов из большего количества предметов.", + "advancement.create.compacting.desc": "Используйте Механический пресс и Чашу, чтобы спрессовать предметы", "advancement.create.belt": "Передайте за проезд!", - "advancement.create.belt.desc": "Соедините два Вала с помощью Механического ремня.", + "advancement.create.belt.desc": "Соедините два Вала с помощью Механического ремня", "advancement.create.funnel": "Эстетика аэропорта", - "advancement.create.funnel.desc": "Извлеките или вставьте элементы в контейнер с помощью Воронки.", + "advancement.create.funnel.desc": "Извлеките или добавьте элементы в контейнер с помощью Воронки", "advancement.create.chute": "Упало", - "advancement.create.chute.desc": "Разместите Жёлоб, вертикальный аналог конвейера.", + "advancement.create.chute.desc": "Разместите Жёлоб, вертикальный аналог конвейера", "advancement.create.mechanical_mixer": "Смешать, но не взбалтывать", - "advancement.create.mechanical_mixer.desc": "Смешайте ингредиенты в Механическом смешивателе.", + "advancement.create.mechanical_mixer.desc": "Смешайте ингредиенты в Чаше с помощью Механического смешивателя", "advancement.create.burner": "Разумный камин", "advancement.create.burner.desc": "Получите Горелку всполоха", "advancement.create.water_wheel": "Обузданная гидравлика", - "advancement.create.water_wheel.desc": "Поставьте Водяное колесо и попытайтесь заставить его вращаться!", + "advancement.create.water_wheel.desc": "Поставьте Водяное колесо и попытайтесь заставить его вращаться", "advancement.create.windmill": "Куда дует ветер", - "advancement.create.windmill.desc": "Соберите Ветряную мельницу.", + "advancement.create.windmill.desc": "Соберите Ветряную мельницу", "advancement.create.shifting_gears": "Механизм переключения", - "advancement.create.shifting_gears.desc": "Подсоедините Большую шестерню к обычной Шестерне для изменения скорости вращения.", + "advancement.create.shifting_gears.desc": "Подсоедините Большую шестерню к обычной Шестерне для изменения скорости вращения", "advancement.create.millstone": "Карманная дробилка", - "advancement.create.millstone.desc": "Поставьте и приведите в действие Жёрнов.", + "advancement.create.millstone.desc": "Поставьте и приведите в действие Жёрнов", "advancement.create.super_glue": "Площадь соединена", - "advancement.create.super_glue.desc": "Объедините несколько блоков в группу с помощью Супер-клея.", + "advancement.create.super_glue.desc": "Объедините несколько блоков в группу с помощью Суперклея", "advancement.create.contraption_actors": "Движение с целью", - "advancement.create.contraption_actors.desc": "Создайте штуковину с Дрелью, Пилой или Комбайном на борту.", + "advancement.create.contraption_actors.desc": "Создайте штуковину с Дрелью, Пилой или Комбайном на борту", "advancement.create.portable_storage_interface": "Обмен на ходу", - "advancement.create.portable_storage_interface.desc": "Используйте Портативный интерфейс хранения, чтобы брать или вставлять предметы в штуковину.", + "advancement.create.portable_storage_interface.desc": "Используйте Портативный интерфейс хранения, чтобы извлекать или добавлять предметы во время работы штуковины", "advancement.create.wrench_goggles": "Дресс-код механика", - "advancement.create.wrench_goggles.desc": "Наденьте Инженерные очки и возьмите Гаечный ключ.", + "advancement.create.wrench_goggles.desc": "Наденьте Инженерные очки и возьмите Гаечный ключ", "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на стрессометр через очки, чтобы прочитать точное значение.", + "advancement.create.stressometer.desc": "Поставьте и подключите Стрессометр. Посмотрите на Стрессометр через Очки, чтобы прочитать точное значение", "advancement.create.cuckoo_clock": "Который час?", - "advancement.create.cuckoo_clock.desc": "Станьте свидетелем того, как ваши Часы с кукушкой объявляют время сна.", + "advancement.create.cuckoo_clock.desc": "Станьте свидетелем того, как ваши Часы с кукушкой объявляют время сна", "advancement.create.windmill_maxed": "Ветер крепчает", - "advancement.create.windmill_maxed.desc": "Соберите Ветрянную мельницу максимальной силы.", + "advancement.create.windmill_maxed.desc": "Соберите Ветряную мельницу максимальной силы", "advancement.create.ejector_maxed": "Чемпион катапульты", - "advancement.create.ejector_maxed.desc": "Отлетите больше чем на 30 блоков с помощью Взвешенной катапульты.", + "advancement.create.ejector_maxed.desc": "Отлетите больше чем на 30 блоков с помощью Взвешенной катапульты", "advancement.create.pulley_maxed": "Веревка в никуда", - "advancement.create.pulley_maxed.desc": "Растяните лебёдку на глубину более 200 блоков.", + "advancement.create.pulley_maxed.desc": "Растяните Лебёдку на глубину более 200 блоков", "advancement.create.cart_pickup": "Сильные руки", - "advancement.create.cart_pickup.desc": "Поднимите Вагонеточную штуковину с не менее чем 200 прикрепленными блоками.", + "advancement.create.cart_pickup.desc": "Поднимите Вагонеточную штуковину с не менее чем 200 прикреплёнными блоками", "advancement.create.anvil_plough": "Кузнечная артиллерия", - "advancement.create.anvil_plough.desc": "Запустите наковальню с Механическими плугами.", + "advancement.create.anvil_plough.desc": "Запустите наковальню с Механическими плугами", "advancement.create.lava_wheel_00000": "Адское колесо", "advancement.create.lava_wheel_00000.desc": "Это не должно было работать!§7\n(Секретное достижение)", "advancement.create.hand_crank_000": "Силовая тренировка", - "advancement.create.hand_crank_000.desc": "Используйте Рукоятку до полного истощения.§7\n(Секретное достижение)", + "advancement.create.hand_crank_000.desc": "Используйте Рукоятку до полного истощения§7\n(Секретное достижение)", "advancement.create.belt_funnel_kiss": "Механический ужин", - "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на ремнях Воронки поцеловаться!", + "advancement.create.belt_funnel_kiss.desc": "Заставьте две смонтированные на конвейере Воронки поцеловаться!", "advancement.create.stressometer_maxed": "Миллиметраж", - "advancement.create.stressometer_maxed.desc": "Получите 100% показания стрессометра.§7\n(Секретное достижение)", + "advancement.create.stressometer_maxed.desc": "Получите предельные показания Стрессометра§7\n(Секретное достижение)", "advancement.create.copper": "Более прочные камни", - "advancement.create.copper.desc": "Получите немного меди за хитрости с водой.", + "advancement.create.copper.desc": "Получите немного меди за хитрости с водой", "advancement.create.copper_casing": "Медный век", - "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания Медного корпуса.", + "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания Медного корпуса", "advancement.create.spout": "Буль", - "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора.", + "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора", "advancement.create.drain": "Промышленное осушение", - "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью предметного Осушителя.", + "advancement.create.drain.desc": "Наблюдайте за тем, как предмет, содержащий жидкость, опустошается с помощью Предметного осушителя", "advancement.create.steam_engine": "Сила пара", - "advancement.create.steam_engine.desc": "Используйте Паровой двигатель для создания вращательной силы.", + "advancement.create.steam_engine.desc": "Используйте Паровой двигатель для создания вращательной силы", "advancement.create.steam_whistle": "Голос ангела", - "advancement.create.steam_whistle.desc": "Активируйте Паровой свисток.", + "advancement.create.steam_whistle.desc": "Активируйте Паровой свисток", "advancement.create.backtank": "Повышение давления", - "advancement.create.backtank.desc": "Создайте Медный баллон и заставте его закачивать воздух в себя.", + "advancement.create.backtank.desc": "Создайте Медный баллон и заставьте его закачивать воздух в себя", "advancement.create.diving_suit": "Готов к погружению", - "advancement.create.diving_suit.desc": "Наденьте Водолазный шлем вместе с Баллоном и прыгайте в воду.", + "advancement.create.diving_suit.desc": "Наденьте Водолазный шлем вместе с Баллоном и прыгайте в воду", "advancement.create.mechanical_pump_0": "Под давлением", - "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механический насос.", + "advancement.create.mechanical_pump_0.desc": "Разместите и включите Механический насос", "advancement.create.glass_pipe": "Шпион за потоками", - "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании Гаечного ключа.", + "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании Гаечного ключа", "advancement.create.water_supply": "Сборщик луж", - "advancement.create.water_supply.desc": "Используйте тянущий конец Трубы или Насоса, чтобы собрать водный блок.", + "advancement.create.water_supply.desc": "Используйте тянущий конец Трубы или Насоса, чтобы собрать водный блок", "advancement.create.hose_pulley": "Промышленный полив", - "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он высасывает или заполнят пространство жидкостью.", + "advancement.create.hose_pulley.desc": "Опустите Шланг и смотрите как он высасывает или заполнят пространство жидкостью", "advancement.create.chocolate_bucket": "Не слипнется!", - "advancement.create.chocolate_bucket.desc": "Получите ведро расплавленного шоколада.", + "advancement.create.chocolate_bucket.desc": "Получите Ведро расплавленного шоколада", "advancement.create.honey_drain": "Укуси меня пчела!", - "advancement.create.honey_drain.desc": "Используйте Трубы, чтобы вытащить мёд из пчелиного улья или гнезда, пока пчёлы не понимают что их обворовывают.", + "advancement.create.honey_drain.desc": "Используйте Трубы, чтобы вытащить мёд из пчелиного улья или гнезда, пока пчёлы не понимают что их обворовывают", "advancement.create.hose_pulley_lava": "Прикосновение к мантии", - "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из источника, считающегося бесконечным.", + "advancement.create.hose_pulley_lava.desc": "Выкачивайте лаву из источника, считающегося бесконечным", "advancement.create.steam_engine_maxed": "На полную мощность!", - "advancement.create.steam_engine_maxed.desc": "Запустите Котёл на максимальном уровне мощности.", + "advancement.create.steam_engine_maxed.desc": "Запустите Котёл на максимальном уровне мощности", "advancement.create.foods": "Сбалансированная диета", - "advancement.create.foods.desc": "Создайте шоколадные ягоды, медовое яблоко и сладкий рулет; всё из одного Дозатора.", + "advancement.create.foods.desc": "Создайте шоколадные ягоды, медовое яблоко и сладкий рулет; всё из одного Дозатора", "advancement.create.diving_suit_lava": "Плавание с лавомерками", - "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением.§7\n(Секретное достижение)", - "advancement.create.chained_drain": "В ударе", - "advancement.create.chained_drain.desc": "Наблюдайте, как предмет перемещается по ряду Предметных осушителей.§7\n(Секретное достижение)", + "advancement.create.diving_suit_lava.desc": "Попытайтесь нырнуть в лаву с медным водолазным снаряжением§7\n(Секретное достижение)", + "advancement.create.chained_drain": "Смотри как могу!", + "advancement.create.chained_drain.desc": "Наблюдайте, как предмет перемещается по ряду Предметных осушителей§7\n(Секретное достижение)", "advancement.create.cross_streams": "Не пересекайте потоки!", - "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две жидкости встречаются в ваших трубах.§7\n(Секретное достижение)", + "advancement.create.cross_streams.desc": "Наблюдайте за тем, как две жидкости встречаются в ваших трубах§7\n(Секретное достижение)", "advancement.create.pipe_organ": "Иоганн Бах", - "advancement.create.pipe_organ.desc": "Сделайте орган, прикрепив 12 Паровых свистков с уникальным звуком к одному резервуару с жидкостью.§7\n(Секретное достижение)", + "advancement.create.pipe_organ.desc": "Сделайте орган, прикрепив 12 Паровых свистков с уникальным звуком к одному резервуару с жидкостью§7\n(Секретное достижение)", "advancement.create.brass": "Реальный сплав", - "advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного Латуни.", - "advancement.create.brass_casing": "Бронзовый век", - "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и немного дерева, чтобы создать более продвинутый корпус.", + "advancement.create.brass.desc": "Используйте Дроблёную медь и Дроблёный цинк, чтобы создать немного Латуни", + "advancement.create.brass_casing": "Латунный век", + "advancement.create.brass_casing.desc": "Используйте только что полученную Латунь и немного дерева, чтобы создать более продвинутый корпус", "advancement.create.rose_quartz": "Розовые алмазы", - "advancement.create.rose_quartz.desc": "Отполируйте немного Розового кварца.", + "advancement.create.rose_quartz.desc": "Отполируйте немного Розового кварца", "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", - "advancement.create.deployer.desc": "Приведите в действие Автономный активатор, идеальное отражение себя.", + "advancement.create.deployer.desc": "Приведите в действие Автономный активатор, идеальное отражение себя", "advancement.create.precision_mechanism": "Сложные любопытства", - "advancement.create.precision_mechanism.desc": "Создайте Механизм точности.", + "advancement.create.precision_mechanism.desc": "Создайте Механизм точности", "advancement.create.speed_controller": "Его ненавидят инженеры!", - "advancement.create.speed_controller.desc": "Установите Регулятор скорости вращения, идеальное устройство для переключения передач.", + "advancement.create.speed_controller.desc": "Установите Регулятор скорости вращения, идеальное устройство для переключения передач", "advancement.create.mechanical_arm": "Золотые руки!", - "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу.", + "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выберите входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу", "advancement.create.mechanical_crafter": "Лень — двигатель прогресса", - "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Крафтеров.", + "advancement.create.mechanical_crafter.desc": "Разместите и включите несколько Механических крафтеров", "advancement.create.crushing_wheel": "Пара гигантов", - "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше материалов.", + "advancement.create.crushing_wheel.desc": "Создайте несколько Дробящих колес, чтобы более эффективно разрушать больше материалов", "advancement.create.haunted_bell": "Помощь призраков", - "advancement.create.haunted_bell.desc": "Позвоните в Призрачный колокол.", + "advancement.create.haunted_bell.desc": "Позвоните в Призрачный колокол", "advancement.create.clockwork_bearing": "Хитрые часы", - "advancement.create.clockwork_bearing.desc": "Соберите штуковину, расположенную на Часовом механизме.", + "advancement.create.clockwork_bearing.desc": "Соберите штуковину, расположенную на Часовом механизме", "advancement.create.display_link": "Большие данные", - "advancement.create.display_link.desc": "Используйте Передатчик информации для её визуализации.", + "advancement.create.display_link.desc": "Используйте Передатчик информации для её визуализации", "advancement.create.potato_cannon": "Свомп!", "advancement.create.potato_cannon.desc": "Победите врага с помощью своей Картофельной пушки!", "advancement.create.extendo_grip": "Бойоиоинг!", - "advancement.create.extendo_grip.desc": "Возьмите Удлинённую руку.", - "advancement.create.linked_controller": "Удаленная активация", - "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации редстоуна.", + "advancement.create.extendo_grip.desc": "Возьмите Удлинённую руку", + "advancement.create.linked_controller": "Удалённая активация", + "advancement.create.linked_controller.desc": "Используйте Контроллер связей для удалённой активации редстоуна", "advancement.create.arm_blaze_burner": "Поджигателе-трон", - "advancement.create.arm_blaze_burner.desc": "Запрограммируйте Механическую руку на кормление Горелки Всполоха.", + "advancement.create.arm_blaze_burner.desc": "Запрограммируйте Механическую руку на кормление Горелки всполоха", "advancement.create.crusher_maxed_0000": "Раздроби это!", - "advancement.create.crusher_maxed_0000.desc": "Управляйте парой Дробящих колес на максимальной скорости.", + "advancement.create.crusher_maxed_0000.desc": "Управляйте парой Дробящих колес на максимальной скорости", "advancement.create.arm_many_targets": "Организа-трон", - "advancement.create.arm_many_targets.desc": "Запрограммируйте Механическую руку на 10 и больше выходов.", + "advancement.create.arm_many_targets.desc": "Запрограммируйте Механическую руку на 10 и больше выходов", "advancement.create.potato_cannon_collide": "Картофегиляция", - "advancement.create.potato_cannon_collide.desc": "Заставь снаряды Картофельных пушек разных типов столкнуться друг с другом.", + "advancement.create.potato_cannon_collide.desc": "Заставь снаряды Картофельных пушек разных типов столкнуться друг с другом", "advancement.create.self_deploying": "Самоходная вагонетка", - "advancement.create.self_deploying.desc": "Создайте вагонеточную штуковину, которая размещает рельсы перед собой.", + "advancement.create.self_deploying.desc": "Создайте вагонеточную штуковину, которая размещает рельсы перед собой", "advancement.create.fist_bump": "Здарова, бро!", - "advancement.create.fist_bump.desc": "Сделайте два удара кулаками Автономных активаторов.", + "advancement.create.fist_bump.desc": "Сделайте так, чтобы два Автономных активатора ударили кулаками", "advancement.create.crafter_lazy_000": "Отчаянные меры", - "advancement.create.crafter_lazy_000.desc": "Значительно замедлите Механический крафтер, чтобы сделать плохое производство.§7\n(Секретное достижение)", + "advancement.create.crafter_lazy_000.desc": "Значительно замедлите Механический крафтер, чтобы сделать плохое производство§7\n(Секретное достижение)", "advancement.create.extendo_grip_dual": "В полной мере", - "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер досягаемости.§7\n(Секретное достижение)", + "advancement.create.extendo_grip_dual.desc": "Используйте две Удлинённые руки для супер досягаемости§7\n(Секретное достижение)", "advancement.create.musical_arm": "Сбацай что-нибудь!", - "advancement.create.musical_arm.desc": "Посмотрите как Механическая рука меняет пластинки.", + "advancement.create.musical_arm.desc": "Посмотрите как Механическая рука меняет пластинки", "advancement.create.sturdy_sheet": "Ещё более твёрдые камни", - "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из измельченного обсидиана.", + "advancement.create.sturdy_sheet.desc": "Соберите Прочный лист из измельченного обсидиана", "advancement.create.train_casing_00": "Железнодорожная эра", - "advancement.create.train_casing_00.desc": "Используйте Прочные листы для создания Железнодорожного корпуса.", + "advancement.create.train_casing_00.desc": "Используйте Прочные листы для создания Железнодорожного корпуса", "advancement.create.train": "Все на борт!", - "advancement.create.train.desc": "Соберите свой первый поезд.", + "advancement.create.train.desc": "Соберите свой первый поезд", "advancement.create.conductor": "Машинист-инструктор", - "advancement.create.conductor.desc": "Проинструктируйте машиниста следовать по Расписанию.", + "advancement.create.conductor.desc": "Проинструктируйте машиниста следовать по Расписанию", "advancement.create.track_signal": "Управление движением", - "advancement.create.track_signal.desc": "Разместите Железнодорожный светофор.", + "advancement.create.track_signal.desc": "Разместите Железнодорожный светофор", "advancement.create.display_board_0": "Динамическое расписание", - "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на табло с помощью Передатчика информации.", + "advancement.create.display_board_0.desc": "Прогнозируйте прибытие поезда на табло с помощью Передатчика информации", "advancement.create.track_0": "Новая колея", - "advancement.create.track_0.desc": "Получите Железнодорожный путь.", + "advancement.create.track_0.desc": "Получите Железнодорожный путь", "advancement.create.train_whistle": "Чу-Чу!", "advancement.create.train_whistle.desc": "Прикрепите Паровой свисток к вашему поезду и погудите в него!", "advancement.create.train_portal": "Сквозь измерения", - "advancement.create.train_portal.desc": "Проехать на поезде через Незер-портал.", + "advancement.create.train_portal.desc": "Проедьте на поезде через портал Незера", "advancement.create.track_crafting_factory": "Железнодорожная фабрика", - "advancement.create.track_crafting_factory.desc": "Произведите более 1000 Железнодорожных путей на одном Механическом прессе.", + "advancement.create.track_crafting_factory.desc": "Произведите более 1000 Железнодорожных путей на одном Механическом прессе", "advancement.create.long_bend": "Крутой поворот", - "advancement.create.long_bend.desc": "Создайте участок изогнутых путей длиной больше 30 блоков.", + "advancement.create.long_bend.desc": "Создайте участок изогнутых путей длиной больше 30 блоков", "advancement.create.long_train": "Амбициозные усилия", - "advancement.create.long_train.desc": "Создайте поезд как минимум с шестью вагонами.", + "advancement.create.long_train.desc": "Создайте поезд как минимум с шестью вагонами", "advancement.create.long_travel": "На дальней станции сойду", - "advancement.create.long_travel.desc": "Встаньте с сидения поезда на расстоянии более 5000 блоков от того места, где вы начали путешествие.", + "advancement.create.long_travel.desc": "Встаньте с сидения поезда на расстоянии более 5000 блоков от того места, где вы начали путешествие", "advancement.create.train_roadkill": "Убийство «Восточным экспрессом»", "advancement.create.train_roadkill.desc": "Переедьте врага своим поездом!§7\n(Секретное достижение)", "advancement.create.red_signal": "Я знаю короткую дорогу!", - "advancement.create.red_signal.desc": "Проедьте поездом на красный сигнал Светофора.§7\n(Секретное достижение)", + "advancement.create.red_signal.desc": "Проедьте поездом на красный сигнал Светофора§7\n(Секретное достижение)", "advancement.create.train_crash": "Ужасное обслуживание", - "advancement.create.train_crash.desc": "Станьте свидетелем железнодорожной аварии в качестве пассажира.§7\n(Секретное достижение)", + "advancement.create.train_crash.desc": "Станьте свидетелем железнодорожной аварии в качестве пассажира§7\n(Секретное достижение)", "advancement.create.train_crash_backwards": "Слепая зона", - "advancement.create.train_crash_backwards.desc": "Врежьтесь в другой поезд, двигаясь задним ходом.§7\n(Секретное достижение)", + "advancement.create.train_crash_backwards.desc": "Врежьтесь в другой поезд, двигаясь задним ходом§7\n(Секретное достижение)", "_": "->------------------------] UI & Messages [------------------------<-", @@ -863,9 +863,9 @@ "death.attack.create.crush": "%1$s был передроблен", "death.attack.create.crush.player": "%2$s столкнул %1$s в дробящие колёса", - "death.attack.create.fan_fire": "%1$s был сожжен до смерти горячим воздухом", + "death.attack.create.fan_fire": "%1$s был сожжён до смерти горячим воздухом", "death.attack.create.fan_fire.player": "%2$s столкнул %1$s в коптильню", - "death.attack.create.fan_lava": "%1$s был сожжен до смерти поклонником лавы", + "death.attack.create.fan_lava": "%1$s был сожжён до смерти поклонником лавы", "death.attack.create.fan_lava.player": "%2$s столкнул %1$s в плавильню", "death.attack.create.mechanical_drill": "%1$s был пронзён механической дрелью", "death.attack.create.mechanical_drill.player": "%2$s толкнул %1$s под механическую дрель", @@ -887,7 +887,7 @@ "create.menu.report_bugs": "Нашли ошибку?", "create.menu.support": "Поддержите нас", - "create.recipe.crushing": "Измельчение", + "create.recipe.crushing": "Дробление", "create.recipe.milling": "Помол", "create.recipe.fan_washing": "Массовая промывка", "create.recipe.fan_washing.fan": "Вентилятор за водой", @@ -902,24 +902,24 @@ "create.recipe.deploying": "Автономная активация", "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", "create.recipe.automatic_brewing": "Автоматическое смешивание", - "create.recipe.packing": "Спрессование", - "create.recipe.automatic_packing": "Автоматическое спрессование", + "create.recipe.packing": "Спрессовывание", + "create.recipe.automatic_packing": "Автоматическое спрессовывание", "create.recipe.sawing": "Распиливание", "create.recipe.mechanical_crafting": "Механическое создание", "create.recipe.automatic_shaped": "Автоматическая форменная сборка", "create.recipe.block_cutting": "Резка блока", "create.recipe.wood_cutting": "Резка древесины", - "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", + "create.recipe.sandpaper_polishing": "Полирование наждачной бумагой", "create.recipe.mystery_conversion": "Хроматический метаморфоз", - "create.recipe.spout_filling": "Заполнение дозатором", + "create.recipe.spout_filling": "Наполнение дозатором", "create.recipe.draining": "Осушение предметов", - "create.recipe.item_application": "Применение предмета вручную", + "create.recipe.item_application": "Ручное создание", "create.recipe.item_application.any_axe": "Любой топор", "create.recipe.sequenced_assembly": "Последовательная сборка", "create.recipe.assembly.next": "Следующее: %1$s", "create.recipe.assembly.step": "Шаг %1$s:", "create.recipe.assembly.progress": "Прогресс: %1$s/%2$s", - "create.recipe.assembly.pressing": "Обработайте в Прессе", + "create.recipe.assembly.pressing": "Обработайте прессом", "create.recipe.assembly.spout_filling_fluid": "Долейте %1$s", "create.recipe.assembly.deploying_item": "Добавьте %1$s", "create.recipe.assembly.cutting": "Разрежьте пилой", @@ -963,7 +963,7 @@ "create.action.confirm": "Подтвердить", "create.action.abort": "Прервать", "create.action.saveToFile": "Сохранить", - "create.action.discard": "Отказаться", + "create.action.discard": "Отменить", "create.keyinfo.toolmenu": "Меню инструмента фокусировки", "create.keyinfo.toolbelt": "Доступ к ближайшим ящикам с инструментами", @@ -979,9 +979,9 @@ "create.gui.toolmenu.cycle": "[Прокрутка] для переключения", "create.toolbox.unequip": "Убрать: %1$s", - "create.toolbox.outOfRange": "Ящик с инструментами выбранного предмета слишком далеко...", + "create.toolbox.outOfRange": "Ящик для инструментов выбранного предмета слишком далеко...", "create.toolbox.detach": "Убрать выбранный предмет в ящик для инструментов", - "create.toolbox.depositAll": "Вернуть предметы в ближайшие ящики с инструментами", + "create.toolbox.depositAll": "Вернуть предметы в ближайшие ящики для инструментов", "create.toolbox.depositBox": "Вернуть предметы в ящик для инструментов", "create.gui.symmetryWand.mirrorType": "Зеркало", @@ -1025,25 +1025,25 @@ "create.gui.terrainzapper.tool.overlay": "Наложение", "create.gui.terrainzapper.tool.flatten": "Выравнивание", - "create.terrainzapper.shiftRightClickToSet": "ПКМ крадучись, чтобы выбрать форму", + "create.terrainzapper.shiftRightClickToSet": "Нажмите Shift+ПКМ, чтобы выбрать форму", "create.terrainzapper.usingBlock": "Используется: %1$s", - "create.terrainzapper.leftClickToSet": "Левый клик по блоку, что бы использовать материал", + "create.terrainzapper.leftClickToSet": "Нажмите ЛКМ по блоку, что бы использовать материал", - "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только две связи", - "create.minecart_coupling.unloaded": "Кажется, в данный момент часть вашего поезда в незагруженных чанках", + "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только два соединения", + "create.minecart_coupling.unloaded": "Кажется, в данный момент часть вашей вагонеточной штуковины в незагруженных чанках", "create.minecart_coupling.no_loops": "Соединители не могут образовывать петлю", - "create.minecart_coupling.removed": "Убраны все связи между вагонетками", - "create.minecart_coupling.too_far": "Вагонетки слишком далеко друг от друга", + "create.minecart_coupling.removed": "Убраны все соединения между вагонетками", + "create.minecart_coupling.too_far": "Вагонетки слишком далеко друг от друга...", "create.contraptions.movement_mode": "Режим движения", - "create.contraptions.movement_mode.move_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.move_place_returned": "Ставить только в исходное положение", - "create.contraptions.movement_mode.move_never_place": "Ставить только, когда якорь уничтожен", - "create.contraptions.movement_mode.rotate_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.rotate_place_returned": "Только место возле начального угла", - "create.contraptions.movement_mode.rotate_never_place": "Только место, когда якорь уничтожен", + "create.contraptions.movement_mode.move_place": "Превращать в блоки при остановке", + "create.contraptions.movement_mode.move_place_returned": "Превращать в блоки только в исх. положении", + "create.contraptions.movement_mode.move_never_place": "Превращать в блоки, если опора уничтожена", + "create.contraptions.movement_mode.rotate_place": "Превращать в блоки при остановке", + "create.contraptions.movement_mode.rotate_place_returned": "Превращать в блоки только в исх. положении", + "create.contraptions.movement_mode.rotate_never_place": "Превращать в блоки, если опора уничтожена", "create.contraptions.cart_movement_mode": "Режим движения вагонетки", - "create.contraptions.cart_movement_mode.rotate": "Всегда лицом к движению", + "create.contraptions.cart_movement_mode.rotate": "Вращение в сторону движения", "create.contraptions.cart_movement_mode.rotate_paused": "Пауза во время вращения", "create.contraptions.cart_movement_mode.rotation_locked": "Блокировка вращения", "create.contraptions.windmill.rotation_direction": "Направление вращения", @@ -1071,9 +1071,9 @@ "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": "Слишком много Удлинителей прикреплено к этому поршню.\nТекущий максимум: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Поршню нехватает Удлинителей", - "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусопободных блоков: %1$s\nМинимум из %2$s необходимых", + "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много удлинителей прикреплено к этому поршню.\nТекущий максимум: %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": "Нагрузка на сеть", @@ -1084,10 +1084,10 @@ "create.gui.contraptions.network_overstressed": "Похоже, что эта штуковина _перегружена_. Добавьте больше источников или _понизьте_ _скорость_ компонентов, _создающих_ высокую _нагрузку_.", "create.gui.adjustable_crate.title": "Регулируемый ящик", "create.gui.adjustable_crate.storageSpace": "Ёмкость", - "create.gui.stockpile_switch.title": "Настраиваемый компаратор", + "create.gui.stockpile_switch.title": "Наблюдатель заполненности", "create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал", - "create.gui.stockpile_switch.move_to_lower_at": "Двигаться к нижней линии при %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%", + "create.gui.stockpile_switch.move_to_lower_at": "Переключатся на нижнюю линию при %1$s%%", + "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": "Повернуть на угол", @@ -1166,7 +1166,7 @@ "create.schematics.maxAllowedSize": "Максимально допустимый размер файла:", "create.gui.schematicTable.refresh": "Обновить файлы", - "create.gui.schematicTable.open_folder": "Открыть папку", + "create.gui.schematicTable.open_folder": "Открыть папку со схематиками", "create.gui.schematicTable.title": "Схематичный стол", "create.gui.schematicTable.availableSchematics": "Доступные схемы", "create.gui.schematicTable.noSchematics": "Схемы не сохранены", @@ -1174,27 +1174,27 @@ "create.gui.schematicTable.finished": "Загрузка завершена!", "create.gui.schematicannon.title": "Схематичная пушка", "create.gui.schematicannon.listPrinter": "Список материалов", - "create.gui.schematicannon.gunpowderLevel": "Порох на %1$s%%", + "create.gui.schematicannon.gunpowderLevel": "Порох: %1$s%%", "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "С резервной копией: %1$s", - "create.gui.schematicannon.optionEnabled": "В настоящее время включен", - "create.gui.schematicannon.optionDisabled": "В настоящее время отключен", - "create.gui.schematicannon.showOptions": "Показать настройки печати", + "create.gui.schematicannon.shotsRemainingWithBackup": "С порохом в запасе: %1$s", + "create.gui.schematicannon.optionEnabled": "Включено", + "create.gui.schematicannon.optionDisabled": "Отключено", + "create.gui.schematicannon.showOptions": "Показать настройки строительства", "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", "create.gui.schematicannon.option.skipTileEntities": "Защитить имущество", - "create.gui.schematicannon.slot.gunpowder": "Добавьте порох чтобы заправить пушку", + "create.gui.schematicannon.slot.gunpowder": "Добавьте порох, чтобы заправить пушку", "create.gui.schematicannon.slot.listPrinter": "Положите книгу, чтобы создать список предметов для схематики", "create.gui.schematicannon.slot.schematic": "Положите свою схематику здесь. Убедитесь что она размещена в правильном месте", - "create.gui.schematicannon.option.skipMissing.description": "Если пушка не может найти требуемый блок, она будет строить в следующем месте.", - "create.gui.schematicannon.option.skipTileEntities.description": "Пушка не будет заменять блоки хранения, такие как сундуки.", + "create.gui.schematicannon.option.skipMissing.description": "Если пушка не сможет найти требуемый блок, то она перейдёт к следующему.", + "create.gui.schematicannon.option.skipTileEntities.description": "Пушка не будет заменять блоки-хранилища, такие как сундуки.", "create.gui.schematicannon.option.dontReplaceSolid.description": "Пушка никогда не заменит целые блоки, только не целые и воздух.", "create.gui.schematicannon.option.replaceWithSolid.description": "Пушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", "create.gui.schematicannon.option.replaceWithAny.description": "Пушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Пушка отчистит все блоки, включая замену на воздух.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Пушка уберёт все блоки, включая замену на воздух.", "create.schematicannon.status.idle": "Бездействует", "create.schematicannon.status.ready": "Готова", @@ -1211,20 +1211,20 @@ "create.schematicannon.status.placing": "Стройка", "create.schematicannon.status.clearing": "Очистка", "create.schematicannon.status.schematicInvalid": "Неверная схема", - "create.schematicannon.status.schematicNotPlaced": "Схема не загружена", - "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истёк", + "create.schematicannon.status.schematicNotPlaced": "Схема не развёрнута", + "create.schematicannon.status.schematicExpired": "Файл схемы устарел", "create.materialChecklist": "Список материалов", "create.materialChecklist.blocksNotLoaded": "* Внимание! *\n\nСписок материалов может быть неточным из-за незагруженных чанков.", "create.gui.filter.deny_list": "Чёрный список", - "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой чёрный список принимает все.", + "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой чёрный список принимает всё.", "create.gui.filter.allow_list": "Белый список", - "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает все.", + "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает всё.", "create.gui.filter.respect_data": "Использование данных", - "create.gui.filter.respect_data.description": "Предметы совпадают только в том случае, если их прочность, чары и другие атрибуты совпадают.", + "create.gui.filter.respect_data.description": "Предметы проходят только в том случае, если их прочность, чары и другие атрибуты совпадают.", "create.gui.filter.ignore_data": "Игнорирование данных", - "create.gui.filter.ignore_data.description": "Предметы совпадают независимо от их атрибутов.", + "create.gui.filter.ignore_data.description": "Предметы проходят независимо от их атрибутов.", "create.item_attributes.placeable": "можно разместить", "create.item_attributes.placeable.inverted": "нельзя разместить", @@ -1234,8 +1234,8 @@ "create.item_attributes.fluid_container.inverted": "не может хранить жидкости", "create.item_attributes.enchanted": "зачарован", "create.item_attributes.enchanted.inverted": "не зачарован", - "create.item_attributes.max_enchanted": "Зачаровано за максимальный уровень", - "create.item_attributes.max_enchanted.inverted": "Не зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted": "зачаровано за максимальный уровень", + "create.item_attributes.max_enchanted.inverted": "не зачаровано за максимальный уровень", "create.item_attributes.renamed": "имеет пользовательское имя", "create.item_attributes.renamed.inverted": "не имеет пользовательского имени", "create.item_attributes.damaged": "повреждён", @@ -1328,7 +1328,7 @@ "create.tooltip.capacityProvided": "Допустимая нагрузка: %1$s", "create.tooltip.capacityProvided.low": "Низкая", "create.tooltip.capacityProvided.medium": "Средняя", - "create.tooltip.capacityProvided.high": "Большая", + "create.tooltip.capacityProvided.high": "Высокая", "create.tooltip.generationSpeed": "Создаёт %1$s %2$s", "create.tooltip.analogStrength": "Аналоговая сила: %1$s/15", @@ -1346,13 +1346,13 @@ "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", "create.mechanical_arm.selection_mode.round_robin": "По кругу", - "create.mechanical_arm.selection_mode.forced_round_robin": "Принудительно по кругу", + "create.mechanical_arm.selection_mode.forced_round_robin": "Строго по кругу", "create.mechanical_arm.selection_mode.prefer_first": "Предпочитать первичную цель", - "create.tunnel.selection_mode.split": "Разделить", - "create.tunnel.selection_mode.forced_split": "Принудительно разделить", + "create.tunnel.selection_mode.split": "Разделение", + "create.tunnel.selection_mode.forced_split": "Строгое разделение", "create.tunnel.selection_mode.round_robin": "По кругу", - "create.tunnel.selection_mode.forced_round_robin": "Принудительно по кругу", + "create.tunnel.selection_mode.forced_round_robin": "Строго по кругу", "create.tunnel.selection_mode.prefer_nearest": "Предпочтительно ближайшее", "create.tunnel.selection_mode.randomize": "Случайно", "create.tunnel.selection_mode.synchronize": "Синхронизировать входы", @@ -1366,16 +1366,16 @@ "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", - "create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information", - "create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use", - "create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack", - "create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s", - "create.tooltip.brass_tunnel.contains": "В данный момент раздает(выдает):", + "create.tooltip.deployer.header": "Информация об автономном активаторе", + "create.tooltip.deployer.using": "Автономный активатор использует", + "create.tooltip.deployer.punching": "Автономный активатор ударяет", + "create.tooltip.deployer.contains": "Держит: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "В данный момент распределяет:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "ПКМ, чтобы получить", "create.linked_controller.bind_mode": "Режим привязки активирован", - "create.linked_controller.press_keybind": "Нажмите %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, чтобы привязать эту частоту к соответствующей клавише", + "create.linked_controller.press_keybind": "Нажмите %1$s, %2$s, %3$s, %4$s, %5$s или %6$s, чтобы привязать эту частоту к соответствующей клавише.", "create.linked_controller.key_bound": "Частота привязана к %1$s", "create.linked_controller.frequency_slot_1": "Клавиша: %1$s, Частота #1", "create.linked_controller.frequency_slot_2": "Клавиша: %1$s, Частота #2", @@ -1386,9 +1386,9 @@ "create.crafting_blueprint.inferred": "Производные от рецепта", "create.crafting_blueprint.manually_assigned": "Назначен вручную", "create.crafting_blueprint.secondary_display_slot": "Дополнительная отображаемая ячейка", - "create.crafting_blueprint.optional": "Опциональна", + "create.crafting_blueprint.optional": "Опционально", - "create.potato_cannon.ammo.attack_damage": "%1$s урона от атаки", + "create.potato_cannon.ammo.attack_damage": "%1$s урона от попадания", "create.potato_cannon.ammo.reload_ticks": "%1$s тиков перезарядки", "create.potato_cannon.ammo.knockback": "%1$s отбрасывания", @@ -1409,10 +1409,10 @@ "create.boiler.status": "Статус котла: %1$s", "create.boiler.status_short": "Котёл: %1$s", - "create.boiler.passive": "Мин.", - "create.boiler.idle": "Выкл.", - "create.boiler.lvl": "Ур: %1$s", - "create.boiler.max_lvl": "Макс.", + "create.boiler.passive": "Начальный", + "create.boiler.idle": "Выключен", + "create.boiler.lvl": "Уровень: %1$s", + "create.boiler.max_lvl": "Предельный", "create.boiler.size": "Размер", "create.boiler.size_dots": ".... ", "create.boiler.water": "Вода", @@ -1440,7 +1440,7 @@ "create.schedule.instruction.filter_edit_box_1": "Используйте * в качестве текстового подстановочного знака", "create.schedule.instruction.filter_edit_box_2": "Пример: 'Моя Станция, платформа *'", "create.schedule.instruction.filter_edit_box_3": "Поезд выберет наименьшее совпадение", - "create.schedule.instruction.rename": "Обновить название расп.", + "create.schedule.instruction.rename": "Сменить имя расписания", "create.schedule.instruction.rename.summary": "Новое название:", "create.schedule.instruction.name_edit_box": "Название расписания", "create.schedule.instruction.name_edit_box_1": "Влияет на текст, отображаемый на табло", @@ -1454,9 +1454,9 @@ "create.schedule.condition.delay": "Пауза расписания", "create.schedule.condition.delay_short": "Ожидание: %1$s", "create.schedule.condition.delay.status": "До отправления %1$s", - "create.schedule.condition.idle": "Неизменение груза", - "create.schedule.condition.idle_short": "Груз не изменяется: %1$s %1$s", - "create.schedule.condition.idle.status": "Простой груза: %1$s", + "create.schedule.condition.idle": "Груз не изменился", + "create.schedule.condition.idle_short": "Груз без изменений: %1$s %1$s", + "create.schedule.condition.idle.status": "Груз без изменений %1$s", "create.schedule.condition.for_x_time": "в течение %1$s", "create.schedule.condition.unloaded": "Чанк выгружен", "create.schedule.condition.unloaded.status": "Ожидание выгрузки чанка", @@ -1520,15 +1520,15 @@ "create.schedule.remove_with_empty_hand": "Заберите текущее расписание пустой рукой", "create.schedule.auto_removed_from_train": "Автоматическое расписание отменено", "create.schedule.removed_from_train": "Расписание получено из поезда", - "create.schedule.no_stops": "В этом расписании пока нет остановок", + "create.schedule.no_stops": "В этом расписании нет остановок", "create.schedule.continued": "Расписание возобновлено", "create.track.selection_cleared": "Выбор отменён", - "create.track.valid_connection": "Можно соеденить ✔", + "create.track.valid_connection": "Можно соединить ✔", "create.track.second_point": "Разместите пути на горизонтальной поверхности или выберите вторую точку", - "create.track.too_far": "Слишком далеко", + "create.track.too_far": "Слишком далеко...", "create.track.original_missing": "Исходные пути разрушены, нажмите Shift+ПКМ, чтобы выйти из режима размещения", - "create.track.perpendicular": "Невозможно соеденить перпендикулярно", + "create.track.perpendicular": "Невозможно соединить перпендикулярно", "create.track.ascending_s_curve": "Невозможно создать наклонные S-образные изгибы", "create.track.too_sharp": "Слишком резкий угол поворота", "create.track.too_steep": "Слишком крутой склон", @@ -1558,11 +1558,11 @@ "create.station.remove_schedule": "Получить расписание", "create.station.remove_auto_schedule": "Отменить автоматическое расписание", "create.station.no_assembly_diagonal": "Нельзя строить поезда", - "create.station.no_assembly_diagonal_1": "на пересениях путей", + "create.station.no_assembly_diagonal_1": "на пересечениях путей", "create.station.no_assembly_curve": "Нельзя строить поезда", - "create.station.no_assembly_curve_1": "на изгнутых путях", - "create.station.train_not_aligned": "Невозможно разобрать,", - "create.station.train_not_aligned_1": "не все вагонные тележки были выровнены", + "create.station.no_assembly_curve_1": "на изогнутых путях", + "create.station.train_not_aligned": "Невозможно разобрать, не все", + "create.station.train_not_aligned_1": "вагонные тележки были выровнены", "create.station.carriage_number": "Вагон № %1$s:", "create.station.retry": "Исправьте это и повторите попытку.", "create.station.no_bogeys": "Нет вагонных тележек", @@ -1590,25 +1590,25 @@ "create.track_target.missing": "Сначала выберите пути, нажав ПКМ по ним", "create.track_target.too_far": "Установите станцию ближе к путям...", "create.track_target.no_junctions": "Невозможно установить маркер станции на перекрёстке", - "create.track_target.occupied": "Выбранный путь занят", + "create.track_target.occupied": "Выбранные пути заняты", "create.track_target.invalid": "Невозможно выбрать эти пути", "create.train.unnamed": "Безымянный поезд", "create.train.cannot_relocate_moving": "Невозможно переместить движущийся поезд", "create.train.relocate": "Нажмите по путям, чтобы переместить %1$s. Shift+ПКМ для отмены", "create.train.relocate.abort": "Перенос отменён", - "create.train.relocate.success": "Успешный перенос", + "create.train.relocate.success": "Успешно перенесён", "create.train.relocate.valid": "Можно переместить сюда, нажмите для подтверждения", "create.train.relocate.invalid": "Невозможно переместить поезд сюда", - "create.train.relocate.too_far": "Невозможно переместить поезд так далеко", + "create.train.relocate.too_far": "Невозможно переместить поезд так далеко...", "create.train.departing_from": "Отправился от %1$s", "create.train.arrived_at": "Прибыл на %1$s", "create.train.status": " Информация о поезде: %1$s", "create.train.status.back_on_track": "Поезд снова на ходу", - "create.train.status.collision": "Столкновение с другим поездом", + "create.train.status.collision": "Авария с другим поездом", "create.train.status.end_of_track": "Поезд достиг конца путей", "create.train.status.double_portal": "Поезд не может войти в портал, покидая другой", - "create.train.status.coupling_stress": "Принудительная остановка из-за нагрузки на спепление вагонов", + "create.train.status.coupling_stress": "Аварийная остановка из-за нагрузки на сцепление вагонов", "create.train.status.track_missing": "Под поездом нет путей", "create.train.status.paused_for_manual": "Расписание приостановлено для ручного управления", "create.train.status.opposite_driver": "Путь требует, чтобы машинист смотрел в противоположном направлении", @@ -1619,8 +1619,8 @@ "create.train.status.no_path": "Не удалось найти подходящий путь к следующему запланированному пункту назначения", "create.track_signal.cannot_change_mode": "Невозможно переключить режим этого светофора", - "create.track_signal.mode_change.entry_signal": "-> Разрешить проезд, если секция не занята", - "create.track_signal.mode_change.cross_signal": "-> Разрешить проезд, если секция полностью проходима и не занята", + "create.track_signal.mode_change.entry_signal": "-> Разрешить проезд, если сегмент не занят", + "create.track_signal.mode_change.cross_signal": "-> Разрешить проезд, если сегмент полностью проходим и не занят", "create.contraption.controls.start_controlling": "Под управлением: %1$s", "create.contraption.controls.stop_controlling": "Выход из режима управления", @@ -1628,9 +1628,9 @@ "create.display_link.set": "Выбрана целевая позиция", "create.display_link.success": "Успешно привязан к целевой позиции", - "create.display_link.clear": "Целевая позиция убрана", - "create.display_link.too_far": "Целевая позиция слишком далеко отсюда", - "create.display_link.invalid": "Передатчик не имеет выбранного табло, привяжите и попробуйте ещё раз", + "create.display_link.clear": "Выбор целевой позиции отменён", + "create.display_link.too_far": "Целевая позиция слишком далеко...", + "create.display_link.invalid": "Передатчик не имеет выбранной цели, привяжите его и попробуйте ещё раз", "create.display_link.title": "Передатчик информации", "create.display_link.no_source": "Не источник информации", "create.display_link.no_target": "Не цель для отображения", @@ -1701,8 +1701,8 @@ "create.display_source.redstone_power.display": "Формат отображения", "create.display_source.redstone_power.number": "Число", "create.display_source.redstone_power.progress_bar": "Полоса прогресса", - "create.display_source.boiler.not_enough_space": "Мало места ", - "create.display_source.boiler.for_boiler_status": "для статуса котла", + "create.display_source.boiler.not_enough_space": "нет места", + "create.display_source.boiler.for_boiler_status": "для текста", "create.display_target.line": "Строка %1$s", "create.display_target.page": "Страница %1$s", @@ -1719,7 +1719,7 @@ "create.super_glue.too_far": "Выбранная область слишком большая", "create.super_glue.cannot_reach": "Выбранные блоки должны быть соединены", "create.super_glue.click_to_confirm": "Нажмите ещё раз, чтобы подтвердить", - "create.super_glue.click_to_discard": "Shift+ПКМ, чтобы отменить выбор", + "create.super_glue.click_to_discard": "Нажмите Shift+ПКМ, чтобы отменить выбор", "create.super_glue.first_pos": "Выбрана первая позиция", "create.super_glue.abort": "Выбор отменён", "create.super_glue.not_enough": "Мало клея в инвентаре", @@ -1770,7 +1770,7 @@ "create.subtitle.mixing": "Шум смешивания", "create.subtitle.mechanical_press_activation_belt": "Механический пресс делает «Бонк»", "create.subtitle.fwoomp": "Картофельная пушка делает «Свомп»", - "create.subtitle.sanding_long": "Звук шлифовки", + "create.subtitle.sanding_long": "Короткий звук полировки", "create.subtitle.crushing_1": "Шум разрушения", "create.subtitle.depot_slide": "Шелест предметов", "create.subtitle.blaze_munch": "Всполох радостно жуёт", @@ -1779,7 +1779,7 @@ "create.subtitle.scroll_value": "Щелчки колеса прокрутки", "create.subtitle.controller_put": "Контроллер стучит", "create.subtitle.cranking": "Вращается рукоятка", - "create.subtitle.sanding_short": "Звук шлифовки", + "create.subtitle.sanding_short": "Долгий звук полировки", "create.subtitle.wrench_rotate": "Использован гаечный ключ", "create.subtitle.potato_hit": "Еда врезается", "create.subtitle.saw_activate_wood": "Активируется механическая пила", @@ -1819,13 +1819,13 @@ "block.create.seat.tooltip.behaviour1": "Сажает игрока на _Сиденье_. Нажмите _кнопку_ _приседания_ чтобы слезть (Shift по умолчанию).", "item.create.blaze_cake.tooltip": "ТОРТ ВСПОЛОХА", - "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги _Горелки Всполоха_. Зажигает их всех!", + "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги — _Горелки всполоха_. Зажигает их всех!", "item.create.wand_of_symmetry.tooltip": "ЖЕЗЛ СИММЕТРИИ", "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", - "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ по блоку", "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", @@ -1848,14 +1848,14 @@ "item.create.extendo_grip.tooltip": "УДЛИНЕННАЯ РУКА", "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", - "item.create.extendo_grip.tooltip.condition1": "Находясь в другой руке", + "item.create.extendo_grip.tooltip.condition1": "Находясь в левой руке", "item.create.extendo_grip.tooltip.behaviour1": "Увеличивает _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.", "item.create.extendo_grip.tooltip.condition2": "Когда надет Медный баллон", - "item.create.extendo_grip.tooltip.behaviour2": " _НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", + "item.create.extendo_grip.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", "item.create.potato_cannon.tooltip": "КАРТОФЕЛЬНАЯ ПУШКА", "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте выращенные вами овощи в своих врагов. Может работать от давления воздуха из _Медного_ _баллона_", - "item.create.potato_cannon.tooltip.condition1": "Нажимая ПКМ", + "item.create.potato_cannon.tooltip.condition1": "ПКМ с предметом", "item.create.potato_cannon.tooltip.behaviour1": "_Выстреливает_ подходящим предметом из вашего _инвентаря_.", "item.create.potato_cannon.tooltip.condition2": "Когда надет Медный баллон", "item.create.potato_cannon.tooltip.behaviour2": "_НЕ_ тратится _прочность_. Вместо этого будет тратиться _воздух_ из баллона.", @@ -1864,14 +1864,14 @@ "item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.", "item.create.filter.tooltip.condition1": "Когда в слоте фильтра", "item.create.filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.filter.tooltip.condition2": "При ПКМ", + "item.create.filter.tooltip.condition2": "ПКМ с предметом", "item.create.filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.attribute_filter.tooltip": "ФИЛЬТР АТРИБУТОВ", "item.create.attribute_filter.tooltip.summary": "_Управляет_ _выходами_ и _входами_ логистических устройств с _большей_ _точностью_, сопоставляя их с набором _атрибутов_ и _категорий предметов_.", "item.create.attribute_filter.tooltip.condition1": "Когда в слоте фильтра", "item.create.attribute_filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.attribute_filter.tooltip.condition2": "ПКМ", + "item.create.attribute_filter.tooltip.condition2": "ПКМ с предметом", "item.create.attribute_filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.empty_schematic.tooltip": "ПУСТАЯ СХЕМАТИКА", @@ -1879,18 +1879,18 @@ "item.create.schematic.tooltip": "СХЕМАТИКА", "item.create.schematic.tooltip.summary": "Содержит структуру, которая будет позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _схематичную пушку_ для ее построения.", - "item.create.schematic.tooltip.condition1": "При удерживании", + "item.create.schematic.tooltip.condition1": "ПКМ с предметом", "item.create.schematic.tooltip.behaviour1": "Может быть позиционирован с помощью инструментов на экране.", "item.create.schematic.tooltip.control1": "ПКМ крадучись", "item.create.schematic.tooltip.action1": "Открывает _интерфейс_ для ввода _точных_ _координат_.", "item.create.schematic_and_quill.tooltip": "СХЕМАТИКА И ПЕРО", - "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в вашем мире в файл .nbt.", + "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в вашем мире в файл формата .nbt.", "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две угловые точки, используя ПКМ.", "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ и _прокрутка_ на голограмме для изменения размера. Нажмите ПКМ, чтобы сохранить.", - "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ с предметом", "item.create.schematic_and_quill.tooltip.action1": "Выберите угловые точки / подтвердите сохранение.", "item.create.schematic_and_quill.tooltip.control2": "Удержание Ctrl", "item.create.schematic_and_quill.tooltip.action2": "Выберите точки в воздухе. Прокрутка для настройки расстояния.", @@ -1899,7 +1899,7 @@ "block.create.schematicannon.tooltip": "СХЕМАТИЧНАЯ ПУШКА", "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", - "block.create.schematicannon.tooltip.condition1": "ПКМ", + "block.create.schematicannon.tooltip.condition1": "ПКМ по блоку", "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", "block.create.schematic_table.tooltip": "СХЕМАТИЧНЫЙ СТОЛ", @@ -1940,39 +1940,39 @@ "block.create.toolbox.tooltip.behaviour1": "_Сохраняет_ содержимое _инвентаря_.", "block.create.toolbox.tooltip.condition2": "При размещении в диапазоне досягаемости", "block.create.toolbox.tooltip.behaviour2": "_Ближайшие_ _игроки_ могут зажать _клавишу_ для _удалённого_ получения содержимого _ящика_ _для_ _инструментов_.", - "block.create.toolbox.tooltip.condition3": "ПКМ по ящику", + "block.create.toolbox.tooltip.condition3": "ПКМ по блоку", "block.create.toolbox.tooltip.behaviour3": "Открывает _интерфейс контейнера_.", - "block.create.stockpile_switch.tooltip": "НАСТРАИВАЕМЫЙ КОМПАРАТОР", + "block.create.stockpile_switch.tooltip": "НАБЛЮДАТЕЛЬ ЗАПОЛНЕННОСТИ", "block.create.stockpile_switch.tooltip.summary": "Подаёт сигнал красного камня в зависимости от _заполненности_ _прикреплённого_ _ящика_.", - "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего предела", + "block.create.stockpile_switch.tooltip.condition1": "Когда достигнут нижний предел", "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _сигнал_ _красного_ _камня_.", "block.create.content_observer.tooltip": "НАБЛЮДАТЕЛЬ ЗА СОДЕРЖИМЫМ", - "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и _конвейеров_, соответствующие настроенному _фильтру_. Если наблюдаемый инвентарь, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _ воронка передает_ соответствующий предмет, этот компонент испускает _импульс_.", + "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и на _конвейерах_, соответствующие настроенному _фильтру_. Если наблюдаемый блок-хранилище, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _воронка передает_ соответствующий предмет, этот компонент испускает _импульс редстоуна_.", "block.create.content_observer.tooltip.condition1": "Когда наблюдает за контейнером", "block.create.content_observer.tooltip.behaviour1": "Выдаёт _сигнал редстоуна_, пока наблюдаемое содержимое совпадает с _фильтром_.", "block.create.content_observer.tooltip.condition2": "Когда наблюдает за воронкой", "block.create.content_observer.tooltip.behaviour2": "Выдаёт _сигнал редстоуна_, пока содержимое совпадает с _перемещаемым_ предметом.", "block.create.creative_crate.tooltip": "ТВОРЧЕСКИЙ ЯЩИК", - "block.create.creative_crate.tooltip.summary": "Этот _контейнер_ для _хранения_ позволяющий _бесконечную_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалу.", + "block.create.creative_crate.tooltip.summary": "Это _хранилище_ позволяет _бесконечно_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалам.", "block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра", - "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.", + "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _помещённые_ в этот ящик, будут _уничтожены_.", "item.create.creative_blaze_cake.tooltip": "ТВОРЧЕСКИЙ ТОРТ", - "item.create.creative_blaze_cake.tooltip.summary": "Особое угощение для ваших _Горелок Всполоха_. После поедания этого торта у Горелки Всполоха _никогда не закончится топливо_.", - "item.create.creative_blaze_cake.tooltip.condition1": "При использовании", - "item.create.creative_blaze_cake.tooltip.behaviour1": "_Циклически_ изменяет уровень нагрева Горелки Всполоха.", + "item.create.creative_blaze_cake.tooltip.summary": "Особое угощение для ваших _Горелок всполоха_. После поедания этого торта у Горелки всполоха _никогда не закончится топливо_.", + "item.create.creative_blaze_cake.tooltip.condition1": "ПКМ по Горелке всполоха", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_Циклически_ изменяет уровень нагрева.", "block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩИЕ РЕЛЬСЫ", - "block.create.controller_rail.tooltip.summary": "_Всенаправленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.", + "block.create.controller_rail.tooltip.summary": "_Всенаправленные запитанные рельсы_, позволяющие провести _точную настройку_ _скорости_ вагонеток.", "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на величину зависящую от _силы сигнала_. Распространяя сигнал красного камня на соседние контролирующие рельсы. Питание двух контролирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", "item.create.sand_paper.tooltip": "НАЖДАЧНАЯ БУМАГА", "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", - "item.create.sand_paper.tooltip.condition1": "Когда используется", + "item.create.sand_paper.tooltip.condition1": "ПКМ с предметом", "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_", "item.create.builders_tea.tooltip": "ЧАЙ СТРОИТЕЛЯ", @@ -1983,19 +1983,19 @@ "item.create.refined_radiance.tooltip.condition1": "Работа в процессе", "item.create.refined_radiance.tooltip.behaviour1": "Использование этого материала будет доступно в следующем обновлении.", - "item.create.shadow_steel.tooltip": "ВОЗВРАЩЕНИЕ ПУСТОТЫ", + "item.create.shadow_steel.tooltip": "ТЕНЕВАЯ СТАЛЬ", "item.create.shadow_steel.tooltip.summary": "Хроматический материал, _добытый_ _в_ _пустоте_.", "item.create.shadow_steel.tooltip.condition1": "Работа в процессе", "item.create.shadow_steel.tooltip.behaviour1": "Использование этого материала будет доступно в следующем обновлении.", - "item.create.linked_controller.tooltip": "ПОДКЛЮЧАЕМЫЙ КОНТРОЛЛЕР", - "item.create.linked_controller.tooltip.summary": "Предоставляет _ручной_ _контроль_ над частотами _Беспроводного передатчика редстоун сигнала_, присвоенные его _шести_ кнопкам.", - "item.create.linked_controller.tooltip.condition1": "ПКМ", + "item.create.linked_controller.tooltip": "КОНТРОЛЛЕР СВЯЗИ", + "item.create.linked_controller.tooltip.summary": "Предоставляет _ручной_ _контроль_ над частотами _Редстоунового беспроводного передатчика сигнала_, присвоенные его _шести_ кнопкам.", + "item.create.linked_controller.tooltip.condition1": "ПКМ с предметом", "item.create.linked_controller.tooltip.behaviour1": "Включает контроллер. _Управление_ _движением_ перехвачено, пока он активен.", "item.create.linked_controller.tooltip.condition2": "ПКМ крадучись", "item.create.linked_controller.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", "item.create.linked_controller.tooltip.condition3": "ПКМ по приемнику сигнала редстоуна", - "item.create.linked_controller.tooltip.behaviour3": "Включает _режим привязки_, нажмите одну из _шести кнопок_, чтобы привязать его к _частоте передатчика_.", + "item.create.linked_controller.tooltip.behaviour3": "Включает _режим привязки_, нажмите одну из _шести кнопок_, чтобы привязать её к _частоте передатчика_.", "item.create.linked_controller.tooltip.condition4": "ПКМ по кафедре", "item.create.linked_controller.tooltip.behaviour4": "Помещает контроллер на кафедру для удобства использования. (ПКМ крадучись, чтобы забрать его)", @@ -2016,7 +2016,7 @@ "block.create.placard.tooltip.condition1": "ПКМ по рамке с предметом в руках", "block.create.placard.tooltip.behaviour1": "_Добавляет_ удерживаемый _предмет_ в рамку. _Издаёт_ короткий _сигнал редстоуна_, если соответствующий предмет уже присутствует.", "block.create.placard.tooltip.condition2": "При ударе", - "block.create.placard.tooltip.behaviour2": "_Удаляет_ текущий _предмет_ из рамки.", + "block.create.placard.tooltip.behaviour2": "_Убирает_ текущий _предмет_ из рамки.", "block.create.flywheel.tooltip": "МАХОВИК", "block.create.flywheel.tooltip.summary": "_Украсьте_ свои _машины_ этим внушительным медным колесом.", @@ -2026,7 +2026,7 @@ "item.create.diving_boots.tooltip": "БОТИНКИ ДЛЯ ДАЙВИНГА", "item.create.diving_boots.tooltip.summary": "Пара _тяжелых_ _ботинок_, позволяющая лучше передвигаться по океанскому дну.", "item.create.diving_boots.tooltip.condition1": "При ношении", - "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по конвейрам.", + "item.create.diving_boots.tooltip.behaviour1": "Владелец _тонет_ _быстрее_ и _не_ может _плавать_. Ботинки дают возможность _ходить_ и _прыгать_ под водой. Носящий может беспрепятственно ходить по конвейерам.", "item.create.crafting_blueprint.tooltip": "ЧЕРТЁЖ", "item.create.crafting_blueprint.tooltip.summary": "_Разместив_ на стене, его можно использовать для _определения_ _расположения_ _предметов_ для более простого ручного создания предметов. Каждый слот показывает отдельный рецепт крафта.", @@ -2035,22 +2035,22 @@ "item.create.crafting_blueprint.condition2": "ПКМ по настроенному слоту", "item.create.crafting_blueprint.behaviour2": "_Применяет_ _заданный_ _рецепт_ с подходящими ингредиентами, из вашего _инвентаря_. _Shift_, чтобы создать до _стака_ предметов.", - "item.create.minecart_coupling.tooltip": "СОЕДЕНИТЕЛЬ ВАГОНЕТОК", - "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный поезд.", - "item.create.minecart_coupling.tooltip.condition1": "При использовании на вагонетке", + "item.create.minecart_coupling.tooltip": "СОЕДИНИТЕЛЬ ВАГОНЕТОК", + "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный мини-поезд.", + "item.create.minecart_coupling.tooltip.condition1": "ПКМ по вагонеткам", "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определённой дистанции_ при движении.", "item.create.experience_nugget.tooltip": "КУСОЧЕК ОПЫТА", - "item.create.experience_nugget.tooltip.summary": "_Дзинь!_ Частица _вдохновения_ от ваших фантастических изобретений.", - "item.create.experience_nugget.tooltip.condition1": "При использовании", - "item.create.experience_nugget.tooltip.behaviour1": "_Высвобождает_ _очки опыта_ содержащиеся внутри.", + "item.create.experience_nugget.tooltip.summary": "_Дзинь!_ Частичка _вдохновения_ от ваших фантастических изобретений.", + "item.create.experience_nugget.tooltip.condition1": "ПКМ с предметом", + "item.create.experience_nugget.tooltip.behaviour1": "_Высвобождает_ _очки опыта_, находящиеся внутри.", "block.create.peculiar_bell.tooltip": "СТРАННЫЙ КОЛОКОЛ", - "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _Огнем душ_ может вызвать побочные эффекты...", + "block.create.peculiar_bell.tooltip.summary": "Декоративный _латунный колокол_. Установка его прямо над горящем _Огнем душ_ может вызвать непредвиденные последствия...", "block.create.haunted_bell.tooltip": "ПРИЗРАЧНЫЙ КОЛОКОЛ", "block.create.haunted_bell.tooltip.summary": "_Проклятый колокол_ населённый потерянными душами Нижнего мира.", - "block.create.haunted_bell.tooltip.condition1": "При ношении или при звоне", + "block.create.haunted_bell.tooltip.condition1": "При ношении в руке или при ПКМ по блоку", "block.create.haunted_bell.tooltip.behaviour1": "Подсвечивает ближайшие _места без света_ на которых могут появляться _враждебные существа_.", @@ -2058,16 +2058,16 @@ "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для размышления", "create.ponder.subject": "Субъект этой сцены", - "create.ponder.pondering": "Размышляем о/об...", - "create.ponder.identify_mode": "Режим Идентификации включён.\nУбрать паузу: [%1$s]", + "create.ponder.pondering": "Размышляем над...", + "create.ponder.identify_mode": "Режим идентификации включён.\nСнять паузу: [%1$s]", "create.ponder.associated": "Связанные статьи", "create.ponder.close": "Закрыть", "create.ponder.identify": "Определить", "create.ponder.next": "Следующая сцена", - "create.ponder.next_up": "Размышлять дальше о/об:", + "create.ponder.next_up": "Размышлять дальше над...", "create.ponder.previous": "Предыдущая сцена", "create.ponder.replay": "Воспроизвести снова", - "create.ponder.think_back": "Подумать о предыдущем", + "create.ponder.think_back": "Назад", "create.ponder.slow_text": "Удобное чтение", "create.ponder.exit": "Выйти", "create.ponder.welcome": "Добро пожаловать в размышления!", @@ -2075,11 +2075,11 @@ "create.ponder.index_description": "Кликните по одной из иконок, чтобы узнать о связанных с ней предметах и блоках.", "create.ponder.index_title": "Содержание размышлений", "create.ponder.shared.rpm16": "16 об./мин.", - "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Ключом", + "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Гаечным ключом", "create.ponder.shared.storage_on_contraption": "Присоединённые к штуковине инвентари будут подбирать вещи автоматически", - "create.ponder.shared.sneak_and": "Shift+", + "create.ponder.shared.sneak_and": "Shift +", "create.ponder.shared.rpm8": "8 об./мин.", - "create.ponder.shared.ctrl_and": "Ctrl+", + "create.ponder.shared.ctrl_and": "Ctrl +", "create.ponder.shared.rpm32": "32 об./мин.", "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", "create.ponder.shared.movement_anchors": "С помощью суперклея или шасси, более крупные структуры могут быть сдвинуты.", @@ -2092,7 +2092,7 @@ "create.ponder.tag.decoration": "Эстетика", "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", "create.ponder.tag.windmill_sails": "Паруса для Подшипников ветряной мельницы", - "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы. Каждый из этих блоков имеет одинаковую эффективность в деле.", + "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Ветряной мельницы. Каждый из этих блоков имеет одинаковую эффективность в работе.", "create.ponder.tag.arm_targets": "Цели для Механической руки", "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической руки", "create.ponder.tag.kinetic_appliances": "Кинетические приборы", @@ -2116,18 +2116,18 @@ "create.ponder.tag.train_related": "Железнодорожное оборудование", "create.ponder.tag.train_related.description": "Компоненты, используемые при строительстве или управлении Железнодорожных штуковин", - "create.ponder.analog_lever.header": "Управлении сигналами используя Аналоговый рычаг", + "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": "Использовании Андезитовых туннелей", + "create.ponder.andesite_tunnel.header": "Использованием Андезитовых туннелей", "create.ponder.andesite_tunnel.text_1": "Андезитовые туннели могут быть использованы, чтобы накрывать Конвейеры", "create.ponder.andesite_tunnel.text_2": "Всегда, когда у Андезитового туннеля есть соединения сбоку...", "create.ponder.andesite_tunnel.text_3": "...он будет отделять ровно один предмет из любых проходящих мимо стаков", "create.ponder.andesite_tunnel.text_4": "Остаток продолжит свой путь", - "create.ponder.auto_schedule.header": "Станциях и Расписаниях", + "create.ponder.auto_schedule.header": "Станциями и Расписаниями", "create.ponder.auto_schedule.text_1": "Расписания могут использоваться для предоставления машинистам пункта назначения", "create.ponder.auto_schedule.text_2": "Компараторы будут получать сигнал всякий раз, когда присутствует поезд", "create.ponder.auto_schedule.text_3": "Имейте в виду, что к станции можно подойти только с указанного направления", @@ -2135,7 +2135,7 @@ "create.ponder.auto_schedule.text_5": "Расписание, положенное на станцию, будет автоматически скопировано для машиниста поезда", "create.ponder.auto_schedule.text_6": "В отличии от ручной выдачи, машинисты не заберут его с собой", - "create.ponder.basin.header": "Обработке предметов в Чаше", + "create.ponder.basin.header": "Обработкой предметов в Чаше", "create.ponder.basin.text_1": "Чаша может хранить предметы и жидкости для обработки", "create.ponder.basin.text_2": "После обработки, чаши пытаются вывести результат под любой из их сторон", "create.ponder.basin.text_3": "Когда предоставлен подходящий компонент, у Чаши появится выходящий кран", @@ -2146,15 +2146,15 @@ "create.ponder.basin.text_8": "Желаемые продукты должны быть в таком случае извлечены из чаши", "create.ponder.basin.text_9": "Фильтр может быть необходим для избежания извлечения необработанных предметов", - "create.ponder.bearing_modes.header": "Режимах движения Механического подшипника", + "create.ponder.bearing_modes.header": "Режимами движения Механического подшипника", "create.ponder.bearing_modes.text_1": "Когда остановлен, подшипник установит структуру на ближайшем выровненным по сетке блоков углу", "create.ponder.bearing_modes.text_2": "Он может быть настроен никогда не возвращать структуру в твёрдое состояние, или только возле начального угла", - "create.ponder.belt_casing.header": "Обрамлении ремней", + "create.ponder.belt_casing.header": "Обрамлением ремней", "create.ponder.belt_casing.text_1": "Латунный или Андезитовый корпус может быть использован для декорации Механических ремней (конвейера)", "create.ponder.belt_casing.text_2": "Используйте Ключ, чтобы убрать обрамление", - "create.ponder.belt_connector.header": "Использовании Механических ремней", + "create.ponder.belt_connector.header": "Использованием Механических ремней", "create.ponder.belt_connector.text_1": "ПКМ по двум валам предметом ремня соединит их вместе в конвейер", "create.ponder.belt_connector.text_2": "Случайные выделения могут быть отменены нажатием ПКМ Крадучись", "create.ponder.belt_connector.text_3": "Дополнительные валы могут быть добавлены по всей длине конвейера", @@ -2162,7 +2162,7 @@ "create.ponder.belt_connector.text_5": "Добавленные Валы могут быть убраны Ключом", "create.ponder.belt_connector.text_6": "Механические ремни могут быть окрашены в эстетических целях", - "create.ponder.belt_directions.header": "Возможных расположениях Механических ремней", + "create.ponder.belt_directions.header": "Возможными расположениями Механических ремней", "create.ponder.belt_directions.text_1": "Ремни не могут соединяться в произвольных направлениях", "create.ponder.belt_directions.text_2": "1. Они могут соединяться горизонтально", "create.ponder.belt_directions.text_3": "2. Они могут соединяться по диагонали", @@ -2170,23 +2170,23 @@ "create.ponder.belt_directions.text_5": "4. И они могут соединять вертикальные валы горизонтально", "create.ponder.belt_directions.text_6": "Это все возможные направления. Ремни могут достигать Длины от 2 до 20 блоков", - "create.ponder.belt_transport.header": "Использовании Механических ремней для логистики", + "create.ponder.belt_transport.header": "Использованием Механических ремней для логистики", "create.ponder.belt_transport.text_1": "Двигающиеся ремни будут перемещать Предметы и другие Сущности", "create.ponder.belt_transport.text_2": "ПКМ пустой рукой, чтобы забрать предметы с ремня", - "create.ponder.blaze_burner.header": "Кормлении Горелок всполохов", + "create.ponder.blaze_burner.header": "Кормлением Горелок всполоха", "create.ponder.blaze_burner.text_1": "Горелки всполохов дают тепло предметам, обрабатывающимся в Чаше", - "create.ponder.blaze_burner.text_2": "Для этого, Всполох должен быть накормлен воспламеняемыми предметами", + "create.ponder.blaze_burner.text_2": "Для этого, всполох должен быть накормлен воспламеняемыми предметами", "create.ponder.blaze_burner.text_3": "С Тортом всполоха, горелка может достигать ещё большего уровня нагрева", "create.ponder.blaze_burner.text_4": "Процесс кормления может быть автоматизирован, используя Автономный активатор или Механическую руку", - "create.ponder.brass_funnel.header": "Использовании Латунной воронки", + "create.ponder.brass_funnel.header": "Использованием Латунных воронок", "create.ponder.brass_funnel.text_1": "Андезитовая Воронка может извлекать только одиночные предметы", "create.ponder.brass_funnel.text_2": "Латунная Воронка может извлекать до целого стака", "create.ponder.brass_funnel.text_3": "Прокрутка на слоте фильтра позволяет точно регулировать размер извлекаемого стака", "create.ponder.brass_funnel.text_4": "Используя предмет на слоте фильтра ограничит воронку до передачи только совпадающих стаков", - "create.ponder.brass_tunnel.header": "Использовании Латунных туннелей", + "create.ponder.brass_tunnel.header": "Использованием Латунных туннелей", "create.ponder.brass_tunnel.text_1": "Латунные туннели могут быть использованы, чтобы накрывать конвейеры", "create.ponder.brass_tunnel.text_2": "Латунные туннели имеют слот для фильтра на каждой открытой стороне", "create.ponder.brass_tunnel.text_3": "Фильтр на входящих соединениях блокирует неподходящие предметы", @@ -2196,47 +2196,47 @@ "create.ponder.brass_tunnel.text_7": "Входящие предметы будут распределены между всеми соединёнными выходами", "create.ponder.brass_tunnel.text_8": "Для этого предметы также могут быть вложены в блок туннеля напрямую", - "create.ponder.brass_tunnel_modes.header": "Режимах распределения Латунных туннелей", - "create.ponder.brass_tunnel_modes.text_1": "Используя Ключ, вы можете настроить поведение распределения у Латунного туннеля", + "create.ponder.brass_tunnel_modes.header": "Режимами распределения Латунных туннелей", + "create.ponder.brass_tunnel_modes.text_1": "Используя Ключ, вы можете настроить поведение распределения Латунного туннеля", "create.ponder.brass_tunnel_modes.text_10": "«Синхронизировать входы» — уникальная настройка для Латунных туннелей", "create.ponder.brass_tunnel_modes.text_11": "Предметы могут пройти только если у каждого туннеля в группе есть ожидающий у входа предмет", "create.ponder.brass_tunnel_modes.text_12": "Это подразумевает, что все конвейеры поставляют предметы с равной скоростью", - "create.ponder.brass_tunnel_modes.text_2": "«Разделить» попытается распределить стак поровну между доступными выходами", + "create.ponder.brass_tunnel_modes.text_2": "«Разделение» попытается распределить стак поровну между доступными выходами", "create.ponder.brass_tunnel_modes.text_3": "Если выход не может принять больше предметов, он будет пропущен", - "create.ponder.brass_tunnel_modes.text_4": "«Принудительно разделить» никогда не пропустит выходы и вместо этого будет ждать пока они не освободятся", + "create.ponder.brass_tunnel_modes.text_4": "«Строгое разделение» никогда не пропустит выходы и вместо этого будет ждать пока они не освободятся", "create.ponder.brass_tunnel_modes.text_5": "«По Кругу» сохраняет цельные стаки и отдаёт их выходам по очереди", "create.ponder.brass_tunnel_modes.text_6": "Опять же, если выход не может принять больше предметов, он будет пропущен", - "create.ponder.brass_tunnel_modes.text_7": "«Принудительно по кругу» никогда не пропускает выходы", + "create.ponder.brass_tunnel_modes.text_7": "«Строго по кругу» никогда не пропускает выходы", "create.ponder.brass_tunnel_modes.text_8": "«Предпочтительно ближайшее» приоритизирует ближайшие выходы от места подачи предметов", "create.ponder.brass_tunnel_modes.text_9": "«Случайно» будет отдавать целые стаки случайно выбранным выходам", - "create.ponder.cart_assembler.header": "Движении структур при помощи Сборщика вагонеток", + "create.ponder.cart_assembler.header": "Движением структур при помощи Сборщиков вагонеток", "create.ponder.cart_assembler.text_1": "Активированные Сборщики вагонеток устанавливают прикреплённые структуры к проходящим мимо вагонеткам", "create.ponder.cart_assembler.text_2": "Без редстоун сигнала они разбирают вагонеточные штуковины обратно в блоки", "create.ponder.cart_assembler.text_3": "Использование Ключа на вагонетке позволит вам унести Штуковину куда-то ещё", - "create.ponder.cart_assembler_dual.header": "Сборке Штуковин-экипажей", + "create.ponder.cart_assembler_dual.header": "Сборкой Штуковин-экипажей", "create.ponder.cart_assembler_dual.text_1": "Всегда, когда два Сборщика вагонеток имеют общую прикреплённую структуру...", "create.ponder.cart_assembler_dual.text_2": "активация любого из них создаст Штуковину-экипаж", "create.ponder.cart_assembler_dual.text_3": "Эти вагонетки будут вести себя так, будто они соединены Соединителем вагонеток", - "create.ponder.cart_assembler_modes.header": "Настройках ориентации Вагонеточных штуковин", + "create.ponder.cart_assembler_modes.header": "Настройкой ориентации Вагонеточных штуковин", "create.ponder.cart_assembler_modes.text_1": "Вагонеточные штуковины будут поворачиваться в сторону движения их вагонеток", "create.ponder.cart_assembler_modes.text_2": "Стрелкой показано, какая сторона конструкции будет считаться передней", "create.ponder.cart_assembler_modes.text_3": "Если сборщик настроен на блокировку вращения, то ориентация штуковин никогда не изменится", - "create.ponder.cart_assembler_rails.header": "Других типах вагонеток и рельс", + "create.ponder.cart_assembler_rails.header": "Другими типами вагонеток и рельс", "create.ponder.cart_assembler_rails.text_1": "Сборщики вагонеток на обычных рельсах не будут влиять на движение проходящих вагонеток", - "create.ponder.cart_assembler_rails.text_2": "На активных Контролирующих рельсах или Энергорельсах вагонетки будут стоять на месте до тех, пока Сборщик не будет активирован", + "create.ponder.cart_assembler_rails.text_2": "На активных Контролирующих рельсах или энергорельсах вагонетки будут стоять на месте до тех, пока Сборщик не будет активирован", "create.ponder.cart_assembler_rails.text_3": "Другие типы вагонеток могут быть использованы как основание", "create.ponder.cart_assembler_rails.text_4": "Самоходные вагонетки будут поддерживать себя запитанными, используя топливо из присоединённых инвентарей", - "create.ponder.chain_drive.header": "Передаче силы вращения Цепными приводами", + "create.ponder.chain_drive.header": "Передачей силы вращения Цепными приводами", "create.ponder.chain_drive.text_1": "Цепные приводы передают силу вращения друг другу", "create.ponder.chain_drive.text_2": "Все валы соединённые таким образом будут вращаться в одном направлении", "create.ponder.chain_drive.text_3": "Любая часть в ряду может быть повёрнута на 90 градусов", - "create.ponder.chain_gearshift.header": "Управлении скоростью вращения Регулируемыми цепными механизмами", + "create.ponder.chain_gearshift.header": "Управлением скоростью вращения Регулируемыми цепными механизмами", "create.ponder.chain_gearshift.text_1": "Неактивные Цепные механизмы ведут себя точно так же, как Цепные приводы", "create.ponder.chain_gearshift.text_2": "Когда активирован, скорость, передаваемая другим Цепным механизмам в ряду удваивается", "create.ponder.chain_gearshift.text_3": "Когда активированный Цепной механизм не является источником, его скорость будет снижена вдвое", @@ -2244,63 +2244,63 @@ "create.ponder.chain_gearshift.text_5": "Используя аналоговые сигналы, это умножение может быть настроено более точно между 1 и 2", "create.ponder.chain_gearshift.text_6": "12 об./мин.", - "create.ponder.chute.header": "Транспортировке предметов вниз через Желоба", + "create.ponder.chute.header": "Транспортировкой предметов вниз через Желоба", "create.ponder.chute.text_1": "Желоба могут транспортировать предметы вертикально вниз", "create.ponder.chute.text_2": "Используя Ключ, вы можете создать окно", "create.ponder.chute.text_3": "Установка желобов на стороны других желобов сделает их диагональными", - "create.ponder.chute_upward.header": "Транспортировке предметов вверх через Желоба", + "create.ponder.chute_upward.header": "Транспортировкой предметов вверх через Желоба", "create.ponder.chute_upward.text_1": "Используя Вентилятор в корпусе внизу или наверху, Жёлоб может перемещать предметы вверх", "create.ponder.chute_upward.text_2": "Осмотр желобов в Инженерных очках показывает информацию о направлении движения", "create.ponder.chute_upward.text_3": "На «заблокированном» конце предметы должны быть введены/выведены сбоку", - "create.ponder.clockwork_bearing.header": "Оживлении структур Часовым механизмом", + "create.ponder.clockwork_bearing.header": "Оживлением структур Часовым механизмом", "create.ponder.clockwork_bearing.text_1": "Часовые механизмы прикрепляются к блокам спереди", "create.ponder.clockwork_bearing.text_2": "При получении силы вращения структура повернётся в зависимости от текущего часа", "create.ponder.clockwork_bearing.text_3": "3:00", "create.ponder.clockwork_bearing.text_4": "4:00", "create.ponder.clockwork_bearing.text_5": "ПКМ по механизму, чтобы остановить или вновь запустить структуру", "create.ponder.clockwork_bearing.text_6": "Вторая структура может быть добавлена спереди Часовой стрелки", - "create.ponder.clockwork_bearing.text_7": "Убедитесь, что две структуры не соединены между собой супер-клеем или чем-то схожим", + "create.ponder.clockwork_bearing.text_7": "Убедитесь, что две структуры не соединены между собой суперклеем или чем-то схожим", "create.ponder.clockwork_bearing.text_8": "Вторая структура станет вращаться как Минутная стрелка", - "create.ponder.clutch.header": "Управлении силой вращения с помощью Сцепления", + "create.ponder.clutch.header": "Управлением силой вращения с помощью Сцепления", "create.ponder.clutch.text_1": "Сцепление передаёт вращение по прямой", "create.ponder.clutch.text_2": "При активации Редстоуном оно разрывает соединение", - "create.ponder.cog_speedup.header": "Переключении передач Шестернями", + "create.ponder.cog_speedup.header": "Переключением передач Шестернями", "create.ponder.cog_speedup.text_1": "Большие и Маленькие шестерни могут соединяться по диагонали", "create.ponder.cog_speedup.text_2": "Переходя с больших на маленькие шестерни, переданная скорость удвоится", "create.ponder.cog_speedup.text_3": "Переходя в обратном направлении, переданная скорость сократится вдвое", - "create.ponder.cogwheel.header": "Передаче силы вращения Шестернями", + "create.ponder.cogwheel.header": "Передачей силы вращения Шестернями", "create.ponder.cogwheel.text_1": "Шестерни передают вращение другим соседним шестерням", "create.ponder.cogwheel.text_2": "Соседние валы соединённые таким образом будут вращаться в противоположных направлениях", - "create.ponder.cogwheel_casing.header": "Обрамлении Шестреней", + "create.ponder.cogwheel_casing.header": "Обрамлением Шестерней", "create.ponder.cogwheel_casing.text_1": "Латунный или Андезитовый корпус можно использовать для украшения Шестерней", "create.ponder.cogwheel_casing.text_2": "Компоненты, заключённые в корпус, не будут иметь выхода вала", "create.ponder.cogwheel_casing.text_3": "Гаечный ключ можно использовать для переключения соединений", - "create.ponder.creative_fluid_tank.header": "Творческом жидкостном баке", + "create.ponder.creative_fluid_tank.header": "Использованием Творческих жидкостных баков", "create.ponder.creative_fluid_tank.text_1": "Творческий жидкостный бак может использоваться для обеспечения бесконечного запаса жидкости", "create.ponder.creative_fluid_tank.text_2": "Щелкните ПКМ предметом, содержащим жидкость, чтобы настроить его", "create.ponder.creative_fluid_tank.text_3": "Сети труб могут бесконечно вытягивать заданную жидкость из резервуара", "create.ponder.creative_fluid_tank.text_4": "Любые жидкости, закачанные обратно в творческий жидкостный бак, будут уничтожены", - "create.ponder.creative_motor.header": "Генерации силы вращения Творческими моторами", + "create.ponder.creative_motor.header": "Генерацией силы вращения Творческими моторами", "create.ponder.creative_motor.text_1": "Творческие моторы — это компактные и настраиваемые источники Силы Вращения", "create.ponder.creative_motor.text_2": "Прокрутка по задней панели изменяет кол-во об./мин. у вращающегося вала мотора", - "create.ponder.creative_motor_mojang.header": "Загадке Моджанг", + "create.ponder.creative_motor_mojang.header": "Загадкой от Mojang", - "create.ponder.crushing_wheels.header": "Обработке предметов Колёсами дробления", + "create.ponder.crushing_wheels.header": "Обработкой предметов Колёсами дробления", "create.ponder.crushing_wheels.text_1": "Пара Колёс дробления может молоть предметы очень эффективно", "create.ponder.crushing_wheels.text_2": "Сила вращения должна вращать их друг в друга", "create.ponder.crushing_wheels.text_3": "Предметы брошенные или введённые в них сверху будут обработаны", "create.ponder.crushing_wheels.text_4": "Предметы также могут быть введены и подобраны автоматическим способом", - "create.ponder.deployer.header": "Использовании Автономного активатора", + "create.ponder.deployer.header": "Использованием Автономных активаторов", "create.ponder.deployer.text_1": "При наличии силы вращения автономный активатор может имитировать действия игрока", "create.ponder.deployer.text_10": "ПКМ спереди, чтобы дать ему предмет для использования", "create.ponder.deployer.text_11": "Предметы также могут быть введены автоматически", @@ -2317,43 +2317,43 @@ "create.ponder.deployer.text_8": "Собирать блоки;", "create.ponder.deployer.text_9": "и Атаковать мобов", - "create.ponder.deployer_contraption.header": "Использовании Автономных активаторов на штуковинах", + "create.ponder.deployer_contraption.header": "Использованием Автономных активаторов на штуковинах", "create.ponder.deployer_contraption.text_1": "Всегда, когда автономные активаторы движутся как часть движимой штуковины...", "create.ponder.deployer_contraption.text_2": "Они активируются на каждом посещённом месте, используя предметы из любых инвентарей на штуковине", "create.ponder.deployer_contraption.text_3": "Слот для Фильтра может быть использован, чтобы уточнить, какие предметы ему брать", - "create.ponder.deployer_modes.header": "Режимах Автономного активатора", - "create.ponder.deployer_modes.text_1": "По умолчанию, активатор имитирует ПКМ-взаимодейстие", + "create.ponder.deployer_modes.header": "Режимами Автономного активатора", + "create.ponder.deployer_modes.text_1": "По умолчанию, активатор имитирует ПКМ-взаимодействие", "create.ponder.deployer_modes.text_2": "Используя Ключ, вы можете установить его на имитацию ЛКМ", - "create.ponder.deployer_processing.header": "Обработке элементов с помощью Автономных активаторов", + "create.ponder.deployer_processing.header": "Обработкой предметов с помощью Автономных активаторов", "create.ponder.deployer_processing.text_1": "Держа подходящий предмет/инструмент, автономные активаторы могут обрабатывать предметы под собой", "create.ponder.deployer_processing.text_2": "Принимаемые предметы можно бросить или положить на депо под автономным активатором", "create.ponder.deployer_processing.text_3": "Когда предметы находятся на конвейере...", "create.ponder.deployer_processing.text_4": "автономный активатор будет удерживать и обрабатывать их автоматически", - "create.ponder.deployer_redstone.header": "Управлении Автономными активаторами редстоуном", + "create.ponder.deployer_redstone.header": "Управлением Автономным активатором редстоуном", "create.ponder.deployer_redstone.text_1": "При активации Редстоуном активатор перестанет работать", "create.ponder.deployer_redstone.text_2": "Перед остановкой, Активатор завершит все начатые действия", "create.ponder.deployer_redstone.text_3": "Таким образом, инвертированный импульс может быть использован для вызова ровно одного срабатывания", - "create.ponder.depot.header": "Использовании Депо", + "create.ponder.depot.header": "Использованием Депо", "create.ponder.depot.text_1": "Депо могут служить как «стационарный» элемент конвейера", "create.ponder.depot.text_2": "ПКМ, что бы самостоятельно положить или забрать предметы с них", "create.ponder.depot.text_3": "Так же, как Механические ремни, оно может предоставлять предметы для обработки", "create.ponder.depot.text_4": "...а также поставлять предметы Механическим рукам", - "create.ponder.display_board.header": "Использовании Механического табло", - "create.ponder.display_board.text_1": "Механическое табло — это масшатабируемая альтернатива табличкам", + "create.ponder.display_board.header": "Использованием Механического табло", + "create.ponder.display_board.text_1": "Механическое табло — это масштабируемая альтернатива табличкам", "create.ponder.display_board.text_2": "Для работы ему требуется вращательная сила", "create.ponder.display_board.text_3": "Текст может отображаться с помощью бирок...", "create.ponder.display_board.text_4": "...или с помощью Передатчика информации", "create.ponder.display_board.text_5": "Красители можно наносить на отдельные строки табло", - "create.ponder.display_board.text_6": "Линии можно сбросить, нажав на них пустой рукой", + "create.ponder.display_board.text_6": "Цвет строки можно убрать, нажав на них пустой рукой", - "create.ponder.display_link.header": "Настройке Передатчика информации", + "create.ponder.display_link.header": "Настройкой Передатчиков информации", "create.ponder.display_link.text_1": "Передатчик информации может использоваться для визуализации динамической информации", - "create.ponder.display_link.text_2": "Нажмите ПКМ на целевое табло...", + "create.ponder.display_link.text_2": "Нажмите ПКМ на выбранное табло...", "create.ponder.display_link.text_3": "...затем прикрепите его к блоку для чтения информации из него", "create.ponder.display_link.text_4": "Откройте интерфейс, чтобы выбрать и настроить то, какая информация будет отправляется", "create.ponder.display_link.text_5": "Теперь табло будет получать информацию от передатчика", @@ -2361,39 +2361,39 @@ "create.ponder.display_link.text_7": "Каждый совместимый блок предоставляет уникальную информацию", "create.ponder.display_link.text_8": "Передатчик информации может работать с несколькими различными дисплеями", - "create.ponder.display_link_redstone.header": "Управлении Передатчиком редстоуном", + "create.ponder.display_link_redstone.header": "Управлением Передатчиком информации редстоуном", "create.ponder.display_link_redstone.text_1": "При питании от редстоуна Передатчик информации перестаёт отправлять обновления", "create.ponder.display_link_redstone.text_2": "После отключения питания таймер сбрасывается, и новая информация отправляется немедленно", "create.ponder.display_link_redstone.text_3": "Сигналы редстоуна, отправляемые Источниками информации, не оказывают эффекта на Передатчик ", - "create.ponder.empty_blaze_burner.header": "Использовании Пустых горелок всполохов", - "create.ponder.empty_blaze_burner.text_1": "ПКМ по Всполоху с пустой горелкой, чтобы захватить его", - "create.ponder.empty_blaze_burner.text_2": "Также Всполохи могут быть захвачены из спавнера напрямую", + "create.ponder.empty_blaze_burner.header": "Поимкой всполохов в Горелку", + "create.ponder.empty_blaze_burner.text_1": "ПКМ по всполоху с пустой горелкой, чтобы захватить его", + "create.ponder.empty_blaze_burner.text_2": "Также всполохи могут быть захвачены из спавнера напрямую", "create.ponder.empty_blaze_burner.text_3": "Теперь у вас есть идеальный источник тепла для ряда машин", "create.ponder.empty_blaze_burner.text_4": "В эстетических целях, Пустые горелки могут быть зажжены огнивом", - "create.ponder.empty_blaze_burner.text_5": "Пламя можно трансформировать, используя наполненный душой предмет.", + "create.ponder.empty_blaze_burner.text_5": "Пламя можно трансформировать, используя наполненный душами предмет", "create.ponder.empty_blaze_burner.text_6": "Однако они не будут подходить для промышленного нагрева", - "create.ponder.encased_fluid_pipe.header": "Обрамлении Жидкостных труб", + "create.ponder.encased_fluid_pipe.header": "Обрамлением Жидкостных труб", "create.ponder.encased_fluid_pipe.text_1": "Медный корпус можно использовать для украшения декорации труб.", "create.ponder.encased_fluid_pipe.text_2": "Помимо того, что они скрываются, заключенные в обрамление трубы блокируются в текущем состоянии", "create.ponder.encased_fluid_pipe.text_3": "Они больше не будут реагировать на добавление или удаление каких-либо соседних блоков", - "create.ponder.fan_direction.header": "Воздушном потоке Вентиляторов в корпусе", + "create.ponder.fan_direction.header": "Воздушным потоком Вентилятора в корпусе", "create.ponder.fan_direction.text_1": "Вентиляторы в корпусе используют силу вращения для создания Воздушного потока", "create.ponder.fan_direction.text_2": "Сила и направление потока зависят от подаваемого вращения", - "create.ponder.fan_processing.header": "Обработке предметов используя Вентиляторы в корпусе", + "create.ponder.fan_processing.header": "Обработкой предметов используя Вентиляторы в корпусе", "create.ponder.fan_processing.text_1": "Проходя через лаву, Воздушный поток становится Горячим", "create.ponder.fan_processing.text_2": "Предметы в этой области будут переплавлены", "create.ponder.fan_processing.text_3": "Съедобные предметы брошенные сюда будут сожжены", "create.ponder.fan_processing.text_4": "Вместо этого, для них должна быть использована установка для Копчения с огнём", "create.ponder.fan_processing.text_5": "Поток, проходящий через Воду, создаёт Промывающую установку", "create.ponder.fan_processing.text_6": "Несколько новых вариантов обработки делаются с её помощью", - "create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность", + "create.ponder.fan_processing.text_7": "Скорость вентилятора НЕ влияет на скорость обработки, а только на дальность установки", "create.ponder.fan_processing.text_8": "Обработка Вентиляторами может быть применена к предметам на конвейерах или депо", - "create.ponder.fluid_pipe_flow.header": "Перемещении жидкостей при помощи медных Труб.", + "create.ponder.fluid_pipe_flow.header": "Перемещением жидкостей при помощи Жидкостных труб", "create.ponder.fluid_pipe_flow.text_1": "Жидкостные трубы могут соединять два или более источников и потребителей жидкости", "create.ponder.fluid_pipe_flow.text_2": "При помощи Гаечного ключа можно создать окно прямому отрезку трубы", "create.ponder.fluid_pipe_flow.text_3": "Трубы с окнами не будут соединяться ни с какими другими рядом идущими отрезками труб", @@ -2402,90 +2402,90 @@ "create.ponder.fluid_pipe_flow.text_6": "Как только поток соединит концы, они постепенно перекачают свое содержимое", "create.ponder.fluid_pipe_flow.text_7": "Таким образом, сами блоки труб никогда «физически» не содержат никакой жидкости", - "create.ponder.fluid_pipe_interaction.header": "Опустошении и наполнении Жидкостных контейнеров", + "create.ponder.fluid_pipe_interaction.header": "Опустошением и наполнением Жидкостных контейнеров", "create.ponder.fluid_pipe_interaction.text_1": "Концы сети труб могут взаимодействовать с различными блоками", "create.ponder.fluid_pipe_interaction.text_2": "Любой блок с возможностью хранения жидкости может быть заполнен или опустошен", "create.ponder.fluid_pipe_interaction.text_3": "Источники прямо перед открытым концом можно откачать...", "create.ponder.fluid_pipe_interaction.text_4": "...в то время как выливание в незаполненное пространство может создать источники", "create.ponder.fluid_pipe_interaction.text_5": "Трубы также могут извлекать жидкости непосредственно из нескольких других блоков", - "create.ponder.fluid_tank_sizes.header": "Размерах Жидкостного бака", + "create.ponder.fluid_tank_sizes.header": "Размерами Жидкостных баков", "create.ponder.fluid_tank_sizes.text_1": "Жидкостные баки можно объединить для увеличения общей вместимости", "create.ponder.fluid_tank_sizes.text_2": "Их площадь основания может составлять до 3 блоков в ширину...", "create.ponder.fluid_tank_sizes.text_3": "...и увеличиваются в высоту более чем на 30 дополнительных уровней", "create.ponder.fluid_tank_sizes.text_4": "При помощи Гаечного ключа можно создать окно на резервуаре", - "create.ponder.fluid_tank_storage.header": "Хранении жидкостей в Жидкостных баках", + "create.ponder.fluid_tank_storage.header": "Хранением жидкостей в Жидкостных баках", "create.ponder.fluid_tank_storage.text_1": "Жидкостные баки можно использовать для хранения большого количества жидкости", "create.ponder.fluid_tank_storage.text_2": "Трубы могут закачивать и выкачивать жидкости с любой стороны", "create.ponder.fluid_tank_storage.text_3": "Содержащаяся жидкость может быть измерена с помощью компаратора", "create.ponder.fluid_tank_storage.text_4": "Однако в режиме выживания жидкость нельзя добавлять или извлекать вручную", "create.ponder.fluid_tank_storage.text_5": "Вы можете использовать чаши, предметные осушители и дозаторы для опустошения или наполнения содерж. жидкость предметов", - "create.ponder.funnel_compat.header": "Совместимости Воронок", + "create.ponder.funnel_compat.header": "Совместимостью Воронок", "create.ponder.funnel_compat.text_1": "Воронки должны хорошо взаимодействовать с многими компонентами:", "create.ponder.funnel_compat.text_2": "Вертикальные пилы", "create.ponder.funnel_compat.text_3": "Депо", "create.ponder.funnel_compat.text_4": "Предметные осушители", - "create.ponder.funnel_direction.header": "Направлении передачи Воронок", + "create.ponder.funnel_direction.header": "Направлением передачи Воронок", "create.ponder.funnel_direction.text_1": "Поставленная обычным образом, она забирает предметы из инвентаря", "create.ponder.funnel_direction.text_2": "Поставленная крадучись, она кладёт предметы в инвентарь", "create.ponder.funnel_direction.text_3": "Используя Ключ, вы можете изменить направление Воронки", "create.ponder.funnel_direction.text_4": "Те же правила применяются для большинства направлений", "create.ponder.funnel_direction.text_5": "Воронки на конвейерах будут извлекать/вводить предметы в зависимости от направления их движения", - "create.ponder.funnel_intro.header": "Использовании Воронок", + "create.ponder.funnel_intro.header": "Использованием Воронок", "create.ponder.funnel_intro.text_1": "Воронки идеально подходят для перемещения предметов из и в инвентари", - "create.ponder.funnel_redstone.header": "Управлении Воронок редстоуном", + "create.ponder.funnel_redstone.header": "Управлением Воронок редстоуном", "create.ponder.funnel_redstone.text_1": "Редстоун сигнал не даст любой воронке работать", - "create.ponder.funnel_transfer.header": "Передаче Воронками напрямую", + "create.ponder.funnel_transfer.header": "Передачей Воронками напрямую", "create.ponder.funnel_transfer.text_1": "Воронки не могут перемещать предметы напрямую между закрытыми инвентарями", "create.ponder.funnel_transfer.text_2": "Желоба или Умные желоба могут лучше подходить для этих целей", "create.ponder.funnel_transfer.text_3": "То же касается и горизонтального перемещения. Механический ремень должен здесь помочь", - "create.ponder.gantry_carriage.header": "Использовании Шасси портального крана", + "create.ponder.gantry_carriage.header": "Использованием Шасси портального крана", "create.ponder.gantry_carriage.text_1": "Шасси портального крана могут прикрепляться и двигаться вдоль Вала портального крана", "create.ponder.gantry_carriage.text_2": "Крановые установки могут двигать присоединённые Блоки", - "create.ponder.gantry_cascaded.header": "Многоступенчатом портальном кране", - "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к шасси без нужды в супер-клее", + "create.ponder.gantry_cascaded.header": "Созданием Многоступенчатого портального крана", + "create.ponder.gantry_cascaded.text_1": "Валы портального крана прикрепляются к шасси без нужды в суперклее", "create.ponder.gantry_cascaded.text_2": "То же относится и к шасси на движущихся Валах портального крана", "create.ponder.gantry_cascaded.text_3": "Таким образом крановая система может покрывать несколько осей движения", - "create.ponder.gantry_direction.header": "Направлении движения крана", + "create.ponder.gantry_direction.header": "Направлением движения крана", "create.ponder.gantry_direction.text_1": "Валы портального крана могут иметь два противоположных направления", "create.ponder.gantry_direction.text_2": "Направление движения шасси зависит от ориентации их валов", "create.ponder.gantry_direction.text_3": "...а также от направления вращения вала", "create.ponder.gantry_direction.text_4": "Те же правила относятся к передаваемому вращению", - "create.ponder.gantry_redstone.header": "Подаче энергии на кран", + "create.ponder.gantry_redstone.header": "Подачей энергии на кран", "create.ponder.gantry_redstone.text_1": "Активированные редстоуном валы крана перестают двигать шасси", "create.ponder.gantry_redstone.text_2": "Вместо этого сила вращения передаётся выходному валу шасси", - "create.ponder.gantry_shaft.header": "Использовании Валов портального крана", + "create.ponder.gantry_shaft.header": "Использованием Валов портального крана", "create.ponder.gantry_shaft.text_1": "Валы портального крана составляют основу крановой установки. По ним будут двигаться присоединённые Шасси", "create.ponder.gantry_shaft.text_2": "Крановые установки могут двигать присоединённые Блоки", - "create.ponder.gearbox.header": "Передаче силы вращения с помощью Коробок передач", + "create.ponder.gearbox.header": "Передачей силы вращения с помощью Коробок передач", "create.ponder.gearbox.text_1": "Переходы между осями вращения могут быстро стать очень громоздкими", "create.ponder.gearbox.text_2": "Коробка Передач — это более компактный эквивалент этой установки", "create.ponder.gearbox.text_3": "Валы по углам поворачиваются в зеркальных направлениях", - "create.ponder.gearbox.text_4": "Прямые соединения будут реверсированы", + "create.ponder.gearbox.text_4": "Прямые соединения будут реверсированны", - "create.ponder.gearshift.header": "Управлении силой вращения при помощи Реверсивного механизма", + "create.ponder.gearshift.header": "Управлением силы вращения при помощи Реверсивного механизма", "create.ponder.gearshift.text_1": "Реверсивные механизмы передают вращение по прямой", "create.ponder.gearshift.text_2": "При активации редстоуном, они реверсируют передачу", - "create.ponder.hand_crank.header": "Генерации силы вращения при помощи Рукояток", + "create.ponder.hand_crank.header": "Генерацией силы вращения при помощи Рукояток", "create.ponder.hand_crank.text_1": "Рукоятки могут быть использованы игроками для создания силы вращения вручную", "create.ponder.hand_crank.text_2": "Держите ПКМ, чтобы повернуть их против часовой стрелки", "create.ponder.hand_crank.text_3": "Их скорость вращения относительно высока", "create.ponder.hand_crank.text_4": "Держите ПКМ крадучись, чтобы повернуть её по часовой стрелке", - "create.ponder.hose_pulley.header": "Наполнении и осушении источников при помощи Шкива со шлангом", + "create.ponder.hose_pulley.header": "Наполнением и осушением источников при помощи Шкива со шлангом", "create.ponder.hose_pulley.text_1": "Шкивы со шлангом можно использовать для заполнения или осушения больших объёмов жидкости", "create.ponder.hose_pulley.text_2": "С помощью кинетической энергии можно регулировать длину шланга", "create.ponder.hose_pulley.text_3": "Шкив сматывается, если обратить вращение", @@ -2494,66 +2494,66 @@ "create.ponder.hose_pulley.text_6": "...либо вытягивать её, осушая водоем", "create.ponder.hose_pulley.text_7": "Скорость заполнения и осушения шкивом полностью зависит от пропускной способности жидкостной сети", - "create.ponder.hose_pulley_infinite.header": "Пассивном заполнении и осушении больших объёмов жидкости", + "create.ponder.hose_pulley_infinite.header": "Пассивным заполнением и осушением больших объёмов жидкости", "create.ponder.hose_pulley_infinite.text_1": "При развертывании Шкива со шлангом в достаточно большой океан...", "create.ponder.hose_pulley_infinite.text_2": "Он будет предоставлять/поглощать жидкости без влияния на источник", "create.ponder.hose_pulley_infinite.text_3": "Сети труб могут неограниченно передавать жидкости из/в такие шкивы", - "create.ponder.hose_pulley_level.header": "Уровне заполнения и осушения Шкива со шлангом", + "create.ponder.hose_pulley_level.header": "Уровнем заполнения и осушения Шкива со шлангом", "create.ponder.hose_pulley_level.text_1": "При полностью убранном рукаве шланга — он не может работать", "create.ponder.hose_pulley_level.text_2": "Осушение происходит сверху вниз", "create.ponder.hose_pulley_level.text_3": "Уровень поверхности окажется чуть ниже того места, где заканчивается шланг", "create.ponder.hose_pulley_level.text_4": "Наполнение происходит снизу вверх", "create.ponder.hose_pulley_level.text_5": "Заполняемый бассейн не будет наполняться выше уровня конца шланга", - "create.ponder.item_drain.header": "Опустошении жидкостных резервуаров с помощью Предметных осушителей", + "create.ponder.item_drain.header": "Опустошением жидкостных резервуаров с помощью Предметных осушителей", "create.ponder.item_drain.text_1": "Предметные осушители могут извлекать жидкости из предметов", "create.ponder.item_drain.text_2": "Щелкните ПКМ по нему, чтобы перелить в него жидкость из предмета в ваших руках", "create.ponder.item_drain.text_3": "Когда предметы подаются со стороны...", "create.ponder.item_drain.text_4": "...они переворачиваются, выливая содержащуюся в них жидкость", "create.ponder.item_drain.text_5": "Трубы могут вытягивать жидкость из внутреннего хранилища осушителей", - "create.ponder.item_vault_sizes.header": "Размерах Хранилища предметов", + "create.ponder.item_vault_sizes.header": "Размерами Хранилища предметов", "create.ponder.item_vault_sizes.text_1": "Хранилища предметов можно объединять для увеличения общей вместимости", "create.ponder.item_vault_sizes.text_2": "Их базовая площадь может быть шириной до 3 блоков...", - "create.ponder.item_vault_sizes.text_3": "...и увеличиватся в длину до 3 диаметров", + "create.ponder.item_vault_sizes.text_3": "...и увеличиваться в длину до 3 диаметров", - "create.ponder.item_vault_storage.header": "Хранении предметов в Хранилищах", + "create.ponder.item_vault_storage.header": "Хранением предметов в Хранилищах", "create.ponder.item_vault_storage.text_1": "Хранилища предметов можно использовать для хранения большого количества предметов", "create.ponder.item_vault_storage.text_2": "Однако содержимое не может быть добавлено или взято вручную", "create.ponder.item_vault_storage.text_3": "Любые компоненты для передачи предметов могут как добавлять...", "create.ponder.item_vault_storage.text_4": "...так и забирать содержимое из этого контейнера", - "create.ponder.large_cogwheel.header": "Передаче силы вращения при помощи Больших шестерней", + "create.ponder.large_cogwheel.header": "Передачей силы вращения при помощи Больших шестерней", "create.ponder.large_cogwheel.text_1": "Большие шестерни могут соединяться между собой под прямым углом", "create.ponder.large_cogwheel.text_2": "Это поможет передавать скорость на другие оси вращения", - "create.ponder.linear_chassis_attachment.header": "Прикреплении блоков при помощи Линейных шасси", + "create.ponder.linear_chassis_attachment.header": "Прикреплением блоков при помощи Линейных шасси", "create.ponder.linear_chassis_attachment.text_1": "Открытые грани Линейных шасси можно сделать Липкими", "create.ponder.linear_chassis_attachment.text_2": "Кликните ещё раз, чтобы сделать противоположную сторону липкой", "create.ponder.linear_chassis_attachment.text_3": "ПКМ крадучись, пустой рукой, чтобы убрать слизь", "create.ponder.linear_chassis_attachment.text_4": "Липкие грани Линейных шасси будут прикреплять ряд блоков перед ним", "create.ponder.linear_chassis_attachment.text_5": "Используйте Ключ, чтобы настроить радиус прикрепления для этого шасси", "create.ponder.linear_chassis_attachment.text_6": "Прокрутка при удерживании Ctrl настраивает радиус всех присоединённых шасси", - "create.ponder.linear_chassis_attachment.text_7": "Прикрепление блоков на другие стороны требует использования Супер-клея", + "create.ponder.linear_chassis_attachment.text_7": "Прикрепление блоков на другие стороны требует использования Суперклея", "create.ponder.linear_chassis_attachment.text_8": "При помощи этих механик, структуры любой формы могут двигаться как Штуковина", - "create.ponder.linear_chassis_group.header": "Движении Линейных шасси группами", + "create.ponder.linear_chassis_group.header": "Движением Линейных шасси группами", "create.ponder.linear_chassis_group.text_1": "Линейные шасси соединяются с такими же блоками Шасси рядом с ними", "create.ponder.linear_chassis_group.text_2": "Когда один блок перемещается Штуковиной, другие двигаются с ним", "create.ponder.linear_chassis_group.text_3": "Шасси других типов или направленные в другом направлении не будут прикрепляться", - "create.ponder.mechanical_arm.header": "Настройке Механических рук", + "create.ponder.mechanical_arm.header": "Настройкой Механических рук", "create.ponder.mechanical_arm.text_1": "Входы и выходы для Механических рук должны быть назначены перед их установкой", - "create.ponder.mechanical_arm.text_2": "ПКМ по инвентарям, держа руку, чтобы назначить их целями", + "create.ponder.mechanical_arm.text_2": "ПКМ по компонентам, держа Механическую руку, чтобы назначить их целями", "create.ponder.mechanical_arm.text_3": "ПКМ ещё раз, для переключения между Входом (Синий) и Выходом (Оранжевый)", "create.ponder.mechanical_arm.text_4": "ЛКМ по компонентам, чтобы убрать выделение с них", "create.ponder.mechanical_arm.text_5": "После установки, Механические руки будут нацелены на ранее выбранные блоки", "create.ponder.mechanical_arm.text_6": "У них может быть неограниченное кол-во входов и выходов в зоне их досягаемости", - "create.ponder.mechanical_arm.text_7": "Однако, не каждый вид Инвентаря может взаимодействовать с ними напрямую", + "create.ponder.mechanical_arm.text_7": "Однако, не каждый вид компонента может взаимодействовать с ними напрямую", "create.ponder.mechanical_arm.text_8": "Воронки и Депо могут помочь заполнить этот пробел", - "create.ponder.mechanical_arm_filtering.header": "Фильтрации выходов Механической руки", + "create.ponder.mechanical_arm_filtering.header": "Фильтрацией выходов Механической руки", "create.ponder.mechanical_arm_filtering.text_1": "Входы", "create.ponder.mechanical_arm_filtering.text_2": "Выходы", "create.ponder.mechanical_arm_filtering.text_3": "Иногда желательно ограничить цели руки фильтром", @@ -2561,27 +2561,27 @@ "create.ponder.mechanical_arm_filtering.text_5": "Однако, Латунные воронки как цели сообщают свой фильтр руке", "create.ponder.mechanical_arm_filtering.text_6": "Рука достаточно умна, чтобы не подбирать предметы, которые она не сможет распределить", - "create.ponder.mechanical_arm_modes.header": "Режимах распределения Механической руки", + "create.ponder.mechanical_arm_modes.header": "Режимами распределения Механической руки", "create.ponder.mechanical_arm_modes.text_1": "Входы", "create.ponder.mechanical_arm_modes.text_2": "Выходы", - "create.ponder.mechanical_arm_modes.text_3": "Когда рука выбирает между несколькими доступными выходами...", + "create.ponder.mechanical_arm_modes.text_3": "Когда Рука выбирает между несколькими доступными выходами...", "create.ponder.mechanical_arm_modes.text_4": "...она сделает выбор исходя из своей настройки", "create.ponder.mechanical_arm_modes.text_5": "Прокрутка с Ключом позволит вам настроить это", - "create.ponder.mechanical_arm_modes.text_6": "Режим «по Кругу» переключается между всеми доступными выходами по очереди", + "create.ponder.mechanical_arm_modes.text_6": "Режим «По кругу» переключается между всеми доступными выходами по очереди", "create.ponder.mechanical_arm_modes.text_7": "Если выход не может принять больше предметов, он будет пропущен", - "create.ponder.mechanical_arm_modes.text_8": "«Принудительно по кругу» никогда не пропускает выходы, а ждёт пока они не освободятся", + "create.ponder.mechanical_arm_modes.text_8": "«Строго по кругу» никогда не пропускает выходы, а ждёт пока они не освободятся", "create.ponder.mechanical_arm_modes.text_9": "«Предпочитать первичную цель» приоритизирует выходы, выбранные ранее при настройке этой Руки", - "create.ponder.mechanical_arm_redstone.header": "Управлении Механическими руками редстоуном", + "create.ponder.mechanical_arm_redstone.header": "Управлением Механической рукой редстоуном", "create.ponder.mechanical_arm_redstone.text_1": "При активации редстоуном, Механические руки перестают работать", "create.ponder.mechanical_arm_redstone.text_2": "Перед остановкой, они завершат все начатые действия", "create.ponder.mechanical_arm_redstone.text_3": "Таким образом, инвертированный импульс может использоваться для вызова ровно одного срабатывания", - "create.ponder.mechanical_bearing.header": "Передвижении структур при помощи Механического подшипника", + "create.ponder.mechanical_bearing.header": "Передвижением структур при помощи Механического подшипника", "create.ponder.mechanical_bearing.text_1": "Механические подшипники прикрепляют блоки перед ними", "create.ponder.mechanical_bearing.text_2": "При получении силы вращения, они соберутся во Вращающуюся штуковину", - "create.ponder.mechanical_crafter.header": "Настройке Механических крафтеров", + "create.ponder.mechanical_crafter.header": "Настройкой Механических крафтеров", "create.ponder.mechanical_crafter.text_1": "Массив из Механических крафтеров можно использовать для автоматизации создания любого рецепта", "create.ponder.mechanical_crafter.text_2": "Можно настроить пути крафтеров при помощи Ключа", "create.ponder.mechanical_crafter.text_3": "Для правильной установки все пути должны сходиться в один выход с любой стороны", @@ -2591,62 +2591,62 @@ "create.ponder.mechanical_crafter.text_7": "Когда каждый слот на пути содержит предмет, процесс создания начнётся", "create.ponder.mechanical_crafter.text_8": "Для рецептов, не полностью занимающих крафтер-установку, старт можно спровоцировать Редстоун импульсом", - "create.ponder.mechanical_crafter_connect.header": "Объединении инвентарей Механических крафтеров", + "create.ponder.mechanical_crafter_connect.header": "Объединением инвентарей Механических крафтеров", "create.ponder.mechanical_crafter_connect.text_1": "Предметы можно поместить в крафтеры автоматически", "create.ponder.mechanical_crafter_connect.text_2": "При помощи ключа сзади крафтеров, их инвентари можно объединить", "create.ponder.mechanical_crafter_connect.text_3": "Все соединённые крафтеры теперь будут доступны из одного места ввода", - "create.ponder.mechanical_crafter_covers.header": "Закрытии слотов Механических крафтеров", + "create.ponder.mechanical_crafter_covers.header": "Закрытием слотов Механических крафтеров", "create.ponder.mechanical_crafter_covers.text_1": "Некоторые рецепты требуют дополнительных крафтеров, чтобы закрыть пробелы на пути", "create.ponder.mechanical_crafter_covers.text_2": "При помощи Заглушек на слоты, крафтеры могут играть роль пустых слотов в схеме", "create.ponder.mechanical_crafter_covers.text_3": "Общие входы созданные ключом сзади также могут быть доступны через закрытые крафтеры", - "create.ponder.mechanical_drill.header": "Ломании блоков Механической Дрелью", + "create.ponder.mechanical_drill.header": "Ломанием блоков Механической Дрелью", "create.ponder.mechanical_drill.text_1": "При подаче вращения, Механическая дрель будет ломать блоки перед ней", "create.ponder.mechanical_drill.text_2": "Скорость добычи зависит от подаваемой скорости", - "create.ponder.mechanical_drill_contraption.header": "Использовании Механических дрелей на штуковинах", + "create.ponder.mechanical_drill_contraption.header": "Использованием Механических дрелей на штуковинах", "create.ponder.mechanical_drill_contraption.text_1": "Когда дрели движутся как часть движимой штуковины...", "create.ponder.mechanical_drill_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", - "create.ponder.mechanical_harvester.header": "Использование Механических комбайнов на штуковинах", + "create.ponder.mechanical_harvester.header": "Использованием Механических комбайнов на штуковинах", "create.ponder.mechanical_harvester.text_1": "Когда комбайны движутся как часть движимой штуковины...", "create.ponder.mechanical_harvester.text_2": "Они будут убирать зрелый урожай на своём пути и высаживать его снова", - "create.ponder.mechanical_mixer.header": "Обработке предметов Механическим миксером", + "create.ponder.mechanical_mixer.header": "Обработкой предметов Механическим миксером", "create.ponder.mechanical_mixer.text_1": "При помощи Миксера и Чаши можно автоматизировать некоторые рецепты крафта", "create.ponder.mechanical_mixer.text_2": "Доступные рецепты включают любые бесформенные рецепты крафта и некоторые другие", "create.ponder.mechanical_mixer.text_3": "Некоторые из них требуют тепло от Горелки всполоха", "create.ponder.mechanical_mixer.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", - "create.ponder.mechanical_piston.header": "Перемещении структур при помощи Механических поршней", + "create.ponder.mechanical_piston.header": "Перемещением структур при помощи Механических поршней", "create.ponder.mechanical_piston.text_1": "Механические поршни могут двигать блоки перед ними", "create.ponder.mechanical_piston.text_2": "Скорость и Направление движения зависят от исходного вращения", "create.ponder.mechanical_piston.text_3": "Липкие Механические поршни могут тянуть назад присоединённые блоки", - "create.ponder.mechanical_piston_modes.header": "Режимах движения Механического поршня", + "create.ponder.mechanical_piston_modes.header": "Режимами движения Механического поршня", "create.ponder.mechanical_piston_modes.text_1": "Когда поршень останавливается, сдвинутая структура обратно становится блоками", "create.ponder.mechanical_piston_modes.text_2": "Можно настроить его так, чтобы структура никогда не становилась блоками или только на начальной позиции", - "create.ponder.mechanical_plough.header": "Использование Механических плугов на штуковинах", + "create.ponder.mechanical_plough.header": "Использованием Механических плугов на штуковинах", "create.ponder.mechanical_plough.text_1": "Когда плуги движутся как часть движимой штуковины...", "create.ponder.mechanical_plough.text_2": "...они будут ломать блоки без твёрдого хитбокса", "create.ponder.mechanical_plough.text_3": "К тому же, плуги могут создавать пашню", "create.ponder.mechanical_plough.text_4": "...они также могут толкать сущностей не причиняя им вреда", - "create.ponder.mechanical_press.header": "Обработке предметов Механическим прессом", + "create.ponder.mechanical_press.header": "Обработкой предметов Механическим прессом", "create.ponder.mechanical_press.text_1": "Механический пресс может обрабатывать предметы под собой", "create.ponder.mechanical_press.text_2": "Подаваемые предметы должны быть брошены или помещены на Депо под Прессом", "create.ponder.mechanical_press.text_3": "Когда предметы подаются на конвейере...", "create.ponder.mechanical_press.text_4": "Пресс будет задерживать и наполнять их автоматически", - "create.ponder.mechanical_press_compacting.header": "Спрессовании предметов Механическим прессом", + "create.ponder.mechanical_press_compacting.header": "Спрессовыванием предметов Механическим прессом", "create.ponder.mechanical_press_compacting.text_1": "Спрессовывание предметов в Чаше упакует их", - "create.ponder.mechanical_press_compacting.text_2": "Спрессование включает любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", + "create.ponder.mechanical_press_compacting.text_2": "Спрессовывание включает любые заполненные 2x2 или 3x3 рецепты крафта и некоторые другие", "create.ponder.mechanical_press_compacting.text_3": "Некоторым рецептам может потребоваться тепло от Горелки всполоха", "create.ponder.mechanical_press_compacting.text_4": "Слот для фильтра можно использовать в случае конфликта двух рецептов", - "create.ponder.mechanical_pump_flow.header": "Транспортировке жидкостей при помощи Механических помп", + "create.ponder.mechanical_pump_flow.header": "Транспортировкой жидкостей при помощи Механических помп", "create.ponder.mechanical_pump_flow.text_1": "Механические помпы направляют поток в присоединённые сети из труб", "create.ponder.mechanical_pump_flow.text_2": "Когда работает, стрелка указывает направление потока", "create.ponder.mechanical_pump_flow.text_3": "Часть сети сзади теперь качает жидкости...", @@ -2654,45 +2654,45 @@ "create.ponder.mechanical_pump_flow.text_5": "Смена направления вращения изменяет направление потока", "create.ponder.mechanical_pump_flow.text_6": "Используйте гаечный ключ, чтобы изменить направление помпы вручную", - "create.ponder.mechanical_pump_speed.header": "Производительности Механических помп", + "create.ponder.mechanical_pump_speed.header": "Производительностью Механических помп", "create.ponder.mechanical_pump_speed.text_1": "Независимо от скорости, Механические помпы оказывают влияние на трубы в радиусе 16 блоков", "create.ponder.mechanical_pump_speed.text_2": "Ускорение подаваемого вращения изменяет скорость распространения потоков...", "create.ponder.mechanical_pump_speed.text_3": "...также, как и скорость передачи жидкостей", "create.ponder.mechanical_pump_speed.text_4": "Помпы могут объединять свою производительность в общих сетях труб", "create.ponder.mechanical_pump_speed.text_5": "Изменение их направления может помочь сонаправить направление их потоков", - "create.ponder.mechanical_saw_breaker.header": "Спиливании деревьев Механической пилой", + "create.ponder.mechanical_saw_breaker.header": "Спиливанием деревьев Механической пилой", "create.ponder.mechanical_saw_breaker.text_1": "При подаче вращения, Механическая пила будет пилить деревья прямо перед ней", "create.ponder.mechanical_saw_breaker.text_2": "Для спиливания дерева полностью пила должна ломать последний блок дерева, соединённый с землёй", - "create.ponder.mechanical_saw_contraption.header": "Использовании Механических пил на штуковинах", + "create.ponder.mechanical_saw_contraption.header": "Использованием Механических пил на штуковинах", "create.ponder.mechanical_saw_contraption.text_1": "Когда пилы движутся как часть движимой штуковины...", "create.ponder.mechanical_saw_contraption.text_2": "...они будут ломать блоки, на которые они натыкаются", - "create.ponder.mechanical_saw_processing.header": "Обработке предметов на Механической пиле", + "create.ponder.mechanical_saw_processing.header": "Обработкой предметов на Механической пиле", "create.ponder.mechanical_saw_processing.text_1": "Направленные вверх Механические пилы могут обрабатывать множество предметов", "create.ponder.mechanical_saw_processing.text_2": "Обработанные предметы всегда движутся против подаваемого на пилу вращения", "create.ponder.mechanical_saw_processing.text_3": "Пилы могут работать с Механическими ремнями (конвейером)", "create.ponder.mechanical_saw_processing.text_4": "Когда из ингредиента можно получить несколько результатов, фильтр может уточнить его", "create.ponder.mechanical_saw_processing.text_5": "Без фильтра пила будет выбирать все возможные результаты по очереди", - "create.ponder.millstone.header": "Обработке предметов в Жерновах", + "create.ponder.millstone.header": "Обработкой предметов Жерновами", "create.ponder.millstone.text_1": "Жернова обрабатывают предметы перемалывая их", "create.ponder.millstone.text_2": "Их можно запустить при помощи шестерней с любой стороны", "create.ponder.millstone.text_3": "Бросьте или внесите предметы сверху", "create.ponder.millstone.text_4": "После некоторого времени результат можно забрать при помощи ПКМ", "create.ponder.millstone.text_5": "Продукты также можно вывести автоматически", - "create.ponder.nixie_tube.header": "Использовании Газоразрядных индикаторов", + "create.ponder.nixie_tube.header": "Использованием Газоразрядных индикаторов", "create.ponder.nixie_tube.text_1": "При подаче редстоун сигнала, Газоразрядные индикаторы отобразят его силу.", "create.ponder.nixie_tube.text_2": "С помощью бирок, отредактированных на наковальне, вы можете отобразить любой текст.", "create.ponder.nixie_tube.text_3": "Щелкните ПКМ с красителем, чтобы изменить цвет их дисплея", - "create.ponder.piston_pole.header": "Удлинителях Механического поршня", + "create.ponder.piston_pole.header": "Удлинителями Механического поршня", "create.ponder.piston_pole.text_1": "Без присоединённых Удлинителей, Механический поршень не может двигаться", "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к его задней части, определяет Диапазон выдвижения.", - "create.ponder.portable_fluid_interface.header": "Портативном жидкостном интерфейсе на штуковинах", + "create.ponder.portable_fluid_interface.header": "Портативным жидкостным интерфейсом на штуковинах", "create.ponder.portable_fluid_interface.text_1": "Жидкостные баки на движущихся штуковинах не могут быть доступны никаким трубам", "create.ponder.portable_fluid_interface.text_2": "Этот интерфейс может взаимодействовать с жидкостными баками без необходимости останавливать штуковину", "create.ponder.portable_fluid_interface.text_3": "Установите второй с промежутком в 1 или 2 блока между ними", @@ -2702,7 +2702,7 @@ "create.ponder.portable_fluid_interface.text_7": "...или выкачать их из штуковины", "create.ponder.portable_fluid_interface.text_8": "Если на какое-то время прекратится обмен содержимым — штуковина продолжит свой путь", - "create.ponder.portable_storage_interface.header": "Портативном интерфейсе хранения на штуковинах", + "create.ponder.portable_storage_interface.header": "Портативным интерфейсом хранения на штуковинах", "create.ponder.portable_storage_interface.text_1": "Инвентари на двигающихся штуковинах не могут быть открыты игроками", "create.ponder.portable_storage_interface.text_2": "Этот компонент может взаимодействовать с хранилищем без необходимости останавливать штуковину", "create.ponder.portable_storage_interface.text_3": "Установите второй с промежутком в 1 или 2 блока между ними", @@ -2712,34 +2712,34 @@ "create.ponder.portable_storage_interface.text_7": "...или вывести их из штуковины", "create.ponder.portable_storage_interface.text_8": "Если на какое-то время прекратится обмен предметами — штуковина продолжит свой путь", - "create.ponder.portable_storage_interface_redstone.header": "Управлении редстоуном", + "create.ponder.portable_storage_interface_redstone.header": "Управлением Портативного интерфейса редстоуном", "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал предотвратит включение стационарного интерфейса", - "create.ponder.powered_latch.header": "Управлении сигналами при помощи Питаемого рычага", + "create.ponder.powered_latch.header": "Управлением сигналами при помощи Питаемого рычага", "create.ponder.powered_latch.text_1": "Питаемый рычаг — управляемый редстоуном рычаг", "create.ponder.powered_latch.text_2": "Сигнал сзади включает его", "create.ponder.powered_latch.text_3": "Сигналы сбоку обратно выключают его", "create.ponder.powered_latch.text_4": "Питаемые рычаги также можно переключать вручную", - "create.ponder.powered_toggle_latch.header": "Управлении сигналами при помощи Питаемого рычага-переключателя", + "create.ponder.powered_toggle_latch.header": "Управлением сигналами при помощи Питаемого рычага-переключателя", "create.ponder.powered_toggle_latch.text_1": "Питаемый рычаг-переключатель — управляемый редстоуном рычаг", "create.ponder.powered_toggle_latch.text_2": "Сигналы сзади переключают его состояние", "create.ponder.powered_toggle_latch.text_3": "...включают и снова выключают", "create.ponder.powered_toggle_latch.text_4": "Питаемые рычаги-переключатели также можно переключать вручную", - "create.ponder.pulse_extender.header": "Использовании Редстоуновых удлинителей импульса", - "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность сигнала редстуона, проходящего через него", + "create.ponder.pulse_extender.header": "Использованием Редстоуновых удлинителей импульса", + "create.ponder.pulse_extender.text_1": "Редстоуновый удлинитель импульса может увеличить продолжительность сигнала редстоуна, проходящего через него", "create.ponder.pulse_extender.text_2": "Он активируется после небольшой задержки...", - "create.ponder.pulse_extender.text_3": "...и выключается через настраеваемое время", + "create.ponder.pulse_extender.text_3": "...и выключается через настраиваемое время", "create.ponder.pulse_extender.text_4": "С помощь прокрутки можно настроить время Удлинителя", "create.ponder.pulse_extender.text_5": "Можно настроить задержку вплоть до 30 минут", - "create.ponder.pulse_repeater.header": "Использовании Редстоуновых повторителей импульса", - "create.ponder.pulse_repeater.text_1": "Импульсные повторители укоротят любой поступающий сигнал редстуона до одного импульса", + "create.ponder.pulse_repeater.header": "Использованием Редстоуновых повторителей импульса", + "create.ponder.pulse_repeater.text_1": "Импульсные повторители укоротят любой поступающий сигнал редстоуна до одного импульса", "create.ponder.pulse_repeater.text_2": "С помощь колёсика мыши можно настроить время Импульсного повторителя", "create.ponder.pulse_repeater.text_3": "Можно настроить задержку вплоть до 30 минут", - "create.ponder.radial_chassis.header": "Присоединении блоков при помощи Радиальных шасси", + "create.ponder.radial_chassis.header": "Присоединением блоков при помощи Радиальных шасси", "create.ponder.radial_chassis.text_1": "Радиальное шасси соединяются с идентичными блоками шасси в ряд", "create.ponder.radial_chassis.text_2": "Когда один блок перемещается штуковиной, остальные двигаются с ним", "create.ponder.radial_chassis.text_3": "Боковые грани Радиального шасси можно сделать липкими", @@ -2750,11 +2750,11 @@ "create.ponder.radial_chassis.text_8": "При помощи ключа можно указать точный радиус для этого шасси", "create.ponder.radial_chassis.text_9": "Блоки не достижимые ни одной липкой гранью не прикрепятся", - "create.ponder.redstone_contact.header": "Контактах редстоун сигнала", - "create.ponder.redstone_contact.text_1": "Контакты редстоун сигнала направленные друг на друга будут излучать редстоун сигнал", - "create.ponder.redstone_contact.text_2": "Также применимо, когда один из них — часть двигающейся штуковины", + "create.ponder.redstone_contact.header": "Использованием Редстоуновых контактов", + "create.ponder.redstone_contact.text_1": "Редстоуновые контакты направленные друг на друга будут излучать редстоун сигнал", + "create.ponder.redstone_contact.text_2": "Также работает, когда один из них — часть двигающейся штуковины", - "create.ponder.redstone_link.header": "Использовании Редстоунового беспроводного передатчика сигнала", + "create.ponder.redstone_link.header": "Использованием Редстоунового беспроводного передатчика сигнала", "create.ponder.redstone_link.text_1": "Редстоуновые передатчики сигнала могут передавать редстоун сигнал без проводов", "create.ponder.redstone_link.text_2": "Нажмите Shift+ПКМ, чтобы переключить режим приёмника", "create.ponder.redstone_link.text_3": "ПКМ ключом сделает то же самое", @@ -2762,20 +2762,20 @@ "create.ponder.redstone_link.text_5": "Положите предметы в два слота, чтобы указать частоту", "create.ponder.redstone_link.text_6": "Передатчики только одной частоты могут сообщаться", - "create.ponder.rope_pulley.header": "Перемещении структур при помощи Лебёдки", + "create.ponder.rope_pulley.header": "Перемещением структур при помощи Лебёдки", "create.ponder.rope_pulley.text_1": "Лебёдки могут двигать блоки вертикально при подаче вращения", "create.ponder.rope_pulley.text_2": "Направление и скорость движения зависят от исходного вращения", - "create.ponder.rope_pulley_attachment.header": "Перемещении Лебёдок как частей штуковины", + "create.ponder.rope_pulley_attachment.header": "Перемещением Лебёдок как частей штуковины", "create.ponder.rope_pulley_attachment.text_1": "Когда лебёдки перемещаются штуковиной...", "create.ponder.rope_pulley_attachment.text_2": "...их присоединённая структура движется с ними", "create.ponder.rope_pulley_attachment.text_3": "Учитывайте, что лебёдки можно выдвигать только пока они простаивают", - "create.ponder.rope_pulley_modes.header": "Режимах движения Лебёдки", + "create.ponder.rope_pulley_modes.header": "Режимами движения Лебёдки", "create.ponder.rope_pulley_modes.text_1": "Когда лебёдка останавливается, сдвинутая структура обратно становится блоками", "create.ponder.rope_pulley_modes.text_2": "Можно настроить её так, чтобы структура никогда не становилась блоками или только на начальной позиции", - "create.ponder.rose_quartz_lamp.header": "Особенностях Фонаря из розового кварца", + "create.ponder.rose_quartz_lamp.header": "Особенностями Фонаря из розового кварца", "create.ponder.rose_quartz_lamp.text_1": "Фонарь из розового кварца активируются по сигналу редстоуна", "create.ponder.rose_quartz_lamp.text_2": "После этого он сам станет источником сигнала", "create.ponder.rose_quartz_lamp.text_3": "Когда несколько Фонарей расположены в группе...", @@ -2783,51 +2783,51 @@ "create.ponder.rose_quartz_lamp.text_5": "Компараторы выводят сигнал исходя из дистанции до ближайшего включённого Фонаря", "create.ponder.rose_quartz_lamp.text_6": "Фонари также можно переключать вручную с помощью Гаечного ключа", - "create.ponder.rotation_speed_controller.header": "Использовании Регулятора скорости вращения", + "create.ponder.rotation_speed_controller.header": "Использованием Регулятора скорости вращения", "create.ponder.rotation_speed_controller.text_1": "Регуляторы скорости вращения передают вращение от своих осей на Большую шестерню выше них", "create.ponder.rotation_speed_controller.text_2": "Можно настроить передаваемую скорость при помощи прокрутки по соответствующему месту сбоку", - "create.ponder.sail.header": "Сборке Мельниц при помощи Парусов", + "create.ponder.sail.header": "Сборкой Мельниц при помощи Парусов", "create.ponder.sail.text_1": "Паруса — удобные блоки для создания мельниц", "create.ponder.sail.text_2": "Они будут прикрепляться к блокам и друг к другу без использования суперклея или блоков шасси", "create.ponder.sail.text_3": "ПКМ красителем, чтобы покрасить их", "create.ponder.sail.text_4": "ПКМ ножницами, чтобы превратить их снова в раму", - "create.ponder.sail_frame.header": "Сборке Мельниц при помощи Рам парусов", + "create.ponder.sail_frame.header": "Сборкой Мельниц при помощи Рам парусов", "create.ponder.sail_frame.text_1": "Рамы парусов — удобные блоки для создания мельниц", "create.ponder.sail_frame.text_2": "Они будут прикрепляться к блокам и друг к другу без использования суперклея или блоков шасси", - "create.ponder.sequenced_gearshift.header": "Использовании Последовательной коробки передач", + "create.ponder.sequenced_gearshift.header": "Использованием Последовательной коробки передач", "create.ponder.sequenced_gearshift.text_1": "Последовательная коробка передач передает вращение по списку заданных инструкций", "create.ponder.sequenced_gearshift.text_2": "ПКМ, чтобы отрыть интерфейс для настройки", "create.ponder.sequenced_gearshift.text_3": "При получении Редстоун сигнала, он начнёт выполнять заданные инструкции по порядку", "create.ponder.sequenced_gearshift.text_4": "По завершению она будет дожидаться следующего Редстоун сигнала и начнёт сначала", "create.ponder.sequenced_gearshift.text_5": "Редстоун компаратор можно использовать для считывания текущего прогресса выполнения инструкций", - "create.ponder.shaft.header": "Передаче вращения при помощи Валов", + "create.ponder.shaft.header": "Передачей силы вращения при помощи Валов", "create.ponder.shaft.text_1": "Валы передают вращение по прямой", - "create.ponder.shaft_casing.header": "Обрамлении Валов", + "create.ponder.shaft_casing.header": "Обрамлением Валов", "create.ponder.shaft_casing.text_1": "Латунный или андезитовый корпус можно использовать для декорации Валов", - "create.ponder.smart_chute.header": "Фильтрации предметов при помощи Умных желобов", + "create.ponder.smart_chute.header": "Фильтрацией предметов при помощи Умных желобов", "create.ponder.smart_chute.text_1": "Умные желоба — вертикальные желоба с дополнительным контролем", "create.ponder.smart_chute.text_2": "Предметы в слоте фильтра уточняют, что они могут забирать и передавать", "create.ponder.smart_chute.text_3": "Используйте Колесо Мыши для уточнения размера забираемого стака", "create.ponder.smart_chute.text_4": "Редстоун сигнал выключает их", - "create.ponder.smart_pipe.header": "Управлении жидкостным потоком с помощью Умных труб", + "create.ponder.smart_pipe.header": "Управлением жидкостным потоком с помощью Умных труб", "create.ponder.smart_pipe.text_1": "Умные трубы могут помочь управлять потоками по типам жидкостей", "create.ponder.smart_pipe.text_2": "Размещенные непосредственно у источника, они могут указывать тип извлекаемой жидкости", "create.ponder.smart_pipe.text_3": "Просто щелкните ПКМ на слоте фильтра с любым предметом, содержащим нужную жидкость", "create.ponder.smart_pipe.text_4": "И при размещении глубже по сети труб умные трубы будут пропускать только подходящие жидкости.", - "create.ponder.speedometer.header": "Мониторинге Кинетической информации при помощи Спидометра", + "create.ponder.speedometer.header": "Мониторингом кинетической информации при помощи Спидометра", "create.ponder.speedometer.text_1": "Спидометры отображают текущую скорость присоединённых компонентов", "create.ponder.speedometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", "create.ponder.speedometer.text_3": "Компараторы могут испускать аналоговый Редстоун сигнал относительно измерений спидометра", - "create.ponder.spout_filling.header": "Наполнении предметов при помощи Дозатора", + "create.ponder.spout_filling.header": "Наполнением предметов при помощи Дозатора", "create.ponder.spout_filling.text_1": "Дозатор может заполнять подходящие предметы, расположенные под ним", "create.ponder.spout_filling.text_2": "К содержимому дозатора невозможно получить доступ вручную", "create.ponder.spout_filling.text_3": "Вместо этого можно использовать трубы для подачи в него жидкостей", @@ -2835,14 +2835,14 @@ "create.ponder.spout_filling.text_5": "Когда предметы подаются конвейером...", "create.ponder.spout_filling.text_6": "Дозатор будет удерживать и обрабатывать их автоматически", - "create.ponder.stabilized_bearings.header": "Стабилизации Штуковин", + "create.ponder.stabilized_bearings.header": "Стабилизацией Штуковин", "create.ponder.stabilized_bearings.text_1": "Когда Механические подшипники являются частью двигающейся структуры...", "create.ponder.stabilized_bearings.text_2": "...они будут пытаться держаться ровно", "create.ponder.stabilized_bearings.text_3": "Опять же, подшипники присоединяют блоки перед ними", "create.ponder.stabilized_bearings.text_4": "И в результате целая под-структура будет держаться ровно", - "create.ponder.steam_engine.header": "Настройке Паровых двигателей", - "create.ponder.steam_engine.text_1": "Паровые двигатели можно разместить на баке с жидкостью", + "create.ponder.steam_engine.header": "Настройкой Паровых двигателей", + "create.ponder.steam_engine.text_1": "Паровые двигатели можно разместить на Жидкостном баке", "create.ponder.steam_engine.text_10": "4 уровень", "create.ponder.steam_engine.text_11": "4 двигателя", "create.ponder.steam_engine.text_12": "8 уровень", @@ -2851,83 +2851,83 @@ "create.ponder.steam_engine.text_3": "С достаточным количеством воды, уровнем нагрева и размером котла...", "create.ponder.steam_engine.text_4": "...они будут генерировать вращательную силу", "create.ponder.steam_engine.text_5": "Для минимальной установки требуется 4 Жидкостных бака", - "create.ponder.steam_engine.text_6": "С помощью Горелки Всполоха можно увеличить выходную мощность", - "create.ponder.steam_engine.text_7": "Более высокие уровни мощности требуют больше воды, размера котельной и нагрева", + "create.ponder.steam_engine.text_6": "С помощью Горелки всполоха можно увеличить выходную мощность", + "create.ponder.steam_engine.text_7": "Более высокие уровни мощности требуют больше воды, размера котла и уровня нагрева", "create.ponder.steam_engine.text_8": "Текущий уровень мощности котла можно проверить с помощью Инженерных очков", - "create.ponder.steam_engine.text_9": "С каждым добавленным уровнем мощности, дополнительный Двигатель может работать на полную мощность", + "create.ponder.steam_engine.text_9": "С каждым добавленным уровнем мощности, каждый дополнительный Двигатель может работать на полную мощность", - "create.ponder.steam_whistle.header": "Настройки Паровых свистков", + "create.ponder.steam_whistle.header": "Использованием Паровых свистков", "create.ponder.steam_whistle.text_1": "Паровые свистки можно разместить на Жидкостном баке", "create.ponder.steam_whistle.text_2": "Если Бак получает достаточно тепла...", "create.ponder.steam_whistle.text_3": "...Свисток будет играть определённую ноту при активации", "create.ponder.steam_whistle.text_4": "Используйте дополнительный Свисток на блоке, чтобы понизить высоту его звука", "create.ponder.steam_whistle.text_5": "Переключайтесь между тремя разными октавами с помощью Гаечного ключа", - "create.ponder.steam_whistle.text_6": "Инженерные очки могут помочь узнать текущую высоту звука", + "create.ponder.steam_whistle.text_6": "Инженерные очки помогут узнать текущую высоту звука", - "create.ponder.sticker.header": "Прикреплении блоков при помощи Липучки", + "create.ponder.sticker.header": "Прикреплением блоков при помощи Липучки", "create.ponder.sticker.text_1": "Липучки идеально подходят для Редстоун-управляемого присоединения блоков", "create.ponder.sticker.text_2": "При получении сигнала они переключают своё состояние", "create.ponder.sticker.text_3": "Если он теперь движется в штуковине, то блок будет двигаться с ним", "create.ponder.sticker.text_4": "При повторном переключении блок больше не будет прикреплён", - "create.ponder.stressometer.header": "Мониторинге кинетической информации при помощи Стрессометра", + "create.ponder.stressometer.header": "Мониторингом кинетической информации при помощи Стрессометра", "create.ponder.stressometer.text_1": "Стрессометр отображает текущую допустимую нагрузку присоединённой кинетической сети", "create.ponder.stressometer.text_2": "При ношении Инженерных очков игрок может получить более полную информацию от прибора", "create.ponder.stressometer.text_3": "Компараторы могут испускать аналоговый редстоун сигнал относительно измерений стрессометра", - "create.ponder.super_glue.header": "Присоединении блоков при помощи Супер-клея", - "create.ponder.super_glue.text_1": "Супер-клей можно использовать между двумя любыми блоками", - "create.ponder.super_glue.text_2": "Скреплённые блоки будут двигаться вместе при сборке в штуковну", - "create.ponder.super_glue.text_3": "Когда вы супер-клей во второй руке...", + "create.ponder.super_glue.header": "Присоединением блоков при помощи Суперклея", + "create.ponder.super_glue.text_1": "Суперклей можно использовать между двумя любыми блоками", + "create.ponder.super_glue.text_2": "Скреплённые блоки будут двигаться вместе при сборке в штуковину", + "create.ponder.super_glue.text_3": "Когда вы суперклей во второй руке...", "create.ponder.super_glue.text_4": "...добавленные блоки будут сразу приклеены к грани, на которую они были поставлены", - "create.ponder.super_glue.text_5": "Супер-клей можно удалить левым кликом", + "create.ponder.super_glue.text_5": "Суперклей можно удалить левым кликом", "create.ponder.super_glue.text_6": "Блоки, висящие на других, обычно не требуют клея", - "create.ponder.track_chunks.header": "Пересечении незагруженных чанков", + "create.ponder.track_chunks.header": "Пересечением поездом незагруженных чанков", "create.ponder.track_chunks.text_1": "Железнодорожные пути остаются функциональными вне загруженных чанков", "create.ponder.track_chunks.text_2": "Поезда будут путешествовать по неактивным участкам мира без каких либо проблем", "create.ponder.track_chunks.text_3": "Они по-прежнему будут останавливаться на станциях или красных сигналах Светофора", "create.ponder.track_chunks.text_4": "Однако дрели и другие машины на борту работать не будут", "create.ponder.track_chunks.text_5": "Оказавшись рядом с игроком, поезд снова появится", - "create.ponder.track_observer.header": "Обнаружении поездов", + "create.ponder.track_observer.header": "Обнаружением проходящих поездов", "create.ponder.track_observer.text_1": "Выберите Путь, затем поместите Железнодорожный наблюдатель рядом", "create.ponder.track_observer.text_2": "Наблюдатель обнаружит любые поезда, проходящие через маркер на рельсах", "create.ponder.track_observer.text_3": "Наблюдатели могут быть настроены для обнаружения определённого груза", - "create.ponder.track_placement.header": "Размещении Железнодорожных путей", - "create.ponder.track_placement.text_1": "Встречайте новый тип рельсов, разработанный для Железнодорожных штуковин", + "create.ponder.track_placement.header": "Размещением Железнодорожных путей", + "create.ponder.track_placement.text_1": "Встречайте новый тип рельсов, разработанный для Железнодорожных штуковин!", "create.ponder.track_placement.text_2": "Чтобы разместить несколько путей сразу, нажмите на существующие Пути", "create.ponder.track_placement.text_3": "Затем разместите или выберите вторые Пути", "create.ponder.track_placement.text_4": "Железнодорожные пути также могут быть размещены в виде поворотов или склонов", "create.ponder.track_placement.text_5": "При соединении дорожки будут пытаться сделать каждый поворот одинакового размера", "create.ponder.track_placement.text_6": "Удержание Ctrl при размещении...", "create.ponder.track_placement.text_7": "...создаст самый длинный возможный изгиб", - "create.ponder.track_placement.text_8": "Материалы во второй руке будут подкадыватся под Пути автоматически", + "create.ponder.track_placement.text_8": "Материалы во второй руке будут подкладываться под Пути автоматически", - "create.ponder.track_portal.header": "Железнодорожных путях и портале в Незер", - "create.ponder.track_portal.text_1": "Пути, размещёные напротив портала в Незер...", - "create.ponder.track_portal.text_2": "...попытаютя создать Пути на другой стороне", + "create.ponder.track_portal.header": "Железнодорожными путями и портале Незера", + "create.ponder.track_portal.text_1": "Пути, размещённые напротив портала Незера...", + "create.ponder.track_portal.text_2": "...попытаются создать Пути на другой стороне", "create.ponder.track_portal.text_3": "Поезда на этом пути теперь могут путешествовать по измерениям", - "create.ponder.train_assembly.header": "Сборке поездов", - "create.ponder.train_assembly.text_1": "Выберите Железнодорожный путь, затем разместите рядом Станцию", + "create.ponder.train_assembly.header": "Сборкой поездов", + "create.ponder.train_assembly.text_1": "Выберите участок Железнодорожных путей, затем разместите рядом Станцию", "create.ponder.train_assembly.text_10": "Каждый поезд требует Контроллер поезда на борту", "create.ponder.train_assembly.text_11": "Дополнительный Контроллер позволяет отправляться со Станций в обоих направлениях", "create.ponder.train_assembly.text_12": "Откройте интерфейс Станции и подтвердите процесс сборки", "create.ponder.train_assembly.text_13": "Поезда можно разобрать обратно на блоки только на Станциях", - "create.ponder.train_assembly.text_14": "При использовании на Станции карты, добавит маркер этого места", + "create.ponder.train_assembly.text_14": "При использовании на Станции карты, добавит на неё маркер этого места", "create.ponder.train_assembly.text_15": "Собранные поезда можно перемещать на ближайшие пути с помощью Гаечного ключа", "create.ponder.train_assembly.text_2": "Станции — это путевые точки вашей железнодорожной сети", "create.ponder.train_assembly.text_3": "Чтобы создать новый поезд, откройте интерфейс Станции и переключитесь в режим сборки", "create.ponder.train_assembly.text_4": "Во время сборки к этой Станции не будут подъезжать поезда, следующие по Расписанию", "create.ponder.train_assembly.text_5": "Создавайте новые вагонные тележки, используя Железнодорожный корпус на путях", "create.ponder.train_assembly.text_6": "Нажмите на тележку ещё раз, чтобы переключаться между их вариациями внешнего вида", - "create.ponder.train_assembly.text_7": "Приклейте блоки с помощью Супер-клея", + "create.ponder.train_assembly.text_7": "Приклейте блоки с помощью Суперклея", "create.ponder.train_assembly.text_8": "Собранные поезда будут двигаться быстрее, если они смогут найти топливо в прикреплённых сундуках или бочках", "create.ponder.train_assembly.text_9": "Топливо, находящееся в Хранилищах, не будет потребляться поездом", - "create.ponder.train_controls.header": "Управлении поездами", + "create.ponder.train_controls.header": "Управлением поездами", "create.ponder.train_controls.text_1": "Контроллер поезда требуются на каждой Железнодорожной штуковине", "create.ponder.train_controls.text_2": "После сборки щёлкните ПКМ по блоку, чтобы начать движение", "create.ponder.train_controls.text_3": "Ускоряйте и управляйте поездом, используя клавиши движения", @@ -2937,56 +2937,56 @@ "create.ponder.train_controls.text_7": "Прикреплённые Свистки можно активировать клавишей бега", "create.ponder.train_controls.text_8": "Нажмите Shift или кликните снова, чтобы перестать управлять поездом", - "create.ponder.train_schedule.header": "Использовании Расписаний поездов", + "create.ponder.train_schedule.header": "Использованием Расписаний поездов", "create.ponder.train_schedule.text_1": "Расписания позволяют другим машинистам управлять поездами", "create.ponder.train_schedule.text_2": "Щелкните ПКМ с предметом в руке, чтобы открыть его интерфейс", "create.ponder.train_schedule.text_3": "После составления расписание может быть передано машинисту поезда", - "create.ponder.train_schedule.text_4": "Любой моб или Горелка Всполоха, сидящий перед Контроллером поезда, является подходящим кандидатом в машинисты", + "create.ponder.train_schedule.text_4": "Любой моб или Горелка всполоха, сидящий перед Контроллером поезда, является подходящим кандидатом в машинисты", "create.ponder.train_schedule.text_5": "С помощью поводка можно легче усадить потенциального машиниста на его место", "create.ponder.train_schedule.text_6": "Расписания можно забирать у машинистов в любой момент времени", - "create.ponder.train_signal_placement.header": "Размещении Железнодорожных светофоров", + "create.ponder.train_signal_placement.header": "Размещением Железнодорожных светофоров", "create.ponder.train_signal_placement.text_1": "Выберите Железнодорожный путь, затем разместите Светофор поблизости", "create.ponder.train_signal_placement.text_2": "Светофоры регулируют поток поездов, которые управляются не игроками", "create.ponder.train_signal_placement.text_3": "Поезда следующие по расписанию никогда не будут пересекать сигналы в противоположном направлении", "create.ponder.train_signal_placement.text_4": "...если не добавлен второй Светофор, направленный в противоположную сторону", - "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать сигналные огни более заметными", + "create.ponder.train_signal_placement.text_5": "К Светофорам можно прикрепить Газоразрядный индикатор, чтобы сделать сигнальные огни более заметными", - "create.ponder.train_signal_redstone.header": "Железнодорожных светофорах и редстоуне", + "create.ponder.train_signal_redstone.header": "Железнодорожными светофорами и редстоуне", "create.ponder.train_signal_redstone.text_1": "Сигнал Светофора может быть переключен вручную с помощью редстоуна", - "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора испускает сигнал редстоуна, получаемый компаратором", + "create.ponder.train_signal_redstone.text_2": "И наоборот, запрещающий сигнал Светофора, испускает сигнал редстоуна, получаемый компаратором", - "create.ponder.train_signal_signaling.header": "Предотвращении аварий с помощью Железнодорожных светофоров", + "create.ponder.train_signal_signaling.header": "Предотвращением аварий с помощью Железнодорожных светофоров", "create.ponder.train_signal_signaling.text_1": "Светофоры делят пути на сегменты", - "create.ponder.train_signal_signaling.text_2": "Если сегмент занят, проезд другим поездам запрещён", + "create.ponder.train_signal_signaling.text_2": "Если сегмент занят — проезд другим поездам запрещён", "create.ponder.train_signal_signaling.text_3": "Таким образом, каждый сегмент будет содержать только один поезд одновременно", "create.ponder.train_signal_signaling.text_4": "Второй режим Светофора доступен через переключение Гаечным ключом", - "create.ponder.train_signal_signaling.text_5": "Сегменты латунного сигнала обычно переходят в стандартные сигналы", - "create.ponder.train_signal_signaling.text_6": "Этот специальный сигнал может останавливать поезда при втором условии", + "create.ponder.train_signal_signaling.text_5": "Сегменты жёлтого сигнала обычно переходят в стандартные сигналы", + "create.ponder.train_signal_signaling.text_6": "Этот особый сигнал может останавливать поезда при втором условии", "create.ponder.train_signal_signaling.text_7": "Он остановит поезда, которые при подъезде...", "create.ponder.train_signal_signaling.text_8": "...не смогут сразу покинуть сегмент", "create.ponder.train_signal_signaling.text_9": "Это помогает удерживать поезда, стоящие в очереди, вне загруженного сегмента", - "create.ponder.valve_handle.header": "Генерации силы вращения при помощи Вентилей", + "create.ponder.valve_handle.header": "Генерацией силы вращения при помощи Вентилей", "create.ponder.valve_handle.text_1": "Игроки могут использовать вентили для применения силы вращения вручную", "create.ponder.valve_handle.text_2": "Держите ПКМ для вращения против Часовой стрелки", "create.ponder.valve_handle.text_3": "Передаваемая ими скорость медленная и точная", "create.ponder.valve_handle.text_4": "Держите ПКМ крадучись для вращения по Часовой стрелке", "create.ponder.valve_handle.text_5": "Вентили можно окрашивать в эстетических целях", - "create.ponder.valve_pipe.header": "Управлении потоком жидкости с помощью Жидкостных клапанов", + "create.ponder.valve_pipe.header": "Управлением потоком жидкости с помощью Жидкостных клапанов", "create.ponder.valve_pipe.text_1": "Жидкостные клапаны помогают контролировать распространение жидкостей по трубопроводу", "create.ponder.valve_pipe.text_2": "Их входной вал контролирует, разрешена ли подача жидкости в данный момент", "create.ponder.valve_pipe.text_3": "При вращении в нужном направлении — клапан откроется", "create.ponder.valve_pipe.text_4": "Его можно снова закрыть, изменив направление вращения", - "create.ponder.water_wheel.header": "Генерации силы вращения при помощи Водяных колёс", + "create.ponder.water_wheel.header": "Генерацией силы вращения при помощи Водяных колёс", "create.ponder.water_wheel.text_1": "Водяные колёса берут силу соседних потоков воды", "create.ponder.water_wheel.text_2": "Чем больше сторон запитано, тем быстрее будет вращаться Водяное колесо", "create.ponder.water_wheel.text_3": "Лопасти колеса должны быть направлены против течения", "create.ponder.water_wheel.text_4": "Направленное в противоположную сторону, не будет так же эффективно", - "create.ponder.weighted_ejector.header": "Использовании Взвешенных катапульт", + "create.ponder.weighted_ejector.header": "Использованием Взвешенных катапульт", "create.ponder.weighted_ejector.text_1": "Нажмите ПКМ крадучись, держа катапульту, чтобы выбрать место цели", "create.ponder.weighted_ejector.text_10": "Теперь она ограниченна этим размера стака и будет активироваться только тогда, когда удерживаемый стак достигнет этого количества", "create.ponder.weighted_ejector.text_11": "Другие сущности, встав на катапульту, будут всегда активировать её", @@ -2999,18 +2999,18 @@ "create.ponder.weighted_ejector.text_8": "Если целью был выбран инвентарь, то катапульта будет ждать, пока в нём не появится место.", "create.ponder.weighted_ejector.text_9": "При помощи Ключа можно настроить необходимый размер стака", - "create.ponder.weighted_ejector_redstone.header": "Управлении Взвешенными катапультами редстоуном", + "create.ponder.weighted_ejector_redstone.header": "Управлением Взвешенными катапультами редстоуном", "create.ponder.weighted_ejector_redstone.text_1": "При подаче редстоун сигнала катапульты не будут активироваться", "create.ponder.weighted_ejector_redstone.text_2": "Кроме того, наблюдатели могут определить, когда катапульты срабатывают", - "create.ponder.weighted_ejector_tunnel.header": "Разделении стаков предметов при помощи Взвешенных катапульт", + "create.ponder.weighted_ejector_tunnel.header": "Разделением стаков предметов при помощи Взвешенных катапульт", "create.ponder.weighted_ejector_tunnel.text_1": "Объединённые с Латунными туннелями, катапульты могут делить стаки предметов по определённому количеству", "create.ponder.weighted_ejector_tunnel.text_2": "Сперва, настройте Латунный туннель на режим «Предпочтительно ближайшее», чтобы приоритизировать выход сбоку", "create.ponder.weighted_ejector_tunnel.text_3": "Размер стака, установленный на катапульте, теперь определяет отделяемое количество", "create.ponder.weighted_ejector_tunnel.text_4": "Пока новый стак нужного количества лежит на боковом выходе...", "create.ponder.weighted_ejector_tunnel.text_5": "...остаток продолжит свой путь", - "create.ponder.windmill_source.header": "Генерации силы вращения при помощи Подшипников ветряной мельницы", + "create.ponder.windmill_source.header": "Генерацией силы вращения при помощи Подшипников ветряной мельницы", "create.ponder.windmill_source.text_1": "Подшипники ветряной мельницы прикрепляются к блокам перед ними", "create.ponder.windmill_source.text_2": "Если прикреплено достаточно парусоподобных блоков, он может стать мельницей", "create.ponder.windmill_source.text_3": "Активированный при помощи ПКМ, Подшипник ветр. мельницы начнёт вырабатывать силу вращения", @@ -3019,7 +3019,7 @@ "create.ponder.windmill_source.text_6": "ПКМ по подшипнику в любое время, чтобы остановить его и изменить структуру", "create.ponder.windmill_source.text_7": "Щелкните ПКМ по подшипнику в любое время, чтобы остановить и снова изменить структуру", - "create.ponder.windmill_structure.header": "Установке Ветрянных мельниц", + "create.ponder.windmill_structure.header": "Установкой Ветряных мельниц", "create.ponder.windmill_structure.text_1": "Любая структура может считаться мельницей, пока она содержит как минимум 8 парусоподобных блоков", "_": "Thank you for translating Create!" diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json new file mode 100644 index 000000000..e0a1907e6 --- /dev/null +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -0,0 +1,3027 @@ +{ + "_": "Missing Localizations: 982", + + "_": "->------------------------] Game Elements [------------------------<-", + + "block.create.acacia_window": "Скло з акацією", + "block.create.acacia_window_pane": "Склянна панель з акацією", + "block.create.adjustable_chain_gearshift": "Регульований коробка передач", + "block.create.analog_lever": "Аналоговий важіль", + "block.create.andesite_belt_funnel": "Андезитова воронка на конвеєрі", + "block.create.andesite_casing": "Андезитовий корпус", + "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", + "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", + "block.create.andesite_encased_shaft": "Облицьований андезитовий вал", + "block.create.andesite_funnel": "Андезитова воронка", + "block.create.andesite_ladder": "UNLOCALIZED: Andesite Ladder", + "block.create.andesite_pillar": "Андезитова колона", + "block.create.andesite_tunnel": "Андезитовий тунель", + "block.create.asurine": "UNLOCALIZED: Asurine", + "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", + "block.create.basin": "Чаша", + "block.create.belt": "Конвеєр", + "block.create.birch_window": "Скло з березою", + "block.create.birch_window_pane": "Склянна панель з березою", + "block.create.black_nixie_tube": "Чорна ніксі-труба", + "block.create.black_sail": "Чорне вітрило", + "block.create.black_seat": "Чорне сидіння", + "block.create.black_toolbox": "Чорний ящик для інструментів", + "block.create.black_valve_handle": "Чорний ручний клапан", + "block.create.blaze_burner": "Пальник блейза", + "block.create.blue_nixie_tube": "Синя ніксі-труба", + "block.create.blue_sail": "Синє вітрило", + "block.create.blue_seat": "Синє сидіння", + "block.create.blue_toolbox": "Синій ящик для інструментів", + "block.create.blue_valve_handle": "Синій ручний клапан", + "block.create.brass_belt_funnel": "Латунна воронка на конвеєрі", + "block.create.brass_block": "Латунний блок", + "block.create.brass_casing": "Латунний корпус", + "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", + "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", + "block.create.brass_encased_shaft": "Вал у латунному корпусі", + "block.create.brass_funnel": "Латунна воронка", + "block.create.brass_ladder": "UNLOCALIZED: Brass Ladder", + "block.create.brass_tunnel": "Латунний тунель", + "block.create.brown_nixie_tube": "Коричнева ніксі-труба", + "block.create.brown_sail": "Коричневе вітрило", + "block.create.brown_seat": "Коричневе сидіння", + "block.create.brown_toolbox": "Коричневий ящик для інструментів", + "block.create.brown_valve_handle": "Коричневий ручний клапан", + "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", + "block.create.cart_assembler": "Складальник вагонеток", + "block.create.chocolate": "Шоколад", + "block.create.chute": "Жолоб", + "block.create.clockwork_bearing": "Підшипник годинника", + "block.create.clutch": "Зчеплення", + "block.create.cogwheel": "Шестірня", + "block.create.content_observer": "Спостерігач вмісту", + "block.create.controller_rail": "Контролерна рейка", + "block.create.controls": "UNLOCALIZED: Train Controls", + "block.create.copper_backtank": "Мідний резервуар", + "block.create.copper_casing": "Мідний корпус", + "block.create.copper_ladder": "UNLOCALIZED: Copper Ladder", + "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", + "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", + "block.create.copper_shingles": "Мідна черепиця", + "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", + "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", + "block.create.copper_tiles": "Мідна плитка", + "block.create.copper_valve_handle": "Мідний ручний клапан", + "block.create.creative_crate": "Творчий ящик", + "block.create.creative_fluid_tank": "Творчий бак для рідини", + "block.create.creative_motor": "Творчий мотор", + "block.create.crimsite": "UNLOCALIZED: Crimsite", + "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", + "block.create.crimson_window": "Скло з багряним деревом", + "block.create.crimson_window_pane": "Склянна панель з багряним деревом", + "block.create.crushing_wheel": "Дробильне колесо", + "block.create.crushing_wheel_controller": "Контролер дробильного колеса", + "block.create.cuckoo_clock": "Годинник із зозулею", + "block.create.cut_andesite": "UNLOCALIZED: Cut Andesite", + "block.create.cut_andesite_brick_slab": "UNLOCALIZED: Cut Andesite Brick Slab", + "block.create.cut_andesite_brick_stairs": "UNLOCALIZED: Cut Andesite Brick Stairs", + "block.create.cut_andesite_brick_wall": "UNLOCALIZED: Cut Andesite Brick Wall", + "block.create.cut_andesite_bricks": "Цегла з тесаного андезиту", + "block.create.cut_andesite_slab": "Плита з тесаного андезиту", + "block.create.cut_andesite_stairs": "UNLOCALIZED: Cut Andesite Stairs", + "block.create.cut_andesite_wall": "UNLOCALIZED: Cut Andesite Wall", + "block.create.cut_asurine": "UNLOCALIZED: Cut Asurine", + "block.create.cut_asurine_brick_slab": "UNLOCALIZED: Cut Asurine Brick Slab", + "block.create.cut_asurine_brick_stairs": "UNLOCALIZED: Cut Asurine Brick Stairs", + "block.create.cut_asurine_brick_wall": "UNLOCALIZED: Cut Asurine Brick Wall", + "block.create.cut_asurine_bricks": "UNLOCALIZED: Cut Asurine Bricks", + "block.create.cut_asurine_slab": "UNLOCALIZED: Cut Asurine Slab", + "block.create.cut_asurine_stairs": "UNLOCALIZED: Cut Asurine Stairs", + "block.create.cut_asurine_wall": "UNLOCALIZED: Cut Asurine Wall", + "block.create.cut_calcite": "UNLOCALIZED: Cut Calcite", + "block.create.cut_calcite_brick_slab": "UNLOCALIZED: Cut Calcite Brick Slab", + "block.create.cut_calcite_brick_stairs": "UNLOCALIZED: Cut Calcite Brick Stairs", + "block.create.cut_calcite_brick_wall": "UNLOCALIZED: Cut Calcite Brick Wall", + "block.create.cut_calcite_bricks": "UNLOCALIZED: Cut Calcite Bricks", + "block.create.cut_calcite_slab": "UNLOCALIZED: Cut Calcite Slab", + "block.create.cut_calcite_stairs": "UNLOCALIZED: Cut Calcite Stairs", + "block.create.cut_calcite_wall": "UNLOCALIZED: Cut Calcite Wall", + "block.create.cut_crimsite": "UNLOCALIZED: Cut Crimsite", + "block.create.cut_crimsite_brick_slab": "UNLOCALIZED: Cut Crimsite Brick Slab", + "block.create.cut_crimsite_brick_stairs": "UNLOCALIZED: Cut Crimsite Brick Stairs", + "block.create.cut_crimsite_brick_wall": "UNLOCALIZED: Cut Crimsite Brick Wall", + "block.create.cut_crimsite_bricks": "UNLOCALIZED: Cut Crimsite Bricks", + "block.create.cut_crimsite_slab": "UNLOCALIZED: Cut Crimsite Slab", + "block.create.cut_crimsite_stairs": "UNLOCALIZED: Cut Crimsite Stairs", + "block.create.cut_crimsite_wall": "UNLOCALIZED: Cut Crimsite Wall", + "block.create.cut_deepslate": "UNLOCALIZED: Cut Deepslate", + "block.create.cut_deepslate_brick_slab": "UNLOCALIZED: Cut Deepslate Brick Slab", + "block.create.cut_deepslate_brick_stairs": "UNLOCALIZED: Cut Deepslate Brick Stairs", + "block.create.cut_deepslate_brick_wall": "UNLOCALIZED: Cut Deepslate Brick Wall", + "block.create.cut_deepslate_bricks": "UNLOCALIZED: Cut Deepslate Bricks", + "block.create.cut_deepslate_slab": "UNLOCALIZED: Cut Deepslate Slab", + "block.create.cut_deepslate_stairs": "UNLOCALIZED: Cut Deepslate Stairs", + "block.create.cut_deepslate_wall": "UNLOCALIZED: Cut Deepslate Wall", + "block.create.cut_diorite": "UNLOCALIZED: Cut Diorite", + "block.create.cut_diorite_brick_slab": "UNLOCALIZED: Cut Diorite Brick Slab", + "block.create.cut_diorite_brick_stairs": "UNLOCALIZED: Cut Diorite Brick Stairs", + "block.create.cut_diorite_brick_wall": "UNLOCALIZED: Cut Diorite Brick Wall", + "block.create.cut_diorite_bricks": "Цегла з тесаного діориту", + "block.create.cut_diorite_slab": "UNLOCALIZED: Cut Diorite Slab", + "block.create.cut_diorite_stairs": "UNLOCALIZED: Cut Diorite Stairs", + "block.create.cut_diorite_wall": "UNLOCALIZED: Cut Diorite Wall", + "block.create.cut_dripstone": "UNLOCALIZED: Cut Dripstone", + "block.create.cut_dripstone_brick_slab": "UNLOCALIZED: Cut Dripstone Brick Slab", + "block.create.cut_dripstone_brick_stairs": "UNLOCALIZED: Cut Dripstone Brick Stairs", + "block.create.cut_dripstone_brick_wall": "UNLOCALIZED: Cut Dripstone Brick Wall", + "block.create.cut_dripstone_bricks": "UNLOCALIZED: Cut Dripstone Bricks", + "block.create.cut_dripstone_slab": "UNLOCALIZED: Cut Dripstone Slab", + "block.create.cut_dripstone_stairs": "UNLOCALIZED: Cut Dripstone Stairs", + "block.create.cut_dripstone_wall": "UNLOCALIZED: Cut Dripstone Wall", + "block.create.cut_granite": "UNLOCALIZED: Cut Granite", + "block.create.cut_granite_brick_slab": "UNLOCALIZED: Cut Granite Brick Slab", + "block.create.cut_granite_brick_stairs": "UNLOCALIZED: Cut Granite Brick Stairs", + "block.create.cut_granite_brick_wall": "UNLOCALIZED: Cut Granite Brick Wall", + "block.create.cut_granite_bricks": "UNLOCALIZED: Cut Granite Bricks", + "block.create.cut_granite_slab": "UNLOCALIZED: Cut Granite Slab", + "block.create.cut_granite_stairs": "UNLOCALIZED: Cut Granite Stairs", + "block.create.cut_granite_wall": "UNLOCALIZED: Cut Granite Wall", + "block.create.cut_limestone": "UNLOCALIZED: Cut Limestone", + "block.create.cut_limestone_brick_slab": "UNLOCALIZED: Cut Limestone Brick Slab", + "block.create.cut_limestone_brick_stairs": "UNLOCALIZED: Cut Limestone Brick Stairs", + "block.create.cut_limestone_brick_wall": "UNLOCALIZED: Cut Limestone Brick Wall", + "block.create.cut_limestone_bricks": "UNLOCALIZED: Cut Limestone Bricks", + "block.create.cut_limestone_slab": "UNLOCALIZED: Cut Limestone Slab", + "block.create.cut_limestone_stairs": "UNLOCALIZED: Cut Limestone Stairs", + "block.create.cut_limestone_wall": "UNLOCALIZED: Cut Limestone Wall", + "block.create.cut_ochrum": "UNLOCALIZED: Cut Ochrum", + "block.create.cut_ochrum_brick_slab": "UNLOCALIZED: Cut Ochrum Brick Slab", + "block.create.cut_ochrum_brick_stairs": "UNLOCALIZED: Cut Ochrum Brick Stairs", + "block.create.cut_ochrum_brick_wall": "UNLOCALIZED: Cut Ochrum Brick Wall", + "block.create.cut_ochrum_bricks": "UNLOCALIZED: Cut Ochrum Bricks", + "block.create.cut_ochrum_slab": "UNLOCALIZED: Cut Ochrum Slab", + "block.create.cut_ochrum_stairs": "UNLOCALIZED: Cut Ochrum Stairs", + "block.create.cut_ochrum_wall": "UNLOCALIZED: Cut Ochrum Wall", + "block.create.cut_scorchia": "UNLOCALIZED: Cut Scorchia", + "block.create.cut_scorchia_brick_slab": "UNLOCALIZED: Cut Scorchia Brick Slab", + "block.create.cut_scorchia_brick_stairs": "UNLOCALIZED: Cut Scorchia Brick Stairs", + "block.create.cut_scorchia_brick_wall": "UNLOCALIZED: Cut Scorchia Brick Wall", + "block.create.cut_scorchia_bricks": "UNLOCALIZED: Cut Scorchia Bricks", + "block.create.cut_scorchia_slab": "UNLOCALIZED: Cut Scorchia Slab", + "block.create.cut_scorchia_stairs": "UNLOCALIZED: Cut Scorchia Stairs", + "block.create.cut_scorchia_wall": "UNLOCALIZED: Cut Scorchia Wall", + "block.create.cut_scoria": "UNLOCALIZED: Cut Scoria", + "block.create.cut_scoria_brick_slab": "UNLOCALIZED: Cut Scoria Brick Slab", + "block.create.cut_scoria_brick_stairs": "UNLOCALIZED: Cut Scoria Brick Stairs", + "block.create.cut_scoria_brick_wall": "UNLOCALIZED: Cut Scoria Brick Wall", + "block.create.cut_scoria_bricks": "UNLOCALIZED: Cut Scoria Bricks", + "block.create.cut_scoria_slab": "UNLOCALIZED: Cut Scoria Slab", + "block.create.cut_scoria_stairs": "UNLOCALIZED: Cut Scoria Stairs", + "block.create.cut_scoria_wall": "UNLOCALIZED: Cut Scoria Wall", + "block.create.cut_tuff": "UNLOCALIZED: Cut Tuff", + "block.create.cut_tuff_brick_slab": "UNLOCALIZED: Cut Tuff Brick Slab", + "block.create.cut_tuff_brick_stairs": "UNLOCALIZED: Cut Tuff Brick Stairs", + "block.create.cut_tuff_brick_wall": "UNLOCALIZED: Cut Tuff Brick Wall", + "block.create.cut_tuff_bricks": "UNLOCALIZED: Cut Tuff Bricks", + "block.create.cut_tuff_slab": "UNLOCALIZED: Cut Tuff Slab", + "block.create.cut_tuff_stairs": "UNLOCALIZED: Cut Tuff Stairs", + "block.create.cut_tuff_wall": "UNLOCALIZED: Cut Tuff Wall", + "block.create.cut_veridium": "UNLOCALIZED: Cut Veridium", + "block.create.cut_veridium_brick_slab": "UNLOCALIZED: Cut Veridium Brick Slab", + "block.create.cut_veridium_brick_stairs": "UNLOCALIZED: Cut Veridium Brick Stairs", + "block.create.cut_veridium_brick_wall": "UNLOCALIZED: Cut Veridium Brick Wall", + "block.create.cut_veridium_bricks": "UNLOCALIZED: Cut Veridium Bricks", + "block.create.cut_veridium_slab": "UNLOCALIZED: Cut Veridium Slab", + "block.create.cut_veridium_stairs": "UNLOCALIZED: Cut Veridium Stairs", + "block.create.cut_veridium_wall": "UNLOCALIZED: Cut Veridium Wall", + "block.create.cyan_nixie_tube": "Бірюзова ніксі-труба", + "block.create.cyan_sail": "Бірюзове вітрило", + "block.create.cyan_seat": "Бірюзове сидіння", + "block.create.cyan_toolbox": "Бірюзовий ящик для інструментів", + "block.create.cyan_valve_handle": "Бірюзовий ручний клапан", + "block.create.dark_oak_window": "Скло з темним дубом", + "block.create.dark_oak_window_pane": "Склянна панель з темним дубом", + "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", + "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", + "block.create.deployer": "Автономний активатор", + "block.create.depot": "Депо", + "block.create.diorite_pillar": "Колона з діоритового кругляка", + "block.create.display_board": "UNLOCALIZED: Display Board", + "block.create.display_link": "UNLOCALIZED: Display Link", + "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.encased_chain_drive": "Ланцюговий привід у корпусі", + "block.create.encased_fan": "Вентилятор у корпусі", + "block.create.encased_fluid_pipe": "Труба для рідини в корпусі", + "block.create.exposed_copper_shingle_slab": "UNLOCALIZED: Exposed Copper Shingle Slab", + "block.create.exposed_copper_shingle_stairs": "UNLOCALIZED: Exposed Copper Shingle Stairs", + "block.create.exposed_copper_shingles": "UNLOCALIZED: Exposed Copper Shingles", + "block.create.exposed_copper_tile_slab": "UNLOCALIZED: Exposed Copper Tile Slab", + "block.create.exposed_copper_tile_stairs": "UNLOCALIZED: Exposed Copper Tile Stairs", + "block.create.exposed_copper_tiles": "UNLOCALIZED: Exposed Copper Tiles", + "block.create.fake_track": "UNLOCALIZED: Track Marker for Maps", + "block.create.fluid_pipe": "Труба для рідини", + "block.create.fluid_tank": "Резервуар для рідини", + "block.create.fluid_valve": "Клапан для рідини", + "block.create.flywheel": "Маховик", + "block.create.framed_glass": "Скло в рамі", + "block.create.framed_glass_door": "UNLOCALIZED: Framed Glass Door", + "block.create.framed_glass_pane": "Склнна панель в рамі", + "block.create.framed_glass_trapdoor": "UNLOCALIZED: Framed Glass Trapdoor", + "block.create.gantry_carriage": "Шасі портального крана", + "block.create.gantry_shaft": "Портальний вал", + "block.create.gearbox": "Коробка", + "block.create.gearshift": "Перемикач передач", + "block.create.glass_fluid_pipe": "Скляна трубка для рідини", + "block.create.granite_pillar": "Колона з гранітового кругляку", + "block.create.gray_nixie_tube": "Сіра ніксі-труба", + "block.create.gray_sail": "Сіре вітрило", + "block.create.gray_seat": "Сіре сидіння", + "block.create.gray_toolbox": "Сірий ящик для інструментів", + "block.create.gray_valve_handle": "Сірий ручний клапан", + "block.create.green_nixie_tube": "Зелена ніксі-труба", + "block.create.green_sail": "Зелене вітрило", + "block.create.green_seat": "Зелене сидіння", + "block.create.green_toolbox": "Зелений ящик для інструментів", + "block.create.green_valve_handle": "Зелений ручний клапан", + "block.create.hand_crank": "Ручна рукоятка", + "block.create.haunted_bell": "Примарний дзвін", + "block.create.honey": "Мед", + "block.create.horizontal_framed_glass": "Скло в горизонтальній рамці", + "block.create.horizontal_framed_glass_pane": "Склянна панель в горизонтальній рамі", + "block.create.hose_pulley": "Шків шланга", + "block.create.item_drain": "Осушувач предметів", + "block.create.item_vault": "UNLOCALIZED: Item Vault", + "block.create.jungle_window": "Скло з тропічним деревом", + "block.create.jungle_window_pane": "Склянна панель з тропічним деревом", + "block.create.large_bogey": "UNLOCALIZED: Large Bogey", + "block.create.large_cogwheel": "Велика шестірня", + "block.create.layered_andesite": "Багатошаровий андезит", + "block.create.layered_asurine": "UNLOCALIZED: Layered Asurine", + "block.create.layered_calcite": "UNLOCALIZED: Layered Calcite", + "block.create.layered_crimsite": "UNLOCALIZED: Layered Crimsite", + "block.create.layered_deepslate": "UNLOCALIZED: Layered Deepslate", + "block.create.layered_diorite": "Багатошаровий діорит", + "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", + "block.create.layered_granite": "Багатошаровий граніт", + "block.create.layered_limestone": "Багатошаровий вапняк", + "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", + "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", + "block.create.layered_scoria": "Багатошаровий попіл", + "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", + "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.lectern_controller": "Багатошаровий контролер", + "block.create.light_blue_nixie_tube": "Блакитна ніксі-труба", + "block.create.light_blue_sail": "Блакитне вітрило", + "block.create.light_blue_seat": "Блакитне сидіння", + "block.create.light_blue_toolbox": "Блакитний ящик для інструментів", + "block.create.light_blue_valve_handle": "Блакитний ручний клапан", + "block.create.light_gray_nixie_tube": "Світло-сіра ніксі-труба", + "block.create.light_gray_sail": "Світло-сіре вітрило", + "block.create.light_gray_seat": "Світло-сіре сидіння", + "block.create.light_gray_toolbox": "Світло-сірий ящик для інструментів", + "block.create.light_gray_valve_handle": "Світло-сірий ручний клапан", + "block.create.lime_nixie_tube": "Лаймова ніксі-труба", + "block.create.lime_sail": "Лаймове вітрило", + "block.create.lime_seat": "Лаймове сидіння", + "block.create.lime_toolbox": "Лаймовий ящик для інструментів", + "block.create.lime_valve_handle": "Лаймовий ручний клапан", + "block.create.limestone": "Вапняк", + "block.create.limestone_pillar": "Вапнякова колона", + "block.create.linear_chassis": "Лінійне шасі", + "block.create.lit_blaze_burner": "Запалений пальник блейза", + "block.create.magenta_nixie_tube": "Пурпурна ніксі-труба", + "block.create.magenta_sail": "Пурпурне вітрило", + "block.create.magenta_seat": "Пурпурне сидіння", + "block.create.magenta_toolbox": "Пурпурний ящик для інструментів", + "block.create.magenta_valve_handle": "Пурпурний ручний клапан", + "block.create.mechanical_arm": "Механічна рука", + "block.create.mechanical_bearing": "Механічний підшипник", + "block.create.mechanical_crafter": "Механічний крафтер", + "block.create.mechanical_drill": "Механічна дриль", + "block.create.mechanical_harvester": "Механічний комбайн", + "block.create.mechanical_mixer": "Механічний міксер", + "block.create.mechanical_piston": "Механічний поршень", + "block.create.mechanical_piston_head": "Головка Механічного поршня", + "block.create.mechanical_plough": "Механічний плуг", + "block.create.mechanical_press": "Механічний прес", + "block.create.mechanical_pump": "Механічний насос", + "block.create.mechanical_saw": "Механічна пила", + "block.create.metal_bracket": "Металевий кронштейн", + "block.create.metal_girder": "UNLOCALIZED: Metal Girder", + "block.create.metal_girder_encased_shaft": "UNLOCALIZED: Metal Girder Encased Shaft", + "block.create.millstone": "Жорна", + "block.create.minecart_anchor": "Якір вагонетки", + "block.create.mysterious_cuckoo_clock": "Годинник із зозулею", + "block.create.nixie_tube": "Ніксі-труба", + "block.create.nozzle": "Насадка", + "block.create.oak_window": "Скло з дубом", + "block.create.oak_window_pane": "Склянна панель з дубом", + "block.create.ochrum": "UNLOCALIZED: Ochrum", + "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", + "block.create.orange_sail": "Помаранчеве вітрило", + "block.create.orange_seat": "Помаранчеве сидіння", + "block.create.orange_toolbox": "Помаранчевий ящик для інструментів", + "block.create.orange_valve_handle": "Помаранчевий ручний клапан", + "block.create.ornate_iron_window": "Вишукане залізне скло", + "block.create.ornate_iron_window_pane": "Вишукане залізна склянна панель", + "block.create.oxidized_copper_shingle_slab": "UNLOCALIZED: Oxidized Copper Shingle Slab", + "block.create.oxidized_copper_shingle_stairs": "UNLOCALIZED: Oxidized Copper Shingle Stairs", + "block.create.oxidized_copper_shingles": "UNLOCALIZED: Oxidized Copper Shingles", + "block.create.oxidized_copper_tile_slab": "UNLOCALIZED: Oxidized Copper Tile Slab", + "block.create.oxidized_copper_tile_stairs": "UNLOCALIZED: Oxidized Copper Tile Stairs", + "block.create.oxidized_copper_tiles": "UNLOCALIZED: Oxidized Copper Tiles", + "block.create.peculiar_bell": "Дивний дзвін", + "block.create.pink_nixie_tube": "Рожева ніксі-труба", + "block.create.pink_sail": "Рожеве вітрило", + "block.create.pink_seat": "Рожеве сидіння", + "block.create.pink_toolbox": "Рожевий ящик для інструментів", + "block.create.pink_valve_handle": "Рожевий ручний клапан", + "block.create.piston_extension_pole": "Поршневий подовжувач", + "block.create.placard": "UNLOCALIZED: Placard", + "block.create.polished_cut_andesite": "UNLOCALIZED: Polished Cut Andesite", + "block.create.polished_cut_andesite_slab": "UNLOCALIZED: Polished Cut Andesite Slab", + "block.create.polished_cut_andesite_stairs": "UNLOCALIZED: Polished Cut Andesite Stairs", + "block.create.polished_cut_andesite_wall": "UNLOCALIZED: Polished Cut Andesite Wall", + "block.create.polished_cut_asurine": "UNLOCALIZED: Polished Cut Asurine", + "block.create.polished_cut_asurine_slab": "UNLOCALIZED: Polished Cut Asurine Slab", + "block.create.polished_cut_asurine_stairs": "UNLOCALIZED: Polished Cut Asurine Stairs", + "block.create.polished_cut_asurine_wall": "UNLOCALIZED: Polished Cut Asurine Wall", + "block.create.polished_cut_calcite": "UNLOCALIZED: Polished Cut Calcite", + "block.create.polished_cut_calcite_slab": "UNLOCALIZED: Polished Cut Calcite Slab", + "block.create.polished_cut_calcite_stairs": "UNLOCALIZED: Polished Cut Calcite Stairs", + "block.create.polished_cut_calcite_wall": "UNLOCALIZED: Polished Cut Calcite Wall", + "block.create.polished_cut_crimsite": "UNLOCALIZED: Polished Cut Crimsite", + "block.create.polished_cut_crimsite_slab": "UNLOCALIZED: Polished Cut Crimsite Slab", + "block.create.polished_cut_crimsite_stairs": "UNLOCALIZED: Polished Cut Crimsite Stairs", + "block.create.polished_cut_crimsite_wall": "UNLOCALIZED: Polished Cut Crimsite Wall", + "block.create.polished_cut_deepslate": "UNLOCALIZED: Polished Cut Deepslate", + "block.create.polished_cut_deepslate_slab": "UNLOCALIZED: Polished Cut Deepslate Slab", + "block.create.polished_cut_deepslate_stairs": "UNLOCALIZED: Polished Cut Deepslate Stairs", + "block.create.polished_cut_deepslate_wall": "UNLOCALIZED: Polished Cut Deepslate Wall", + "block.create.polished_cut_diorite": "UNLOCALIZED: Polished Cut Diorite", + "block.create.polished_cut_diorite_slab": "UNLOCALIZED: Polished Cut Diorite Slab", + "block.create.polished_cut_diorite_stairs": "UNLOCALIZED: Polished Cut Diorite Stairs", + "block.create.polished_cut_diorite_wall": "UNLOCALIZED: Polished Cut Diorite Wall", + "block.create.polished_cut_dripstone": "UNLOCALIZED: Polished Cut Dripstone", + "block.create.polished_cut_dripstone_slab": "UNLOCALIZED: Polished Cut Dripstone Slab", + "block.create.polished_cut_dripstone_stairs": "UNLOCALIZED: Polished Cut Dripstone Stairs", + "block.create.polished_cut_dripstone_wall": "UNLOCALIZED: Polished Cut Dripstone Wall", + "block.create.polished_cut_granite": "UNLOCALIZED: Polished Cut Granite", + "block.create.polished_cut_granite_slab": "UNLOCALIZED: Polished Cut Granite Slab", + "block.create.polished_cut_granite_stairs": "UNLOCALIZED: Polished Cut Granite Stairs", + "block.create.polished_cut_granite_wall": "UNLOCALIZED: Polished Cut Granite Wall", + "block.create.polished_cut_limestone": "UNLOCALIZED: Polished Cut Limestone", + "block.create.polished_cut_limestone_slab": "UNLOCALIZED: Polished Cut Limestone Slab", + "block.create.polished_cut_limestone_stairs": "UNLOCALIZED: Polished Cut Limestone Stairs", + "block.create.polished_cut_limestone_wall": "UNLOCALIZED: Polished Cut Limestone Wall", + "block.create.polished_cut_ochrum": "UNLOCALIZED: Polished Cut Ochrum", + "block.create.polished_cut_ochrum_slab": "UNLOCALIZED: Polished Cut Ochrum Slab", + "block.create.polished_cut_ochrum_stairs": "UNLOCALIZED: Polished Cut Ochrum Stairs", + "block.create.polished_cut_ochrum_wall": "UNLOCALIZED: Polished Cut Ochrum Wall", + "block.create.polished_cut_scorchia": "UNLOCALIZED: Polished Cut Scorchia", + "block.create.polished_cut_scorchia_slab": "UNLOCALIZED: Polished Cut Scorchia Slab", + "block.create.polished_cut_scorchia_stairs": "UNLOCALIZED: Polished Cut Scorchia Stairs", + "block.create.polished_cut_scorchia_wall": "UNLOCALIZED: Polished Cut Scorchia Wall", + "block.create.polished_cut_scoria": "UNLOCALIZED: Polished Cut Scoria", + "block.create.polished_cut_scoria_slab": "UNLOCALIZED: Polished Cut Scoria Slab", + "block.create.polished_cut_scoria_stairs": "UNLOCALIZED: Polished Cut Scoria Stairs", + "block.create.polished_cut_scoria_wall": "UNLOCALIZED: Polished Cut Scoria Wall", + "block.create.polished_cut_tuff": "UNLOCALIZED: Polished Cut Tuff", + "block.create.polished_cut_tuff_slab": "UNLOCALIZED: Polished Cut Tuff Slab", + "block.create.polished_cut_tuff_stairs": "UNLOCALIZED: Polished Cut Tuff Stairs", + "block.create.polished_cut_tuff_wall": "UNLOCALIZED: Polished Cut Tuff Wall", + "block.create.polished_cut_veridium": "UNLOCALIZED: Polished Cut Veridium", + "block.create.polished_cut_veridium_slab": "UNLOCALIZED: Polished Cut Veridium Slab", + "block.create.polished_cut_veridium_stairs": "UNLOCALIZED: Polished Cut Veridium Stairs", + "block.create.polished_cut_veridium_wall": "UNLOCALIZED: Polished Cut Veridium Wall", + "block.create.portable_fluid_interface": "Портативний рідинний інтерфейс", + "block.create.portable_storage_interface": "Портативний інтерфейс зберігання", + "block.create.powered_latch": "Живлений важіль", + "block.create.powered_shaft": "UNLOCALIZED: Powered Shaft", + "block.create.powered_toggle_latch": "Живлюваний важіль-перемикач", + "block.create.pulley_magnet": "Магніт для шківа", + "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_repeater": "Повторювач імпульсів", + "block.create.purple_nixie_tube": "Фіолетова ніксі-труба", + "block.create.purple_sail": "Фіолетове вітрило", + "block.create.purple_seat": "Фіолетове сидіння", + "block.create.purple_toolbox": "Фіолетовий ящик для інструментів", + "block.create.purple_valve_handle": "Фіолетове ручний клапан", + "block.create.radial_chassis": "Радіальне шасі", + "block.create.railway_casing": "UNLOCALIZED: Train Casing", + "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.red_nixie_tube": "Червона ніксі-труба", + "block.create.red_sail": "Червоне вітрило", + "block.create.red_seat": "Червоне сидіння", + "block.create.red_toolbox": "Червоний ящик для інструментів", + "block.create.red_valve_handle": "Червоний ручний клапан", + "block.create.redstone_contact": "Редстоун контакт", + "block.create.redstone_link": "Редстоун посилання", + "block.create.refined_radiance_casing": "Сяючий корпус", + "block.create.rope": "Канат", + "block.create.rope_pulley": "Лебідка", + "block.create.rose_quartz_block": "UNLOCALIZED: Block of Rose Quartz", + "block.create.rose_quartz_lamp": "UNLOCALIZED: Rose Quartz Lamp", + "block.create.rose_quartz_tiles": "UNLOCALIZED: Rose Quartz Tiles", + "block.create.rotation_speed_controller": "Контролер швидкості обертання", + "block.create.sail_frame": "Каркас вітрила", + "block.create.schematic_table": "Схематичний стіл", + "block.create.schematicannon": "Схематична гармата", + "block.create.scorchia": "UNLOCALIZED: Scorchia", + "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", + "block.create.scoria": "Попіл", + "block.create.scoria_pillar": "Колона з пепельного кругляку", + "block.create.secondary_linear_chassis": "Вторинне лінійне шасі", + "block.create.sequenced_gearshift": "Послідовне перемикання передач", + "block.create.shadow_steel_casing": "Тіньовий корпус", + "block.create.shaft": "Вал", + "block.create.small_andesite_brick_slab": "UNLOCALIZED: Small Andesite Brick Slab", + "block.create.small_andesite_brick_stairs": "UNLOCALIZED: Small Andesite Brick Stairs", + "block.create.small_andesite_brick_wall": "UNLOCALIZED: Small Andesite Brick Wall", + "block.create.small_andesite_bricks": "UNLOCALIZED: Small Andesite Bricks", + "block.create.small_asurine_brick_slab": "UNLOCALIZED: Small Asurine Brick Slab", + "block.create.small_asurine_brick_stairs": "UNLOCALIZED: Small Asurine Brick Stairs", + "block.create.small_asurine_brick_wall": "UNLOCALIZED: Small Asurine Brick Wall", + "block.create.small_asurine_bricks": "UNLOCALIZED: Small Asurine Bricks", + "block.create.small_bogey": "UNLOCALIZED: Small Bogey", + "block.create.small_calcite_brick_slab": "UNLOCALIZED: Small Calcite Brick Slab", + "block.create.small_calcite_brick_stairs": "UNLOCALIZED: Small Calcite Brick Stairs", + "block.create.small_calcite_brick_wall": "UNLOCALIZED: Small Calcite Brick Wall", + "block.create.small_calcite_bricks": "UNLOCALIZED: Small Calcite Bricks", + "block.create.small_crimsite_brick_slab": "UNLOCALIZED: Small Crimsite Brick Slab", + "block.create.small_crimsite_brick_stairs": "UNLOCALIZED: Small Crimsite Brick Stairs", + "block.create.small_crimsite_brick_wall": "UNLOCALIZED: Small Crimsite Brick Wall", + "block.create.small_crimsite_bricks": "UNLOCALIZED: Small Crimsite Bricks", + "block.create.small_deepslate_brick_slab": "UNLOCALIZED: Small Deepslate Brick Slab", + "block.create.small_deepslate_brick_stairs": "UNLOCALIZED: Small Deepslate Brick Stairs", + "block.create.small_deepslate_brick_wall": "UNLOCALIZED: Small Deepslate Brick Wall", + "block.create.small_deepslate_bricks": "UNLOCALIZED: Small Deepslate Bricks", + "block.create.small_diorite_brick_slab": "UNLOCALIZED: Small Diorite Brick Slab", + "block.create.small_diorite_brick_stairs": "UNLOCALIZED: Small Diorite Brick Stairs", + "block.create.small_diorite_brick_wall": "UNLOCALIZED: Small Diorite Brick Wall", + "block.create.small_diorite_bricks": "UNLOCALIZED: Small Diorite Bricks", + "block.create.small_dripstone_brick_slab": "UNLOCALIZED: Small Dripstone Brick Slab", + "block.create.small_dripstone_brick_stairs": "UNLOCALIZED: Small Dripstone Brick Stairs", + "block.create.small_dripstone_brick_wall": "UNLOCALIZED: Small Dripstone Brick Wall", + "block.create.small_dripstone_bricks": "UNLOCALIZED: Small Dripstone Bricks", + "block.create.small_granite_brick_slab": "UNLOCALIZED: Small Granite Brick Slab", + "block.create.small_granite_brick_stairs": "UNLOCALIZED: Small Granite Brick Stairs", + "block.create.small_granite_brick_wall": "UNLOCALIZED: Small Granite Brick Wall", + "block.create.small_granite_bricks": "UNLOCALIZED: Small Granite Bricks", + "block.create.small_limestone_brick_slab": "UNLOCALIZED: Small Limestone Brick Slab", + "block.create.small_limestone_brick_stairs": "UNLOCALIZED: Small Limestone Brick Stairs", + "block.create.small_limestone_brick_wall": "UNLOCALIZED: Small Limestone Brick Wall", + "block.create.small_limestone_bricks": "UNLOCALIZED: Small Limestone Bricks", + "block.create.small_ochrum_brick_slab": "UNLOCALIZED: Small Ochrum Brick Slab", + "block.create.small_ochrum_brick_stairs": "UNLOCALIZED: Small Ochrum Brick Stairs", + "block.create.small_ochrum_brick_wall": "UNLOCALIZED: Small Ochrum Brick Wall", + "block.create.small_ochrum_bricks": "UNLOCALIZED: Small Ochrum Bricks", + "block.create.small_rose_quartz_tiles": "UNLOCALIZED: Small Rose Quartz Tiles", + "block.create.small_scorchia_brick_slab": "UNLOCALIZED: Small Scorchia Brick Slab", + "block.create.small_scorchia_brick_stairs": "UNLOCALIZED: Small Scorchia Brick Stairs", + "block.create.small_scorchia_brick_wall": "UNLOCALIZED: Small Scorchia Brick Wall", + "block.create.small_scorchia_bricks": "UNLOCALIZED: Small Scorchia Bricks", + "block.create.small_scoria_brick_slab": "UNLOCALIZED: Small Scoria Brick Slab", + "block.create.small_scoria_brick_stairs": "UNLOCALIZED: Small Scoria Brick Stairs", + "block.create.small_scoria_brick_wall": "UNLOCALIZED: Small Scoria Brick Wall", + "block.create.small_scoria_bricks": "UNLOCALIZED: Small Scoria Bricks", + "block.create.small_tuff_brick_slab": "UNLOCALIZED: Small Tuff Brick Slab", + "block.create.small_tuff_brick_stairs": "UNLOCALIZED: Small Tuff Brick Stairs", + "block.create.small_tuff_brick_wall": "UNLOCALIZED: Small Tuff Brick Wall", + "block.create.small_tuff_bricks": "UNLOCALIZED: Small Tuff Bricks", + "block.create.small_veridium_brick_slab": "UNLOCALIZED: Small Veridium Brick Slab", + "block.create.small_veridium_brick_stairs": "UNLOCALIZED: Small Veridium Brick Stairs", + "block.create.small_veridium_brick_wall": "UNLOCALIZED: Small Veridium Brick Wall", + "block.create.small_veridium_bricks": "UNLOCALIZED: Small Veridium Bricks", + "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.steam_engine": "UNLOCALIZED: Steam Engine", + "block.create.steam_whistle": "UNLOCALIZED: Steam Whistle", + "block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension", + "block.create.sticker": "Блок-липучка", + "block.create.sticky_mechanical_piston": "Липкий механічний поршень", + "block.create.stockpile_switch": "Налаштований компаратор", + "block.create.stressometer": "Стресометр", + "block.create.tiled_glass": "Кахельне скло", + "block.create.tiled_glass_pane": "Кахельне склянна панель", + "block.create.track": "UNLOCALIZED: Train Track", + "block.create.track_observer": "UNLOCALIZED: Train Observer", + "block.create.track_signal": "UNLOCALIZED: Train Signal", + "block.create.track_station": "UNLOCALIZED: Train Station", + "block.create.train_door": "UNLOCALIZED: Train Door", + "block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor", + "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "block.create.turntable": "Поворотний стіл", + "block.create.veridium": "UNLOCALIZED: Veridium", + "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", + "block.create.vertical_framed_glass": "Скло у вертикальній рамі", + "block.create.vertical_framed_glass_pane": "Склянна панель у вертикальній рамі", + "block.create.warped_window": "Скло з багряного дерева", + "block.create.warped_window_pane": "Склянна панель з багряного дерева", + "block.create.water_wheel": "Водяне колесо", + "block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab", + "block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs", + "block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles", + "block.create.waxed_copper_tile_slab": "UNLOCALIZED: Waxed Copper Tile Slab", + "block.create.waxed_copper_tile_stairs": "UNLOCALIZED: Waxed Copper Tile Stairs", + "block.create.waxed_copper_tiles": "UNLOCALIZED: Waxed Copper Tiles", + "block.create.waxed_exposed_copper_shingle_slab": "UNLOCALIZED: Waxed Exposed Copper Shingle Slab", + "block.create.waxed_exposed_copper_shingle_stairs": "UNLOCALIZED: Waxed Exposed Copper Shingle Stairs", + "block.create.waxed_exposed_copper_shingles": "UNLOCALIZED: Waxed Exposed Copper Shingles", + "block.create.waxed_exposed_copper_tile_slab": "UNLOCALIZED: Waxed Exposed Copper Tile Slab", + "block.create.waxed_exposed_copper_tile_stairs": "UNLOCALIZED: Waxed Exposed Copper Tile Stairs", + "block.create.waxed_exposed_copper_tiles": "UNLOCALIZED: Waxed Exposed Copper Tiles", + "block.create.waxed_oxidized_copper_shingle_slab": "UNLOCALIZED: Waxed Oxidized Copper Shingle Slab", + "block.create.waxed_oxidized_copper_shingle_stairs": "UNLOCALIZED: Waxed Oxidized Copper Shingle Stairs", + "block.create.waxed_oxidized_copper_shingles": "UNLOCALIZED: Waxed Oxidized Copper Shingles", + "block.create.waxed_oxidized_copper_tile_slab": "UNLOCALIZED: Waxed Oxidized Copper Tile Slab", + "block.create.waxed_oxidized_copper_tile_stairs": "UNLOCALIZED: Waxed Oxidized Copper Tile Stairs", + "block.create.waxed_oxidized_copper_tiles": "UNLOCALIZED: Waxed Oxidized Copper Tiles", + "block.create.waxed_weathered_copper_shingle_slab": "UNLOCALIZED: Waxed Weathered Copper Shingle Slab", + "block.create.waxed_weathered_copper_shingle_stairs": "UNLOCALIZED: Waxed Weathered Copper Shingle Stairs", + "block.create.waxed_weathered_copper_shingles": "UNLOCALIZED: Waxed Weathered Copper Shingles", + "block.create.waxed_weathered_copper_tile_slab": "UNLOCALIZED: Waxed Weathered Copper Tile Slab", + "block.create.waxed_weathered_copper_tile_stairs": "UNLOCALIZED: Waxed Weathered Copper Tile Stairs", + "block.create.waxed_weathered_copper_tiles": "UNLOCALIZED: Waxed Weathered Copper Tiles", + "block.create.weathered_copper_shingle_slab": "UNLOCALIZED: Weathered Copper Shingle Slab", + "block.create.weathered_copper_shingle_stairs": "UNLOCALIZED: Weathered Copper Shingle Stairs", + "block.create.weathered_copper_shingles": "UNLOCALIZED: Weathered Copper Shingles", + "block.create.weathered_copper_tile_slab": "UNLOCALIZED: Weathered Copper Tile Slab", + "block.create.weathered_copper_tile_stairs": "UNLOCALIZED: Weathered Copper Tile Stairs", + "block.create.weathered_copper_tiles": "UNLOCALIZED: Weathered Copper Tiles", + "block.create.weighted_ejector": "Зважена катапульта", + "block.create.white_nixie_tube": "Біла ніксі-труба", + "block.create.white_sail": "Біле вітрило", + "block.create.white_seat": "Біле сидіння", + "block.create.white_toolbox": "Білий ящик для інструментів", + "block.create.white_valve_handle": "Білий ручний клапан", + "block.create.windmill_bearing": "Підшипник вітряка", + "block.create.wooden_bracket": "Дерев'яний кронштейн", + "block.create.yellow_nixie_tube": "Жовта ніксі-труба", + "block.create.yellow_sail": "Жовте вітрило", + "block.create.yellow_seat": "Жовте сидіння", + "block.create.yellow_toolbox": "Жовтий ящик для інструментів", + "block.create.yellow_valve_handle": "Жовтий ручний клапан", + "block.create.zinc_block": "Цинковий блок", + "block.create.zinc_ore": "Цинкова руда", + + "enchantment.create.capacity": "Ємність", + "enchantment.create.potato_recovery": "Відновлення картоплі", + + "entity.create.carriage_contraption": "UNLOCALIZED: Carriage Contraption", + "entity.create.contraption": "Пристосування", + "entity.create.crafting_blueprint": "Створення креслення", + "entity.create.gantry_contraption": "Gantry Contraption", + "entity.create.potato_projectile": "Картопляний снаряд", + "entity.create.seat": "Сідло", + "entity.create.stationary_contraption": "Стаціонарне пристосування", + "entity.create.super_glue": "Суперклей", + + "fluid.create.potion": "Зілля", + "fluid.create.tea": "Чай будівельника", + + "item.create.andesite_alloy": "Андезитовий сплав", + "item.create.attribute_filter": "Фільтр атрибутів", + "item.create.bar_of_chocolate": "Плитка шоколаду", + "item.create.belt_connector": "Конвеєр", + "item.create.blaze_cake": "Торт «Вогняний».", + "item.create.blaze_cake_base": "Основа для «Вогняного» торта", + "item.create.brass_hand": "Латунна рука", + "item.create.brass_ingot": "Латунний злиток", + "item.create.brass_nugget": "Латунний самородок", + "item.create.brass_sheet": "Латунний лист", + "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_backtank": "Мідний балон", + "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_nugget": "Мідний самородок", + "item.create.copper_sheet": "Мідний лист", + "item.create.crafter_slot_cover": "Кришка слота крафта", + "item.create.crafting_blueprint": "Створення креслення", + "item.create.creative_blaze_cake": "Творчий «Вогняний» торт", + "item.create.crushed_aluminum_ore": "Подрібнена алюмінієва руда", + "item.create.crushed_copper_ore": "Подрібнена мідна руда", + "item.create.crushed_gold_ore": "Подрібнена мідна руда", + "item.create.crushed_iron_ore": "Подрібнена залізна руда", + "item.create.crushed_lead_ore": "Подрібнена свинцева руда", + "item.create.crushed_nickel_ore": "Подрібнена нікелева руда", + "item.create.crushed_osmium_ore": "Подрібнена осмієва руда", + "item.create.crushed_platinum_ore": "Подрібнена платинова руда", + "item.create.crushed_quicksilver_ore": "Подрібнена ртутна руда", + "item.create.crushed_silver_ore": "Подрібнена Срібна руда", + "item.create.crushed_tin_ore": "Подрібнена олов'яна руда", + "item.create.crushed_uranium_ore": "Подрібнена уранова руда", + "item.create.crushed_zinc_ore": "Подрібнена цинкова руда", + "item.create.diving_boots": "Чоботи для дайвінгу", + "item.create.diving_helmet": "Шолом для дайвінгу", + "item.create.dough": "Тісто", + "item.create.electron_tube": "Електронна лампа", + "item.create.empty_blaze_burner": "Пустий пальник блейза", + "item.create.empty_schematic": "Порожня схема", + "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.extendo_grip": "Довга рука", + "item.create.filter": "Фільтер", + "item.create.furnace_minecart_contraption": "Штуковина самоходной вагонетки", + "item.create.goggles": "Інженерні окуляри", + "item.create.golden_sheet": "Золотий лист", + "item.create.handheld_worldshaper": "Творчий світотворець", + "item.create.honey_bucket": "Відро з медом", + "item.create.honeyed_apple": "Яблуко з медом", + "item.create.incomplete_precision_mechanism": "Неповний прецизійний механізм", + "item.create.incomplete_track": "UNLOCALIZED: Incomplete Track", + "item.create.iron_sheet": "Залізний лист", + "item.create.linked_controller": "Підключений контролер", + "item.create.minecart_contraption": "Вагонеточна штуковина", + "item.create.minecart_coupling": "З'єднувач вагонеток", + "item.create.polished_rose_quartz": "Полірований рожевий кварц", + "item.create.potato_cannon": "Картопляна гармата", + "item.create.powdered_obsidian": "Обсідіановий порошок", + "item.create.precision_mechanism": "Прецизійний механізм", + "item.create.propeller": "Пропеллер", + "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.red_sand_paper": "Червоний наждачний папір", + "item.create.refined_radiance": "Вишукане сяйво", + "item.create.rose_quartz": "Hожевий кварц", + "item.create.sand_paper": "Наждачний папір", + "item.create.schedule": "UNLOCALIZED: Train Schedule", + "item.create.schematic": "Схема", + "item.create.schematic_and_quill": "Схема і перо", + "item.create.shadow_steel": "Тіньова сталь", + "item.create.sturdy_sheet": "UNLOCALIZED: Sturdy Sheet", + "item.create.super_glue": "Суперклей", + "item.create.sweet_roll": "Солодкий рулет", + "item.create.tree_fertilizer": "Добриво для дерев", + "item.create.unprocessed_obsidian_sheet": "UNLOCALIZED: Unprocessed Obsidian Sheet", + "item.create.vertical_gearbox": "Вертикальна коробка передач", + "item.create.wand_of_symmetry": "Палиця симетрії", + "item.create.wheat_flour": "Пшеничне борошно", + "item.create.whisk": "Віничок для збивання", + "item.create.wrench": "Гайковий ключ", + "item.create.zinc_ingot": "Цинковий злиток", + "item.create.zinc_nugget": "Цинковий самородок", + + + "_": "->------------------------] Advancements [------------------------<-", + + "advancement.create.root": "Ласкаво просимо до Create", + "advancement.create.root.desc": "Настав час почати будувати дивовижні пристрої!", + "advancement.create.andesite_alloy": "Повторення - мати навчання", + "advancement.create.andesite_alloy.desc": "Матеріали Create мають дивні назви, одна з них – Андезитовий сплав..", + "advancement.create.andesite_casing": "Андезитова епоха", + "advancement.create.andesite_casing.desc": "Використовуйте трохи Андезитового Сплаву та дерева, щоб створити Корпус.", + "advancement.create.mechanical_press": "UNLOCALIZED: Bonk!", + "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", + "advancement.create.encased_fan": "UNLOCALIZED: Wind Maker", + "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and power an Encased Fan", + "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", + "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", + "advancement.create.saw_processing": "UNLOCALIZED: Workshop's Most Feared", + "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", + "advancement.create.compacting": "UNLOCALIZED: Compactification", + "advancement.create.compacting.desc": "UNLOCALIZED: Use a Mechanical Press and a Basin to create fewer items from more", + "advancement.create.belt": "Передайте за проїзд", + "advancement.create.belt.desc": "З'єднайте два вали за допомогою конвеєру.", + "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", + "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", + "advancement.create.chute": "Впало", + "advancement.create.chute.desc": "Розмістіть жолоб, вертикальний аналог конвеєра.", + "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing It Up", + "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", + "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", + "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", + "advancement.create.water_wheel": "Підключення гідравліки", + "advancement.create.water_wheel.desc": "Поставте Водяне колесо та спробуйте змусити його обертатися!", + "advancement.create.windmill": "Легкий вітерець", + "advancement.create.windmill.desc": "Зберіть Вітряк.", + "advancement.create.shifting_gears": "Перемикання передач", + "advancement.create.shifting_gears.desc": "З’єднайте велику шестірню з малою шестернею, щоб змінити швидкість вашого пристрою.", + "advancement.create.millstone": "Кишеньковий подрібнювач", + "advancement.create.millstone.desc": "Розмістіть і заставте Жорна крутитись", + "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", + "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", + "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", + "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a Contraption with drills, saws, or harvesters on board", + "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-By Exchange", + "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a Contraption", + "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted Out", + "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's Goggles and a Wrench", + "advancement.create.stressometer": "Так сильно?", + "advancement.create.stressometer.desc": "Розмістіть і підключіть стресометр. Подивіться на нього крізь окуляри, щоб прочитати його точне значення.", + "advancement.create.cuckoo_clock": "UNLOCALIZED: Is It Time?", + "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", + "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", + "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", + "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", + "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched more than 30 blocks by a Weighted Ejector", + "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", + "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", + "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", + "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", + "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", + "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical Ploughs", + "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", + "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", + "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", + "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.belt_funnel_kiss": "Папуги і клапті", + "advancement.create.belt_funnel_kiss.desc": "Зробіть поцілунок двох воронок, встановлених на конвеєрі.", + "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", + "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", + "advancement.create.copper": "UNLOCALIZED: Cuprum Bokum", + "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper Ingots for your exploits in fluid manipulation", + "advancement.create.copper_casing": "Мідна епоха", + "advancement.create.copper_casing.desc": "Використовуйте Мідні листи та деревину, щоб створити кілька Мідних корпусів.", + "advancement.create.spout": "Буль", + "advancement.create.spout.desc": "Спостерігайте, як рідина наповнюється за допомогою носика.", + "advancement.create.drain": "UNLOCALIZED: Tumble Draining", + "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid-containing item be emptied by an Item Drain", + "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", + "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam Engine to generate torque", + "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", + "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", + "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", + "advancement.create.backtank.desc": "UNLOCALIZED: Create a Copper Backtank and make it accumulate air pressure", + "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", + "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a Diving Helmet and a Copper Backtank, then jump into water", + "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", + "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", + "advancement.create.glass_pipe": "Шпигун за потоками", + "advancement.create.glass_pipe.desc": "Спостерігайте через вікно у трубі за тим, як поширюється рідина. Вікно з'явиться на трубі під час використання гайкового ключа.", + "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", + "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a Fluid Pipe or Mechanical Pump to collect water", + "advancement.create.hose_pulley": "Промисловий розлив", + "advancement.create.hose_pulley.desc": "Опустіть шків шланга та спостерігайте, як він стікає або наповнює тіло рідиною.", + "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", + "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a bucket of molten chocolate", + "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", + "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Beehive", + "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", + "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of lava large enough to be considered infinite", + "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", + "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", + "advancement.create.foods": "UNLOCALIZED: Balanced Diet", + "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout", + "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", + "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your diving gear§7\n(Hidden Advancement)", + "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", + "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an item move across a row of Item Drains§7\n(Hidden Advancement)", + "advancement.create.cross_streams": "UNLOCALIZED: Don't Cross the Streams!", + "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", + "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", + "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single Fluid Tank§7\n(Hidden Advancement)", + "advancement.create.brass": "Фактичні сплави", + "advancement.create.brass.desc": "Використовуйте Подрібнену мідь і Подрібнений цинк, щоб створити трохи Латуні.", + "advancement.create.brass_casing": "Латунна епоха", + "advancement.create.brass_casing.desc": "Використовуйте щойно отриману латунь і трохи дерева, щоб створити більш досконалий корпус.", + "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", + "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", + "advancement.create.deployer": "Тикай, клади та атакуй", + "advancement.create.deployer.desc": "Приведіть у дію Автономний активатор, ідеальне відображення вас самих.", + "advancement.create.precision_mechanism": "Складні цікавості", + "advancement.create.precision_mechanism.desc": "Зберіть Прецизійний механізм.", + "advancement.create.speed_controller": "Інженери його ненавидять!", + "advancement.create.speed_controller.desc": "Розмістіть регулятор швидкості обертання, найкращий пристрій для перемикання передач.", + "advancement.create.mechanical_arm": "Золоті руки!", + "advancement.create.mechanical_arm.desc": "Зробіть Механічну руку, виберіть входи та виходи, розмістіть та приведіть у дію; потім спостерігайте, як вона виконує всю роботу за вас.", + "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", + "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", + "advancement.create.crushing_wheel": "Пара гігантів", + "advancement.create.crushing_wheel.desc": "Створіть Дробильні колеса, щоб ефективніше руйнувати більше матеріалів.", + "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", + "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.clockwork_bearing": "Хитрий годинник", + "advancement.create.clockwork_bearing.desc": "Зберіть структуру, розташовану на годинниковому механізмі.", + "advancement.create.display_link": "UNLOCALIZED: Big Data", + "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display Link to visualise information", + "advancement.create.potato_cannon": "Свомп!", + "advancement.create.potato_cannon.desc": "Переможіть ворога за допомогою Картопляної гармати.", + "advancement.create.extendo_grip": "Боіоіоіпг!", + "advancement.create.extendo_grip.desc": "Отримайте Довгу руку.", + "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", + "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", + "advancement.create.arm_blaze_burner": "Підпаль-трон", + "advancement.create.arm_blaze_burner.desc": "Доручіть Механічній руці живити ваш Пальник блейза.", + "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing It", + "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a pair of Crushing Wheels at maximum speed", + "advancement.create.arm_many_targets": "Організа-трон", + "advancement.create.arm_many_targets.desc": "Запрограмуйте механічну руку з десятьма або більше виходів.", + "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", + "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause Potato Cannon projectiles of different types to collide with each other", + "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", + "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", + "advancement.create.fist_bump": "Розбий це, брате!", + "advancement.create.fist_bump.desc": "Зробіть два удари кулаками Автономних активаторів.", + "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", + "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", + "advancement.create.extendo_grip_dual": "UNLOCALIZED: To Full Extent", + "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual-wield Extendo Grips for superhuman reach§7\n(Hidden Advancement)", + "advancement.create.musical_arm": "Зіграй мені мою мелодію!", + "advancement.create.musical_arm.desc": "Подивіться, як Механічна рука міняє пластинки.", + "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", + "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet by refining Powdered Obsidian", + "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", + "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a casing for railway components", + "advancement.create.train": "UNLOCALIZED: All Aboard!", + "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", + "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", + "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Train Schedule", + "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", + "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", + "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", + "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", + "advancement.create.track_0": "UNLOCALIZED: A New Gauge", + "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", + "advancement.create.train_whistle": "UNLOCALIZED: Choo Choo!", + "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", + "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", + "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a Train through a Nether portal", + "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", + "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 Train Tracks with the same Mechanical Press", + "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", + "advancement.create.long_bend.desc": "UNLOCALIZED: Create a curved track section that spans more than 30 blocks in length", + "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", + "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least 6 carriages", + "advancement.create.long_travel": "UNLOCALIZED: Field Trip", + "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", + "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", + "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an enemy with your Train§7\n(Hidden Advancement)", + "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", + "advancement.create.red_signal.desc": "UNLOCALIZED: Run a red Train Signal§7\n(Hidden Advancement)", + "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", + "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train crash as a passenger§7\n(Hidden Advancement)", + "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", + "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", + + + "_": "->------------------------] UI & Messages [------------------------<-", + + "itemGroup.create.base": "Create", + "itemGroup.create.palettes": "Create Палітри", + + "death.attack.create.crush": "%1$s був передроблений", + "death.attack.create.crush.player": "%1$s був кинутий у Дробильне колесо %2$s", + "death.attack.create.fan_fire": "%1$s був спалений до смерті гарячим повітрям", + "death.attack.create.fan_fire.player": "%2$s скинув%1$s в коптильну", + "death.attack.create.fan_lava": "%1$s був спалений Вентилятором", + "death.attack.create.fan_lava.player": "%2$s скинув %1$s в плавильну", + "death.attack.create.mechanical_drill": "%1$s був проколений Механічною дрелью", + "death.attack.create.mechanical_drill.player": "%2$s скинув %1$s під Механічну дрель", + "death.attack.create.mechanical_saw": "%1$s був розрізаний навпіл Механічною пилою", + "death.attack.create.mechanical_saw.player": "%2$s скинув %1$s у пилу ", + "death.attack.create.potato_cannon": "%1$s був вбитий %2$s за допомогою Картопляної гармати", + "death.attack.create.potato_cannon.item": "%1$s був вбитий %2$s використовуючи %3$s", + "death.attack.create.cuckoo_clock_explosion": "%1$s підірвали підробленим годинником з зозулею", + "death.attack.create.cuckoo_clock_explosion.player": "%1$s був підірваний підробленим годинником з зозулею", + "death.attack.create.run_over": "UNLOCALIZED: %1$s was run over by %2$s", + + "create.block.deployer.damage_source_name": "автономним активатором", + "create.block.cart_assembler.invalid": "Помістіть свій Збирач вагонеток на блок рейок", + + "create.menu.return": "Повернутись у меню", + "create.menu.configure": "Налаштувати...", + "create.menu.ponder_index": "Зміст роздумів", + "create.menu.only_ingame": "Доступно в Меню Паузи", + "create.menu.report_bugs": "Повідомити про проблеми", + "create.menu.support": "Підтримати нас", + + "create.recipe.crushing": "Дроблення", + "create.recipe.milling": "Помел", + "create.recipe.fan_washing": "Масове вимивання", + "create.recipe.fan_washing.fan": "Вентилятор за Текучою водою", + "create.recipe.fan_smoking": "Масове копчення", + "create.recipe.fan_smoking.fan": "Вентилятор за Вогнем", + "create.recipe.fan_haunting": "UNLOCALIZED: Bulk Haunting", + "create.recipe.fan_haunting.fan": "UNLOCALIZED: Fan behind Soul Fire", + "create.recipe.fan_blasting": "Bulk Blasting", + "create.recipe.fan_blasting.fan": "Вентилятор за Лавоб", + "create.recipe.pressing": "Пресування", + "create.recipe.mixing": "Змішування", + "create.recipe.deploying": "Автономна активація", + "create.recipe.automatic_shapeless": "Автоматизоване безформне виготовлення", + "create.recipe.automatic_brewing": "Автоматичне зіллє-варіння", + "create.recipe.packing": "Ущільнення", + "create.recipe.automatic_packing": "Автопатичне пакування", + "create.recipe.sawing": "Пиляння", + "create.recipe.mechanical_crafting": "Механічне виготовлення", + "create.recipe.automatic_shaped": "Автоматизоване формне виготовлення", + "create.recipe.block_cutting": "Різання блоків", + "create.recipe.wood_cutting": "Розпилювання деревини", + "create.recipe.sandpaper_polishing": "Полірування наждачним папером", + "create.recipe.mystery_conversion": "Таємниче перетворення", + "create.recipe.spout_filling": "Наповнення носиком", + "create.recipe.draining": "Осушуванян предметів", + "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", + "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", + "create.recipe.sequenced_assembly": "Послідовне складання", + "create.recipe.assembly.next": "Далі: %1$s", + "create.recipe.assembly.step": "Крок %1$s:", + "create.recipe.assembly.progress": "Прогрес: %1$s/%2$s", + "create.recipe.assembly.pressing": "Процес у пресі", + "create.recipe.assembly.spout_filling_fluid": "Налийте %1$s", + "create.recipe.assembly.deploying_item": "Добавте %1$s", + "create.recipe.assembly.cutting": "Розріжте пилою", + "create.recipe.assembly.repeat": "Повторіть послідовність %1$s раз", + "create.recipe.assembly.junk": "Випадкове сміття", + "create.recipe.processing.chance": "%1$s%% Шанс", + "create.recipe.deploying.not_consumed": "Не спожито", + "create.recipe.heat_requirement.none": "Не потребує нагрівання", + "create.recipe.heat_requirement.heated": "Нагріте", + "create.recipe.heat_requirement.superheated": "Дуже нагрітий", + + "create.generic.range": "Діапазон", + "create.generic.radius": "Радіус", + "create.generic.width": "Ширина", + "create.generic.height": "Висота", + "create.generic.length": "Довжина", + "create.generic.speed": "Швидкість", + "create.generic.delay": "Затримка", + "create.generic.duration": "UNLOCALIZED: Duration", + "create.generic.timeUnit": "UNLOCALIZED: Time Unit", + "create.generic.unit.ticks": "Тіків", + "create.generic.unit.seconds": "Секунд", + "create.generic.unit.minutes": "Хвилин", + "create.generic.daytime.hour": "UNLOCALIZED: Hour", + "create.generic.daytime.minute": "UNLOCALIZED: Minute", + "create.generic.daytime.second": "UNLOCALIZED: Second", + "create.generic.daytime.pm": "UNLOCALIZED: pm", + "create.generic.daytime.am": "UNLOCALIZED: am", + "create.generic.unit.rpm": "об./хв", + "create.generic.unit.stress": "su(одиниця напруги)", + "create.generic.unit.degrees": "°", + "create.generic.unit.millibuckets": "%1$smB", + "create.generic.unit.buckets": "UNLOCALIZED: B", + "create.generic.clockwise": "За годинниковою стрілкою", + "create.generic.counter_clockwise": "Проти годинникової стрілки", + "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", + "create.generic.pitch": "UNLOCALIZED: Pitch: %1$s", + "create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G", + + "create.action.scroll": "Прокрутка", + "create.action.confirm": "Підтвердити", + "create.action.abort": "Перервати", + "create.action.saveToFile": "Зберегти", + "create.action.discard": "Відкинути", + + "create.keyinfo.toolmenu": "Меню інструмента фокусування", + "create.keyinfo.toolbelt": "Доступ до Ящиків інструментів поблизу", + "create.keyinfo.scrollup": "Імітація руху миші вверх (в світі)", + "create.keyinfo.scrolldown": "Імітація руху миші вниз (в світі)", + + "create.gui.scrollInput.defaultTitle": "Виберіть опцію:", + "create.gui.scrollInput.scrollToModify": "Прокрутіть щоб змінити", + "create.gui.scrollInput.scrollToAdjustAmount": "Прокрутіть щоб налаштувати кількість", + "create.gui.scrollInput.scrollToSelect": "Прокрутіть щоб вибрати", + "create.gui.scrollInput.shiftScrollsFaster": "Shift шоб прокручувати швидше", + "create.gui.toolmenu.focusKey": "Зажміть [%1$s] щоб зосередитися", + "create.gui.toolmenu.cycle": "[SCROLL] для переключения", + + "create.toolbox.unequip": "Зняти спорядження: %1$s", + "create.toolbox.outOfRange": "Ящик для інструментів з утримуваним предметом задалеко", + "create.toolbox.detach": "Припинити збереження та відстеження предметів", + "create.toolbox.depositAll": "Повернути предмети до найближчих Ящиків з інструментами", + "create.toolbox.depositBox": "Повернути предмети до Ящику з інструментами", + + "create.gui.symmetryWand.mirrorType": "Дзеркало", + "create.gui.symmetryWand.orientation": "Орієнтація", + + "create.symmetry.mirror.plane": "Одинарне", + "create.symmetry.mirror.doublePlane": "Двойне", + "create.symmetry.mirror.triplePlane": "Тройне", + + "create.orientation.orthogonal": "Перпендикуляр", + "create.orientation.diagonal": "Діагональ", + "create.orientation.horizontal": "Горизонталь", + "create.orientation.alongZ": "Уздовж Z", + "create.orientation.alongX": "Уздовж X", + + "create.gui.terrainzapper.title": "Ручний редактор світу", + "create.gui.terrainzapper.searchDiagonal": "Слідування діагоналям", + "create.gui.terrainzapper.searchFuzzy": "Ігнорувати границі матеріала", + "create.gui.terrainzapper.patternSection": "Шаблон", + "create.gui.terrainzapper.pattern.solid": "Суцільний", + "create.gui.terrainzapper.pattern.checkered": "Шахматний порядок", + "create.gui.terrainzapper.pattern.inversecheckered": "Зворотний шаховий порядок", + "create.gui.terrainzapper.pattern.chance25": "25% заповнення", + "create.gui.terrainzapper.pattern.chance50": "50% заповнення", + "create.gui.terrainzapper.pattern.chance75": "75% заповнення", + "create.gui.terrainzapper.placement": "Розміщення", + "create.gui.terrainzapper.placement.merged": "Злитий", + "create.gui.terrainzapper.placement.attached": "Прикріплений", + "create.gui.terrainzapper.placement.inserted": "Вставлений", + "create.gui.terrainzapper.brush": "Простий", + "create.gui.terrainzapper.brush.cuboid": "Куб", + "create.gui.terrainzapper.brush.sphere": "Сфера", + "create.gui.terrainzapper.brush.cylinder": "Циліндр", + "create.gui.terrainzapper.brush.surface": "Поверхність", + "create.gui.terrainzapper.brush.cluster": "Скупчення", + "create.gui.terrainzapper.tool": "Інструмент", + "create.gui.terrainzapper.tool.fill": "Заповнити", + "create.gui.terrainzapper.tool.place": "Поставити", + "create.gui.terrainzapper.tool.replace": "Замінити", + "create.gui.terrainzapper.tool.clear": "Очистити", + "create.gui.terrainzapper.tool.overlay": "Накладення", + "create.gui.terrainzapper.tool.flatten": "Вирівнювання", + + "create.terrainzapper.shiftRightClickToSet": "ПКМ щоб вибрати форму", + "create.terrainzapper.usingBlock": "Використовується: %1$s", + "create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material", + + "create.minecart_coupling.two_couplings_max": "Вагонетки можуть мати лише два зв'язки", + "create.minecart_coupling.unloaded": "Здається, частина вашого поїзда у незавантажених чанках", + "create.minecart_coupling.no_loops": "З'єднувачі не можуть утворювати петлю", + "create.minecart_coupling.removed": "Прибрано всі зв'язки між вагонетками", + "create.minecart_coupling.too_far": "Вагонетки надто далеко один від одного", + + "create.contraptions.movement_mode": "Режим руху", + "create.contraptions.movement_mode.move_place": "Завжди розміщувати, коли Зупинено", + "create.contraptions.movement_mode.move_place_returned": "Розміщуйте лише у Вихідному положенні", + "create.contraptions.movement_mode.move_never_place": "Розміщувати лише після Знищення якоря", + "create.contraptions.movement_mode.rotate_place": "Завжди розміщувати, коли Зупинено", + "create.contraptions.movement_mode.rotate_place_returned": "Розміщуйте лише біля Початкового Кута", + "create.contraptions.movement_mode.rotate_never_place": "Розміщувати лише після Знищення якоря", + "create.contraptions.cart_movement_mode": "Режим руху вагонетки", + "create.contraptions.cart_movement_mode.rotate": "Завжди обличчям до руху", + "create.contraptions.cart_movement_mode.rotate_paused": "Пауза під час обертання", + "create.contraptions.cart_movement_mode.rotation_locked": "Завблокувати обертання", + "create.contraptions.windmill.rotation_direction": "Напрям обертання", + "create.contraptions.clockwork.clock_hands": "Стрілки годинника", + "create.contraptions.clockwork.hour_first": "Спочатку годинна стрілка", + "create.contraptions.clockwork.minute_first": "Спочатку хвилинна стрілка", + "create.contraptions.clockwork.hour_first_24": "Спочатку 24-годинна стрілка", + + "create.logistics.filter": "Фільтр", + "create.logistics.recipe_filter": "Фільтр рецептів", + "create.logistics.fluid_filter": "Фільтр рідини", + "create.logistics.firstFrequency": "Частота #1", + "create.logistics.secondFrequency": "Частота #2", + "create.logistics.filter.apply": "Фільтр використаний до %1$s.", + "create.logistics.filter.apply_click_again": "Фільтр використаний до %1$s, нажміть ще раз, щоб скопіювати кількість.", + "create.logistics.filter.apply_count": "Застосовано кількість, що витягується до фільтра.", + + "create.gui.goggles.generator_stats": "Статистика генератора:", + "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": "Надто багато Подовжувачів прикріплено до цього поршня.\nПоточний максимум: %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": "Нагрузка на мережу", + "create.gui.stressometer.capacity": "Місткість, що залишилася", + "create.gui.stressometer.overstressed": "Перегрузка", + "create.gui.stressometer.no_rotation": "Немає обертання", + "create.gui.contraptions.not_fast_enough": "Похоже що цей %1$s is _не_ обертається _достатньою_ _швидкістю_.", + "create.gui.contraptions.network_overstressed": "Здається ця штуковина _перегружена_. Додати більше джерел або _зменшіть_ _швидкість_ компонентів які створюють велику _нагрузку_.", + "create.gui.adjustable_crate.title": "Регульований ящик", + "create.gui.adjustable_crate.storageSpace": "Ємність", + "create.gui.stockpile_switch.title": "Налаштований компаратор", + "create.gui.stockpile_switch.invert_signal": "Інвертувати сигнал", + "create.gui.stockpile_switch.move_to_lower_at": "Рухатися до нижньої лінії при %1$s%%", + "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.descriptive": "Пверніть для руху Поршня/Pulley/Gantry", + "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", + "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Відстань", + "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": "Двойна швидкість, вперед", + "create.gui.sequenced_gearshift.speed.back": "Швидкість введення, реверс", + "create.gui.sequenced_gearshift.speed.back_fast": "Двойна швидкість, реверс", + + "create.schematicAndQuill.dimensions": "Розмір схематики: %1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "Перша позиція установлена.", + "create.schematicAndQuill.secondPos": "Друга позиція установлена.", + "create.schematicAndQuill.noTarget": "Утримуйте [Ctrl], щоб вибрати пусті блоки.", + "create.schematicAndQuill.abort": "Виділення прибрано.", + "create.schematicAndQuill.title": "Ім'я схематики:", + "create.schematicAndQuill.convert": "Зберегти та розгорнути негайно", + "create.schematicAndQuill.fallbackName": "Моя схематика", + "create.schematicAndQuill.saved": "Збережено як %1$s", + + "create.schematic.invalid": "[!] Неприпустимий предмет — натомість використовуйте схематичний стіл", + "create.schematic.position": "Позизія", + "create.schematic.rotation": "Обертання", + "create.schematic.rotation.none": "Немає", + "create.schematic.rotation.cw90": "За год. стрілкою 90", + "create.schematic.rotation.cw180": "За год. стрілкою 180", + "create.schematic.rotation.cw270": "За год. стрілкою 270", + "create.schematic.mirror": "Відзеркалити", + "create.schematic.mirror.none": "Немає", + "create.schematic.mirror.frontBack": "Спереду-Ззаду", + "create.schematic.mirror.leftRight": "Зліва-Справа", + "create.schematic.tool.deploy": "Розгортання", + "create.schematic.tool.move": "Посунути XZ", + "create.schematic.tool.movey": "Посунути Y", + "create.schematic.tool.rotate": "Обертати", + "create.schematic.tool.print": "Друк", + "create.schematic.tool.flip": "Перевернути", + "create.schematic.tool.deploy.description.0": "Переміщує структуру у локації.", + "create.schematic.tool.deploy.description.1": "Натисніть ПКМ на землі, щоб розмістити.", + "create.schematic.tool.deploy.description.2": "Утримуйте [Ctrl], щоб вибрати фіксовану відстань.", + "create.schematic.tool.deploy.description.3": "[Ctrl] та прокручування, щоб змінити відстань", + "create.schematic.tool.move.description.0": "Зрушити схему по горизонталі.", + "create.schematic.tool.move.description.1": "Наведіть курсор на схему та натисніть [CTRL] та прокрутіть, щоб натиснути на неї.", + "create.schematic.tool.move.description.2": "", + "create.schematic.tool.move.description.3": "", + "create.schematic.tool.movey.description.0": "Зсув схеми по вертикалі.", + "create.schematic.tool.movey.description.1": "[CTRL] та прокручування - перемістити вгору/вниз.", + "create.schematic.tool.movey.description.2": "", + "create.schematic.tool.movey.description.3": "", + "create.schematic.tool.rotate.description.0": "Обертає схематику навколо її центру.", + "create.schematic.tool.rotate.description.1": "[CTRL] та прокрутка щоб обертати на 90 градусів.", + "create.schematic.tool.rotate.description.2": "", + "create.schematic.tool.rotate.description.3": "", + "create.schematic.tool.print.description.0": "Миттєво розміщує структуру у світі.", + "create.schematic.tool.print.description.1": "[ПКМ], щоб підтвердити розміщення у поточному місці.", + "create.schematic.tool.print.description.2": "Цей інструмент призначений лише для творчого режиму.", + "create.schematic.tool.print.description.3": "", + "create.schematic.tool.flip.description.0": "Переверніть схему вздовж обраної сторони.", + "create.schematic.tool.flip.description.1": "Наведіть курсор на схему та [CTRL] + прокручування, щоб перевернути її.", + "create.schematic.tool.flip.description.2": "", + "create.schematic.tool.flip.description.3": "", + + "create.schematics.synchronizing": "Синхронізація...", + "create.schematics.uploadTooLarge": "Ваша схема занадто велика.", + "create.schematics.maxAllowedSize": "Максимальний розмір файла:", + + "create.gui.schematicTable.refresh": "Обновити файли", + "create.gui.schematicTable.open_folder": "Відкрити папку", + "create.gui.schematicTable.title": "Схематичний стіл", + "create.gui.schematicTable.availableSchematics": "Доступні схеми", + "create.gui.schematicTable.noSchematics": "Схеми не збережені", + "create.gui.schematicTable.uploading": "Загрузка...", + "create.gui.schematicTable.finished": "Загрузка завершена!", + "create.gui.schematicannon.title": "Схематична гармата", + "create.gui.schematicannon.listPrinter": "Список матеріалів", + "create.gui.schematicannon.gunpowderLevel": "Порох на %1$s%%", + "create.gui.schematicannon.shotsRemaining": "Пострілів залишилося: %1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "З резервним копіюванням: %1$s", + "create.gui.schematicannon.optionEnabled": "В даний час включено", + "create.gui.schematicannon.optionDisabled": "В даний час виключено", + "create.gui.schematicannon.showOptions": "Показати налаштування друку", + "create.gui.schematicannon.option.dontReplaceSolid": "Не замінювати цілі блоки", + "create.gui.schematicannon.option.replaceWithSolid": "Замінювати цілі блоки цілими блоками", + "create.gui.schematicannon.option.replaceWithAny": "Замінювати цілі блоки чим завгодно", + "create.gui.schematicannon.option.replaceWithEmpty": "Замінювати цілі блоки пустотою", + "create.gui.schematicannon.option.skipMissing": "Пропускати відсутні блоки", + "create.gui.schematicannon.option.skipTileEntities": "Захистити майно", + "create.gui.schematicannon.slot.gunpowder": "Додати порох щоб запитати гармату", + "create.gui.schematicannon.slot.listPrinter": "Покладіть книгу, щоб створити список предметів для схематики", + "create.gui.schematicannon.slot.schematic": "Покладіть власну схематику тут. Переконайтеся, що вона розміщена у правильному місці.", + "create.gui.schematicannon.option.skipMissing.description": "Якщо гармата не може знайти необхідний блок, вона будуватиме в наступному місці.", + "create.gui.schematicannon.option.skipTileEntities.description": "Гармата не замінюватиме блоки зберігання, такі як скрині.", + "create.gui.schematicannon.option.dontReplaceSolid.description": "Гармата ніколи не замінить цілі блоки, тільки не цілі та повітря.", + "create.gui.schematicannon.option.replaceWithSolid.description": "Гармата замінюватиме цілий блок лише у випадку, якщо у схемі в цьому місці розташований цілий блок.", + "create.gui.schematicannon.option.replaceWithAny.description": "Гармата буде замінювати цілі блоки, якщо в схемі є що-небудь.", + "create.gui.schematicannon.option.replaceWithEmpty.description": "Гармата відчистить всі блоки, включаючи заміну повітря.", + + "create.schematicannon.status.idle": "Не діє", + "create.schematicannon.status.ready": "Готова", + "create.schematicannon.status.running": "Працює", + "create.schematicannon.status.finished": "Закінчила", + "create.schematicannon.status.paused": "Припинено", + "create.schematicannon.status.stopped": "Зупинено", + "create.schematicannon.status.noGunpowder": "Потрібен порох", + "create.schematicannon.status.targetNotLoaded": "Ціль не завантажена", + "create.schematicannon.status.targetOutsideRange": "Ціль занадто далеко", + "create.schematicannon.status.searching": "Пошук", + "create.schematicannon.status.skipping": "Пропуск", + "create.schematicannon.status.missingBlock": "Потребує блок:", + "create.schematicannon.status.placing": "Будівництво", + "create.schematicannon.status.clearing": "Очистка блоків", + "create.schematicannon.status.schematicInvalid": "Неправильна схема", + "create.schematicannon.status.schematicNotPlaced": "Схема не завантажена", + "create.schematicannon.status.schematicExpired": "Термін дії файлу схеми минув", + + "create.materialChecklist": "Список матеріалів", + "create.materialChecklist.blocksNotLoaded": "* Дисклеймер *\n\nСписок матеріалів може бути неточним через незавантажені чанки.", + + "create.gui.filter.deny_list": "Чорний список", + "create.gui.filter.deny_list.description": "Предмети проходять, якщо вони не відповідають жодному з перерахованих вище. Порожній чорний список приймає все..", + "create.gui.filter.allow_list": "Білий список", + "create.gui.filter.allow_list.description": "Предмети проходять, якщо вони відповідають будь-якому з перерахованих вище. Порожній білий список відкидає все.", + "create.gui.filter.respect_data": "Використання даних", + "create.gui.filter.respect_data.description": "Предмети збігаються тільки в тому випадку, якщо їхня міцність, чари та інші атрибути збігаються.", + "create.gui.filter.ignore_data": "Ігнорування даних", + "create.gui.filter.ignore_data.description": "Предмети збігаються незалежно від своїх атрибутів.", + + "create.item_attributes.placeable": "Можна розмістити", + "create.item_attributes.placeable.inverted": "не можна розмістити", + "create.item_attributes.consumable": "можна з'їсти", + "create.item_attributes.consumable.inverted": "не можна з'їсти", + "create.item_attributes.fluid_container": "може зберігати рідини", + "create.item_attributes.fluid_container.inverted": "не може зберігати рідини", + "create.item_attributes.enchanted": "зачарований", + "create.item_attributes.enchanted.inverted": "не зачарований", + "create.item_attributes.max_enchanted": "зачаровано на максимальному рівні", + "create.item_attributes.max_enchanted.inverted": "не зачаровано на максимальному рівні", + "create.item_attributes.renamed": "має спеціальну назву", + "create.item_attributes.renamed.inverted": "не має спеціальної назви", + "create.item_attributes.damaged": "пошкоджено", + "create.item_attributes.damaged.inverted": "не пошкоджено", + "create.item_attributes.badly_damaged": "сильно пошкоджений", + "create.item_attributes.badly_damaged.inverted": "не сильно пошкоджений", + "create.item_attributes.not_stackable": "не може складатися", + "create.item_attributes.not_stackable.inverted": "може складатися", + "create.item_attributes.equipable": "може бути одягнений", + "create.item_attributes.equipable.inverted": "не може бути одягнений", + "create.item_attributes.furnace_fuel": "є паливом", + "create.item_attributes.furnace_fuel.inverted": "не є паливом", + "create.item_attributes.washable": "може бути Вимитим", + "create.item_attributes.washable.inverted": "не може бути Вимитим", + "create.item_attributes.hauntable": "UNLOCALIZED: can be Haunted", + "create.item_attributes.hauntable.inverted": "UNLOCALIZED: cannot be Haunted", + "create.item_attributes.crushable": "можна Подрібнити", + "create.item_attributes.crushable.inverted": "не можна Подрібнити", + "create.item_attributes.smeltable": "можна Виплавити", + "create.item_attributes.smeltable.inverted": "не можна Виплавити", + "create.item_attributes.smokable": "можна Коптити", + "create.item_attributes.smokable.inverted": "не можна Коптити", + "create.item_attributes.blastable": "плавиться в Плавильній печі", + "create.item_attributes.blastable.inverted": "не плавиться в Плавильній печі", + "create.item_attributes.shulker_level": "шалкер %1$s", + "create.item_attributes.shulker_level.inverted": "шалкер не %1$s", + "create.item_attributes.shulker_level.full": "повний", + "create.item_attributes.shulker_level.empty": "пустий", + "create.item_attributes.shulker_level.partial": "частично заповнений", + "create.item_attributes.in_tag": "позначено тегами %1$s", + "create.item_attributes.in_tag.inverted": "не позначено тегами %1$s", + "create.item_attributes.in_item_group": "знаходиться в групі '%1$s'", + "create.item_attributes.in_item_group.inverted": "не знаходиться в групі '%1$s'", + "create.item_attributes.added_by": "були добавлені: %1$s", + "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.has_fluid": "містить %1$s", + "create.item_attributes.has_fluid.inverted": "не містить %1$s", + "create.item_attributes.has_name": "має нестандартне ім'я %1$s", + "create.item_attributes.has_name.inverted": "не має нестандарного імені %1$s", + "create.item_attributes.book_author": "підписана %1$s", + "create.item_attributes.book_author.inverted": "не підписана %1$s", + "create.item_attributes.book_copy_original": "оригінал", + "create.item_attributes.book_copy_original.inverted": "не оригінал", + "create.item_attributes.book_copy_first": "копія першого порядку", + "create.item_attributes.book_copy_first.inverted": "не копія першого порядку", + "create.item_attributes.book_copy_second": "копія другого порядку", + "create.item_attributes.book_copy_second.inverted": "не копія другого порядку", + "create.item_attributes.book_copy_tattered": "повний безлад", + "create.item_attributes.book_copy_tattered.inverted": "не повний безлад", + "create.item_attributes.astralsorcery_amulet": "виправляє %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "не виправляє %1$s", + "create.item_attributes.astralsorcery_constellation": "настроено на %1$s", + "create.item_attributes.astralsorcery_constellation.inverted": "не настроено на %1$s", + "create.item_attributes.astralsorcery_crystal": "має характеристики кристала %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "не має характеристики кристала %1$s", + "create.item_attributes.astralsorcery_perk_gem": "має характеристики перку %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "не має характеристики перку %1$s", + + "create.gui.attribute_filter.no_selected_attributes": "Атрибути не вибрані", + "create.gui.attribute_filter.selected_attributes": "Вибрані атрибути:", + "create.gui.attribute_filter.add_attribute": "Добавлені атрибути", + "create.gui.attribute_filter.add_inverted_attribute": "Додані протилежні атрибути до списку", + "create.gui.attribute_filter.allow_list_disjunctive": "Біоий список (Любий)", + "create.gui.attribute_filter.allow_list_disjunctive.description": "Предмети проходять, якщо вони мають будь-який з обраних атрибутів.", + "create.gui.attribute_filter.allow_list_conjunctive": "Білий список (Всі)", + "create.gui.attribute_filter.allow_list_conjunctive.description": "Предмети проходять, тільки якщо вони мають ВСІ вибрані атрибути.", + "create.gui.attribute_filter.deny_list": "Чорний список", + "create.gui.attribute_filter.deny_list.description": "Предмети проходять, якщо вони НЕ мають жодного з вибраних атрибутів.", + "create.gui.attribute_filter.add_reference_item": "Додати предмет", + + "create.tooltip.holdForDescription": "Утримуйте [%1$s] для Зведення", + "create.tooltip.holdForControls": "Утримуйте [%1$s] для Управління", + "create.tooltip.keyShift": "Shift", + "create.tooltip.keyCtrl": "Ctrl", + "create.tooltip.speedRequirement": "Вимога до швидкості: %1$s", + "create.tooltip.speedRequirement.none": "Немає", + "create.tooltip.speedRequirement.slow": "UNLOCALIZED: Slow", + "create.tooltip.speedRequirement.medium": "Помірна", + "create.tooltip.speedRequirement.fast": "UNLOCALIZED: Fast", + "create.tooltip.stressImpact": "Навантаження, що створюється: %1$s", + "create.tooltip.stressImpact.low": "Низька", + "create.tooltip.stressImpact.medium": "Середня", + "create.tooltip.stressImpact.high": "Висока", + "create.tooltip.stressImpact.overstressed": "Перевантаження", + "create.tooltip.up_to": "UNLOCALIZED: Up to %1$s", + "create.tooltip.capacityProvided": "Допустиме навантаження: %1$s", + "create.tooltip.capacityProvided.low": "Маленький", + "create.tooltip.capacityProvided.medium": "Середній", + "create.tooltip.capacityProvided.high": "Великий", + "create.tooltip.generationSpeed": "Створює %1$s %2$s", + "create.tooltip.analogStrength": "Аналогова сила: %1$s/15", + + "create.mechanical_arm.extract_from": "Бере предмети з %1$s", + "create.mechanical_arm.deposit_to": "Складає предмети в %1$s", + "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": "По колу", + "create.mechanical_arm.selection_mode.forced_round_robin": "Примусово по колу", + "create.mechanical_arm.selection_mode.prefer_first": "Віддавати перевагу первинній цілі", + + "create.tunnel.selection_mode.split": "Розділити", + "create.tunnel.selection_mode.forced_split": "Примусово поділити", + "create.tunnel.selection_mode.round_robin": "По колу", + "create.tunnel.selection_mode.forced_round_robin": "Примусово по колу", + "create.tunnel.selection_mode.prefer_nearest": "Переважно найближче", + "create.tunnel.selection_mode.randomize": "Випадковий", + "create.tunnel.selection_mode.synchronize": "Синхронізувати входи", + + "create.tooltip.chute.header": "Інформація про жолоб", + "create.tooltip.chute.items_move_down": "Предмети рухаються вниз", + "create.tooltip.chute.items_move_up": "Предмети рухаються вверх", + "create.tooltip.chute.no_fans_attached": "Немає підключених вентиляторів", + "create.tooltip.chute.fans_push_up": "Вентилятор штовхає знизу", + "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.tooltip.deployer.header": "UNLOCALIZED: Deployer Information", + "create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use", + "create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack", + "create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s", + "create.tooltip.brass_tunnel.contains": "На даний момент роздає (видає):", + "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", + "create.tooltip.brass_tunnel.retrieve": "ПКМ, щоб отримати", + + "create.linked_controller.bind_mode": "Режим прив'язки активовано", + "create.linked_controller.press_keybind": "Нажміть %1$s, %2$s, %3$s, %4$s, %5$s або %6$s, щоб прив'язати цю частоту до відповідної кнопки", + "create.linked_controller.key_bound": "Частота прив'язана до' %1$s", + "create.linked_controller.frequency_slot_1": "Клавіша: %1$s, Частота #1", + "create.linked_controller.frequency_slot_2": "Клавіша: %1$s, Частота #2", + + "create.crafting_blueprint.crafting_slot": "Слот для інгредієнтів", + "create.crafting_blueprint.filter_items_viable": "Розвинені фільтри предметів застосовні", + "create.crafting_blueprint.display_slot": "Відображувана комірка", + "create.crafting_blueprint.inferred": "Похідні від рецепту", + "create.crafting_blueprint.manually_assigned": "Призначений вручну", + "create.crafting_blueprint.secondary_display_slot": "Додаткова комірка, що відображається", + "create.crafting_blueprint.optional": "Опціональна", + + "create.potato_cannon.ammo.attack_damage": "%1$s Пошкодження від атаки", + "create.potato_cannon.ammo.reload_ticks": "%1$s тіків перезавантаження", + "create.potato_cannon.ammo.knockback": "%1$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.empty_bearing.title": "Оновити підшипник", + "create.hint.empty_bearing": "_Права кнопка миші_ по підшипнику _пустою_ _рукою_ щоб _приєднати_ до нього структуру, яку ви щойно збудували перед ним.", + "create.hint.full_deployer.title": "Переполнение автономного активатора", + "create.hint.full_deployer": "Похоже цей _Автономний_ _активатор_ містить _лищні_ _предмети_ які необхідно _вилучити._ Використовуйте _воронку,_ или _інші способи_ to free it from its overflow.", + + "create.backtank.low": "UNLOCALIZED: Backtank pressure low", + "create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted", + + "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", + "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", + + "create.boiler.status": "UNLOCALIZED: Boiler Status: %1$s", + "create.boiler.status_short": "UNLOCALIZED: Boiler: %1$s", + "create.boiler.passive": "UNLOCALIZED: Passive", + "create.boiler.idle": "UNLOCALIZED: Idle", + "create.boiler.lvl": "UNLOCALIZED: Lvl %1$s", + "create.boiler.max_lvl": "UNLOCALIZED: Max", + "create.boiler.size": "UNLOCALIZED: Size", + "create.boiler.size_dots": "UNLOCALIZED: ....... ", + "create.boiler.water": "UNLOCALIZED: Water", + "create.boiler.water_dots": "UNLOCALIZED: ... ", + "create.boiler.heat": "UNLOCALIZED: Heat", + "create.boiler.heat_dots": "UNLOCALIZED: ...... ", + "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", + "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", + "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", + "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", + "create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action", + "create.gui.schedule.add_entry": "UNLOCALIZED: Add Action", + "create.gui.schedule.move_up": "UNLOCALIZED: Move up", + "create.gui.schedule.move_down": "UNLOCALIZED: Move down", + "create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition", + "create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition", + + "create.schedule.instruction_type": "UNLOCALIZED: Next Action:", + "create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor", + "create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station", + "create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:", + "create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name", + "create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard", + "create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'", + "create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match", + "create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title", + "create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:", + "create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title", + "create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays", + "create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name", + "create.schedule.instruction.throttle": "UNLOCALIZED: Limit Max Speed", + "create.schedule.instruction.throttle.summary": "UNLOCALIZED: Change Max Speed to %1$s", + "create.schedule.instruction.throttle_edit_box": "UNLOCALIZED: Throttle", + "create.schedule.instruction.throttle_edit_box_1": "UNLOCALIZED: Affects the top speed of the Train", + "create.schedule.condition_type": "UNLOCALIZED: Continue if/after:", + "create.schedule.condition.editor": "UNLOCALIZED: Condition Editor", + "create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay", + "create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s", + "create.schedule.condition.delay.status": "UNLOCALIZED: Departs in %1$s", + "create.schedule.condition.idle": "UNLOCALIZED: Cargo Inactivity", + "create.schedule.condition.idle_short": "UNLOCALIZED: Cargo Idle: %1$s", + "create.schedule.condition.idle.status": "UNLOCALIZED: Cargo Idle for %1$s", + "create.schedule.condition.for_x_time": "UNLOCALIZED: for %1$s", + "create.schedule.condition.unloaded": "UNLOCALIZED: Chunk Unloaded", + "create.schedule.condition.unloaded.status": "UNLOCALIZED: Waiting for chunk unload", + "create.schedule.condition.powered": "UNLOCALIZED: Station Powered", + "create.schedule.condition.powered.status": "UNLOCALIZED: Waiting for redstone", + "create.schedule.condition.time_of_day": "UNLOCALIZED: Time of Day", + "create.schedule.condition.time_of_day.scheduled": "UNLOCALIZED: Scheduled Time: %1$s", + "create.schedule.condition.time_of_day.digital_format": "UNLOCALIZED: %1$s:%3$s %4$s", + "create.schedule.condition.time_of_day.rotation": "UNLOCALIZED: Rotation", + "create.schedule.condition.time_of_day.rotation.every_24": "UNLOCALIZED: Every Day", + "create.schedule.condition.time_of_day.rotation.every_12": "UNLOCALIZED: Every 12:00", + "create.schedule.condition.time_of_day.rotation.every_6": "UNLOCALIZED: Every 6:00", + "create.schedule.condition.time_of_day.rotation.every_4": "UNLOCALIZED: Every 4:00", + "create.schedule.condition.time_of_day.rotation.every_3": "UNLOCALIZED: Every 3:00", + "create.schedule.condition.time_of_day.rotation.every_2": "UNLOCALIZED: Every 2:00", + "create.schedule.condition.time_of_day.rotation.every_1": "UNLOCALIZED: Every 1:00", + "create.schedule.condition.time_of_day.rotation.every_0_45": "UNLOCALIZED: Every 0:45", + "create.schedule.condition.time_of_day.rotation.every_0_30": "UNLOCALIZED: Every 0:30", + "create.schedule.condition.time_of_day.rotation.every_0_15": "UNLOCALIZED: Every 0:15", + "create.schedule.condition.time_of_day.status": "UNLOCALIZED: Departs at ", + "create.schedule.condition.threshold.train_holds": "UNLOCALIZED: Train holds %1$s", + "create.schedule.condition.threshold.greater": "UNLOCALIZED: more than", + "create.schedule.condition.threshold.less": "UNLOCALIZED: less than", + "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", + "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", + "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", + "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", + "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", + "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", + "create.schedule.condition.threshold.buckets": "UNLOCALIZED: Buckets", + "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", + "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", + "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", + "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", + "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", + "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", + "create.schedule.condition.redstone_link.status": "UNLOCALIZED: Waiting for redstone link", + "create.schedule.condition.redstone_link_on": "UNLOCALIZED: Link On", + "create.schedule.condition.redstone_link_off": "UNLOCALIZED: Link Off", + "create.schedule.condition.redstone_link.powered": "UNLOCALIZED: Powered", + "create.schedule.condition.redstone_link.unpowered": "UNLOCALIZED: Not powered", + "create.schedule.condition.redstone_link.frequency_state": "UNLOCALIZED: Frequency state:", + "create.schedule.condition.redstone_link.frequency_powered": "UNLOCALIZED: Frequency powered:", + "create.schedule.condition.redstone_link.frequency_unpowered": "UNLOCALIZED: Frequency not powered:", + "create.schedule.condition.player_count": "UNLOCALIZED: Players Seated", + "create.schedule.condition.player_count.summary": "UNLOCALIZED: %1$s Player", + "create.schedule.condition.player_count.summary_plural": "UNLOCALIZED: %1$s Players", + "create.schedule.condition.player_count.seated": "UNLOCALIZED: %1$s seated", + "create.schedule.condition.player_count.players": "UNLOCALIZED: Players", + "create.schedule.condition.player_count.condition": "UNLOCALIZED: Conditional", + "create.schedule.condition.player_count.exactly": "UNLOCALIZED: Exactly", + "create.schedule.condition.player_count.or_above": "UNLOCALIZED: Or above", + "create.schedule.condition.player_count.status": "UNLOCALIZED: Passengers: %1$s/%2$s", + "create.schedule.loop": "UNLOCALIZED: Loop Forever", + "create.schedule.loop1": "UNLOCALIZED: Schedule starts over", + "create.schedule.loop2": "UNLOCALIZED: when completed", + "create.schedule.reset": "UNLOCALIZED: Reset Progress", + "create.schedule.skip": "UNLOCALIZED: Skip current Stop", + "create.schedule.applied_to_train": "UNLOCALIZED: Train is now following this Schedule", + "create.schedule.non_controlling_seat": "UNLOCALIZED: Conductor needs to sit in front of a Controls block", + "create.schedule.remove_with_empty_hand": "UNLOCALIZED: Remove current Schedule with an Empty Hand", + "create.schedule.auto_removed_from_train": "UNLOCALIZED: Auto-Schedule discarded", + "create.schedule.removed_from_train": "UNLOCALIZED: Schedule retrieved from Train", + "create.schedule.no_stops": "UNLOCALIZED: This Schedule does not have any Stops yet", + "create.schedule.continued": "UNLOCALIZED: Schedule resumed", + + "create.track.selection_cleared": "UNLOCALIZED: Selection Cleared", + "create.track.valid_connection": "UNLOCALIZED: Can Connect ✔", + "create.track.second_point": "UNLOCALIZED: Place track or select a second point", + "create.track.too_far": "UNLOCALIZED: Too far away", + "create.track.original_missing": "UNLOCALIZED: Original block removed, Sneak-click to reset", + "create.track.perpendicular": "UNLOCALIZED: Cannot connect perpendicularly", + "create.track.ascending_s_curve": "UNLOCALIZED: Cannot create sloped S-Bends", + "create.track.too_sharp": "UNLOCALIZED: Turn too sharp", + "create.track.too_steep": "UNLOCALIZED: Slope too steep", + "create.track.slope_turn": "UNLOCALIZED: Cannot enter or leave slope on a turn", + "create.track.opposing_slopes": "UNLOCALIZED: Cannot connect opposing slopes", + "create.track.leave_slope_ascending": "UNLOCALIZED: Cannot leave this slope while ascending", + "create.track.leave_slope_descending": "UNLOCALIZED: Cannot leave this slope while descending", + "create.track.turn_90": "UNLOCALIZED: Can only turn up to 90 Degrees", + "create.track.junction_start": "UNLOCALIZED: Cannot start connection from a Junction", + "create.track.turn_start": "UNLOCALIZED: Cannot start connection from a Turn", + "create.track.not_enough_tracks": "UNLOCALIZED: Not holding enough tracks", + "create.track.not_enough_pavement": "UNLOCALIZED: Not holding enough pavement blocks", + + "create.portal_track.failed": "UNLOCALIZED: Cannot place portal track:", + "create.portal_track.missing": "UNLOCALIZED: Target portal not generated yet", + "create.portal_track.blocked": "UNLOCALIZED: Target location blocked (%1$s,%2$s,%3$s)", + + "create.station.idle": "UNLOCALIZED: Station is Idle", + "create.station.assembly_title": "UNLOCALIZED: Train Assembly", + "create.station.close": "UNLOCALIZED: Close Window", + "create.station.cancel": "UNLOCALIZED: Cancel Assembly", + "create.station.failed": "UNLOCALIZED: Assembly Failed", + "create.station.icon_type": "UNLOCALIZED: Icon Type", + "create.station.create_train": "UNLOCALIZED: Create new Train", + "create.station.assemble_train": "UNLOCALIZED: Assemble Train", + "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", + "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", + "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", + "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", + "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", + "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", + "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", + "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", + "create.station.carriage_number": "UNLOCALIZED: Carriage %1$s:", + "create.station.retry": "UNLOCALIZED: Resolve this and retry", + "create.station.no_bogeys": "UNLOCALIZED: No Bogeys", + "create.station.one_bogey": "UNLOCALIZED: 1 Bogey", + "create.station.more_bogeys": "UNLOCALIZED: %1$s Bogeys", + "create.station.how_to": "UNLOCALIZED: Use Train Casing on highlighted Tracks to create bogeys.", + "create.station.how_to_1": "UNLOCALIZED: Remove bogeys by breaking the block on top.", + "create.station.how_to_2": "UNLOCALIZED: Build carriages attached to one or two bogeys each.", + + "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", + "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", + "create.train_assembly.no_bogeys": "UNLOCALIZED: No Bogeys Found", + "create.train_assembly.not_connected_in_order": "UNLOCALIZED: Bogeys are not connected in order", + "create.train_assembly.bogeys_too_close": "UNLOCALIZED: Bogeys %1$s and %2$s are too close to each other", + "create.train_assembly.single_bogey_carriage": "UNLOCALIZED: This Bogey type cannot support a carriage on its own", + "create.train_assembly.nothing_attached": "UNLOCALIZED: No structure attached to Bogey %1$s", + "create.train_assembly.no_controls": "UNLOCALIZED: At least one forward-facing controls block needs to be mounted on the train", + "create.train_assembly.sideways_controls": "UNLOCALIZED: A mounted controls block is facing sideways", + "create.train_assembly.bogey_created": "UNLOCALIZED: Bogey created. Click again to cycle type", + "create.train_assembly.requires_casing": "UNLOCALIZED: Use Railway Casing to create bogeys on tracks", + + "create.track_target.set": "UNLOCALIZED: Targeted track selected", + "create.track_target.success": "UNLOCALIZED: Successfully bound to targeted track", + "create.track_target.clear": "UNLOCALIZED: Cleared track selection", + "create.track_target.missing": "UNLOCALIZED: Right-click the targeted train track first", + "create.track_target.too_far": "UNLOCALIZED: Targeted track is too far from here", + "create.track_target.no_junctions": "UNLOCALIZED: Targeted track cannot be an intersection", + "create.track_target.occupied": "UNLOCALIZED: Targeted track is occupied", + "create.track_target.invalid": "UNLOCALIZED: Cannot target this track here", + + "create.train.unnamed": "UNLOCALIZED: Unnamed Train", + "create.train.cannot_relocate_moving": "UNLOCALIZED: Cannot relocate a moving Train", + "create.train.relocate": "UNLOCALIZED: Click a Track to Relocate %1$s to. Sneak-Click to abort", + "create.train.relocate.abort": "UNLOCALIZED: Relocation aborted", + "create.train.relocate.success": "UNLOCALIZED: Relocation successful", + "create.train.relocate.valid": "UNLOCALIZED: Can relocate to here, Click to Confirm", + "create.train.relocate.invalid": "UNLOCALIZED: Cannot relocate Train to here", + "create.train.relocate.too_far": "UNLOCALIZED: Cannot relocate Train this far away", + "create.train.departing_from": "UNLOCALIZED: Departing from %1$s", + "create.train.arrived_at": "UNLOCALIZED: Arrived at %1$s", + "create.train.status": "UNLOCALIZED: Information about Train: %1$s", + "create.train.status.back_on_track": "UNLOCALIZED: Train is back on Track", + "create.train.status.collision": "UNLOCALIZED: Collision with other Train", + "create.train.status.end_of_track": "UNLOCALIZED: A Carriage has reached the end of its Track", + "create.train.status.double_portal": "UNLOCALIZED: A Carriage cannot enter a portal whilst leaving another", + "create.train.status.coupling_stress": "UNLOCALIZED: Forced stop due to Stress on Couplings", + "create.train.status.track_missing": "UNLOCALIZED: Tracks are missing beneath the Train", + "create.train.status.paused_for_manual": "UNLOCALIZED: Schedule paused for manual controls", + "create.train.status.opposite_driver": "UNLOCALIZED: Path requires a driver facing the opposite direction", + "create.train.status.missing_driver": "UNLOCALIZED: Driver has gone missing", + "create.train.status.found_driver": "UNLOCALIZED: A new driver has been found", + "create.train.status.navigation_success": "UNLOCALIZED: Navigation succeeded", + "create.train.status.no_match": "UNLOCALIZED: No station on graph matches '%1$s'", + "create.train.status.no_path": "UNLOCALIZED: No suitable path to the next Scheduled destination could be found", + + "create.track_signal.cannot_change_mode": "UNLOCALIZED: Unable to switch mode of this Signal", + "create.track_signal.mode_change.entry_signal": "UNLOCALIZED: -> Allow passage if section unoccupied", + "create.track_signal.mode_change.cross_signal": "UNLOCALIZED: -> Allow passage if section fully traversable", + + "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", + "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", + "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + + "create.display_link.set": "UNLOCALIZED: Targeted position selected", + "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", + "create.display_link.clear": "UNLOCALIZED: Cleared position selection", + "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here", + "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again", + "create.display_link.title": "UNLOCALIZED: Display Link", + "create.display_link.no_source": "UNLOCALIZED: Not a Display Source", + "create.display_link.no_target": "UNLOCALIZED: Not a Display Target", + "create.display_link.reading_from": "UNLOCALIZED: Read from:", + "create.display_link.writing_to": "UNLOCALIZED: Send to:", + "create.display_link.attached_side": "UNLOCALIZED: Block on attached side", + "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location", + "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible", + "create.display_link.information_type": "UNLOCALIZED: Type of Information", + "create.display_link.display_on": "UNLOCALIZED: Write data to:", + "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:", + + "create.display_source.label": "UNLOCALIZED: Attached Label", + "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", + "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", + "create.display_source.list_items": "UNLOCALIZED: List matching Items", + "create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids", + "create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids", + "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", + "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", + "create.display_source.fill_level.display": "UNLOCALIZED: Display Format", + "create.display_source.fill_level.percent": "UNLOCALIZED: Percent", + "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", + "create.display_source.value_list.display": "UNLOCALIZED: Value Display", + "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened", + "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number", + "create.display_source.value_list.thousand": "UNLOCALIZED: k", + "create.display_source.value_list.million": "UNLOCALIZED: m", + "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths", + "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard", + "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID", + "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", + "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", + "create.display_source.time_of_day": "UNLOCALIZED: Time of Day", + "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch", + "create.display_source.time.format": "UNLOCALIZED: Time Format", + "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour", + "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour", + "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", + "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput", + "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval", + "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second", + "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", + "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", + "create.display_source.train_status": "UNLOCALIZED: Train Schedule Status", + "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary", + "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter", + "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", + "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", + "create.display_source.station_summary.now": "UNLOCALIZED: now", + "create.display_source.station_summary.minutes": "UNLOCALIZED: min", + "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", + "create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", + "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", + "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", + "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", + "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", + "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", + "create.display_source.kinetic_stress": "UNLOCALIZED: Network Stress", + "create.display_source.kinetic_stress.display": "UNLOCALIZED: Displayed Info", + "create.display_source.kinetic_stress.progress_bar": "UNLOCALIZED: Progress Bar", + "create.display_source.kinetic_stress.percent": "UNLOCALIZED: Percentage", + "create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress in SU", + "create.display_source.kinetic_stress.max": "UNLOCALIZED: Total Capacity", + "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Remaining SU", + "create.display_source.redstone_power": "UNLOCALIZED: Redstone Power", + "create.display_source.redstone_power.display": "UNLOCALIZED: Display Format", + "create.display_source.redstone_power.number": "UNLOCALIZED: Number", + "create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar", + "create.display_source.boiler.not_enough_space": "UNLOCALIZED: Not enough space ", + "create.display_source.boiler.for_boiler_status": "UNLOCALIZED: for Boiler Status", + + "create.display_target.line": "UNLOCALIZED: Line %1$s", + "create.display_target.page": "UNLOCALIZED: Page %1$s", + "create.display_target.single_line": "UNLOCALIZED: Single Line", + + "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", + "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", + "create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s", + "create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", + "create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ", + "create.flap_display.cycles.instant": "UNLOCALIZED: ; ", + "create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒", + + "create.super_glue.too_far": "UNLOCALIZED: Selected area is too big", + "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", + "create.super_glue.click_to_confirm": "UNLOCALIZED: Click again to confirm", + "create.super_glue.click_to_discard": "UNLOCALIZED: Sneak-click to discard selection", + "create.super_glue.first_pos": "UNLOCALIZED: First position selected", + "create.super_glue.abort": "UNLOCALIZED: Selection discarded", + "create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory", + "create.super_glue.success": "UNLOCALIZED: Applying Glue...", + + "create.gui.config.overlay1": "Привіт :)", + "create.gui.config.overlay2": "Це зразок оверлея", + "create.gui.config.overlay3": "Клацніть та тягни за допомогою миші", + "create.gui.config.overlay4": "щоб перемістити його", + "create.gui.config.overlay5": "Нажіміть ESC щоб вийти", + "create.gui.config.overlay6": "або зберегти нову позицію", + "create.gui.config.overlay7": "Введи /create overlay reset", + "create.gui.config.overlay8": "щоб скинути позицію до стандартної", + + "create.command.killTPSCommand": "killtps", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Тіки сервера в даний час уповільнені на %s мс :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Тіки сервера тепер уповільнені на %s мс >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Тіки сервера повернулися в норму :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: використовуйте /killtps stop щоб повернути тик сервера на звичайну швидкість", + "create.command.killTPSCommand.status.usage.1": "[Create]: використовуйте /killtps start щоб штучно уповільнити тік сервера", + "create.command.killTPSCommand.argument.tickTime": "Час тіку", + + "create.contraption.minecart_contraption_too_big": "Ця вагонеткова штуковина здається занадто великою, щоб її можна було підняти", + "create.contraption.minecart_contraption_illegal_pickup": "Містична сила пов'язує цю вагонеткову штуковину зі світом", + + + "_": "->------------------------] Subtitles [------------------------<-", + + "create.subtitle.contraption_disassemble": "Штуковина зупиняється", + "create.subtitle.peculiar_bell_use": "Дивний дзвін дзвонить", + "create.subtitle.worldshaper_place": "Ручний редактор світу робить «Зап»", + "create.subtitle.whistle_train_manual": "UNLOCALIZED: Train honks", + "create.subtitle.steam": "UNLOCALIZED: Steam noises", + "create.subtitle.saw_activate_stone": "Активується механічна пила", + "create.subtitle.schematicannon_finish": "Схематична гармата закінчила роботу", + "create.subtitle.crafter_craft": "Крафтер створює", + "create.subtitle.wrench_remove": "Компонент ламається", + "create.subtitle.train3": "UNLOCALIZED: Bogey wheels rumble muffled", + "create.subtitle.whistle": "UNLOCALIZED: Whistling", + "create.subtitle.cogs": "Шестерні гуркочуть", + "create.subtitle.slime_added": "Намазування слизу", + "create.subtitle.whistle_train_low": "UNLOCALIZED: Low whistling", + "create.subtitle.schematicannon_launch_block": "Постріли схематичної гармати", + "create.subtitle.controller_take": "Кафедра спустошується", + "create.subtitle.crafter_click": "Крафтер клікає", + "create.subtitle.depot_plop": "Предмет падає", + "create.subtitle.confirm": "Стверджувальний «Дінь»", + "create.subtitle.mixing": "Шум змішування", + "create.subtitle.mechanical_press_activation_belt": "Механічний прес робить«боньк» ", + "create.subtitle.fwoomp": "Картопельна гармата робить «Свомп»»", + "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", + "create.subtitle.crushing_1": "Шум руйнування", + "create.subtitle.depot_slide": "Шелест предметів", + "create.subtitle.blaze_munch": "Блейз радісно жує", + "create.subtitle.funnel_flap": "Фіранки воронок ляскають", + "create.subtitle.haunted_bell_use": "Примарний дзвін дзвонить", + "create.subtitle.scroll_value": "Клацання колеса прокручування", + "create.subtitle.controller_put": "Контролер стукає", + "create.subtitle.cranking": "Обертається рукоятка", + "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", + "create.subtitle.wrench_rotate": "Використано гайковий ключ", + "create.subtitle.potato_hit": "Овочі врізаються", + "create.subtitle.saw_activate_wood": "Активується Механічна пила", + "create.subtitle.whistle_high": "UNLOCALIZED: High whistling", + "create.subtitle.whistle_train_manual_low": "UNLOCALIZED: Train honks", + "create.subtitle.whistle_train": "UNLOCALIZED: Whistling", + "create.subtitle.haunted_bell_convert": "Примарний дзвін прокидається", + "create.subtitle.train": "UNLOCALIZED: Bogey wheels rumble", + "create.subtitle.deny": "Від'ємний «Буп»", + "create.subtitle.controller_click": "Кліки контролера", + "create.subtitle.whistle_low": "UNLOCALIZED: Low whistling", + "create.subtitle.copper_armor_equip": "Дзвінкування спорядження для дайвінгу", + "create.subtitle.mechanical_press_activation": "Механічний прес активовано", + "create.subtitle.contraption_assemble": "Штуковина рухається", + + + "_": "->------------------------] Item Descriptions [------------------------<-", + + "item.create.example_item.tooltip": "ПРИКЛАД ПРЕДМЕТА (лише маркер того, що ця підказка існує)", + "item.create.example_item.tooltip.summary": "Короткий опис предмета. _Підкреслення_ виділяють слово.", + "item.create.example_item.tooltip.condition1": "Коли це", + "item.create.example_item.tooltip.behaviour1": "Тоді цей предмет робить це. (поведінка показує на зміну)", + "item.create.example_item.tooltip.condition2": "І коли це", + "item.create.example_item.tooltip.behaviour2": "Ви можете додати скільки завгодно способів поведінки", + "item.create.example_item.tooltip.control1": "При натисканні Ctrl", + "item.create.example_item.tooltip.action1": "Відображаються ці елементи керування.", + + "block.create.wooden_bracket.tooltip": "ДЕРЕВ'ЯНА СКОБА", + "block.create.wooden_bracket.tooltip.summary": "_Прикраште_ ваші _вали, _шестерні_ і _труби_ використовуючи затишне дерев'яне укріплення.", + + "block.create.metal_bracket.tooltip": "МЕТАЛІЧНА СКОБА", + "block.create.metal_bracket.tooltip.summary": "_Прикраште_ your ваші _Вали, _Шестерні_ і _Труби_ використовуючи міцне індустріальне зміцнення.", + + "block.create.seat.tooltip": "СІДЛО", + "block.create.seat.tooltip.summary": "Сідайте і насолоджуйтеся поїздкою! Прив'язує гравців до зібраних _пристроям_. Відмінно виглядають як прості меблі! Можна пофарбувати у різні кольори.", + "block.create.seat.tooltip.condition1": "ПКМ по сидінню", + "block.create.seat.tooltip.behaviour1": "Садить гравця на _Сідло_. Нажміть L-shift щоб злізти з _Сідло_.", + + "item.create.blaze_cake.tooltip": "ТОРТ «ВОГНЯНИЙ»", + "item.create.blaze_cake.tooltip.summary": "Смачне частування для вашої трудяги _Пальник брейза_. Запалює їх усіх!", + + "item.create.wand_of_symmetry.tooltip": "ПАЛИЦЯ СИМЕТРІЇ", + "item.create.wand_of_symmetry.tooltip.summary": "Ідеально відзеркалює блоки, що розміщуються за налаштованими площинами.", + "item.create.wand_of_symmetry.tooltip.condition1": "На панелі щвидкого доступу", + "item.create.wand_of_symmetry.tooltip.behaviour1": "Залишається активним", + "item.create.wand_of_symmetry.tooltip.control1": "ПКМ по землі", + "item.create.wand_of_symmetry.tooltip.action1": "_Створює_ або _Передміщає_ зеркало", + "item.create.wand_of_symmetry.tooltip.control2": "ПКМ по повітрю", + "item.create.wand_of_symmetry.tooltip.action2": "_Забирає_ зеркало", + "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадькома", + "item.create.wand_of_symmetry.tooltip.action3": "Відкриває _Інтерфейс конфігурації_", + + "item.create.handheld_worldshaper.tooltip": "РУЧНИЙ РЕДАКТОР СВІТУ", + "item.create.handheld_worldshaper.tooltip.summary": "Зручний інструмент для створення _ландшафтів_ і _рельєфу місцевості_.", + "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ по блоку", + "item.create.handheld_worldshaper.tooltip.action1": "Встановлює блоки, поміщені в інструмент, у цільовий блок.", + "item.create.handheld_worldshaper.tooltip.control2": "ПКМ по блоку", + "item.create.handheld_worldshaper.tooltip.action2": "Застосовує вибрану _Пензлик_ і _Інструмент_ в вибраному місці.", + "item.create.handheld_worldshaper.tooltip.control3": "ПКМ крадькома", + "item.create.handheld_worldshaper.tooltip.action3": "Відкриває _Інтерфейс конфігурації_", + + "item.create.tree_fertilizer.tooltip": "ПОДОБРЕННЯ ДЛЯ ДЕРЕВ", + "item.create.tree_fertilizer.tooltip.summary": "Потужна комбінація мінералів підходить для прискорення зростання поширених типів дерев.", + "item.create.tree_fertilizer.tooltip.condition1": "При використанні на Саджанці", + "item.create.tree_fertilizer.tooltip.behaviour1": "Вирощує дерева _rнезадежно_ від _умов розміщення_", + + "item.create.extendo_grip.tooltip": "ДОВГА РУКА", + "item.create.extendo_grip.tooltip.summary": "Бойойоїнг! Значно _збільшує досяжність_ власника. Може працювати за допомогою тиску повітря від _Мідного балону_", + "item.create.extendo_grip.tooltip.condition1": "Перебуваючи в іншій руці", + "item.create.extendo_grip.tooltip.behaviour1": "Збільшує _збільшує досяжність_ предметів, що використовуються в _Головній руці_.", + "item.create.extendo_grip.tooltip.condition2": "Коли одягнений Мідний балон", + "item.create.extendo_grip.tooltip.behaviour2": "_Не_ тратиться _Міцність_. Натомість буде витрачатися _Повітря_ з балону", + + "item.create.potato_cannon.tooltip": "КАРТОПЛЯНА ГРАМАТА", + "item.create.potato_cannon.tooltip.summary": "Свомп! Запускайте вирощені вами овочі у своїх ворогів. Може працювати від тиску повітря з _Мідного балону_", + "item.create.potato_cannon.tooltip.condition1": "Натискаючи ПКМ", + "item.create.potato_cannon.tooltip.behaviour1": "_Вистрілює_ відповідним предметом з вашого _інвентара_.", + "item.create.potato_cannon.tooltip.condition2": "Коли одягнений Мідний балон", + "item.create.potato_cannon.tooltip.behaviour2": "_Не_ тратиться _Міцність_. Натомість буде витрачатися _Повітря_ з балону", + + "item.create.filter.tooltip": "ФІЛЬТР", + "item.create.filter.tooltip.summary": "_Керує виходами_ і _входами_ логістичних пристроїв з _більшою точністю_, _зіставляючи_ їх зі _списком предметів_ або кількома _вкладеними фільтрами_.", + "item.create.filter.tooltip.condition1": "Коли в слоті фільтра", + "item.create.filter.tooltip.behaviour1": "_Керує_ потоком предметів відповідно до його _Конфігурації_.", + "item.create.filter.tooltip.condition2": "Коли ПКМ", + "item.create.filter.tooltip.behaviour2": "Відкриває _інтерфейс конфігурації_.", + + "item.create.attribute_filter.tooltip": "ФІЛЬТР АТРИБУТІВ", + "item.create.attribute_filter.tooltip.summary": "_Керує виходами_ і _входами_ логістичних пристроїв з більшою _точністю_, зіставлення їх із a _набором_ предметних _атрибутів_ і _категорій_.", + "item.create.attribute_filter.tooltip.condition1": "Коли в слоті фільтра", + "item.create.attribute_filter.tooltip.behaviour1": "_Керує_ потоком предметів відповідно до його _Конфігурації_.", + "item.create.attribute_filter.tooltip.condition2": "Коли ПКМ", + "item.create.attribute_filter.tooltip.behaviour2": "Відкриває _інтерфейс конфігурації_.", + + "item.create.empty_schematic.tooltip": "ПУСТА СХЕМАТИКА", + "item.create.empty_schematic.tooltip.summary": "Використовується як інгредієнт рецепту і для запису в _Схематичному столі_.", + + "item.create.schematic.tooltip": "СХЕМАТИКА", + "item.create.schematic.tooltip.summary": "Містить структуру, яка позиціонуватиметься і поміщатиметься у світ. Розташуйте голограму на свій розсуд і використовуйте _схематичну гармату_ для її побудови.", + "item.create.schematic.tooltip.condition1": "При утриманні", + "item.create.schematic.tooltip.behaviour1": "Може бути позиціонований за допомогою інструментів на екрані.", + "item.create.schematic.tooltip.control1": "ПКМ крадькома", + "item.create.schematic.tooltip.action1": "Відкриває _інтерфейс_ для введення _точних координат_.", + + "item.create.schematic_and_quill.tooltip": "СХЕМАТИКА І ПЕРО", + "item.create.schematic_and_quill.tooltip.summary": "Використовується для збереження структури у вашому світі у файл .nbt.", + "item.create.schematic_and_quill.tooltip.condition1": "Крок 1", + "item.create.schematic_and_quill.tooltip.behaviour1": "Виберіть дві кутові точки за допомогою ПКМ..", + "item.create.schematic_and_quill.tooltip.condition2": "Крок 2", + "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl та прокручування_ на голограмі для зміни розміру. Натисніть ПКМ, щоб зберегти.", + "item.create.schematic_and_quill.tooltip.control1": "ПКМ", + "item.create.schematic_and_quill.tooltip.action1": "Виберіть кутові точки / підтвердіть збереження.", + "item.create.schematic_and_quill.tooltip.control2": "Утримуйте Ctrl", + "item.create.schematic_and_quill.tooltip.action2": "Виберіть точки в _повітрі_. _Прокрутка_ для настройки дистанції.", + "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадькомаg", + "item.create.schematic_and_quill.tooltip.action3": "_Скидує_ і _видаляє_ виділення.", + + "block.create.schematicannon.tooltip": "СХЕМАТИЧНА ГАРРМАТА", + "block.create.schematicannon.tooltip.summary": "_Ставить блоки_ для відтворення _схематики_ у світі. Використовує предмети з _сусіднього інвентаря_ і _порох_ як _паливо_.", + "block.create.schematicannon.tooltip.condition1": "ПКМ", + "block.create.schematicannon.tooltip.behaviour1": "Відкриває _Інтерфейс_", + + "block.create.schematic_table.tooltip": "СХЕМАТИЧНИЙ СТІЛ", + "block.create.schematic_table.tooltip.summary": "Записує збережені схематики в _Пусті схематики_.", + "block.create.schematic_table.tooltip.condition1": "Коли дана схема порожня", + "block.create.schematic_table.tooltip.behaviour1": "Завантажує вибраний файл із папки Schematics.", + + "item.create.goggles.tooltip": "ІНЖЕНЕРНІ ОКУЛЯРИ", + "item.create.goggles.tooltip.summary": "Окуляри для покращення зору за допомогою корисної _кінетичної інформації_.", + "item.create.goggles.tooltip.condition1": "Коли одіто", + "item.create.goggles.tooltip.behaviour1": "Показує _кольорові індикатори_ відповідно _рівню швидкості_ розміщеного кінетичного компонента, а також _створюваному навантаженні_ і _потужності_ окремих компонентів.", + "item.create.goggles.tooltip.condition2": "При погляді на датчик", + "item.create.goggles.tooltip.behaviour2": "Показує детальну інформацію про _швидкість_ або _навантаження_ мережі, до якої підключено датчик.", + "item.create.goggles.tooltip.condition3": "При погляді на рідинні контейнери", + "item.create.goggles.tooltip.behaviour3": "Показує детальну інформацію про _МІсткість_ блоку і про _Рідини_ які в ньому зберігаються.", + + "item.create.wrench.tooltip": "ГАЙКОВИЙ КЛЮЧ", + "item.create.wrench.tooltip.summary": "Корисний інструмент для роботи з кінетичними пристосуваннями. Може використовуватись для _оберту_, _демонтажа_ та to _настройки_ каомпонентів.", + "item.create.wrench.tooltip.control1": "ПКМ по кінетичному блоку", + "item.create.wrench.tooltip.action1": "_Повертає компонент_ у бік або від обличчя, з яким ви взаємодіяли.", + "item.create.wrench.tooltip.control2": "ПКМ крадькома", + "item.create.wrench.tooltip.action2": "_Розбирає кінетичні компоненти_ і розміщує їх назад в _ваш інвентар_.", + + "block.create.nozzle.tooltip": "НАСАДКА", + "block.create.nozzle.tooltip.summary": "Прикріпіть до передньої частини _Вентилятора у корпусіn_щоб розподілити його вплив на Сутності в _всіх напрямах_.", + + "block.create.cuckoo_clock.tooltip": "ГОДИННИК З ЗОЗУЛЕЮ", + "block.create.cuckoo_clock.tooltip.summary": "Прекрасна майстерність для _дукорування_ простору і _відстеження часу_.", + "block.create.cuckoo_clock.tooltip.condition1": "При обертанні", + "block.create.cuckoo_clock.tooltip.behaviour1": "Показує _поточний час_ і грає мелодію двічі на день. _Активується_ один раз в _полудні_ і у сутінках, як тільки _гравець може спати_.", + + "block.create.turntable.tooltip": "ПОВОРОТНИЙ СТІЛ", + "block.create.turntable.tooltip.summary": "Повертає _силу обертання_ у вишукану морську хворобу.", + + "block.create.toolbox.tooltip": "ЯЩИК ДЛЯ ІНСТРУМЕНТІВ", + "block.create.toolbox.tooltip.summary": "Найдорожчий супутник кожного винахідника. Зручно _зберігає_ велику кількість _восьми різних_ типів предметів.", + "block.create.toolbox.tooltip.condition1": "Коли підібрано", + "block.create.toolbox.tooltip.behaviour1": "_Зберігає вміст_ Інвентарю.", + "block.create.toolbox.tooltip.condition2": "При розміщенні в діапазоні", + "block.create.toolbox.tooltip.behaviour2": "_Найближчі гравці_ можуть тримати _клавішу ящику для інструментів_, щоб отримати доступ до його вмісту _Дистанційно_.", + "block.create.toolbox.tooltip.condition3": "При клацанні ПКМ", + "block.create.toolbox.tooltip.behaviour3": "Відкриває _Інтерфейс контейнеру_.", + + "block.create.stockpile_switch.tooltip": "НАСТРОЄНИЙ КОМПАРАТОР", + "block.create.stockpile_switch.tooltip.summary": "Перемикає сигнал редстоуну залежно від кількості _Збережених предметів_ чи _Рідин_ у доданому контейнері. У комплект входить зручний фільтр. На відміну від a _Редстоунового Компаратора,_ _Настроєний компаратор_ дозволяє конфігурувати _поріг,_ при якому сигнали інвертуються.", + "block.create.stockpile_switch.tooltip.condition1": "При клацанні ПКМ", + "block.create.stockpile_switch.tooltip.behaviour1": "Відкриває _Інтерфейс конфігурації_.", + + "block.create.content_observer.tooltip": "CСПОСТЕРІГАЧ ВМІСТУ", + "block.create.content_observer.tooltip.summary": "_Розпізнає Предмети_ або _Рідини_ всередині _контейнерів_, _труб_ чи _конвеєрів_ відповідно налаштованому _фільтру_.", + "block.create.content_observer.tooltip.condition1": "При спостереженні за контейнером", + "block.create.content_observer.tooltip.behaviour1": "Випромінює _Редстоун сигнал_ коли спостережуваний контейнер має _відповідний вміст_.", + "block.create.content_observer.tooltip.condition2": "При спостереженні за Воронкою", + "block.create.content_observer.tooltip.behaviour2": "Випромінює _Імпульс редстоуну_ коли _відповідний_ предмет _передається_.", + + "block.create.creative_crate.tooltip": "ТВОРЧИЙ ЯЩИК", + "block.create.creative_crate.tooltip.summary": "Цей _Контейнер для зберігання_ дозволяє нескінченно копіювати будь-який елемент. Розмістіть поруч із _Схематичною гарматою_, щоб видалити будь-які вимоги до матеріалів.", + "block.create.creative_crate.tooltip.condition1": "Коли предмет в Слоті для Фільтра", + "block.create.creative_crate.tooltip.behaviour1": "Усе, що _витягується_ з цього контейнера, забезпечить _нескінченну поставку_ зазначеного елемента. Предмети, _вставлені_ в цей ящик, будуть _анульовані_.", + + "item.create.creative_blaze_cake.tooltip": "ТВОРЧИЙ «ВОГНЯНИЙ» ТОРТ", + "item.create.creative_blaze_cake.tooltip.summary": "Дуже особливе задоволення для _Пальника блейза_, котре дозволяє контролювати рівень їх нагріву. Після того, з’їдання цього пиріга, у _Пальника блейза_ _ніколи не закінчиться паливо_.", + "item.create.creative_blaze_cake.tooltip.condition1": "При клацанні ПКМ по Пальнику блейза", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_Блокує_ рівень нагрівання Пальника блейза. У разі повторного використання _циклує_ рівень нагрівання Пальника блейза.", + + "block.create.controller_rail.tooltip": "КОНТРОЛЕРНА РЕЙКА", + "block.create.controller_rail.tooltip.summary": "_Односпрямована рейка з електроприводом, здатна _точно контролювати швидкість руху вагонеток.", + "block.create.controller_rail.tooltip.condition1": "Коли живиться від Редстоуну", + "block.create.controller_rail.tooltip.behaviour1": "_Прискорює_ або _Сповільнює_ проходження _вагонеток_ відповідно до _потужності_ сигналу. Поширює потужність червоного каменю на сусідні рейки контролера. Живлення двох рейок контролера з різною потужністю призведе до інтерполяції сигналу на доріжках між ними.", + + "item.create.sand_paper.tooltip": "НАЖДАЧНИЙ ПАПІР", + "item.create.sand_paper.tooltip.summary": "Грубий папір, який можна використовувати для _полірування матеріалів_. Може застосовуватися автоматично за допомогою Автономний активатор.", + "item.create.sand_paper.tooltip.condition1": "При використанні", + "item.create.sand_paper.tooltip.behaviour1": "Полірує предмети у _другій руці_, або лежачі _на підлозі_, якщо _подивитися на них_", + + "item.create.builders_tea.tooltip": "ЧАЙ БУДІВЕЛТНИКА", + "item.create.builders_tea.tooltip.summary": "Ідеальний напіток для початку дня. _Мотивує_ і _Насищає_", + + "item.create.refined_radiance.tooltip": "ВИШУКАНЕ СЯЙВО", + "item.create.refined_radiance.tooltip.summary": "Хроматичний матеріал, _добутий з поглиненого світла_.", + "item.create.refined_radiance.tooltip.condition1": "Робота в процесі", + "item.create.refined_radiance.tooltip.behaviour1": "Використання цього матеріалу буде доступним у майбутніх оновленнях.", + + "item.create.shadow_steel.tooltip": "ТІНЬОВА СТАЛЬ", + "item.create.shadow_steel.tooltip.summary": "Хроматичний матеріал, _добутий в пустоті_.", + "item.create.shadow_steel.tooltip.condition1": "Робота в процесі", + "item.create.shadow_steel.tooltip.behaviour1": "Використання цього матеріалу буде доступним у майбутніх оновленнях.", + + "item.create.linked_controller.tooltip": "ПІДКЛЮЧЕНИЙ КОНТРОЛЕР", + "item.create.linked_controller.tooltip.summary": "Надає _ручний контроль_ над частотами _Бездротового передавача редстоун сигналу_, присвоєні його _шести_ кнопкам.", + "item.create.linked_controller.tooltip.condition1": "ПКМ", + "item.create.linked_controller.tooltip.behaviour1": "Вмикає контролер. _Управління рухом_ перехоплено, доки він активний.", + "item.create.linked_controller.tooltip.condition2": "ПКМ крадьдома", + "item.create.linked_controller.tooltip.behaviour2": "Відкриває ручний _Інтерфейс конфігурації_.", + "item.create.linked_controller.tooltip.condition3": "ПКМ по приймачеві сигналу редстоуна", + "item.create.linked_controller.tooltip.behaviour3": "Включає _режим прив'язки_, натисніть одну з _шести кнопок_, щоб прив'язати його до _частоти передавача_.", + "item.create.linked_controller.tooltip.condition4": "ПКМ по Аналою", + "item.create.linked_controller.tooltip.behaviour4": "Поміщає контролер на Аналой для зручності використання. (ПКМ крадучись, щоб забрати його)", + + "item.create.diving_helmet.tooltip": "ШОЛОМ ДЛЯ ДАЙВІНГУ", + "item.create.diving_helmet.tooltip.summary": "Разом з _Мідним балоном_, дозволяє володарю _дихати під водою_ протягом тривалого періоду часу.", + "item.create.diving_helmet.tooltip.condition1": "При носінні", + "item.create.diving_helmet.tooltip.behaviour1": "Дає ефект _Водяного Дихання_, повільно витрачаючи _повітря_ з балона.", + + "item.create.copper_backtank.tooltip": "МІДНИЙ БАЛОН", + "item.create.copper_backtank.tooltip.summary": "_Носити резервуар_ для транспортування повітря під тиском.", + "item.create.copper_backtank.tooltip.condition1": "При носінні", + "item.create.copper_backtank.tooltip.behaviour1": "Забезпечує подачу _повітря_ під _тиском_ до обладнання, яке цього потребує.", + "item.create.copper_backtank.tooltip.condition2": "При розміщенні та живленні від кінетичної енергії", + "item.create.copper_backtank.tooltip.behaviour2": "_Збирає та стискає повітря_ зі швидкістю, яка залежить від швидкості обертання_.", + + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", + "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", + "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", + "block.create.placard.tooltip.behaviour1": "UNLOCALIZED: _Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.", + "block.create.placard.tooltip.condition2": "UNLOCALIZED: When Punched", + "block.create.placard.tooltip.behaviour2": "UNLOCALIZED: _Removes_ the current _item_ in the frame.", + + "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", + "block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.", + "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", + "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.", + + "item.create.diving_boots.tooltip": "ЧОБОТИ ДЛЯ ДАЙВІНГУ", + "item.create.diving_boots.tooltip.summary": "Пара _важких черевиків_, дозволяючи краще проходити дно океану.", + "item.create.diving_boots.tooltip.condition1": "При носінні", + "item.create.diving_boots.tooltip.behaviour1": "Власник _тоне швидше_ і _не_ може _плавати_. Черевики дають можливість _ходити_ і _стрибати_ під водою. На власника також більше не впливають _Конвеєри_ (пересування конвеєром).", + + "item.create.crafting_blueprint.tooltip": "СТВОРЕННЯ КРУСЕННЯ", + "item.create.crafting_blueprint.tooltip.summary": "_Розмістивши_ на стіні, його можна використовувати для _визначення розташування компонентів_ (блоків) для більш простого ручного створення предметів. Кожен слот показує Рецепт.", + "item.create.crafting_blueprint.condition1": "ПКМ по пустому Слоту", + "item.create.crafting_blueprint.behaviour1": "Відкриває _Меню крафта_ дозволяючи вам _налаштувати рецепт_ і предмети для відображення.", + "item.create.crafting_blueprint.condition2": "ПКМ по налаштованому слоту", + "item.create.crafting_blueprint.behaviour2": "_Застосовує_ _заданий_ _рецепт_ з відповідними інгредієнтами, з вашого _інвентаря_. _Shift_, щоб створити цілого _стак_ предметів.", + + "item.create.minecart_coupling.tooltip": "З'ЄДНУВАЧ ВАГОНЕТОК", + "item.create.minecart_coupling.tooltip.summary": "_З'єднує_ всі ваші _Вагонетки_ або _Перевізні пристрої_ разом, щоб утворити величний поїзд.", + "item.create.minecart_coupling.tooltip.condition1": "При використанні на Вагонетці", + "item.create.minecart_coupling.tooltip.behaviour1": "_З'єднує_ дві Вагонетки разом, намагаючись утримати їх на _певній відстані_ під час руху.", + + "item.create.experience_nugget.tooltip": "UNLOCALIZED: NUGGET OF EXPERIENCE", + "item.create.experience_nugget.tooltip.summary": "UNLOCALIZED: _Ding!_ A speck of _inspiration_ from your fantastic inventions.", + "item.create.experience_nugget.tooltip.condition1": "UNLOCALIZED: When Used", + "item.create.experience_nugget.tooltip.behaviour1": "UNLOCALIZED: _Redeems_ _Experience_ points contained within.", + + "block.create.peculiar_bell.tooltip": "ДИВНИЙ ДЗВІН", + "block.create.peculiar_bell.tooltip.summary": "Декоративний _Латунний дзвін_. Розмістіть його прямо над відкритим _Вогнем душ_ може викликати побічні ефекти...", + + "block.create.haunted_bell.tooltip": "ПРИМАРНИЙ ДЗВІН", + "block.create.haunted_bell.tooltip.summary": "_Проклятий дзвін_ населений втраченими душами Нижнього світу.", + "block.create.haunted_bell.tooltip.condition1": "При носінні або при дзвоні", + "block.create.haunted_bell.tooltip.behaviour1": "Підсвічує найближчі місця _без світла_, на яких можуть з'являтися ворожі моби_", + + + "_": "->------------------------] 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.next_up": "UNLOCALIZED: Up Next:", + "create.ponder.previous": "Минула сцена", + "create.ponder.replay": "Повтор", + "create.ponder.think_back": "Подумати про минуле", + "create.ponder.slow_text": "Зручне читання", + "create.ponder.exit": "Вийти", + "create.ponder.welcome": "Вітаємо в Роздумах", + "create.ponder.categories": "Доступні категорії в Create", + "create.ponder.index_description": "Клацніть один із значків, щоб дізнатися про пов’язані з ним предмети та блоки", + "create.ponder.index_title": "Зміст роздумів", + "create.ponder.shared.rpm16": "16 об./хв", + "create.ponder.shared.behaviour_modify_wrench": "Цю поведінку можна змінити за допомогою гайкового ключа", + "create.ponder.shared.storage_on_contraption": "Приєднані до штуковини інвентарі будуть підбирати речі автоматично", + "create.ponder.shared.sneak_and": "Крастися +", + "create.ponder.shared.rpm8": "8 об./хв", + "create.ponder.shared.ctrl_and": "Ctrl +", + "create.ponder.shared.rpm32": "32 об./хв", + "create.ponder.shared.rpm16_source": "Джерело: 16 об./хв", + "create.ponder.shared.movement_anchors": "З допомогою суперклея або шасі, великі структури можуть бути здвинуті.", + "create.ponder.tag.redstone": "Логічні компоненти", + "create.ponder.tag.redstone.description": "Компоненти, які допомагають з конструюванням редстоун схем", + "create.ponder.tag.contraption_assembly": "Пристосування для приєднання блоків", + "create.ponder.tag.contraption_assembly.description": "Інструменти та Компоненти використовуються для складання структур, що пересуваються як рухомі Штуковини", + "create.ponder.tag.fluids": "Рідинні маніпулятори", + "create.ponder.tag.fluids.description": "Компоненти, що допомагають переміщати та використовувати рідини", + "create.ponder.tag.decoration": "Естетика", + "create.ponder.tag.decoration.description": "Компоненти, які найчастіше використовуються для декоративних цілей", + "create.ponder.tag.windmill_sails": "Вітрила для Підшипників вітряка", + "create.ponder.tag.windmill_sails.description": "Блоки, кількість яких збільшує силу вітряка. Кожен із цих блоків має однакову ефективність у справі.", + "create.ponder.tag.arm_targets": "Цілі для Механічної руки", + "create.ponder.tag.arm_targets.description": "Компоненти, які можна вибрати входами або виходами для Механічної руки", + "create.ponder.tag.kinetic_appliances": "Кінетичні прилади", + "create.ponder.tag.kinetic_appliances.description": "Компоненти, які використовують силу обертання", + "create.ponder.tag.kinetic_sources": "Кінетичні джерела", + "create.ponder.tag.kinetic_sources.description": "Компоненти, які створюють обертальну силу", + "create.ponder.tag.movement_anchor": "Опори руху", + "create.ponder.tag.movement_anchor.description": "Компоненти, що дозволяють створювати штуковини, що рухаються, пожвавлюючи прикріплену структуру різними способами.", + "create.ponder.tag.kinetic_relays": "Кінетичні блоки", + "create.ponder.tag.kinetic_relays.description": "Компоненти, що допомагають передавати силу обертання будь-куди", + "create.ponder.tag.contraption_actor": "Компоненти штуковин", + "create.ponder.tag.contraption_actor.description": "Компоненти, що виявляють особливу поведінку, коли прикріплені до штуковини, що рухається.", + "create.ponder.tag.creative": "Творчий режим", + "create.ponder.tag.creative.description": "Компоненти зазвичай недоступні в режимі виживання", + "create.ponder.tag.display_sources": "UNLOCALIZED: Sources for Display Links", + "create.ponder.tag.display_sources.description": "UNLOCALIZED: Components or Blocks which offer some data that can be read with a Display Link", + "create.ponder.tag.logistics": "Транспортування предметів", + "create.ponder.tag.logistics.description": "Компоненти, що допомагають рухати предмети", + "create.ponder.tag.display_targets": "UNLOCALIZED: Targets for Display Links", + "create.ponder.tag.display_targets.description": "UNLOCALIZED: Components or Blocks which can process and display the data received from a Display Link", + "create.ponder.tag.train_related": "UNLOCALIZED: Railway Equipment", + "create.ponder.tag.train_related.description": "UNLOCALIZED: Components used in the construction or management of Train Contraptions", + + "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": "Використання Андезитових тунелів", + "create.ponder.andesite_tunnel.text_1": "Андезитові тунелі можуть бути використані, щоб накривати конвеєри.", + "create.ponder.andesite_tunnel.text_2": "Завжди, коли у Андезитового тунелю є з'єднання збоку...", + "create.ponder.andesite_tunnel.text_3": "...він буде відокремлювати рівно один предмет з будь-яких стаків, що проходять повз.", + "create.ponder.andesite_tunnel.text_4": "Залишок продовжить свій шлях", + + "create.ponder.auto_schedule.header": "UNLOCALIZED: Stations & Scheduling", + "create.ponder.auto_schedule.text_1": "UNLOCALIZED: Schedules can be used to provide drivers with a destination", + "create.ponder.auto_schedule.text_2": "UNLOCALIZED: Comparators will receive a signal whenever a Train is present", + "create.ponder.auto_schedule.text_3": "UNLOCALIZED: Mind that a Station can only be approached from the indicated direction", + "create.ponder.auto_schedule.text_4": "UNLOCALIZED: Stations can also be used to assign new Schedules automatically", + "create.ponder.auto_schedule.text_5": "UNLOCALIZED: The Schedule placed on a station will automatically copy itself to present trains", + "create.ponder.auto_schedule.text_6": "UNLOCALIZED: As opposed to manual scheduling, drivers will not take the item with them", + + "create.ponder.basin.header": "Оброблення предметів у Чаші", + "create.ponder.basin.text_1": "Чаша може зберігати предмети та рідини для обробки", + "create.ponder.basin.text_2": "Після обробки, чаші намагаються вивести результат під будь-який з їхніх сторін", + "create.ponder.basin.text_3": "Коли надано відповідний компонент, у Чаші з'явиться кран, що виходить.", + "create.ponder.basin.text_4": "Декілька варіантів застосовні тут", + "create.ponder.basin.text_5": "Виведення чаші буде спіймано інвентарем нижче", + "create.ponder.basin.text_6": "Без виходу крана, Чаша залишатиме предмети, отримані в результаті обробки", + "create.ponder.basin.text_7": "Це може бути корисним, якщо продукт повинен бути використаний повторно як інгредієнт", + "create.ponder.basin.text_8": "Бажані продукти повинні бути в такому випадку вилучені із чаші", + "create.ponder.basin.text_9": "Фільтр може бути необхідний для уникнення вилучення необроблених предметів", + + "create.ponder.bearing_modes.header": "Режимах руху механічного підшипника", + "create.ponder.bearing_modes.text_1": "Коли зупинено, підшипник встановить структуру на найближчому вирівняному по сітці блоках куті.", + "create.ponder.bearing_modes.text_2": "Він може бути налаштований ніколи не повертати структуру в твердий стан, або лише біля початкового кута", + + "create.ponder.belt_casing.header": "Обрамлення ременів", + "create.ponder.belt_casing.text_1": "Латунний або Андезитовий корпус можна використовувати для декорації Механічних ременів (конвеєра)", + "create.ponder.belt_casing.text_2": "Використовуйте Ключ, щоб усунути обрамлення", + + "create.ponder.belt_connector.header": "Використання Механічних ременів", + "create.ponder.belt_connector.text_1": "ПКМ по двом валах предметом ременя з'єднає їх разом у конвеєр", + "create.ponder.belt_connector.text_2": "Випадкові виділення можуть бути скасовані натисканням ПКМ Крадучись", + "create.ponder.belt_connector.text_3": "Додаткові вали можуть бути додані по всій довжині конвеєра", + "create.ponder.belt_connector.text_4": "Вали, з'єднані через ремені, будуть обертатися з тією ж швидкістю та напрямком", + "create.ponder.belt_connector.text_5": "Додані Вали можуть бути прибрані Ключем", + "create.ponder.belt_connector.text_6": "Механічні ремені можуть бути пофарбовані з естетичною метою", + + "create.ponder.belt_directions.header": "Можливих розташувань Механічних ременів", + "create.ponder.belt_directions.text_1": "Ремені не можуть з'єднуватися у довільних напрямках", + "create.ponder.belt_directions.text_2": "1. Вони можуть з'єднуватися горизонтально", + "create.ponder.belt_directions.text_3": "2. Вони можуть з'єднуватись по діагоналі", + "create.ponder.belt_directions.text_4": "3. Вони можуть з'єднуватися вертикально", + "create.ponder.belt_directions.text_5": "4. І вони можуть з'єднувати вертикальні вали горизонтально", + "create.ponder.belt_directions.text_6": "Це все можливі напрямки. Ремені можуть досягати Довжини від 2 до 20 блоків", + + "create.ponder.belt_transport.header": "Використання Механічних ременів для логістики", + "create.ponder.belt_transport.text_1": "Ремені, що рухаються, переміщатимуть Предмети та інші Сутності", + "create.ponder.belt_transport.text_2": "ПКМ порожній рукою, щоб забрати предмети з ременя", + + "create.ponder.blaze_burner.header": "Годування пальників блейза", + "create.ponder.blaze_burner.text_1": "Пальники блейза дають тепло предметам, що обробляються в Чаші.", + "create.ponder.blaze_burner.text_2": "Для цього, Блейз повинен бути нагодований займистими предметами", + "create.ponder.blaze_burner.text_3": "З Тортом сполоху, пальник може досягати ще більшого рівня жару", + "create.ponder.blaze_burner.text_4": "Процес годування може бути автоматизований, використовуючи Автономний активатор або Механічну руку", + + "create.ponder.brass_funnel.header": "Латунній Воронці", + "create.ponder.brass_funnel.text_1": "Андезитова воронка може витягувати тільки одиночні предмети", + "create.ponder.brass_funnel.text_2": "Латунна воронка може витягувати до цілого стака", + "create.ponder.brass_funnel.text_3": "Прокручування на слоті фільтра дозволяє точно регулювати розмір стака, що витягується.", + "create.ponder.brass_funnel.text_4": "Використовуючи предмет на слоті фільтра, обмежить воронку до передачі тільки збігаючих стаків.", + + "create.ponder.brass_tunnel.header": "Використання Латунних тунелів", + "create.ponder.brass_tunnel.text_1": "Латунні тунелі можуть бути використані, щоб накривати конвеєри", + "create.ponder.brass_tunnel.text_2": "Латунні тунелі мають слот для фільтра на кожній відкритій стороні.", + "create.ponder.brass_tunnel.text_3": "Фільтр на вхідних з'єднаннях блокує невідповідні предмети", + "create.ponder.brass_tunnel.text_4": "Фільтр на вихідних з'єднаннях може бути використаний для сортування предметів типу", + "create.ponder.brass_tunnel.text_5": "Завжди, коли у предмета, що проходить, є кілька доступних виходів, режим розподілу вирішить що з ним робити", + "create.ponder.brass_tunnel.text_6": "Латунні тунелі на паралельних конвеєрах формують групи", + "create.ponder.brass_tunnel.text_7": "Вхідні предмети будуть розподілені між усіма з'єднаними виходами", + "create.ponder.brass_tunnel.text_8": "Для цього предмети можуть бути вкладені в блок тунелю безпосередньо", + + "create.ponder.brass_tunnel_modes.header": "Режимах розподілу Латунних тунелів", + "create.ponder.brass_tunnel_modes.text_1": "Використовуючи Ключ, ви можете налаштувати поведінку розподілу Латунного тунелю", + "create.ponder.brass_tunnel_modes.text_10": "«Синхронізувати входи» – унікальне налаштування для Латунних тунелів", + "create.ponder.brass_tunnel_modes.text_11": "Предмети можуть пройти тільки якщо у кожного тунелю в групі є предмет, що очікує біля входу", + "create.ponder.brass_tunnel_modes.text_12": "Це має на увазі, що всі конвеєри постачають предмети з рівною швидкістю", + "create.ponder.brass_tunnel_modes.text_2": "«Розділити» спробує розподілити так порівну між доступними виходами", + "create.ponder.brass_tunnel_modes.text_3": "Якщо вихід не може прийняти більше предметів, він буде пропущений", + "create.ponder.brass_tunnel_modes.text_4": "«Примусово розділити» ніколи не пропустить виходи і натомість чекатиме поки вони не звільняться", + "create.ponder.brass_tunnel_modes.text_5": "«По Кругу» зберігає цілісні стаки та віддає їх виходам по черзі", + "create.ponder.brass_tunnel_modes.text_6": "Знову ж таки, якщо вихід не може прийняти більше предметів, він буде пропущений", + "create.ponder.brass_tunnel_modes.text_7": "«Примусово по колу» ніколи не пропускає виходи", + "create.ponder.brass_tunnel_modes.text_8": "«Переважно найближче» пріоритизує найближчі виходи від місця подачі предметів", + "create.ponder.brass_tunnel_modes.text_9": "«Випадково» віддаватиме цілі стаки випадково вибраним виходам", + + "create.ponder.cart_assembler.header": "Рух структур за допомогою Складальника вагонеток", + "create.ponder.cart_assembler.text_1": "Активовані Збирачі вагонеток встановлюють прикріплені структури до вагонеток, що проходять повз.", + "create.ponder.cart_assembler.text_2": "Без редстоун сигналу вони розбирають вагонеткові штуковини назад у блоки.", + "create.ponder.cart_assembler.text_3": "Використання Ключа на вагонетці дозволить вам забрати Штуковину кудись ще", + + "create.ponder.cart_assembler_dual.header": "Складання Штуковин-екіпажів", + "create.ponder.cart_assembler_dual.text_1": "Завжди, коли два збирачі вагонеток мають загальну прикріплену структуру...", + "create.ponder.cart_assembler_dual.text_2": "активація будь-якого з них створить Штуковину-екіпаж", + "create.ponder.cart_assembler_dual.text_3": "Ці вагонетки будуть поводитися так, ніби вони з'єднані З'єднувачем вагонеток", + + "create.ponder.cart_assembler_modes.header": "Налаштування орієнтації Вагонеткових штуковин", + "create.ponder.cart_assembler_modes.text_1": "Вагонеткові штуковини повертатимуться у бік руху їх вагонеток.", + "create.ponder.cart_assembler_modes.text_2": "Стрілкою показано, яка сторона конструкції вважатиметься передньою", + "create.ponder.cart_assembler_modes.text_3": "Якщо збирач налаштований на блокування обертання, то орієнтація штуковин ніколи не зміниться", + + "create.ponder.cart_assembler_rails.header": "Інші типи вагонеток і рейок", + "create.ponder.cart_assembler_rails.text_1": "Складачі вагонеток на звичайних рейках не впливатимуть на рух вагонеток, що проходять.", + "create.ponder.cart_assembler_rails.text_2": "На активних Контролюючих рейках або Енергорельсах вагонетки стоятимуть на місці доти, доки Складальник не буде активований", + "create.ponder.cart_assembler_rails.text_3": "Інші типи вагонеток можуть бути використані як основа", + "create.ponder.cart_assembler_rails.text_4": "Самохідні вагонетки підтримуватимуть себе запитаними, використовуючи паливо із приєднаних інвентарів", + + "create.ponder.chain_drive.header": "Передачі сили обертання Ланцюгові приводи", + "create.ponder.chain_drive.text_1": "Ланцюгові приводи передають силу обертання один одному", + "create.ponder.chain_drive.text_2": "Всі вали з'єднані таким чином обертатимуться в одному напрямку", + "create.ponder.chain_drive.text_3": "Будь-яка частина в ряду може бути повернена на 90 градусів", + + "create.ponder.chain_gearshift.header": "Управління швидкістю обертання Регульованими ланцюговими механізмами", + "create.ponder.chain_gearshift.text_1": "Неактивні Ланцюгові механізми поводяться так само, як Ланцюгові приводи", + "create.ponder.chain_gearshift.text_2": "Коли активовано, швидкість, що передається іншим Ланцюговим механізмам у ряді подвоюється", + "create.ponder.chain_gearshift.text_3": "Коли активований Ланцюговий механізм не є джерелом, його швидкість буде знижена вдвічі", + "create.ponder.chain_gearshift.text_4": "В обох випадках Ланцюгові приводи в ряді завжди обертаються з 2x швидкістю активованого Ланцюгового механізму", + "create.ponder.chain_gearshift.text_5": "Використовуючи аналогові сигнали, це множення може бути точніше налаштовано між 1 і 2", + "create.ponder.chain_gearshift.text_6": "12 об./хв.", + + "create.ponder.chute.header": "Транспортування предметів вниз через Жолоба", + "create.ponder.chute.text_1": "Жолоби можуть транспортувати предмети вертикально з та в інвентарі", + "create.ponder.chute.text_2": "Використовуючи Ключ, ви можете створити вікно", + "create.ponder.chute.text_3": "Встановлення жолобів на сторони інших жолобів зробить їх діагональними", + + "create.ponder.chute_upward.header": "Транспортування предметів вгору через Жолоба", + "create.ponder.chute_upward.text_1": "Використовуючи Вентилятор у корпусі внизу або вгорі, Жолоб може переміщати предмети вгору", + "create.ponder.chute_upward.text_2": "Огляд ринв в Інженерних окулярах відкриває інформацію про напрямок руху", + "create.ponder.chute_upward.text_3": "На «заблокованому» кінці предмети мають бути введені/виведені збоку", + + "create.ponder.clockwork_bearing.header": "Пожвавлення структур Часовим механізмом", + "create.ponder.clockwork_bearing.text_1": "Годинникові механізми прикріплюються до блоків спереду", + "create.ponder.clockwork_bearing.text_2": "При отриманні сили обертання структура повернеться в залежності від поточної години", + "create.ponder.clockwork_bearing.text_3": "3:00", + "create.ponder.clockwork_bearing.text_4": "4:00", + "create.ponder.clockwork_bearing.text_5": "ПКМ по механізму, щоб зупинити або знову запустити структуру", + "create.ponder.clockwork_bearing.text_6": "Друга структура може бути додана спереду.", + "create.ponder.clockwork_bearing.text_7": "Переконайтеся, що дві структури не з'єднані між собою супер-клеєм чи чимось схожим", + "create.ponder.clockwork_bearing.text_8": "Друга структура обертатиметься як Хвилинна стрілка", + + "create.ponder.clutch.header": "Управління силою обертання за допомогою Зчеплення", + "create.ponder.clutch.text_1": "Зчеплення передає обертання прямою", + "create.ponder.clutch.text_2": "При активації Редстоуном воно розриває з'єднання", + + "create.ponder.cog_speedup.header": "Перемикання передач Шестернями", + "create.ponder.cog_speedup.text_1": "Великі та маленькі шестерні можуть з'єднуватися по діагоналі.", + "create.ponder.cog_speedup.text_2": "Переходячи з великих на маленькі шестерні, передана швидкість подвоїться", + "create.ponder.cog_speedup.text_3": "Переходячи у зворотному напрямку, передана швидкість скоротиться вдвічі", + + "create.ponder.cogwheel.header": "Передача сили обертання Шестернями", + "create.ponder.cogwheel.text_1": "Шестерні передають обертання іншим сусіднім шестерням", + "create.ponder.cogwheel.text_2": "Сусідні вали з'єднані таким чином обертатимуться у протилежних напрямках.", + + "create.ponder.cogwheel_casing.header": "UNLOCALIZED: Encasing Cogwheels", + "create.ponder.cogwheel_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Cogwheels", + "create.ponder.cogwheel_casing.text_2": "UNLOCALIZED: Components added after encasing will not connect to the shaft outputs", + "create.ponder.cogwheel_casing.text_3": "UNLOCALIZED: The Wrench can be used to toggle connections", + + "create.ponder.creative_fluid_tank.header": "Творчому рідинному баку", + "create.ponder.creative_fluid_tank.text_1": "Творчий рідинний бак може використовуватись для забезпечення нескінченного запасу рідини", + "create.ponder.creative_fluid_tank.text_2": "Клацніть ПКМ предметом, який містить рідину, щоб налаштувати його", + "create.ponder.creative_fluid_tank.text_3": "Мережі труб можуть нескінченно витягувати задану рідину з резервуару.", + "create.ponder.creative_fluid_tank.text_4": "Будь-які рідини, закачані назад у творчий рідинний бак, будуть знищені.", + + "create.ponder.creative_motor.header": "Генерації сили обертання творчими двигунами", + "create.ponder.creative_motor.text_1": "Творчі мотори - це компактні та налаштовані джерела Сили Обертання", + "create.ponder.creative_motor.text_2": "Прокручування по задній панелі змінює кількість об./хв. у обертового валу мотора", + + "create.ponder.creative_motor_mojang.header": "UNLOCALIZED: Mojang's Enigma", + + "create.ponder.crushing_wheels.header": "Оброблення предметів Колісами дроблення", + "create.ponder.crushing_wheels.text_1": "Пара Коліс дроблення може молоти предмети дуже ефективно", + "create.ponder.crushing_wheels.text_2": "Сила обертання повинна обертати їх одне в одного", + "create.ponder.crushing_wheels.text_3": "Предмети кинуті чи введені зверху будуть оброблені", + "create.ponder.crushing_wheels.text_4": "Предмети також можуть бути введені та підібрані автоматичним способом", + + "create.ponder.deployer.header": "Використання автономного активатора", + "create.ponder.deployer.text_1": "За наявності сили обертання автономний активатор може імітувати дії гравця", + "create.ponder.deployer.text_10": "ПКМ попереду, щоб дати йому предмет для використання", + "create.ponder.deployer.text_11": "Предмети також можуть бути введені автоматично", + "create.ponder.deployer.text_12": "Автономні активатори мають слот для фільтра", + "create.ponder.deployer.text_13": "Коли фільтр встановлений, Активатор працює тільки тримаючи відповідний предмет", + "create.ponder.deployer.text_14": "Тільки предмети, що підходять по фільтру, можуть бути введені...", + "create.ponder.deployer.text_15": "...і лише невідповідні предмети будуть виведені", + "create.ponder.deployer.text_2": "Він завжди буде взаємодіяти з місцем на два блоки перед ним", + "create.ponder.deployer.text_3": "Блоки прямо перед ним не заважатимуть йому", + "create.ponder.deployer.text_4": "Автономні активатори вміють:", + "create.ponder.deployer.text_5": "Ставити блоки,", + "create.ponder.deployer.text_6": "Використовувати предмети,", + "create.ponder.deployer.text_7": "Активувати блоки,", + "create.ponder.deployer.text_8": "Збирати блоки", + "create.ponder.deployer.text_9": "та Атакувати мобів", + + "create.ponder.deployer_contraption.header": "Використання автономних активаторів на штуковинах", + "create.ponder.deployer_contraption.text_1": "Завжди, коли автономні активатори рухаються як частина рухомої штуковини...", + "create.ponder.deployer_contraption.text_2": "Вони активуються на кожному відвідуваному місці, використовуючи предмети з будь-яких інвентарів на штуковині", + "create.ponder.deployer_contraption.text_3": "Слот для Фільтру може бути використаний для уточнення, які предмети йому брати", + + "create.ponder.deployer_modes.header": "Режимах автономного активатора", + "create.ponder.deployer_modes.text_1": "За замовчуванням активатор імітує ПКМ-взаємодія.", + "create.ponder.deployer_modes.text_2": "Використовуючи Ключ, ви можете встановити його на імітацію ЛКМ", + + "create.ponder.deployer_processing.header": "Обробка елементів за допомогою автономних активаторів", + "create.ponder.deployer_processing.text_1": "Тримаючи відповідний предмет/інструмент, автономні активатори можуть обробляти предмети під собою", + "create.ponder.deployer_processing.text_2": "Прийняті предмети можна кинути або покласти на депо під автономним активатором", + "create.ponder.deployer_processing.text_3": "Коли предмети знаходяться на конвеєрі...", + "create.ponder.deployer_processing.text_4": "автономний активатор буде утримувати та обробляти їх автоматично", + + "create.ponder.deployer_redstone.header": "Управління автономними активаторами редстоуном", + "create.ponder.deployer_redstone.text_1": "При активації Редстоуном активатор перестане працювати", + "create.ponder.deployer_redstone.text_2": "Перед зупинкою Активатор завершить всі розпочаті дії", + "create.ponder.deployer_redstone.text_3": "Таким чином, інвертований імпульс може бути використаний для виклику рівно одного спрацьовування", + + "create.ponder.depot.header": "Використання Депо", + "create.ponder.depot.text_1": "Депо можуть бути як «стаціонарний» елемент конвеєра", + "create.ponder.depot.text_2": "ПКМ, щоб самостійно покласти або забрати предмети з них", + "create.ponder.depot.text_3": "Так само, як Механічні ремені, воно може надавати предмети для обробки", + "create.ponder.depot.text_4": "...а також постачати предмети Механічним рукам", + + "create.ponder.display_board.header": "UNLOCALIZED: Using Display Boards", + "create.ponder.display_board.text_1": "UNLOCALIZED: Display Boards are a scalable alternative to the sign", + "create.ponder.display_board.text_2": "UNLOCALIZED: They require Rotational Force to operate", + "create.ponder.display_board.text_3": "UNLOCALIZED: Text can be displayed using Name Tags...", + "create.ponder.display_board.text_4": "UNLOCALIZED: ...or through the use of Display Links", + "create.ponder.display_board.text_5": "UNLOCALIZED: Dyes can be applied to individual lines of the board", + "create.ponder.display_board.text_6": "UNLOCALIZED: Lines can be reset by clicking them with an empty hand", + + "create.ponder.display_link.header": "UNLOCALIZED: Setting up Display Links", + "create.ponder.display_link.text_1": "UNLOCALIZED: Display Links can be used to visualise dynamic information", + "create.ponder.display_link.text_2": "UNLOCALIZED: First, right-click the target display...", + "create.ponder.display_link.text_3": "UNLOCALIZED: ...then attach it to the block to read from", + "create.ponder.display_link.text_4": "UNLOCALIZED: Open the Interface to select and configure what is sent", + "create.ponder.display_link.text_5": "UNLOCALIZED: The display will now receive information from the link", + "create.ponder.display_link.text_6": "UNLOCALIZED: Not every block can act as a source", + "create.ponder.display_link.text_7": "UNLOCALIZED: Each compatible block provides unique information", + "create.ponder.display_link.text_8": "UNLOCALIZED: The Display Link can work with several different displays", + + "create.ponder.display_link_redstone.header": "UNLOCALIZED: Redstone Control", + "create.ponder.display_link_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Display Links stop sending updates", + "create.ponder.display_link_redstone.text_2": "UNLOCALIZED: Once unpowered, the Timer is reset and new info is sent immediately", + "create.ponder.display_link_redstone.text_3": "UNLOCALIZED: Signals emitted from the source do not affect the Link", + + "create.ponder.empty_blaze_burner.header": "Використання Порожніх пальників блейза", + "create.ponder.empty_blaze_burner.text_1": "ПКМ по Блейзу з порожнім пальником, щоб захопити його", + "create.ponder.empty_blaze_burner.text_2": "Також Блейзи можуть бути захоплені зі спавнера безпосередньо", + "create.ponder.empty_blaze_burner.text_3": "Тепер у вас є ідеальне джерело тепла для низки машин", + "create.ponder.empty_blaze_burner.text_4": "В естетичних цілях, Пусті пальники можуть бути запалені огнивом", + "create.ponder.empty_blaze_burner.text_5": "Полум'я можна трансформувати, використовуючи наповнений душею предмет.", + "create.ponder.empty_blaze_burner.text_6": "Однак вони не будуть підходити для промислового нагріву", + + "create.ponder.encased_fluid_pipe.header": "Обрамлення рідких труб", + "create.ponder.encased_fluid_pipe.text_1": "Мідний корпус можна використовувати для прикраси труб.", + "create.ponder.encased_fluid_pipe.text_2": "Крім того, що вони ховаються, ув'язнені в обрамлення труби блокуються в поточному стані", + "create.ponder.encased_fluid_pipe.text_3": "Вони більше не реагуватимуть на додавання чи видалення будь-яких сусідніх блоків", + + "create.ponder.fan_direction.header": "Повітряний потік Вентиляторів у корпусі", + "create.ponder.fan_direction.text_1": "Вентилятори в корпусі використовують силу обертання для створення повітряного потоку.", + "create.ponder.fan_direction.text_2": "Сила і напрямок потоку залежать від обертання, що подається.", + + "create.ponder.fan_processing.header": "Обробці предметів використовуючи Вентилятори в корпусі", + "create.ponder.fan_processing.text_1": "Проходячи через лаву, Повітряний потік стає Гарячим", + "create.ponder.fan_processing.text_2": "Предмети у цій області будуть переплавлені", + "create.ponder.fan_processing.text_3": "Їстівні предмети, кинуті сюди, будуть спалені", + "create.ponder.fan_processing.text_4": "Натомість, для них має бути використана установка для Копчення з вогнем.", + "create.ponder.fan_processing.text_5": "Потік, що проходить через Воду, створює установку, що промиває.", + "create.ponder.fan_processing.text_6": "Декілька нових варіантів обробки робляться з її допомогою", + "create.ponder.fan_processing.text_7": "Швидкість вентилятора не впливає на швидкість обробки, а лише на дальність", + "create.ponder.fan_processing.text_8": "Обробка Вентиляторами може бути застосована до предметів на конвеєрах або депо", + + "create.ponder.fluid_pipe_flow.header": "Переміщення рідин за допомогою мідних труб.", + "create.ponder.fluid_pipe_flow.text_1": "Рідинні труби можуть з'єднувати два або більше джерел та споживачів рідини", + "create.ponder.fluid_pipe_flow.text_2": "За допомогою гайкового ключа можна створити вікно прямому відрізку труби", + "create.ponder.fluid_pipe_flow.text_3": "Труби з вікнами не з'єднуватимуться ні з якими іншими трубами, що йдуть відрізками труб", + "create.ponder.fluid_pipe_flow.text_4": "Труби, що приводяться в дію механічними помпами, можуть транспортувати рідини.", + "create.ponder.fluid_pipe_flow.text_5": "Спочатку рідина не викачується", + "create.ponder.fluid_pipe_flow.text_6": "Як тільки потік з'єднає кінці, вони поступово перекачають свій вміст.", + "create.ponder.fluid_pipe_flow.text_7": "Таким чином, самі блоки труб ніколи «фізично» не містять жодної рідини.", + + "create.ponder.fluid_pipe_interaction.header": "Спустошення та наповнення рідинних контейнерів", + "create.ponder.fluid_pipe_interaction.text_1": "Кінці мережі труб можуть взаємодіяти з різними блоками", + "create.ponder.fluid_pipe_interaction.text_2": "Будь-який блок із можливістю зберігання рідини може бути заповнений або спустошений", + "create.ponder.fluid_pipe_interaction.text_3": "Джерела прямо перед відкритим кінцем можна відкачати...", + "create.ponder.fluid_pipe_interaction.text_4": "...тоді як виливання в незаповнений простір може створити джерела", + "create.ponder.fluid_pipe_interaction.text_5": "Труби також можуть витягувати рідини безпосередньо з кількох інших блоків", + + "create.ponder.fluid_tank_sizes.header": "Розміри рідинного бака", + "create.ponder.fluid_tank_sizes.text_1": "Рідинні баки можна поєднати для збільшення загальної місткості", + "create.ponder.fluid_tank_sizes.text_2": "Їх площа основи може становити до 3 блоків завширшки...", + "create.ponder.fluid_tank_sizes.text_3": "...та збільшуються у висоту більш ніж на 30 додаткових рівнів", + "create.ponder.fluid_tank_sizes.text_4": "За допомогою гайкового ключа можна створити вікно на резервуарі", + + "create.ponder.fluid_tank_storage.header": "Зберігання рідин у Резервуарах для рідини", + "create.ponder.fluid_tank_storage.text_1": "Резервуари для рідини можна використовувати для зберігання великої кількості рідини.", + "create.ponder.fluid_tank_storage.text_2": "Труби можуть закачувати та викачувати рідини з будь-якого боку", + "create.ponder.fluid_tank_storage.text_3": "Рідина, що міститься, може бути виміряна за допомогою компаратора", + "create.ponder.fluid_tank_storage.text_4": "Однак у режимі виживання рідину не можна додавати або виймати вручну.", + "create.ponder.fluid_tank_storage.text_5": "Ви можете використовувати чаші, предметні осушувачі і дозатори для спустошення або наповнення вмісту рідини предметів", + + "create.ponder.funnel_compat.header": "Сумісності Воронок", + "create.ponder.funnel_compat.text_1": "Вирви повинні добре взаємодіяти з багатьма компонентами:", + "create.ponder.funnel_compat.text_2": "Вертикальні пили", + "create.ponder.funnel_compat.text_3": "Депо", + "create.ponder.funnel_compat.text_4": "Предметні осушувачі", + + "create.ponder.funnel_direction.header": "Напрямок передачі", + "create.ponder.funnel_direction.text_1": "Поставлена звичайним чином вона забирає предмети з інвентарю", + "create.ponder.funnel_direction.text_2": "Поставлена крадькома, вона кладе предмети в інвентар", + "create.ponder.funnel_direction.text_3": "Використовуючи Ключ, ви можете змінити напрямок вирви", + "create.ponder.funnel_direction.text_4": "Ті ж правила застосовуються для більшості напрямків", + "create.ponder.funnel_direction.text_5": "Вирви на конвеєрах витягуватимуть/вводитимуть предмети в залежності від напрямку їх руху", + + "create.ponder.funnel_intro.header": "Використання Воронок", + "create.ponder.funnel_intro.text_1": "Вирви ідеально підходять для переміщення предметів з та в інвентарі", + + "create.ponder.funnel_redstone.header": "Редстоун управлінні", + "create.ponder.funnel_redstone.text_1": "Редстоун сигнал не дасть будь-якій воронці працювати", + + "create.ponder.funnel_transfer.header": "Передача безпосередньо", + "create.ponder.funnel_transfer.text_1": "Вирви не можуть переміщати предмети безпосередньо між закритими інвентарями", + "create.ponder.funnel_transfer.text_2": "Жолоби або Розумні жолоби можуть краще підходити для цих цілей", + "create.ponder.funnel_transfer.text_3": "Те саме стосується і горизонтального переміщення. Механічний ремінь має тут допомогти", + + "create.ponder.gantry_carriage.header": "Використання шасі портального крана", + "create.ponder.gantry_carriage.text_1": "Шасі портального крана можуть прикріплюватися і рухатися вздовж Валу портального крана", + "create.ponder.gantry_carriage.text_2": "Кранові установки можуть рухати приєднані блоки", + + "create.ponder.gantry_cascaded.header": "Багатоступінчастому портальному крані", + "create.ponder.gantry_cascaded.text_1": "Вали портального крана прикріплюються до шасі без потреби у супер-клеї.", + "create.ponder.gantry_cascaded.text_2": "Те саме стосується і шасі на Валах портального крана, що рухаються.", + "create.ponder.gantry_cascaded.text_3": "Таким чином, кранова система може покривати кілька осей руху.", + + "create.ponder.gantry_direction.header": "Напрямок руху крана", + "create.ponder.gantry_direction.text_1": "Вали портального крана можуть мати два протилежні напрямки", + "create.ponder.gantry_direction.text_2": "Напрямок руху шасі залежить від орієнтації їх валів.", + "create.ponder.gantry_direction.text_3": "...а також від напрямку обертання валу", + "create.ponder.gantry_direction.text_4": "Ті ж правила відносяться до обертання, що передається.", + + "create.ponder.gantry_redstone.header": "Подачі енергії на кран", + "create.ponder.gantry_redstone.text_1": "Активовані редстоуном вали крана перестають рухати шасі", + "create.ponder.gantry_redstone.text_2": "Натомість сила обертання передається вихідному валу шасі.", + + "create.ponder.gantry_shaft.header": "Використання валів портального крана", + "create.ponder.gantry_shaft.text_1": "Вали портального крана становлять основу кранової установки. По них рухатимуться приєднані шасі", + "create.ponder.gantry_shaft.text_2": "Кранові установки можуть рухати приєднані блоки", + + "create.ponder.gearbox.header": "Передача сили обертання за допомогою Коробок передач", + "create.ponder.gearbox.text_1": "Переходи між осями обертання можуть швидко стати громіздкими", + "create.ponder.gearbox.text_2": "Коробка Передач - це компактніший еквівалент цієї установки", + "create.ponder.gearbox.text_3": "Вали по кутах повертаються у дзеркальних напрямках", + "create.ponder.gearbox.text_4": "Прямі з'єднання будуть реверсовані", + + "create.ponder.gearshift.header": "Управління силою обертання за допомогою Реверсивного механізму", + "create.ponder.gearshift.text_1": "Реверсивні механізми передають обертання прямою", + "create.ponder.gearshift.text_2": "При активації редстоуном вони реверсують передачу", + + "create.ponder.hand_crank.header": "Генерації сили обертання за допомогою Рукояток", + "create.ponder.hand_crank.text_1": "Рукоятки можуть бути використані гравцями для застосування сили обертання вручну", + "create.ponder.hand_crank.text_2": "Тримайте ПКМ, щоб повернути їх проти Годинникової стрілки", + "create.ponder.hand_crank.text_3": "Їхня швидкість обертання відносно висока", + "create.ponder.hand_crank.text_4": "Тримайте ПКМ крадькома, щоб повернути її за годинниковою стрілкою", + + "create.ponder.hose_pulley.header": "Наповнення та осушення джерел за допомогою Шківу зі шлангом", + "create.ponder.hose_pulley.text_1": "Шківи зі шлангом можна використовувати для заповнення або осушення великих об'ємів рідини.", + "create.ponder.hose_pulley.text_2": "За допомогою кінетичної енергії можна регулювати довжину шлангу", + "create.ponder.hose_pulley.text_3": "Шків змотується, якщо звернути обертання", + "create.ponder.hose_pulley.text_4": "З протилежного боку можна підключати труби", + "create.ponder.hose_pulley.text_5": "Приєднані мережі труб можуть або подавати рідину в шланг...", + "create.ponder.hose_pulley.text_6": "...або витягувати її, осушуючи водойму", + "create.ponder.hose_pulley.text_7": "Швидкість заповнення та осушення шківом повністю залежить від пропускної спроможності рідинної мережі", + + "create.ponder.hose_pulley_infinite.header": "Пасивне заповнення та осушення великих об'ємів рідини", + "create.ponder.hose_pulley_infinite.text_1": "При розгортанні Шківу зі шлангом у досить великий океан...", + "create.ponder.hose_pulley_infinite.text_2": "Він надаватиме/поглинатиме рідини без впливу на джерело", + "create.ponder.hose_pulley_infinite.text_3": "Мережі труб можуть необмежено передавати рідини з/в такі шківи.", + + "create.ponder.hose_pulley_level.header": "Рівні заповнення та осушення Шківу зі шлангом", + "create.ponder.hose_pulley_level.text_1": "При повністю прибраному рукаві шланга - він не може працювати", + "create.ponder.hose_pulley_level.text_2": "Осушення відбувається зверху вниз", + "create.ponder.hose_pulley_level.text_3": "Рівень поверхні виявиться трохи нижче того місця, де закінчується шланг", + "create.ponder.hose_pulley_level.text_4": "Наповнення відбувається знизу нагору", + "create.ponder.hose_pulley_level.text_5": "Заповнюваний басейн не наповнюватиметься вище рівня кінця шлангу", + + "create.ponder.item_drain.header": "Спустошення рідинних резервуарів за допомогою предметних осушувачів", + "create.ponder.item_drain.text_1": "Предметні осушувачі можуть витягувати рідини з предметів", + "create.ponder.item_drain.text_2": "Клацніть на ПКМ по ньому, щоб перелити в нього рідину з предмета у ваших руках", + "create.ponder.item_drain.text_3": "Коли предмети подаються з боку...", + "create.ponder.item_drain.text_4": "...вони перевертаються, виливаючи рідину, що міститься в них.", + "create.ponder.item_drain.text_5": "Мережі труб тепер можуть витягувати рідину із внутрішнього сховища осушувачів.", + + "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", + "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", + "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", + "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + + "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", + "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", + "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", + "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", + "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + + "create.ponder.large_cogwheel.header": "Передача сили обертання за допомогою Великих шестерень", + "create.ponder.large_cogwheel.text_1": "Великі шестерні можуть з'єднуватися між собою під прямим кутом", + "create.ponder.large_cogwheel.text_2": "Це допоможе передавати швидкість на інші осі обертання", + + "create.ponder.linear_chassis_attachment.header": "Прикріплення блоків за допомогою Лінійних шасі", + "create.ponder.linear_chassis_attachment.text_1": "Відкриті грані Лінійних шасі можна зробити Липкими", + "create.ponder.linear_chassis_attachment.text_2": "Натисніть ще раз, щоб зробити протилежний бік липкою", + "create.ponder.linear_chassis_attachment.text_3": "ПКМ крадучись, порожньою рукою, щоб прибрати слиз", + "create.ponder.linear_chassis_attachment.text_4": "Липкі грані Лінійних шасі будуть прикріплювати ряд блоків перед ним", + "create.ponder.linear_chassis_attachment.text_5": "Використовуйте Ключ, щоб налаштувати радіус для цього шасі", + "create.ponder.linear_chassis_attachment.text_6": "Прокручування при утримуванні CTRL налаштовує радіус усіх приєднаних шасі", + "create.ponder.linear_chassis_attachment.text_7": "Прикріплення блоків на інші сторони потребує використання Супер-клею", + "create.ponder.linear_chassis_attachment.text_8": "За допомогою цих механік структури будь-якої форми можуть рухатися як Штуковина.", + + "create.ponder.linear_chassis_group.header": "Руху Лінійних шасі групами", + "create.ponder.linear_chassis_group.text_1": "Лінійні шасі з'єднуються з такими ж блоками Шасі поряд з ними", + "create.ponder.linear_chassis_group.text_2": "Коли один блок переміщається Штуковиною, інші рухаються з ним", + "create.ponder.linear_chassis_group.text_3": "Шасі інших типів або спрямовані в іншому напрямку не будуть прикріплюватися", + + "create.ponder.mechanical_arm.header": "Налаштування механічних рук", + "create.ponder.mechanical_arm.text_1": "Входи та виходи для Механічних рук повинні бути призначені перед їх встановленням", + "create.ponder.mechanical_arm.text_2": "ПКМ за інвентарями, тримаючи руку, щоб призначити їх цілями", + "create.ponder.mechanical_arm.text_3": "ПКМ ще раз, для перемикання між Входом (Синій) та Виходом (Помаранчевий)", + "create.ponder.mechanical_arm.text_4": "ЛКМ по компонентам, щоб усунути виділення з них", + "create.ponder.mechanical_arm.text_5": "Після встановлення, Механічні руки будуть націлені на раніше вибрані блоки", + "create.ponder.mechanical_arm.text_6": "У них може бути необмежену кількість входів і виходів у зоні їх досяжності", + "create.ponder.mechanical_arm.text_7": "Однак, не кожен вид Інвентар може взаємодіяти з ними безпосередньо", + "create.ponder.mechanical_arm.text_8": "Вирви та Депо можуть допомогти заповнити цю прогалину", + + "create.ponder.mechanical_arm_filtering.header": "Фільтрування виходів Механічної руки", + "create.ponder.mechanical_arm_filtering.text_1": "Входи", + "create.ponder.mechanical_arm_filtering.text_2": "Виходи", + "create.ponder.mechanical_arm_filtering.text_3": "Іноді бажано обмежити цілі руки фільтром", + "create.ponder.mechanical_arm_filtering.text_4": "Механічні руки не мають можливості фільтрації", + "create.ponder.mechanical_arm_filtering.text_5": "Однак, Латунні воронки як цілі повідомляють свій фільтр руці", + "create.ponder.mechanical_arm_filtering.text_6": "Рука досить розумна, щоб не підбирати предмети, які вона не зможе розподілити", + + "create.ponder.mechanical_arm_modes.header": "Режимах розподілу Механічної руки", + "create.ponder.mechanical_arm_modes.text_1": "Входи", + "create.ponder.mechanical_arm_modes.text_2": "Виходи", + "create.ponder.mechanical_arm_modes.text_3": "Коли рука вибирає між кількома доступними виходами...", + "create.ponder.mechanical_arm_modes.text_4": "...вона зробить вибір виходячи зі свого налаштування", + "create.ponder.mechanical_arm_modes.text_5": "Прокручування з Ключом дозволить вам налаштувати це", + "create.ponder.mechanical_arm_modes.text_6": "Режим «по Кругу» перемикається між усіма доступними виходами по черзі", + "create.ponder.mechanical_arm_modes.text_7": "Якщо вихід не може прийняти більше предметів, він буде пропущений", + "create.ponder.mechanical_arm_modes.text_8": "«Примусово по колу» ніколи не пропускає виходи, а чекає доки вони не звільняться", + "create.ponder.mechanical_arm_modes.text_9": "«Віддавати перевагу первинній цілі» пріоритизує виходи, вибрані раніше при налаштуванні цієї Руки", + + "create.ponder.mechanical_arm_redstone.header": "Управління Механічними руками редстоуном", + "create.ponder.mechanical_arm_redstone.text_1": "При активації редстоуном Механічні руки перестають працювати", + "create.ponder.mechanical_arm_redstone.text_2": "Перед зупинкою, вони завершать усі розпочаті дії", + "create.ponder.mechanical_arm_redstone.text_3": "Таким чином, інвертований імпульс може використовуватися для виклику рівно одного спрацьовування", + + "create.ponder.mechanical_bearing.header": "Пересування структур за допомогою механічного підшипника", + "create.ponder.mechanical_bearing.text_1": "Механічні підшипники прикріплюють блоки перед ними", + "create.ponder.mechanical_bearing.text_2": "При отриманні сили обертання, вони зберуться в штуковину, що обертається.", + + "create.ponder.mechanical_crafter.header": "Налаштування Механічних крафтерів", + "create.ponder.mechanical_crafter.text_1": "Масив з Механічних крафтерів можна використовувати для автоматизації створення будь-якого рецепту.", + "create.ponder.mechanical_crafter.text_2": "Можна налаштувати шляхи крафтерів за допомогою Ключа", + "create.ponder.mechanical_crafter.text_3": "Для правильної установки всі шляхи повинні сходитися в один вихід з будь-якої сторони", + "create.ponder.mechanical_crafter.text_4": "Продукти будуть поміщені в інвентар біля виходу", + "create.ponder.mechanical_crafter.text_5": "Механічним крафтерам потрібна сила обертання до роботи", + "create.ponder.mechanical_crafter.text_6": "ПКМ спереду, щоб вставити предмети вручну", + "create.ponder.mechanical_crafter.text_7": "Коли кожен слот на дорозі містить предмет, процес створення розпочнеться", + "create.ponder.mechanical_crafter.text_8": "Для рецептів, які не повністю займають крафтер-установку, старт можна спровокувати Редстоун імпульсом", + + "create.ponder.mechanical_crafter_connect.header": "Об'єднання інвентарів Механічних крафтерів", + "create.ponder.mechanical_crafter_connect.text_1": "Предмети можна помістити в крафтери автоматично", + "create.ponder.mechanical_crafter_connect.text_2": "За допомогою ключа позаду крафтерів їх інвентарі можна об'єднати", + "create.ponder.mechanical_crafter_connect.text_3": "Усі з'єднані крафтери тепер будуть доступні з одного місця введення", + + "create.ponder.mechanical_crafter_covers.header": "Закриття слотів Механічних крафтерів", + "create.ponder.mechanical_crafter_covers.text_1": "Деякі рецепти вимагають додаткових крафтерів, щоб закрити прогалини на дорозі", + "create.ponder.mechanical_crafter_covers.text_2": "За допомогою кришок на слоти, крафтери можуть грати роль порожніх слотів у схемі", + "create.ponder.mechanical_crafter_covers.text_3": "Загальні входи, створені ключем ззаду, також можуть бути доступні через закриті крафтери.", + + "create.ponder.mechanical_drill.header": "Ломанії блоків Механічним Дрилем", + "create.ponder.mechanical_drill.text_1": "При подачі обертання, Механічний дриль ламатиме блоки перед нею", + "create.ponder.mechanical_drill.text_2": "Швидкість видобутку залежить від швидкості, що подається", + + "create.ponder.mechanical_drill_contraption.header": "Використання Механічних дрилів на штуковинах", + "create.ponder.mechanical_drill_contraption.text_1": "Коли дрилі рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_drill_contraption.text_2": "...вони будуть ламати блоки, на які вони натикаються", + + "create.ponder.mechanical_harvester.header": "Використання механічних комбайнів на штуковинах", + "create.ponder.mechanical_harvester.text_1": "Коли комбайни рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_harvester.text_2": "Вони будуть прибирати зрілий урожай на своєму шляху і висаджувати його знову", + + "create.ponder.mechanical_mixer.header": "Обробка предметів Механічним міксером", + "create.ponder.mechanical_mixer.text_1": "За допомогою Міксера та Чаші можна автоматизувати деякі рецепти крафту.", + "create.ponder.mechanical_mixer.text_2": "Доступні рецепти включають будь-які безформні рецепти крафту плюс ще трохи", + "create.ponder.mechanical_mixer.text_3": "Деякі з них вимагають тепло від Пальника блейза", + "create.ponder.mechanical_mixer.text_4": "Слот для фільтра можна використовувати у разі конфлікту двох рецептів", + + "create.ponder.mechanical_piston.header": "Переміщення структур за допомогою Механічних поршнів", + "create.ponder.mechanical_piston.text_1": "Механічні поршні можуть рухати блоки перед ними", + "create.ponder.mechanical_piston.text_2": "Швидкість та Напрямок руху залежать від вихідного обертання", + "create.ponder.mechanical_piston.text_3": "Механічні поршні можуть тягнути назад приєднані блоки", + + "create.ponder.mechanical_piston_modes.header": "Режимах руху Механічного поршня", + "create.ponder.mechanical_piston_modes.text_1": "Коли поршень зупиняється, зрушена структура стає блоками", + "create.ponder.mechanical_piston_modes.text_2": "Можна налаштувати його так, щоб структура ніколи не ставала блоками або лише на початковій позиції", + + "create.ponder.mechanical_plough.header": "Використання Механічних плугів на штуковинах", + "create.ponder.mechanical_plough.text_1": "Коли плуги рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_plough.text_2": "...вони будуть ламати блоки без твердого хітбоксу", + "create.ponder.mechanical_plough.text_3": "До того ж Плуги можуть створювати ріллю.", + "create.ponder.mechanical_plough.text_4": "....вони також можуть штовхати сутностей не завдаючи їм шкоди", + + "create.ponder.mechanical_press.header": "Обробка предметів Механічним пресом", + "create.ponder.mechanical_press.text_1": "Механічний прес може обробляти предмети під собою", + "create.ponder.mechanical_press.text_2": "Представлені предмети повинні бути кинуті або поміщені на Депо під Пресом", + "create.ponder.mechanical_press.text_3": "Коли предмети подаються на конвеєрі...", + "create.ponder.mechanical_press.text_4": "Прес буде затримувати та обробляти їх автоматично", + + "create.ponder.mechanical_press_compacting.header": "Упаковка предметів Механічним пресом", + "create.ponder.mechanical_press_compacting.text_1": "Спресування предметів у Чаші запакує їх", + "create.ponder.mechanical_press_compacting.text_2": "Упаковка включає будь-які заповнені 2x2 або 3x3 рецепти крафта плюс ще трохи", + "create.ponder.mechanical_press_compacting.text_3": "Деяким рецептам може знадобитися тепло від Пальнику блейза", + "create.ponder.mechanical_press_compacting.text_4": "Слот для фільтра можна використовувати у разі конфлікту двох рецептів", + + "create.ponder.mechanical_pump_flow.header": "Транспортування рідини за допомогою Механічних помп", + "create.ponder.mechanical_pump_flow.text_1": "Механічні помпи направляють потік у приєднані мережі із труб", + "create.ponder.mechanical_pump_flow.text_2": "Коли працює, стрілка вказує напрямок потоку", + "create.ponder.mechanical_pump_flow.text_3": "Частина мережі ззаду тепер качає рідину...", + "create.ponder.mechanical_pump_flow.text_4": "...у той час як частина мережі спереду передає їх назовні", + "create.ponder.mechanical_pump_flow.text_5": "Зміна напрямку обертання змінює напрямок потоку", + "create.ponder.mechanical_pump_flow.text_6": "Використовуйте гайковий ключ, щоб змінити напрямок помпи вручну", + + "create.ponder.mechanical_pump_speed.header": "Продуктивності механічних помп", + "create.ponder.mechanical_pump_speed.text_1": "Незалежно від швидкості, Механічні помпи впливають на труби в радіусі 16 блоків.", + "create.ponder.mechanical_pump_speed.text_2": "Прискорення обертання, що подається, змінює швидкість поширення потоків...", + "create.ponder.mechanical_pump_speed.text_3": "...так само, як і швидкість передачі рідин", + "create.ponder.mechanical_pump_speed.text_4": "Помпи можуть поєднувати свою продуктивність у загальних мережах труб", + "create.ponder.mechanical_pump_speed.text_5": "Зміна їхнього напрямку може допомогти спрямувати напрямок їх потоків", + + "create.ponder.mechanical_saw_breaker.header": "Різання дерев Механічною пилкою", + "create.ponder.mechanical_saw_breaker.text_1": "При подачі обертання, Механічна пилка пилятиме дерева прямо перед нею", + "create.ponder.mechanical_saw_breaker.text_2": "Для спилювання дерева повністю пилка повинна ламати останній блок дерева, з'єднаний із землею", + + "create.ponder.mechanical_saw_contraption.header": "Використання Механічних пилок на штуковинах", + "create.ponder.mechanical_saw_contraption.text_1": "Коли пилки рухаються як частина рухомої штуковини...", + "create.ponder.mechanical_saw_contraption.text_2": "...вони будуть ламати блоки, на які вони натикаються", + + "create.ponder.mechanical_saw_processing.header": "Обробка предметів на Механічній пилці", + "create.ponder.mechanical_saw_processing.text_1": "Механічні пили направлені вгору можуть обробляти безліч предметів", + "create.ponder.mechanical_saw_processing.text_2": "Оброблені предмети завжди рухаються проти обертання, що подається на пилу.", + "create.ponder.mechanical_saw_processing.text_3": "Пилки можуть працювати з Механічними ременями (конвеєром)", + "create.ponder.mechanical_saw_processing.text_4": "Коли з інгредієнта можна отримати кілька результатів, фільтр може уточнити його.", + "create.ponder.mechanical_saw_processing.text_5": "Без фільтра пила вибиратиме всі можливі результати по черзі", + + "create.ponder.millstone.header": "Оброблення предметів у Жорновах", + "create.ponder.millstone.text_1": "Жорнова обробляють предмети, перемелюючи їх", + "create.ponder.millstone.text_2": "Їх можна запустити за допомогою шестірні з будь-якого боку", + "create.ponder.millstone.text_3": "Киньте чи внесіть предмети зверху", + "create.ponder.millstone.text_4": "Після деякого часу результат можна забрати за допомогою ПКМ", + "create.ponder.millstone.text_5": "Продукти також можна вивести автоматично", + + "create.ponder.nixie_tube.header": "Використання Газорозрядних індикаторів", + "create.ponder.nixie_tube.text_1": "При подачі редстоуна сигналу, Газорозрядні індикатори відобразять його силу.", + "create.ponder.nixie_tube.text_2": "За допомогою бірок, відредагованих на ковадлі, ви можете відобразити будь-який текст.", + "create.ponder.nixie_tube.text_3": "Натисніть ПКМ з барвником, щоб змінити колір їх дисплея", + + "create.ponder.piston_pole.header": "Подовжувачі Поршня", + "create.ponder.piston_pole.text_1": "Без приєднаних Подовжувачів, Механічний поршень не може рухатися", + "create.ponder.piston_pole.text_2": "Довжина стрижня, доданого до задньої частини, визначає Діапазон висування.", + + "create.ponder.portable_fluid_interface.header": "Обмін рідини", + "create.ponder.portable_fluid_interface.text_1": "Рідинні баки на штуковинах, що рухаються, не можуть бути доступні жодним трубам", + "create.ponder.portable_fluid_interface.text_2": "Цей інтерфейс може взаємодіяти з рідинними баками без необхідності зупиняти штуковину.", + "create.ponder.portable_fluid_interface.text_3": "Встановіть другий із проміжком в 1 або 2 блоки між ними", + "create.ponder.portable_fluid_interface.text_4": "Вони встановлять з'єднання, коли зустрінуться", + "create.ponder.portable_fluid_interface.text_5": "Поки вони з'єднані, стаціонарний інтерфейс буде ВСІ баки на штуковині", + "create.ponder.portable_fluid_interface.text_6": "Тепер можна закачати рідини...", + "create.ponder.portable_fluid_interface.text_7": "...або викачати їх із штуковини", + "create.ponder.portable_fluid_interface.text_8": "Якщо на якийсь час припиниться обмін вмістом – штуковина продовжить свій шлях", + + "create.ponder.portable_storage_interface.header": "Портативний інтерфейс зберігання на штуковинах", + "create.ponder.portable_storage_interface.text_1": "Інвентари на штуковинах, що рухаються, не можуть бути відкриті гравцями", + "create.ponder.portable_storage_interface.text_2": "Цей компонент може взаємодіяти зі сховищем без необхідності зупиняти штуковину.", + "create.ponder.portable_storage_interface.text_3": "Встановіть другий із проміжком в 1 або 2 блоки між ними", + "create.ponder.portable_storage_interface.text_4": "Коли вони проходять повз один одного, вони з'єднаються", + "create.ponder.portable_storage_interface.text_5": "Поки вони з'єднані, стаціонарний інтерфейс буде представляти ВСІ інвентарі на штуковині", + "create.ponder.portable_storage_interface.text_6": "Тепер можна покласти предмети...", + "create.ponder.portable_storage_interface.text_7": "...або вивести їх із штуковини", + "create.ponder.portable_storage_interface.text_8": "Якщо на якийсь час припиниться обмін предметами – штуковина продовжить свій шлях", + + "create.ponder.portable_storage_interface_redstone.header": "Управління редстоуном", + "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал запобігає включенню стаціонарного інтерфейсу", + + "create.ponder.powered_latch.header": "Управління сигналами за допомогою важеля живлення", + "create.ponder.powered_latch.text_1": "Живлюваний важіль - керований редстоуном важіль", + "create.ponder.powered_latch.text_2": "Сигнал позаду включає його", + "create.ponder.powered_latch.text_3": "Сигнали збоку назад вимикають його", + "create.ponder.powered_latch.text_4": "Живлені важелі можна перемикати і вручну", + + "create.ponder.powered_toggle_latch.header": "Управління сигналами за допомогою Важеля-перемикача.", + "create.ponder.powered_toggle_latch.text_1": "Живлюваний важіль-перемикач - важіль, що керується редстоуном", + "create.ponder.powered_toggle_latch.text_2": "Сигнали ззаду перемикають його стан", + "create.ponder.powered_toggle_latch.text_3": "...включають і знову вимикають", + "create.ponder.powered_toggle_latch.text_4": "Живлювані важелі-перемикачі також можна перемикати вручну", + + "create.ponder.pulse_extender.header": "UNLOCALIZED: Controlling signals using Pulse Extenders", + "create.ponder.pulse_extender.text_1": "UNLOCALIZED: Pulse Extenders can lengthen a signal passing through", + "create.ponder.pulse_extender.text_2": "UNLOCALIZED: They activate after a short delay...", + "create.ponder.pulse_extender.text_3": "UNLOCALIZED: ...and cool down for the configured duration", + "create.ponder.pulse_extender.text_4": "UNLOCALIZED: Using the mouse wheel, the discharge time can be configured", + "create.ponder.pulse_extender.text_5": "UNLOCALIZED: The configured duration can range up to 30 minutes", + + "create.ponder.pulse_repeater.header": "Управління сигналами за допомогою імпульсних повторювачів", + "create.ponder.pulse_repeater.text_1": "Імпульсні повторювачі вкоротять будь-який редстуон сигнал до одного імпульсу.", + "create.ponder.pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", + "create.ponder.pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + + "create.ponder.radial_chassis.header": "Приєднання блоків за допомогою Радіальних шасі", + "create.ponder.radial_chassis.text_1": "Радіальне шасі з'єднуються з ідентичними блоками шасі до ряду", + "create.ponder.radial_chassis.text_2": "Коли один блок переміщається штуковиною, решта рухається з ним", + "create.ponder.radial_chassis.text_3": "Бічні грані Радіального шасі можна зробити липкими", + "create.ponder.radial_chassis.text_4": "Натисніть ще раз, щоб зробити всі інші грані липкими", + "create.ponder.radial_chassis.text_5": "ПКМ порожній рукою крадучись, щоб прибрати слиз", + "create.ponder.radial_chassis.text_6": "Коли блок знаходиться поруч із липкою гранню...", + "create.ponder.radial_chassis.text_7": "...він приєднає всі доступні блоки в межах радіусу на цьому шарі", + "create.ponder.radial_chassis.text_8": "За допомогою ключа можна вказати точний радіус для цього шасі", + "create.ponder.radial_chassis.text_9": "Блоки не досягнуті жодною липкою гранню не прикріпляться", + + "create.ponder.redstone_contact.header": "Редстоун контакти", + "create.ponder.redstone_contact.text_1": "Контакти редстоун сигналу спрямовані один на одного випромінюватимуть редстоун сигнал", + "create.ponder.redstone_contact.text_2": "Також застосовно, коли один з них - частина штуковини, що рухається.", + + "create.ponder.redstone_link.header": "Використання бездротового передавача редстоун сигналу", + "create.ponder.redstone_link.text_1": "Бездротові передавачі редстоун сигналу можуть передавати редстоун сигнал без проводів", + "create.ponder.redstone_link.text_2": "ПКМ крадучись, щоб переключити режим приймача", + "create.ponder.redstone_link.text_3": "ПКМ ключем зробить те саме", + "create.ponder.redstone_link.text_4": "Приймачі випускають редстоун сигнал передавачів у 128 блоках", + "create.ponder.redstone_link.text_5": "Покладіть предмети у два слоти, щоб вказати частоту", + "create.ponder.redstone_link.text_6": "Передавачі лише однієї частоти можуть повідомлятись", + + "create.ponder.rope_pulley.header": "Переміщення структур за допомогою Лебідки", + "create.ponder.rope_pulley.text_1": "Лебідки можуть рухати блоки вертикально при подачі обертання", + "create.ponder.rope_pulley.text_2": "Напрямок та швидкість руху залежать від вихідного обертання", + + "create.ponder.rope_pulley_attachment.header": "Переміщення Лебідок, як частин штуковини", + "create.ponder.rope_pulley_attachment.text_1": "Коли лебідки переміщуються штуковиною...", + "create.ponder.rope_pulley_attachment.text_2": "...їхня приєднана структура рухається з ними", + "create.ponder.rope_pulley_attachment.text_3": "Враховуйте, що лебідки можна рухати тільки доки вони простоюють", + + "create.ponder.rope_pulley_modes.header": "Режими руху Лебідки", + "create.ponder.rope_pulley_modes.text_1": "Коли лебідка зупиняється, зрушена структура назад стає блоками", + "create.ponder.rope_pulley_modes.text_2": "Можна налаштувати її так, щоб структура ніколи не ставала блоками або лише на початковій позиції", + + "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", + "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", + "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", + "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", + "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", + "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", + "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + + "create.ponder.rotation_speed_controller.header": "Використання Регулятора швидкості обертання", + "create.ponder.rotation_speed_controller.text_1": "Регулятори шв. обертання передають обертання від своїх осей на Велику шестерню вище за них", + "create.ponder.rotation_speed_controller.text_2": "Можна налаштувати швидкість, що передається за допомогою прокручування по відповідному місцю збоку", + + "create.ponder.sail.header": "Складання Млинів за допомогою вітрил.", + "create.ponder.sail.text_1": "Вітрила - зручні блоки для створення млинів", + "create.ponder.sail.text_2": "Вони будуть прикріплюватися до блоків та один до одного без використання суперклею чи блоків шасі.", + "create.ponder.sail.text_3": "ПКМ барвником, щоб пофарбувати їх", + "create.ponder.sail.text_4": "ПКМ ножицями, щоб перетворити їх знову на раму", + + "create.ponder.sail_frame.header": "Складання Млинів за допомогою Рам вітрил.", + "create.ponder.sail_frame.text_1": "Рами вітрил - зручні блоки для створення млинів", + "create.ponder.sail_frame.text_2": "Вони будуть прикріплюватися до блоків та один до одного без використання суперклею чи блоків шасі.", + + "create.ponder.sequenced_gearshift.header": "Керування швидкістю обертання за допомогою Послідовного перемикача передач", + "create.ponder.sequenced_gearshift.text_1": "Посл. перем. передач передає обертання за тимчасовим списком інструкцій", + "create.ponder.sequenced_gearshift.text_2": "ПКМ, щоб відкрити інтерфейс налаштування", + "create.ponder.sequenced_gearshift.text_3": "При отриманні Редстоуна сигналу, він почне виконувати задані інструкції", + "create.ponder.sequenced_gearshift.text_4": "По завершенню він чекатиме наступного Редстоуна сигналу і почне спочатку", + "create.ponder.sequenced_gearshift.text_5": "Редстоун компаратор можна використовувати для зчитування прогресу", + + "create.ponder.shaft.header": "Передача обертання за допомогою Валів", + "create.ponder.shaft.text_1": "Вали передають обертання прямою", + + "create.ponder.shaft_casing.header": "Обрамлення Валів", + "create.ponder.shaft_casing.text_1": "Латунний або андезитовий корпус можна використовувати для декорації валів.", + + "create.ponder.smart_chute.header": "Фільтрації предметів за допомогою Розумних жолобів", + "create.ponder.smart_chute.text_1": "Розумні жолоби - вертикальні жолоби з додатковим контролем", + "create.ponder.smart_chute.text_2": "Предмети у слоті фільтра уточнюють, що вони можуть забирати та передавати", + "create.ponder.smart_chute.text_3": "Використовуйте Колесо Миші для уточнення розміру стака, що забирається.", + "create.ponder.smart_chute.text_4": "Редстоун сигнал вимикає їх", + + "create.ponder.smart_pipe.header": "Управління рідинним потоком за допомогою Розумних труб", + "create.ponder.smart_pipe.text_1": "Розумні труби можуть допомогти керувати потоками за типами рідин", + "create.ponder.smart_pipe.text_2": "Розміщені безпосередньо біля джерела, вони можуть вказувати тип видобутої рідини", + "create.ponder.smart_pipe.text_3": "Просто натисніть ПКМ на слоті фільтра з будь-яким предметом, що містить потрібну рідину", + "create.ponder.smart_pipe.text_4": "І при розміщенні глибше по мережі труб розумні труби пропускатимуть лише відповідні рідини.", + + "create.ponder.speedometer.header": "Моніторинг Кінетичної інформації за допомогою Спідометра", + "create.ponder.speedometer.text_1": "Спідометри відображають поточну швидкість приєднаних компонентів", + "create.ponder.speedometer.text_2": "При носінні Інженерних окулярів гравець може отримати більш повну інформацію від приладу", + "create.ponder.speedometer.text_3": "Компаратори можуть випромінювати аналоговий Редстоун сигнал щодо вимірювань спідометра", + + "create.ponder.spout_filling.header": "Наповнення предметів за допомогою дозатора", + "create.ponder.spout_filling.text_1": "Дозатор може заповнювати відповідні предмети, розташовані під ним.", + "create.ponder.spout_filling.text_2": "До вмісту дозатора неможливо отримати доступ вручну.", + "create.ponder.spout_filling.text_3": "Натомість можна використовувати труби для подачі в нього рідин", + "create.ponder.spout_filling.text_4": "Наповнювані предмети можуть бути розміщені на депо під дозатором", + "create.ponder.spout_filling.text_5": "Коли предмети подаються конвеєром...", + "create.ponder.spout_filling.text_6": "Дозатор буде утримувати та обробляти їх автоматично", + + "create.ponder.stabilized_bearings.header": "Стабілізація Штуковин", + "create.ponder.stabilized_bearings.text_1": "Коли Механічні підшипники є частиною структури, що рухається...", + "create.ponder.stabilized_bearings.text_2": "...вони намагатимуться триматися рівно", + "create.ponder.stabilized_bearings.text_3": "Знову ж таки, підшипники приєднують блоки перед ними", + "create.ponder.stabilized_bearings.text_4": "І в результаті ціла підструктура триматиметься рівно", + + "create.ponder.steam_engine.header": "UNLOCALIZED: Setting up Steam Engines", + "create.ponder.steam_engine.text_1": "UNLOCALIZED: Steam Engines can be placed on a Fluid Tank", + "create.ponder.steam_engine.text_10": "UNLOCALIZED: Lvl 4", + "create.ponder.steam_engine.text_11": "UNLOCALIZED: 4 Engines", + "create.ponder.steam_engine.text_12": "UNLOCALIZED: Lvl 8", + "create.ponder.steam_engine.text_13": "UNLOCALIZED: 8 Engines", + "create.ponder.steam_engine.text_2": "UNLOCALIZED: Clicking the engine with a Shaft creates the Kinetic Output", + "create.ponder.steam_engine.text_3": "UNLOCALIZED: With sufficient Heat, Water and Boiler space...", + "create.ponder.steam_engine.text_4": "UNLOCALIZED: ...they will generate Rotational Force", + "create.ponder.steam_engine.text_5": "UNLOCALIZED: The minimal setup requires 4 Fluid Tanks", + "create.ponder.steam_engine.text_6": "UNLOCALIZED: With the help of Blaze Burners, the power output can be increased", + "create.ponder.steam_engine.text_7": "UNLOCALIZED: Higher power levels require more Water, Size and Heat", + "create.ponder.steam_engine.text_8": "UNLOCALIZED: The boiler's current power level can be inspected with Engineer's Goggles", + "create.ponder.steam_engine.text_9": "UNLOCALIZED: With each added power level, an additional Engine can output at full capacity", + + "create.ponder.steam_whistle.header": "UNLOCALIZED: Setting up Steam Whistles", + "create.ponder.steam_whistle.text_1": "UNLOCALIZED: Steam Whistles can be placed on a Fluid Tank", + "create.ponder.steam_whistle.text_2": "UNLOCALIZED: If the tank receives sufficient heat...", + "create.ponder.steam_whistle.text_3": "UNLOCALIZED: ...the Whistle will play a note when activated", + "create.ponder.steam_whistle.text_4": "UNLOCALIZED: Use a Whistle item on the block to lower its pitch", + "create.ponder.steam_whistle.text_5": "UNLOCALIZED: Cycle between three different octaves using a Wrench", + "create.ponder.steam_whistle.text_6": "UNLOCALIZED: Engineer's Goggles can help to find out the current pitch of a Whistle", + + "create.ponder.sticker.header": "Прикріплення блоків за допомогою Липучки", + "create.ponder.sticker.text_1": "Липучки ідеально підходять для Редстоун-керованого приєднання блоків", + "create.ponder.sticker.text_2": "При отриманні сигналу вони перемикають свій стан", + "create.ponder.sticker.text_3": "Якщо він тепер рухається у штуковині, то блок рухатиметься з ним", + "create.ponder.sticker.text_4": "При повторному перемиканні блок більше не буде прикріплено", + + "create.ponder.stressometer.header": "Моніторинг кінетичної інформації за допомогою Стресометра", + "create.ponder.stressometer.text_1": "Стресометр відображає поточне допустиме навантаження приєднаної кінетичної мережі", + "create.ponder.stressometer.text_2": "При носінні Інженерних окулярів гравець може отримати більш повну інформацію від приладу", + "create.ponder.stressometer.text_3": "Компаратори можуть випускати аналоговий редстоун сигнал щодо вимірювань стресометра", + + "create.ponder.super_glue.header": "Приєднання блоків за допомогою Суперклею", + "create.ponder.super_glue.text_1": "Суперклей можна використовувати між двома будь-якими блоками", + "create.ponder.super_glue.text_2": "Скріплені блоки рухатимуться разом при складанні в штуковину", + "create.ponder.super_glue.text_3": "Коли ви тримаєте суперклей у другій руці...", + "create.ponder.super_glue.text_4": "...додані блоки будуть відразу приклеєні до грані, на яку вони були поставлені", + "create.ponder.super_glue.text_5": "Суперклей можна видалити лівим кліком", + "create.ponder.super_glue.text_6": "UNLOCALIZED: Blocks hanging on others usually do not require glue", + + "create.ponder.track_chunks.header": "UNLOCALIZED: Traversing unloaded Chunks", + "create.ponder.track_chunks.text_1": "UNLOCALIZED: Tracks stay functional outside of loaded chunks", + "create.ponder.track_chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", + "create.ponder.track_chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", + "create.ponder.track_chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", + "create.ponder.track_chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", + + "create.ponder.track_observer.header": "UNLOCALIZED: Detecting Trains", + "create.ponder.track_observer.text_1": "UNLOCALIZED: Select a Train Track then place the Observer nearby", + "create.ponder.track_observer.text_2": "UNLOCALIZED: The Observer will detect any Trains passing over the marker", + "create.ponder.track_observer.text_3": "UNLOCALIZED: Observers can be filtered to activate for matching cargo", + + "create.ponder.track_placement.header": "UNLOCALIZED: Placing Train Tracks", + "create.ponder.track_placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions", + "create.ponder.track_placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track", + "create.ponder.track_placement.text_3": "UNLOCALIZED: Then place or select a second track", + "create.ponder.track_placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes", + "create.ponder.track_placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized", + "create.ponder.track_placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...", + "create.ponder.track_placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead", + "create.ponder.track_placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically", + + "create.ponder.track_portal.header": "UNLOCALIZED: Tracks and the Nether", + "create.ponder.track_portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...", + "create.ponder.track_portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side", + "create.ponder.track_portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions", + + "create.ponder.train_assembly.header": "UNLOCALIZED: Assembling Trains", + "create.ponder.train_assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", + "create.ponder.train_assembly.text_10": "UNLOCALIZED: Every Train requires Train Controls on board", + "create.ponder.train_assembly.text_11": "UNLOCALIZED: An optional second one allows departure from Stations in both directions", + "create.ponder.train_assembly.text_12": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", + "create.ponder.train_assembly.text_13": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", + "create.ponder.train_assembly.text_14": "UNLOCALIZED: When used on a station, maps will add a labeled marker at the location", + "create.ponder.train_assembly.text_15": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", + "create.ponder.train_assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", + "create.ponder.train_assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", + "create.ponder.train_assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", + "create.ponder.train_assembly.text_5": "UNLOCALIZED: Create new bogeys by using Train Casing on Tracks", + "create.ponder.train_assembly.text_6": "UNLOCALIZED: Click the track again to cycle between bogey designs", + "create.ponder.train_assembly.text_7": "UNLOCALIZED: Attach blocks with the help of Super Glue", + "create.ponder.train_assembly.text_8": "UNLOCALIZED: Assembled Trains will move faster if they can find fuel in assembled chests or barrels", + "create.ponder.train_assembly.text_9": "UNLOCALIZED: Fuel stored in Vaults will not be consumed by the train", + + "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", + "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", + "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", + "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", + "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", + "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", + "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", + "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", + "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + + "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", + "create.ponder.train_schedule.text_1": "UNLOCALIZED: Schedules allow Trains to be controlled by other Drivers", + "create.ponder.train_schedule.text_2": "UNLOCALIZED: Right-click with the item in hand to open its Interface", + "create.ponder.train_schedule.text_3": "UNLOCALIZED: Once programmed, the Schedule can be handed off to a Train Driver", + "create.ponder.train_schedule.text_4": "UNLOCALIZED: Any mob or blaze burner sitting in front of Train Controls is an eligible conductor", + "create.ponder.train_schedule.text_5": "UNLOCALIZED: Creatures on a lead can be given their seat more conveniently", + "create.ponder.train_schedule.text_6": "UNLOCALIZED: Schedules can be retrieved from Drivers at any moment", + + "create.ponder.train_signal_placement.header": "UNLOCALIZED: Placing Train Signals", + "create.ponder.train_signal_placement.text_1": "UNLOCALIZED: Select a Train Track then place the Signal nearby", + "create.ponder.train_signal_placement.text_2": "UNLOCALIZED: Signals control the flow of Trains not driven by players", + "create.ponder.train_signal_placement.text_3": "UNLOCALIZED: Scheduled Trains will never cross signals in the opposite direction", + "create.ponder.train_signal_placement.text_4": "UNLOCALIZED: ...unless a second signal is added facing the opposite way.", + "create.ponder.train_signal_placement.text_5": "UNLOCALIZED: Nixie tubes can be attached to make a signal's lights more visible", + + "create.ponder.train_signal_redstone.header": "UNLOCALIZED: Signals & Redstone", + "create.ponder.train_signal_redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", + "create.ponder.train_signal_redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + + "create.ponder.train_signal_signaling.header": "UNLOCALIZED: Collision Prevention with Signals", + "create.ponder.train_signal_signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", + "create.ponder.train_signal_signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", + "create.ponder.train_signal_signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", + "create.ponder.train_signal_signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", + "create.ponder.train_signal_signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", + "create.ponder.train_signal_signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", + "create.ponder.train_signal_signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", + "create.ponder.train_signal_signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", + "create.ponder.train_signal_signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + + "create.ponder.valve_handle.header": "Генерації сили обертання за допомогою Вентилів", + "create.ponder.valve_handle.text_1": "Гравці можуть використовувати вентилі для застосування сили обертання вручну", + "create.ponder.valve_handle.text_2": "Тримайте ПКМ для обертання його проти Годинникової стрілки", + "create.ponder.valve_handle.text_3": "Швидкість, що передається ними, повільна і точна", + "create.ponder.valve_handle.text_4": "Тримайте ПКМ крадькома для обертання його за Годинниковою стрілкою", + "create.ponder.valve_handle.text_5": "Вентилі можна фарбувати в естетичних цілях", + + "create.ponder.valve_pipe.header": "Управління потоком рідини за допомогою вентилів", + "create.ponder.valve_pipe.text_1": "Рідинні вентилі допомагають контролювати поширення рідин по мережах труб", + "create.ponder.valve_pipe.text_2": "Їх вхідний вал контролює, чи дозволено подачу рідини в даний момент.", + "create.ponder.valve_pipe.text_3": "При обертанні в напрямку відкриття клапан відкривається", + "create.ponder.valve_pipe.text_4": "Його можна знову закрити, змінивши напрямок вхідного обертання", + + "create.ponder.water_wheel.header": "Генерації сили обертання за допомогою Водяних коліс", + "create.ponder.water_wheel.text_1": "Водяні колеса беруть силу сусідніх потоків води", + "create.ponder.water_wheel.text_2": "Чим більше сторін запитано, тим швидше обертатиметься Водяне колесо", + "create.ponder.water_wheel.text_3": "Лопаті колеса повинні бути спрямовані проти течії", + "create.ponder.water_wheel.text_4": "Спрямована в протилежний бік, вона не буде такою ж ефективною", + + "create.ponder.weighted_ejector.header": "Використання Зважених катапульт", + "create.ponder.weighted_ejector.text_1": "ПКМ крадучись і тримаючи катапульту, щоб вибрати місце мети", + "create.ponder.weighted_ejector.text_10": "Тепер вона обмежена цим розміром стака і активуватиметься лише тоді, коли утримуваний стак досягне цієї кількості.", + "create.ponder.weighted_ejector.text_11": "Інші сутності, вставши на катапульту, завжди активуватимуть її", + "create.ponder.weighted_ejector.text_2": "Встановлена катапульта запускатиме об'єкти до зазначеного місця", + "create.ponder.weighted_ejector.text_3": "Відповідна мета може бути на будь-якій дистанції та висоті в радіусі", + "create.ponder.weighted_ejector.text_4": "Однак вони не можуть бути збоку", + "create.ponder.weighted_ejector.text_5": "Якщо не було вибрано відповідної мети, вона цілитиметься в блок перед нею", + "create.ponder.weighted_ejector.text_6": "Надайте силу обертання, щоб зарядити її", + "create.ponder.weighted_ejector.text_7": "Встановлення предметів на катапульту викликають її спрацювання", + "create.ponder.weighted_ejector.text_8": "Якщо інвентар обраний метою, то катапульта чекатиме, доки у ньому з'явиться місце.", + "create.ponder.weighted_ejector.text_9": "За допомогою ключа можна налаштувати необхідний розмір стака", + + "create.ponder.weighted_ejector_redstone.header": "Управління Зваженими катапультами редстоуном", + "create.ponder.weighted_ejector_redstone.text_1": "При подачі редстоун сигналу катапульти не активуватимуться", + "create.ponder.weighted_ejector_redstone.text_2": "Крім того, спостерігачі можуть визначити, коли катапульти спрацьовують", + + "create.ponder.weighted_ejector_tunnel.header": "Поділ стаків предметів за допомогою Зважених катапульт", + "create.ponder.weighted_ejector_tunnel.text_1": "Об'єднані з Латунними тунелями катапульти можуть ділити стаки предметів за певною кількістю.", + "create.ponder.weighted_ejector_tunnel.text_2": "Спочатку налаштуйте латунний тунель на «Переважно найближче», щоб пріоритизувати вихід збоку", + "create.ponder.weighted_ejector_tunnel.text_3": "Розмір стака, встановлений на катапульті, тепер визначає кількість, що відокремлюється.", + "create.ponder.weighted_ejector_tunnel.text_4": "Поки що новий стак потрібної кількості лежить на бічному виході...", + "create.ponder.weighted_ejector_tunnel.text_5": "...залишок продовжить свій шлях", + + "create.ponder.windmill_source.header": "Генерації сили обертання за допомогою Підшипників вітряка", + "create.ponder.windmill_source.text_1": "Підшипники вітряного млина прикріплюються до блоків перед ними", + "create.ponder.windmill_source.text_2": "Якщо прикріплено достатньо парусоподібних блоків, він може стати млином", + "create.ponder.windmill_source.text_3": "Активований за допомогою ПКМ, Підшипник вітряного млина почне виробляти силу обертання", + "create.ponder.windmill_source.text_4": "Кількість вітрил визначає швидкість обертання", + "create.ponder.windmill_source.text_5": "Використовуйте ключ, щоб налаштувати напрямок обертання", + "create.ponder.windmill_source.text_6": "ПКМ по підшипнику у будь-який час, щоб зупинити його та відредагувати структуру", + "create.ponder.windmill_source.text_7": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", + + "create.ponder.windmill_structure.header": "Пристосування вітряка", + "create.ponder.windmill_structure.text_1": "Будь-яка споруда може вважатися дійсним вітряком, якщо вона містить принаймні 8 вітрильних блоків.", + + "_": "Thank you for translating Create!" + +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 84ca18922..459b5f282 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 4", + "_": "Missing Localizations: 0", "_": "->------------------------] Game Elements [------------------------<-", @@ -1366,10 +1366,10 @@ "create.tooltip.chute.fans_pull_up": "鼓风机从上方进行吸引", "create.tooltip.chute.fans_pull_down": "鼓风机从下方进行吸引", "create.tooltip.chute.contains": "内含物品:%1$s x%2$s", - "create.tooltip.deployer.header": "UNLOCALIZED: Deployer Information", - "create.tooltip.deployer.using": "UNLOCALIZED: Mode: Use", - "create.tooltip.deployer.punching": "UNLOCALIZED: Mode: Attack", - "create.tooltip.deployer.contains": "UNLOCALIZED: Item: %1$s x%2$s", + "create.tooltip.deployer.header": "机械手信息", + "create.tooltip.deployer.using": "模式:使用", + "create.tooltip.deployer.punching": "模式:攻击", + "create.tooltip.deployer.contains": "物品:%1$s x%2$s", "create.tooltip.brass_tunnel.contains": "目前分配:", "create.tooltip.brass_tunnel.contains_entry": "> %1$s x%2$s", "create.tooltip.brass_tunnel.retrieve": "右击取出", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index e47e95c21..7c0ccee4b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1042", + "_": "Missing Localizations: 4", "_": "->------------------------] Game Elements [------------------------<-", @@ -9,15 +9,15 @@ "block.create.analog_lever": "可調式拉桿", "block.create.andesite_belt_funnel": "安山岩輸送帶漏斗", "block.create.andesite_casing": "安山岩機殼", - "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", - "block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel", + "block.create.andesite_encased_cogwheel": "安山齒輪箱", + "block.create.andesite_encased_large_cogwheel": "安山大齒輪箱", "block.create.andesite_encased_shaft": "安山傳動軸箱", "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_ladder": "UNLOCALIZED: Andesite Ladder", - "block.create.andesite_pillar": "豎紋安山岩", + "block.create.andesite_ladder": "安山岩梯子", + "block.create.andesite_pillar": "安山岩柱", "block.create.andesite_tunnel": "安山岩物品隧道", - "block.create.asurine": "UNLOCALIZED: Asurine", - "block.create.asurine_pillar": "UNLOCALIZED: Asurine Pillar", + "block.create.asurine": "皓藍石", + "block.create.asurine_pillar": "皓藍石柱", "block.create.basin": "作業盆", "block.create.belt": "輸送帶", "block.create.birch_window": "白樺木窗戶", @@ -25,218 +25,218 @@ "block.create.black_nixie_tube": "黑色真空管", "block.create.black_sail": "黑色風帆", "block.create.black_seat": "黑色坐墊", - "block.create.black_toolbox": "UNLOCALIZED: Black Toolbox", + "block.create.black_toolbox": "黑色工具箱", "block.create.black_valve_handle": "黑色閥門開關", "block.create.blaze_burner": "烈焰使者動力爐", "block.create.blue_nixie_tube": "藍色真空管", "block.create.blue_sail": "藍色風帆", "block.create.blue_seat": "藍色坐墊", - "block.create.blue_toolbox": "UNLOCALIZED: Blue Toolbox", + "block.create.blue_toolbox": "藍色工具箱", "block.create.blue_valve_handle": "藍色閥門開關", "block.create.brass_belt_funnel": "黃銅輸送帶漏斗", - "block.create.brass_block": "黃銅磚", + "block.create.brass_block": "黃銅方塊", "block.create.brass_casing": "黃銅機殼", - "block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel", - "block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel", + "block.create.brass_encased_cogwheel": "黃銅齒輪箱", + "block.create.brass_encased_large_cogwheel": "黃銅大齒輪箱", "block.create.brass_encased_shaft": "黃銅傳動軸箱", "block.create.brass_funnel": "黃銅漏斗", - "block.create.brass_ladder": "UNLOCALIZED: Brass Ladder", + "block.create.brass_ladder": "黃銅梯子", "block.create.brass_tunnel": "黃銅物品隧道", "block.create.brown_nixie_tube": "棕色真空管", "block.create.brown_sail": "棕色風帆", "block.create.brown_seat": "棕色坐墊", - "block.create.brown_toolbox": "UNLOCALIZED: Brown Toolbox", + "block.create.brown_toolbox": "棕色工具箱", "block.create.brown_valve_handle": "棕色閥門開關", - "block.create.calcite_pillar": "UNLOCALIZED: Calcite Pillar", + "block.create.calcite_pillar": "方解石柱", "block.create.cart_assembler": "礦車裝修站", "block.create.chocolate": "巧克力", - "block.create.chute": "滑道", + "block.create.chute": "滑槽", "block.create.clockwork_bearing": "時鐘軸承", "block.create.clutch": "離合器", "block.create.cogwheel": "齒輪", "block.create.content_observer": "物品偵測器", - "block.create.controller_rail": "控制鐵軌", - "block.create.controls": "UNLOCALIZED: Train Controls", + "block.create.controller_rail": "控制軌道", + "block.create.controls": "火車控制台", "block.create.copper_backtank": "銅製後背包", "block.create.copper_casing": "銅機殼", - "block.create.copper_ladder": "UNLOCALIZED: Copper Ladder", - "block.create.copper_shingle_slab": "UNLOCALIZED: Copper Shingle Slab", - "block.create.copper_shingle_stairs": "UNLOCALIZED: Copper Shingle Stairs", - "block.create.copper_shingles": "塊狀銅磚", - "block.create.copper_tile_slab": "UNLOCALIZED: Copper Tile Slab", - "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", - "block.create.copper_tiles": "菱形銅磚", + "block.create.copper_ladder": "銅製梯子", + "block.create.copper_shingle_slab": "銅屋瓦半磚", + "block.create.copper_shingle_stairs": "銅屋瓦階梯", + "block.create.copper_shingles": "銅屋瓦", + "block.create.copper_tile_slab": "銅磚瓦半磚", + "block.create.copper_tile_stairs": "銅磚瓦階梯", + "block.create.copper_tiles": "銅磚瓦", "block.create.copper_valve_handle": "銅製閥門開關", "block.create.creative_crate": "創造板條箱", - "block.create.creative_fluid_tank": "創造液體儲存罐", + "block.create.creative_fluid_tank": "創造流體儲存罐", "block.create.creative_motor": "創造馬達", - "block.create.crimsite": "UNLOCALIZED: Crimsite", - "block.create.crimsite_pillar": "UNLOCALIZED: Crimsite Pillar", - "block.create.crimson_window": "赤紅窗戶", - "block.create.crimson_window_pane": "赤紅窗戶片", + "block.create.crimsite": "緋紅岩", + "block.create.crimsite_pillar": "緋紅岩柱", + "block.create.crimson_window": "緋紅窗戶", + "block.create.crimson_window_pane": "緋紅窗戶片", "block.create.crushing_wheel": "粉碎輪", "block.create.crushing_wheel_controller": "粉碎輪控制器", "block.create.cuckoo_clock": "布穀鳥鐘", - "block.create.cut_andesite": "UNLOCALIZED: Cut Andesite", - "block.create.cut_andesite_brick_slab": "UNLOCALIZED: Cut Andesite Brick Slab", - "block.create.cut_andesite_brick_stairs": "UNLOCALIZED: Cut Andesite Brick Stairs", - "block.create.cut_andesite_brick_wall": "UNLOCALIZED: Cut Andesite Brick Wall", - "block.create.cut_andesite_bricks": "UNLOCALIZED: Cut Andesite Bricks", - "block.create.cut_andesite_slab": "UNLOCALIZED: Cut Andesite Slab", - "block.create.cut_andesite_stairs": "UNLOCALIZED: Cut Andesite Stairs", - "block.create.cut_andesite_wall": "UNLOCALIZED: Cut Andesite Wall", - "block.create.cut_asurine": "UNLOCALIZED: Cut Asurine", - "block.create.cut_asurine_brick_slab": "UNLOCALIZED: Cut Asurine Brick Slab", - "block.create.cut_asurine_brick_stairs": "UNLOCALIZED: Cut Asurine Brick Stairs", - "block.create.cut_asurine_brick_wall": "UNLOCALIZED: Cut Asurine Brick Wall", - "block.create.cut_asurine_bricks": "UNLOCALIZED: Cut Asurine Bricks", - "block.create.cut_asurine_slab": "UNLOCALIZED: Cut Asurine Slab", - "block.create.cut_asurine_stairs": "UNLOCALIZED: Cut Asurine Stairs", - "block.create.cut_asurine_wall": "UNLOCALIZED: Cut Asurine Wall", - "block.create.cut_calcite": "UNLOCALIZED: Cut Calcite", - "block.create.cut_calcite_brick_slab": "UNLOCALIZED: Cut Calcite Brick Slab", - "block.create.cut_calcite_brick_stairs": "UNLOCALIZED: Cut Calcite Brick Stairs", - "block.create.cut_calcite_brick_wall": "UNLOCALIZED: Cut Calcite Brick Wall", - "block.create.cut_calcite_bricks": "UNLOCALIZED: Cut Calcite Bricks", - "block.create.cut_calcite_slab": "UNLOCALIZED: Cut Calcite Slab", - "block.create.cut_calcite_stairs": "UNLOCALIZED: Cut Calcite Stairs", - "block.create.cut_calcite_wall": "UNLOCALIZED: Cut Calcite Wall", - "block.create.cut_crimsite": "UNLOCALIZED: Cut Crimsite", - "block.create.cut_crimsite_brick_slab": "UNLOCALIZED: Cut Crimsite Brick Slab", - "block.create.cut_crimsite_brick_stairs": "UNLOCALIZED: Cut Crimsite Brick Stairs", - "block.create.cut_crimsite_brick_wall": "UNLOCALIZED: Cut Crimsite Brick Wall", - "block.create.cut_crimsite_bricks": "UNLOCALIZED: Cut Crimsite Bricks", - "block.create.cut_crimsite_slab": "UNLOCALIZED: Cut Crimsite Slab", - "block.create.cut_crimsite_stairs": "UNLOCALIZED: Cut Crimsite Stairs", - "block.create.cut_crimsite_wall": "UNLOCALIZED: Cut Crimsite Wall", - "block.create.cut_deepslate": "UNLOCALIZED: Cut Deepslate", - "block.create.cut_deepslate_brick_slab": "UNLOCALIZED: Cut Deepslate Brick Slab", - "block.create.cut_deepslate_brick_stairs": "UNLOCALIZED: Cut Deepslate Brick Stairs", - "block.create.cut_deepslate_brick_wall": "UNLOCALIZED: Cut Deepslate Brick Wall", - "block.create.cut_deepslate_bricks": "UNLOCALIZED: Cut Deepslate Bricks", - "block.create.cut_deepslate_slab": "UNLOCALIZED: Cut Deepslate Slab", - "block.create.cut_deepslate_stairs": "UNLOCALIZED: Cut Deepslate Stairs", - "block.create.cut_deepslate_wall": "UNLOCALIZED: Cut Deepslate Wall", - "block.create.cut_diorite": "UNLOCALIZED: Cut Diorite", - "block.create.cut_diorite_brick_slab": "UNLOCALIZED: Cut Diorite Brick Slab", - "block.create.cut_diorite_brick_stairs": "UNLOCALIZED: Cut Diorite Brick Stairs", - "block.create.cut_diorite_brick_wall": "UNLOCALIZED: Cut Diorite Brick Wall", - "block.create.cut_diorite_bricks": "UNLOCALIZED: Cut Diorite Bricks", - "block.create.cut_diorite_slab": "UNLOCALIZED: Cut Diorite Slab", - "block.create.cut_diorite_stairs": "UNLOCALIZED: Cut Diorite Stairs", - "block.create.cut_diorite_wall": "UNLOCALIZED: Cut Diorite Wall", - "block.create.cut_dripstone": "UNLOCALIZED: Cut Dripstone", - "block.create.cut_dripstone_brick_slab": "UNLOCALIZED: Cut Dripstone Brick Slab", - "block.create.cut_dripstone_brick_stairs": "UNLOCALIZED: Cut Dripstone Brick Stairs", - "block.create.cut_dripstone_brick_wall": "UNLOCALIZED: Cut Dripstone Brick Wall", - "block.create.cut_dripstone_bricks": "UNLOCALIZED: Cut Dripstone Bricks", - "block.create.cut_dripstone_slab": "UNLOCALIZED: Cut Dripstone Slab", - "block.create.cut_dripstone_stairs": "UNLOCALIZED: Cut Dripstone Stairs", - "block.create.cut_dripstone_wall": "UNLOCALIZED: Cut Dripstone Wall", - "block.create.cut_granite": "UNLOCALIZED: Cut Granite", - "block.create.cut_granite_brick_slab": "UNLOCALIZED: Cut Granite Brick Slab", - "block.create.cut_granite_brick_stairs": "UNLOCALIZED: Cut Granite Brick Stairs", - "block.create.cut_granite_brick_wall": "UNLOCALIZED: Cut Granite Brick Wall", - "block.create.cut_granite_bricks": "UNLOCALIZED: Cut Granite Bricks", - "block.create.cut_granite_slab": "UNLOCALIZED: Cut Granite Slab", - "block.create.cut_granite_stairs": "UNLOCALIZED: Cut Granite Stairs", - "block.create.cut_granite_wall": "UNLOCALIZED: Cut Granite Wall", - "block.create.cut_limestone": "UNLOCALIZED: Cut Limestone", - "block.create.cut_limestone_brick_slab": "UNLOCALIZED: Cut Limestone Brick Slab", - "block.create.cut_limestone_brick_stairs": "UNLOCALIZED: Cut Limestone Brick Stairs", - "block.create.cut_limestone_brick_wall": "UNLOCALIZED: Cut Limestone Brick Wall", - "block.create.cut_limestone_bricks": "UNLOCALIZED: Cut Limestone Bricks", - "block.create.cut_limestone_slab": "UNLOCALIZED: Cut Limestone Slab", - "block.create.cut_limestone_stairs": "UNLOCALIZED: Cut Limestone Stairs", - "block.create.cut_limestone_wall": "UNLOCALIZED: Cut Limestone Wall", - "block.create.cut_ochrum": "UNLOCALIZED: Cut Ochrum", - "block.create.cut_ochrum_brick_slab": "UNLOCALIZED: Cut Ochrum Brick Slab", - "block.create.cut_ochrum_brick_stairs": "UNLOCALIZED: Cut Ochrum Brick Stairs", - "block.create.cut_ochrum_brick_wall": "UNLOCALIZED: Cut Ochrum Brick Wall", - "block.create.cut_ochrum_bricks": "UNLOCALIZED: Cut Ochrum Bricks", - "block.create.cut_ochrum_slab": "UNLOCALIZED: Cut Ochrum Slab", - "block.create.cut_ochrum_stairs": "UNLOCALIZED: Cut Ochrum Stairs", - "block.create.cut_ochrum_wall": "UNLOCALIZED: Cut Ochrum Wall", - "block.create.cut_scorchia": "UNLOCALIZED: Cut Scorchia", - "block.create.cut_scorchia_brick_slab": "UNLOCALIZED: Cut Scorchia Brick Slab", - "block.create.cut_scorchia_brick_stairs": "UNLOCALIZED: Cut Scorchia Brick Stairs", - "block.create.cut_scorchia_brick_wall": "UNLOCALIZED: Cut Scorchia Brick Wall", - "block.create.cut_scorchia_bricks": "UNLOCALIZED: Cut Scorchia Bricks", - "block.create.cut_scorchia_slab": "UNLOCALIZED: Cut Scorchia Slab", - "block.create.cut_scorchia_stairs": "UNLOCALIZED: Cut Scorchia Stairs", - "block.create.cut_scorchia_wall": "UNLOCALIZED: Cut Scorchia Wall", - "block.create.cut_scoria": "UNLOCALIZED: Cut Scoria", - "block.create.cut_scoria_brick_slab": "UNLOCALIZED: Cut Scoria Brick Slab", - "block.create.cut_scoria_brick_stairs": "UNLOCALIZED: Cut Scoria Brick Stairs", - "block.create.cut_scoria_brick_wall": "UNLOCALIZED: Cut Scoria Brick Wall", - "block.create.cut_scoria_bricks": "UNLOCALIZED: Cut Scoria Bricks", - "block.create.cut_scoria_slab": "UNLOCALIZED: Cut Scoria Slab", - "block.create.cut_scoria_stairs": "UNLOCALIZED: Cut Scoria Stairs", - "block.create.cut_scoria_wall": "UNLOCALIZED: Cut Scoria Wall", - "block.create.cut_tuff": "UNLOCALIZED: Cut Tuff", - "block.create.cut_tuff_brick_slab": "UNLOCALIZED: Cut Tuff Brick Slab", - "block.create.cut_tuff_brick_stairs": "UNLOCALIZED: Cut Tuff Brick Stairs", - "block.create.cut_tuff_brick_wall": "UNLOCALIZED: Cut Tuff Brick Wall", - "block.create.cut_tuff_bricks": "UNLOCALIZED: Cut Tuff Bricks", - "block.create.cut_tuff_slab": "UNLOCALIZED: Cut Tuff Slab", - "block.create.cut_tuff_stairs": "UNLOCALIZED: Cut Tuff Stairs", - "block.create.cut_tuff_wall": "UNLOCALIZED: Cut Tuff Wall", - "block.create.cut_veridium": "UNLOCALIZED: Cut Veridium", - "block.create.cut_veridium_brick_slab": "UNLOCALIZED: Cut Veridium Brick Slab", - "block.create.cut_veridium_brick_stairs": "UNLOCALIZED: Cut Veridium Brick Stairs", - "block.create.cut_veridium_brick_wall": "UNLOCALIZED: Cut Veridium Brick Wall", - "block.create.cut_veridium_bricks": "UNLOCALIZED: Cut Veridium Bricks", - "block.create.cut_veridium_slab": "UNLOCALIZED: Cut Veridium Slab", - "block.create.cut_veridium_stairs": "UNLOCALIZED: Cut Veridium Stairs", - "block.create.cut_veridium_wall": "UNLOCALIZED: Cut Veridium Wall", + "block.create.cut_andesite": "切製安山岩", + "block.create.cut_andesite_brick_slab": "切製安山岩磚半磚", + "block.create.cut_andesite_brick_stairs": "切製安山岩磚階梯", + "block.create.cut_andesite_brick_wall": "切製安山岩磚牆", + "block.create.cut_andesite_bricks": "切製安山岩磚", + "block.create.cut_andesite_slab": "切製安山岩半磚", + "block.create.cut_andesite_stairs": "切製安山岩階梯", + "block.create.cut_andesite_wall": "切製安山岩牆", + "block.create.cut_asurine": "切製皓藍石", + "block.create.cut_asurine_brick_slab": "切製皓藍石磚半磚", + "block.create.cut_asurine_brick_stairs": "切製皓藍石磚階梯", + "block.create.cut_asurine_brick_wall": "切製皓藍石磚牆", + "block.create.cut_asurine_bricks": "切製皓藍石磚", + "block.create.cut_asurine_slab": "切製皓藍石半磚", + "block.create.cut_asurine_stairs": "切製皓藍石階梯", + "block.create.cut_asurine_wall": "切製皓藍石牆", + "block.create.cut_calcite": "切製方解石", + "block.create.cut_calcite_brick_slab": "切製方解石磚半磚", + "block.create.cut_calcite_brick_stairs": "切製方解石磚階梯", + "block.create.cut_calcite_brick_wall": "切製方解石磚牆", + "block.create.cut_calcite_bricks": "切製方解石磚", + "block.create.cut_calcite_slab": "切製方解石半磚", + "block.create.cut_calcite_stairs": "切製方解石階梯", + "block.create.cut_calcite_wall": "切製方解石牆", + "block.create.cut_crimsite": "切製緋紅岩", + "block.create.cut_crimsite_brick_slab": "切製緋紅岩磚半磚", + "block.create.cut_crimsite_brick_stairs": "切製緋紅岩磚階梯", + "block.create.cut_crimsite_brick_wall": "切製緋紅岩磚牆", + "block.create.cut_crimsite_bricks": "切製緋紅岩磚", + "block.create.cut_crimsite_slab": "切製緋紅岩半磚", + "block.create.cut_crimsite_stairs": "切製緋紅岩階梯", + "block.create.cut_crimsite_wall": "切製緋紅岩牆", + "block.create.cut_deepslate": "切製深板岩", + "block.create.cut_deepslate_brick_slab": "切製深板岩磚半磚", + "block.create.cut_deepslate_brick_stairs": "切製深板岩磚階梯", + "block.create.cut_deepslate_brick_wall": "切製深板岩磚牆", + "block.create.cut_deepslate_bricks": "切製深板岩磚", + "block.create.cut_deepslate_slab": "切製深板岩半磚", + "block.create.cut_deepslate_stairs": "切製深板岩階梯", + "block.create.cut_deepslate_wall": "切製深板岩牆", + "block.create.cut_diorite": "切製閃長岩", + "block.create.cut_diorite_brick_slab": "切製閃長岩磚半磚", + "block.create.cut_diorite_brick_stairs": "切製閃長岩磚階梯", + "block.create.cut_diorite_brick_wall": "切製閃長岩磚牆", + "block.create.cut_diorite_bricks": "切製閃長岩磚", + "block.create.cut_diorite_slab": "切製閃長岩半磚", + "block.create.cut_diorite_stairs": "切製閃長岩階梯", + "block.create.cut_diorite_wall": "切製閃長岩牆", + "block.create.cut_dripstone": "切製鐘乳石", + "block.create.cut_dripstone_brick_slab": "切製鐘乳石磚半磚", + "block.create.cut_dripstone_brick_stairs": "切製鐘乳石磚階梯", + "block.create.cut_dripstone_brick_wall": "切製鐘乳石磚牆", + "block.create.cut_dripstone_bricks": "切製鐘乳石磚", + "block.create.cut_dripstone_slab": "切製鐘乳石半磚", + "block.create.cut_dripstone_stairs": "切製鐘乳石階梯", + "block.create.cut_dripstone_wall": "切製鐘乳石牆", + "block.create.cut_granite": "切製花崗岩", + "block.create.cut_granite_brick_slab": "切製花崗岩磚半磚", + "block.create.cut_granite_brick_stairs": "切製花崗岩磚階梯", + "block.create.cut_granite_brick_wall": "切製花崗岩磚牆", + "block.create.cut_granite_bricks": "切製花崗岩磚", + "block.create.cut_granite_slab": "切製花崗岩半磚", + "block.create.cut_granite_stairs": "切製花崗岩階梯", + "block.create.cut_granite_wall": "切製花崗岩牆", + "block.create.cut_limestone": "切製石灰岩", + "block.create.cut_limestone_brick_slab": "切製石灰岩磚半磚", + "block.create.cut_limestone_brick_stairs": "切製石灰岩磚階梯", + "block.create.cut_limestone_brick_wall": "切製石灰岩磚牆", + "block.create.cut_limestone_bricks": "切製石灰岩磚", + "block.create.cut_limestone_slab": "切製石灰岩半磚", + "block.create.cut_limestone_stairs": "切製石灰岩階梯", + "block.create.cut_limestone_wall": "切製石灰岩牆", + "block.create.cut_ochrum": "切製赭金石", + "block.create.cut_ochrum_brick_slab": "切製赭金石磚半磚", + "block.create.cut_ochrum_brick_stairs": "切製赭金石磚階梯", + "block.create.cut_ochrum_brick_wall": "切製赭金石磚牆", + "block.create.cut_ochrum_bricks": "切製赭金石磚", + "block.create.cut_ochrum_slab": "切製赭金石半磚", + "block.create.cut_ochrum_stairs": "切製赭金石階梯", + "block.create.cut_ochrum_wall": "切製赭金石牆", + "block.create.cut_scorchia": "切製焦熔渣", + "block.create.cut_scorchia_brick_slab": "切製焦熔渣磚半磚", + "block.create.cut_scorchia_brick_stairs": "切製焦熔渣磚階梯", + "block.create.cut_scorchia_brick_wall": "切製焦熔渣磚牆", + "block.create.cut_scorchia_bricks": "切製焦熔渣磚", + "block.create.cut_scorchia_slab": "切製焦熔渣半磚", + "block.create.cut_scorchia_stairs": "切製焦熔渣階梯", + "block.create.cut_scorchia_wall": "切製焦熔渣牆", + "block.create.cut_scoria": "切製熔渣", + "block.create.cut_scoria_brick_slab": "切製熔渣磚半磚", + "block.create.cut_scoria_brick_stairs": "切製熔渣磚階梯", + "block.create.cut_scoria_brick_wall": "切製熔渣磚牆", + "block.create.cut_scoria_bricks": "切製熔渣磚", + "block.create.cut_scoria_slab": "切製熔渣半磚", + "block.create.cut_scoria_stairs": "切製熔渣階梯", + "block.create.cut_scoria_wall": "切製熔渣牆", + "block.create.cut_tuff": "切製凝灰岩", + "block.create.cut_tuff_brick_slab": "切製凝灰岩磚半磚", + "block.create.cut_tuff_brick_stairs": "切製凝灰岩磚階梯", + "block.create.cut_tuff_brick_wall": "切製凝灰岩磚牆", + "block.create.cut_tuff_bricks": "切製凝灰岩磚", + "block.create.cut_tuff_slab": "切製凝灰岩半磚", + "block.create.cut_tuff_stairs": "切製凝灰岩階梯", + "block.create.cut_tuff_wall": "切製凝灰岩牆", + "block.create.cut_veridium": "切製輝綠岩", + "block.create.cut_veridium_brick_slab": "切製輝綠岩磚半磚", + "block.create.cut_veridium_brick_stairs": "切製輝綠岩磚階梯", + "block.create.cut_veridium_brick_wall": "切製輝綠岩磚牆", + "block.create.cut_veridium_bricks": "切製輝綠岩磚", + "block.create.cut_veridium_slab": "切製輝綠岩半磚", + "block.create.cut_veridium_stairs": "切製輝綠岩階梯", + "block.create.cut_veridium_wall": "切製輝綠岩牆", "block.create.cyan_nixie_tube": "青色真空管", "block.create.cyan_sail": "藍綠色風帆", "block.create.cyan_seat": "藍綠色坐墊", - "block.create.cyan_toolbox": "UNLOCALIZED: Cyan Toolbox", + "block.create.cyan_toolbox": "藍綠色工具箱", "block.create.cyan_valve_handle": "藍綠色閥門開關", "block.create.dark_oak_window": "黑橡木窗戶", "block.create.dark_oak_window_pane": "黑橡木窗戶片", - "block.create.deepslate_pillar": "UNLOCALIZED: Deepslate Pillar", - "block.create.deepslate_zinc_ore": "UNLOCALIZED: Deepslate Zinc Ore", - "block.create.deployer": "機器手", + "block.create.deepslate_pillar": "深板岩柱", + "block.create.deepslate_zinc_ore": "深板岩鋅礦", + "block.create.deployer": "機械手", "block.create.depot": "置物臺", - "block.create.diorite_pillar": "豎紋閃長岩", - "block.create.display_board": "UNLOCALIZED: Display Board", - "block.create.display_link": "UNLOCALIZED: Display Link", - "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.diorite_pillar": "閃長岩柱", + "block.create.display_board": "顯示板", + "block.create.display_link": "顯示鏈路", + "block.create.dripstone_pillar": "鐘乳石柱", "block.create.encased_chain_drive": "鏈式傳動箱", "block.create.encased_fan": "鼓風機", - "block.create.encased_fluid_pipe": "液體管道箱", - "block.create.exposed_copper_shingle_slab": "UNLOCALIZED: Exposed Copper Shingle Slab", - "block.create.exposed_copper_shingle_stairs": "UNLOCALIZED: Exposed Copper Shingle Stairs", - "block.create.exposed_copper_shingles": "UNLOCALIZED: Exposed Copper Shingles", - "block.create.exposed_copper_tile_slab": "UNLOCALIZED: Exposed Copper Tile Slab", - "block.create.exposed_copper_tile_stairs": "UNLOCALIZED: Exposed Copper Tile Stairs", - "block.create.exposed_copper_tiles": "UNLOCALIZED: Exposed Copper Tiles", - "block.create.fake_track": "UNLOCALIZED: Track Marker for Maps", - "block.create.fluid_pipe": "液體管道", - "block.create.fluid_tank": "液體儲存罐", - "block.create.fluid_valve": "液體閥門", + "block.create.encased_fluid_pipe": "流體管道箱", + "block.create.exposed_copper_shingle_slab": "斑駁的銅屋瓦半磚", + "block.create.exposed_copper_shingle_stairs": "斑駁的銅屋瓦階梯", + "block.create.exposed_copper_shingles": "斑駁的銅屋瓦", + "block.create.exposed_copper_tile_slab": "斑駁的銅磚瓦半磚", + "block.create.exposed_copper_tile_stairs": "斑駁的銅磚瓦階梯", + "block.create.exposed_copper_tiles": "斑駁的銅磚瓦", + "block.create.fake_track": "地圖軌道標記", + "block.create.fluid_pipe": "流體管道", + "block.create.fluid_tank": "流體儲存罐", + "block.create.fluid_valve": "流體閥門", "block.create.flywheel": "飛輪", "block.create.framed_glass": "邊框玻璃", - "block.create.framed_glass_door": "UNLOCALIZED: Framed Glass Door", + "block.create.framed_glass_door": "邊框玻璃門", "block.create.framed_glass_pane": "邊框玻璃片", - "block.create.framed_glass_trapdoor": "UNLOCALIZED: Framed Glass Trapdoor", - "block.create.gantry_carriage": "門式起重機", - "block.create.gantry_shaft": "門式起重機滑道", + "block.create.framed_glass_trapdoor": "邊框玻璃地板門", + "block.create.gantry_carriage": "橋式起重機", + "block.create.gantry_shaft": "橋式起重機導軌", "block.create.gearbox": "齒輪箱", "block.create.gearshift": "變速箱", - "block.create.glass_fluid_pipe": "玻璃液體管道", - "block.create.granite_pillar": "豎紋花崗岩", + "block.create.glass_fluid_pipe": "玻璃流體管道", + "block.create.granite_pillar": "花崗岩柱", "block.create.gray_nixie_tube": "灰色真空管", "block.create.gray_sail": "灰色風帆", "block.create.gray_seat": "灰色坐墊", - "block.create.gray_toolbox": "UNLOCALIZED: Gray Toolbox", + "block.create.gray_toolbox": "灰色工具箱", "block.create.gray_valve_handle": "灰色閥門開關", "block.create.green_nixie_tube": "綠色真空管", "block.create.green_sail": "綠色風帆", "block.create.green_seat": "綠色坐墊", - "block.create.green_toolbox": "UNLOCALIZED: Green Toolbox", + "block.create.green_toolbox": "綠色工具箱", "block.create.green_valve_handle": "綠色閥門開關", "block.create.hand_crank": "手搖把手", "block.create.haunted_bell": "靈魂鐘", @@ -245,51 +245,51 @@ "block.create.horizontal_framed_glass_pane": "豎直邊框玻璃片", "block.create.hose_pulley": "軟管滑輪", "block.create.item_drain": "分液池", - "block.create.item_vault": "UNLOCALIZED: Item Vault", + "block.create.item_vault": "倉儲", "block.create.jungle_window": "叢林木窗戶", "block.create.jungle_window_pane": "叢林木窗戶片", - "block.create.large_bogey": "UNLOCALIZED: Large Bogey", + "block.create.large_bogey": "大轉向架", "block.create.large_cogwheel": "大齒輪", "block.create.layered_andesite": "疊層安山岩", - "block.create.layered_asurine": "UNLOCALIZED: Layered Asurine", - "block.create.layered_calcite": "UNLOCALIZED: Layered Calcite", - "block.create.layered_crimsite": "UNLOCALIZED: Layered Crimsite", - "block.create.layered_deepslate": "UNLOCALIZED: Layered Deepslate", + "block.create.layered_asurine": "疊層皓藍石", + "block.create.layered_calcite": "疊層方解石", + "block.create.layered_crimsite": "疊層緋紅岩", + "block.create.layered_deepslate": "疊層深板岩", "block.create.layered_diorite": "疊層閃長岩", - "block.create.layered_dripstone": "UNLOCALIZED: Layered Dripstone", + "block.create.layered_dripstone": "疊層鐘乳石", "block.create.layered_granite": "疊層花崗岩", "block.create.layered_limestone": "疊層石灰岩", - "block.create.layered_ochrum": "UNLOCALIZED: Layered Ochrum", - "block.create.layered_scorchia": "UNLOCALIZED: Layered Scorchia", - "block.create.layered_scoria": "疊層火成岩", - "block.create.layered_tuff": "UNLOCALIZED: Layered Tuff", - "block.create.layered_veridium": "UNLOCALIZED: Layered Veridium", + "block.create.layered_ochrum": "疊層赭金石", + "block.create.layered_scorchia": "疊層焦熔渣", + "block.create.layered_scoria": "疊層熔渣", + "block.create.layered_tuff": "疊層凝灰岩", + "block.create.layered_veridium": "疊層輝綠岩", "block.create.lectern_controller": "講台遙控器", "block.create.light_blue_nixie_tube": "亮藍色真空管", "block.create.light_blue_sail": "淡藍色風帆", "block.create.light_blue_seat": "淡藍色坐墊", - "block.create.light_blue_toolbox": "UNLOCALIZED: Light Blue Toolbox", + "block.create.light_blue_toolbox": "淡藍色工具箱", "block.create.light_blue_valve_handle": "淡藍色閥門開關", "block.create.light_gray_nixie_tube": "亮灰色真空管", "block.create.light_gray_sail": "淡灰色風帆", "block.create.light_gray_seat": "淡灰色坐墊", - "block.create.light_gray_toolbox": "UNLOCALIZED: Light Gray Toolbox", + "block.create.light_gray_toolbox": "淺灰色工具箱", "block.create.light_gray_valve_handle": "淡灰色閥門開關", "block.create.lime_nixie_tube": "淺綠色真空管", "block.create.lime_sail": "黃綠色風帆", "block.create.lime_seat": "黃綠色坐墊", - "block.create.lime_toolbox": "UNLOCALIZED: Lime Toolbox", + "block.create.lime_toolbox": "黃綠色工具箱", "block.create.lime_valve_handle": "黃綠色閥門開關", "block.create.limestone": "石灰岩", - "block.create.limestone_pillar": "豎紋石灰岩", + "block.create.limestone_pillar": "石灰岩柱", "block.create.linear_chassis": "機殼底盤", - "block.create.lit_blaze_burner": "烈焰使者動力爐(已啟動)", + "block.create.lit_blaze_burner": "烈焰使者動力爐 (已啟動) ", "block.create.magenta_nixie_tube": "洋紅色真空管", "block.create.magenta_sail": "洋紅色風帆", "block.create.magenta_seat": "洋紅色坐墊", - "block.create.magenta_toolbox": "UNLOCALIZED: Magenta Toolbox", + "block.create.magenta_toolbox": "洋紅色工具箱", "block.create.magenta_valve_handle": "洋紅色閥門開關", - "block.create.mechanical_arm": "機械手臂", + "block.create.mechanical_arm": "機械臂", "block.create.mechanical_bearing": "機械軸承", "block.create.mechanical_crafter": "機械合成器", "block.create.mechanical_drill": "機械鑽頭", @@ -298,12 +298,12 @@ "block.create.mechanical_piston": "機械活塞", "block.create.mechanical_piston_head": "機械活塞頭", "block.create.mechanical_plough": "機械犁", - "block.create.mechanical_press": "機械液壓機", + "block.create.mechanical_press": "機械鍛壓機", "block.create.mechanical_pump": "機械幫浦", - "block.create.mechanical_saw": "機械切割機", + "block.create.mechanical_saw": "機械圓鋸機", "block.create.metal_bracket": "金屬支架", - "block.create.metal_girder": "UNLOCALIZED: Metal Girder", - "block.create.metal_girder_encased_shaft": "UNLOCALIZED: Metal Girder Encased Shaft", + "block.create.metal_girder": "金屬樑", + "block.create.metal_girder_encased_shaft": "金屬傳動軸樑", "block.create.millstone": "石磨", "block.create.minecart_anchor": "礦車錨", "block.create.mysterious_cuckoo_clock": "神秘布穀鳥鐘", @@ -311,266 +311,266 @@ "block.create.nozzle": "鼓風機噴嘴", "block.create.oak_window": "橡木窗戶", "block.create.oak_window_pane": "橡木窗戶片", - "block.create.ochrum": "UNLOCALIZED: Ochrum", - "block.create.ochrum_pillar": "UNLOCALIZED: Ochrum Pillar", + "block.create.ochrum": "赭金石", + "block.create.ochrum_pillar": "赭金石柱", "block.create.orange_sail": "橙色風帆", "block.create.orange_seat": "橙色坐墊", - "block.create.orange_toolbox": "UNLOCALIZED: Orange Toolbox", + "block.create.orange_toolbox": "橙色工具箱", "block.create.orange_valve_handle": "橙色閥門開關", "block.create.ornate_iron_window": "華麗鐵窗戶", "block.create.ornate_iron_window_pane": "華麗鐵窗戶片", - "block.create.oxidized_copper_shingle_slab": "UNLOCALIZED: Oxidized Copper Shingle Slab", - "block.create.oxidized_copper_shingle_stairs": "UNLOCALIZED: Oxidized Copper Shingle Stairs", - "block.create.oxidized_copper_shingles": "UNLOCALIZED: Oxidized Copper Shingles", - "block.create.oxidized_copper_tile_slab": "UNLOCALIZED: Oxidized Copper Tile Slab", - "block.create.oxidized_copper_tile_stairs": "UNLOCALIZED: Oxidized Copper Tile Stairs", - "block.create.oxidized_copper_tiles": "UNLOCALIZED: Oxidized Copper Tiles", + "block.create.oxidized_copper_shingle_slab": "氧化的銅屋瓦半磚", + "block.create.oxidized_copper_shingle_stairs": "氧化的銅屋瓦階梯", + "block.create.oxidized_copper_shingles": "氧化的銅屋瓦", + "block.create.oxidized_copper_tile_slab": "氧化的銅磚瓦半磚", + "block.create.oxidized_copper_tile_stairs": "氧化的銅磚瓦階梯", + "block.create.oxidized_copper_tiles": "氧化的銅磚瓦", "block.create.peculiar_bell": "黃銅鐘", "block.create.pink_nixie_tube": "粉紅色真空管", "block.create.pink_sail": "粉紅色風帆", "block.create.pink_seat": "粉紅色坐墊", - "block.create.pink_toolbox": "UNLOCALIZED: Pink Toolbox", + "block.create.pink_toolbox": "粉紅色工具箱", "block.create.pink_valve_handle": "粉紅色閥門開關", "block.create.piston_extension_pole": "活塞桿", - "block.create.placard": "UNLOCALIZED: Placard", - "block.create.polished_cut_andesite": "UNLOCALIZED: Polished Cut Andesite", - "block.create.polished_cut_andesite_slab": "UNLOCALIZED: Polished Cut Andesite Slab", - "block.create.polished_cut_andesite_stairs": "UNLOCALIZED: Polished Cut Andesite Stairs", - "block.create.polished_cut_andesite_wall": "UNLOCALIZED: Polished Cut Andesite Wall", - "block.create.polished_cut_asurine": "UNLOCALIZED: Polished Cut Asurine", - "block.create.polished_cut_asurine_slab": "UNLOCALIZED: Polished Cut Asurine Slab", - "block.create.polished_cut_asurine_stairs": "UNLOCALIZED: Polished Cut Asurine Stairs", - "block.create.polished_cut_asurine_wall": "UNLOCALIZED: Polished Cut Asurine Wall", - "block.create.polished_cut_calcite": "UNLOCALIZED: Polished Cut Calcite", - "block.create.polished_cut_calcite_slab": "UNLOCALIZED: Polished Cut Calcite Slab", - "block.create.polished_cut_calcite_stairs": "UNLOCALIZED: Polished Cut Calcite Stairs", - "block.create.polished_cut_calcite_wall": "UNLOCALIZED: Polished Cut Calcite Wall", - "block.create.polished_cut_crimsite": "UNLOCALIZED: Polished Cut Crimsite", - "block.create.polished_cut_crimsite_slab": "UNLOCALIZED: Polished Cut Crimsite Slab", - "block.create.polished_cut_crimsite_stairs": "UNLOCALIZED: Polished Cut Crimsite Stairs", - "block.create.polished_cut_crimsite_wall": "UNLOCALIZED: Polished Cut Crimsite Wall", - "block.create.polished_cut_deepslate": "UNLOCALIZED: Polished Cut Deepslate", - "block.create.polished_cut_deepslate_slab": "UNLOCALIZED: Polished Cut Deepslate Slab", - "block.create.polished_cut_deepslate_stairs": "UNLOCALIZED: Polished Cut Deepslate Stairs", - "block.create.polished_cut_deepslate_wall": "UNLOCALIZED: Polished Cut Deepslate Wall", - "block.create.polished_cut_diorite": "UNLOCALIZED: Polished Cut Diorite", - "block.create.polished_cut_diorite_slab": "UNLOCALIZED: Polished Cut Diorite Slab", - "block.create.polished_cut_diorite_stairs": "UNLOCALIZED: Polished Cut Diorite Stairs", - "block.create.polished_cut_diorite_wall": "UNLOCALIZED: Polished Cut Diorite Wall", - "block.create.polished_cut_dripstone": "UNLOCALIZED: Polished Cut Dripstone", - "block.create.polished_cut_dripstone_slab": "UNLOCALIZED: Polished Cut Dripstone Slab", - "block.create.polished_cut_dripstone_stairs": "UNLOCALIZED: Polished Cut Dripstone Stairs", - "block.create.polished_cut_dripstone_wall": "UNLOCALIZED: Polished Cut Dripstone Wall", - "block.create.polished_cut_granite": "UNLOCALIZED: Polished Cut Granite", - "block.create.polished_cut_granite_slab": "UNLOCALIZED: Polished Cut Granite Slab", - "block.create.polished_cut_granite_stairs": "UNLOCALIZED: Polished Cut Granite Stairs", - "block.create.polished_cut_granite_wall": "UNLOCALIZED: Polished Cut Granite Wall", - "block.create.polished_cut_limestone": "UNLOCALIZED: Polished Cut Limestone", - "block.create.polished_cut_limestone_slab": "UNLOCALIZED: Polished Cut Limestone Slab", - "block.create.polished_cut_limestone_stairs": "UNLOCALIZED: Polished Cut Limestone Stairs", - "block.create.polished_cut_limestone_wall": "UNLOCALIZED: Polished Cut Limestone Wall", - "block.create.polished_cut_ochrum": "UNLOCALIZED: Polished Cut Ochrum", - "block.create.polished_cut_ochrum_slab": "UNLOCALIZED: Polished Cut Ochrum Slab", - "block.create.polished_cut_ochrum_stairs": "UNLOCALIZED: Polished Cut Ochrum Stairs", - "block.create.polished_cut_ochrum_wall": "UNLOCALIZED: Polished Cut Ochrum Wall", - "block.create.polished_cut_scorchia": "UNLOCALIZED: Polished Cut Scorchia", - "block.create.polished_cut_scorchia_slab": "UNLOCALIZED: Polished Cut Scorchia Slab", - "block.create.polished_cut_scorchia_stairs": "UNLOCALIZED: Polished Cut Scorchia Stairs", - "block.create.polished_cut_scorchia_wall": "UNLOCALIZED: Polished Cut Scorchia Wall", - "block.create.polished_cut_scoria": "UNLOCALIZED: Polished Cut Scoria", - "block.create.polished_cut_scoria_slab": "UNLOCALIZED: Polished Cut Scoria Slab", - "block.create.polished_cut_scoria_stairs": "UNLOCALIZED: Polished Cut Scoria Stairs", - "block.create.polished_cut_scoria_wall": "UNLOCALIZED: Polished Cut Scoria Wall", - "block.create.polished_cut_tuff": "UNLOCALIZED: Polished Cut Tuff", - "block.create.polished_cut_tuff_slab": "UNLOCALIZED: Polished Cut Tuff Slab", - "block.create.polished_cut_tuff_stairs": "UNLOCALIZED: Polished Cut Tuff Stairs", - "block.create.polished_cut_tuff_wall": "UNLOCALIZED: Polished Cut Tuff Wall", - "block.create.polished_cut_veridium": "UNLOCALIZED: Polished Cut Veridium", - "block.create.polished_cut_veridium_slab": "UNLOCALIZED: Polished Cut Veridium Slab", - "block.create.polished_cut_veridium_stairs": "UNLOCALIZED: Polished Cut Veridium Stairs", - "block.create.polished_cut_veridium_wall": "UNLOCALIZED: Polished Cut Veridium Wall", - "block.create.portable_fluid_interface": "移動式液體口", + "block.create.placard": "標示牌", + "block.create.polished_cut_andesite": "拋光切製安山岩", + "block.create.polished_cut_andesite_slab": "拋光切製安山岩半磚", + "block.create.polished_cut_andesite_stairs": "拋光切製安山岩階梯", + "block.create.polished_cut_andesite_wall": "拋光切製安山岩牆", + "block.create.polished_cut_asurine": "拋光切製皓藍石", + "block.create.polished_cut_asurine_slab": "拋光切製皓藍石半磚", + "block.create.polished_cut_asurine_stairs": "拋光切製皓藍石階梯", + "block.create.polished_cut_asurine_wall": "拋光切製皓藍石牆", + "block.create.polished_cut_calcite": "拋光切製方解石", + "block.create.polished_cut_calcite_slab": "拋光切製方解石半磚", + "block.create.polished_cut_calcite_stairs": "拋光切製方解石階梯", + "block.create.polished_cut_calcite_wall": "拋光切製方解石牆", + "block.create.polished_cut_crimsite": "拋光切製緋紅岩", + "block.create.polished_cut_crimsite_slab": "拋光切製緋紅岩半磚", + "block.create.polished_cut_crimsite_stairs": "拋光切製緋紅岩階梯", + "block.create.polished_cut_crimsite_wall": "拋光切製緋紅岩牆", + "block.create.polished_cut_deepslate": "拋光切製深板岩", + "block.create.polished_cut_deepslate_slab": "拋光切製深板岩半磚", + "block.create.polished_cut_deepslate_stairs": "拋光切製深板岩階梯", + "block.create.polished_cut_deepslate_wall": "拋光切製深板岩牆", + "block.create.polished_cut_diorite": "拋光切製閃長岩", + "block.create.polished_cut_diorite_slab": "拋光切製閃長岩半磚", + "block.create.polished_cut_diorite_stairs": "拋光切製閃長岩階梯", + "block.create.polished_cut_diorite_wall": "拋光切製閃長岩牆", + "block.create.polished_cut_dripstone": "拋光切製鐘乳石", + "block.create.polished_cut_dripstone_slab": "拋光切製鐘乳石半磚", + "block.create.polished_cut_dripstone_stairs": "拋光切製鐘乳石階梯", + "block.create.polished_cut_dripstone_wall": "拋光切製鐘乳石牆", + "block.create.polished_cut_granite": "拋光切製花崗岩", + "block.create.polished_cut_granite_slab": "拋光切製花崗岩半磚", + "block.create.polished_cut_granite_stairs": "拋光切製花崗岩階梯", + "block.create.polished_cut_granite_wall": "拋光切製花崗岩牆", + "block.create.polished_cut_limestone": "拋光切製石灰岩", + "block.create.polished_cut_limestone_slab": "拋光切製石灰岩半磚", + "block.create.polished_cut_limestone_stairs": "拋光切製石灰岩階梯", + "block.create.polished_cut_limestone_wall": "拋光切製石灰岩牆", + "block.create.polished_cut_ochrum": "拋光切製赭金石", + "block.create.polished_cut_ochrum_slab": "拋光切製赭金石半磚", + "block.create.polished_cut_ochrum_stairs": "拋光切製赭金石階梯", + "block.create.polished_cut_ochrum_wall": "拋光切製赭金石牆", + "block.create.polished_cut_scorchia": "拋光切製焦熔渣", + "block.create.polished_cut_scorchia_slab": "拋光切製焦熔渣半磚", + "block.create.polished_cut_scorchia_stairs": "拋光切製焦熔渣階梯", + "block.create.polished_cut_scorchia_wall": "拋光切製焦熔渣牆", + "block.create.polished_cut_scoria": "拋光切製熔渣", + "block.create.polished_cut_scoria_slab": "拋光切製熔渣半磚", + "block.create.polished_cut_scoria_stairs": "拋光切製熔渣階梯", + "block.create.polished_cut_scoria_wall": "拋光切製熔渣牆", + "block.create.polished_cut_tuff": "拋光切製凝灰岩", + "block.create.polished_cut_tuff_slab": "拋光切製凝灰岩半磚", + "block.create.polished_cut_tuff_stairs": "拋光切製凝灰岩階梯", + "block.create.polished_cut_tuff_wall": "拋光切製凝灰岩牆", + "block.create.polished_cut_veridium": "拋光切製輝綠岩", + "block.create.polished_cut_veridium_slab": "拋光切製輝綠岩半磚", + "block.create.polished_cut_veridium_stairs": "拋光切製輝綠岩階梯", + "block.create.polished_cut_veridium_wall": "拋光切製輝綠岩牆", + "block.create.portable_fluid_interface": "移動式流體口", "block.create.portable_storage_interface": "移動式物品口", "block.create.powered_latch": "閂鎖器", - "block.create.powered_shaft": "UNLOCALIZED: Powered Shaft", + "block.create.powered_shaft": "動力傳動軸", "block.create.powered_toggle_latch": "T型正反器", "block.create.pulley_magnet": "滑輪磁鐵", - "block.create.pulse_extender": "UNLOCALIZED: Pulse Extender", + "block.create.pulse_extender": "脈衝延長器", "block.create.pulse_repeater": "脈衝中繼器", "block.create.purple_nixie_tube": "紫色真空管", "block.create.purple_sail": "紫色風帆", "block.create.purple_seat": "紫色坐墊", - "block.create.purple_toolbox": "UNLOCALIZED: Purple Toolbox", + "block.create.purple_toolbox": "紫色工具箱", "block.create.purple_valve_handle": "紫色閥門開關", "block.create.radial_chassis": "旋轉底盤", - "block.create.railway_casing": "UNLOCALIZED: Train Casing", - "block.create.raw_zinc_block": "UNLOCALIZED: Block of Raw Zinc", + "block.create.railway_casing": "火車機殼", + "block.create.raw_zinc_block": "鋅原礦方塊", "block.create.red_nixie_tube": "紅色真空管", "block.create.red_sail": "紅色風帆", "block.create.red_seat": "紅色坐墊", - "block.create.red_toolbox": "UNLOCALIZED: Red Toolbox", + "block.create.red_toolbox": "紅色工具箱", "block.create.red_valve_handle": "紅色閥門開關", - "block.create.redstone_contact": "接觸式紅石訊號產生器", - "block.create.redstone_link": "無限紅石訊號機", + "block.create.redstone_contact": "接觸式偵測器", + "block.create.redstone_link": "無線紅石鏈路", "block.create.refined_radiance_casing": "光輝機殼", "block.create.rope": "繩索", "block.create.rope_pulley": "滑輪繩索", - "block.create.rose_quartz_block": "UNLOCALIZED: Block of Rose Quartz", - "block.create.rose_quartz_lamp": "UNLOCALIZED: Rose Quartz Lamp", - "block.create.rose_quartz_tiles": "UNLOCALIZED: Rose Quartz Tiles", + "block.create.rose_quartz_block": "玫瑰石英方塊", + "block.create.rose_quartz_lamp": "玫瑰石英燈", + "block.create.rose_quartz_tiles": "玫瑰石英磚瓦", "block.create.rotation_speed_controller": "轉速控制器", "block.create.sail_frame": "風帆框架", "block.create.schematic_table": "藍圖桌", "block.create.schematicannon": "藍圖加農炮", - "block.create.scorchia": "UNLOCALIZED: Scorchia", - "block.create.scorchia_pillar": "UNLOCALIZED: Scorchia Pillar", - "block.create.scoria": "火成岩", - "block.create.scoria_pillar": "豎紋火成岩", - "block.create.secondary_linear_chassis": "機殼底盤2號", + "block.create.scorchia": "焦熔渣", + "block.create.scorchia_pillar": "焦熔渣柱", + "block.create.scoria": "熔渣", + "block.create.scoria_pillar": "熔渣柱", + "block.create.secondary_linear_chassis": "機殼底盤二號", "block.create.sequenced_gearshift": "可程式化齒輪箱", "block.create.shadow_steel_casing": "暗影機殼", "block.create.shaft": "傳動軸", - "block.create.small_andesite_brick_slab": "UNLOCALIZED: Small Andesite Brick Slab", - "block.create.small_andesite_brick_stairs": "UNLOCALIZED: Small Andesite Brick Stairs", - "block.create.small_andesite_brick_wall": "UNLOCALIZED: Small Andesite Brick Wall", - "block.create.small_andesite_bricks": "UNLOCALIZED: Small Andesite Bricks", - "block.create.small_asurine_brick_slab": "UNLOCALIZED: Small Asurine Brick Slab", - "block.create.small_asurine_brick_stairs": "UNLOCALIZED: Small Asurine Brick Stairs", - "block.create.small_asurine_brick_wall": "UNLOCALIZED: Small Asurine Brick Wall", - "block.create.small_asurine_bricks": "UNLOCALIZED: Small Asurine Bricks", - "block.create.small_bogey": "UNLOCALIZED: Small Bogey", - "block.create.small_calcite_brick_slab": "UNLOCALIZED: Small Calcite Brick Slab", - "block.create.small_calcite_brick_stairs": "UNLOCALIZED: Small Calcite Brick Stairs", - "block.create.small_calcite_brick_wall": "UNLOCALIZED: Small Calcite Brick Wall", - "block.create.small_calcite_bricks": "UNLOCALIZED: Small Calcite Bricks", - "block.create.small_crimsite_brick_slab": "UNLOCALIZED: Small Crimsite Brick Slab", - "block.create.small_crimsite_brick_stairs": "UNLOCALIZED: Small Crimsite Brick Stairs", - "block.create.small_crimsite_brick_wall": "UNLOCALIZED: Small Crimsite Brick Wall", - "block.create.small_crimsite_bricks": "UNLOCALIZED: Small Crimsite Bricks", - "block.create.small_deepslate_brick_slab": "UNLOCALIZED: Small Deepslate Brick Slab", - "block.create.small_deepslate_brick_stairs": "UNLOCALIZED: Small Deepslate Brick Stairs", - "block.create.small_deepslate_brick_wall": "UNLOCALIZED: Small Deepslate Brick Wall", - "block.create.small_deepslate_bricks": "UNLOCALIZED: Small Deepslate Bricks", - "block.create.small_diorite_brick_slab": "UNLOCALIZED: Small Diorite Brick Slab", - "block.create.small_diorite_brick_stairs": "UNLOCALIZED: Small Diorite Brick Stairs", - "block.create.small_diorite_brick_wall": "UNLOCALIZED: Small Diorite Brick Wall", - "block.create.small_diorite_bricks": "UNLOCALIZED: Small Diorite Bricks", - "block.create.small_dripstone_brick_slab": "UNLOCALIZED: Small Dripstone Brick Slab", - "block.create.small_dripstone_brick_stairs": "UNLOCALIZED: Small Dripstone Brick Stairs", - "block.create.small_dripstone_brick_wall": "UNLOCALIZED: Small Dripstone Brick Wall", - "block.create.small_dripstone_bricks": "UNLOCALIZED: Small Dripstone Bricks", - "block.create.small_granite_brick_slab": "UNLOCALIZED: Small Granite Brick Slab", - "block.create.small_granite_brick_stairs": "UNLOCALIZED: Small Granite Brick Stairs", - "block.create.small_granite_brick_wall": "UNLOCALIZED: Small Granite Brick Wall", - "block.create.small_granite_bricks": "UNLOCALIZED: Small Granite Bricks", - "block.create.small_limestone_brick_slab": "UNLOCALIZED: Small Limestone Brick Slab", - "block.create.small_limestone_brick_stairs": "UNLOCALIZED: Small Limestone Brick Stairs", - "block.create.small_limestone_brick_wall": "UNLOCALIZED: Small Limestone Brick Wall", - "block.create.small_limestone_bricks": "UNLOCALIZED: Small Limestone Bricks", - "block.create.small_ochrum_brick_slab": "UNLOCALIZED: Small Ochrum Brick Slab", - "block.create.small_ochrum_brick_stairs": "UNLOCALIZED: Small Ochrum Brick Stairs", - "block.create.small_ochrum_brick_wall": "UNLOCALIZED: Small Ochrum Brick Wall", - "block.create.small_ochrum_bricks": "UNLOCALIZED: Small Ochrum Bricks", - "block.create.small_rose_quartz_tiles": "UNLOCALIZED: Small Rose Quartz Tiles", - "block.create.small_scorchia_brick_slab": "UNLOCALIZED: Small Scorchia Brick Slab", - "block.create.small_scorchia_brick_stairs": "UNLOCALIZED: Small Scorchia Brick Stairs", - "block.create.small_scorchia_brick_wall": "UNLOCALIZED: Small Scorchia Brick Wall", - "block.create.small_scorchia_bricks": "UNLOCALIZED: Small Scorchia Bricks", - "block.create.small_scoria_brick_slab": "UNLOCALIZED: Small Scoria Brick Slab", - "block.create.small_scoria_brick_stairs": "UNLOCALIZED: Small Scoria Brick Stairs", - "block.create.small_scoria_brick_wall": "UNLOCALIZED: Small Scoria Brick Wall", - "block.create.small_scoria_bricks": "UNLOCALIZED: Small Scoria Bricks", - "block.create.small_tuff_brick_slab": "UNLOCALIZED: Small Tuff Brick Slab", - "block.create.small_tuff_brick_stairs": "UNLOCALIZED: Small Tuff Brick Stairs", - "block.create.small_tuff_brick_wall": "UNLOCALIZED: Small Tuff Brick Wall", - "block.create.small_tuff_bricks": "UNLOCALIZED: Small Tuff Bricks", - "block.create.small_veridium_brick_slab": "UNLOCALIZED: Small Veridium Brick Slab", - "block.create.small_veridium_brick_stairs": "UNLOCALIZED: Small Veridium Brick Stairs", - "block.create.small_veridium_brick_wall": "UNLOCALIZED: Small Veridium Brick Wall", - "block.create.small_veridium_bricks": "UNLOCALIZED: Small Veridium Bricks", - "block.create.smart_chute": "智慧滑道", - "block.create.smart_fluid_pipe": "智慧液體管道", - "block.create.speedometer": "速度計", - "block.create.spout": "液體灌注器", + "block.create.small_andesite_brick_slab": "小安山岩磚半磚", + "block.create.small_andesite_brick_stairs": "小安山岩磚階梯", + "block.create.small_andesite_brick_wall": "小安山岩磚牆", + "block.create.small_andesite_bricks": "小安山岩磚", + "block.create.small_asurine_brick_slab": "小皓藍石磚半磚", + "block.create.small_asurine_brick_stairs": "小皓藍石磚階梯", + "block.create.small_asurine_brick_wall": "小皓藍石磚牆", + "block.create.small_asurine_bricks": "小皓藍石磚", + "block.create.small_bogey": "小轉向架", + "block.create.small_calcite_brick_slab": "小方解石磚半磚", + "block.create.small_calcite_brick_stairs": "小方解石磚階梯", + "block.create.small_calcite_brick_wall": "小方解石磚牆", + "block.create.small_calcite_bricks": "小方解石磚", + "block.create.small_crimsite_brick_slab": "小緋紅岩磚半磚", + "block.create.small_crimsite_brick_stairs": "小緋紅岩磚階梯", + "block.create.small_crimsite_brick_wall": "小緋紅岩磚牆", + "block.create.small_crimsite_bricks": "小緋紅岩磚", + "block.create.small_deepslate_brick_slab": "小深板岩磚半磚", + "block.create.small_deepslate_brick_stairs": "小深板岩磚階梯", + "block.create.small_deepslate_brick_wall": "小深板岩磚牆", + "block.create.small_deepslate_bricks": "小深板岩磚", + "block.create.small_diorite_brick_slab": "小閃長岩磚半磚", + "block.create.small_diorite_brick_stairs": "小閃長岩磚階梯", + "block.create.small_diorite_brick_wall": "小閃長岩磚牆", + "block.create.small_diorite_bricks": "小閃長岩磚", + "block.create.small_dripstone_brick_slab": "小鐘乳石磚半磚", + "block.create.small_dripstone_brick_stairs": "小鐘乳石磚階梯", + "block.create.small_dripstone_brick_wall": "小鐘乳石磚牆", + "block.create.small_dripstone_bricks": "小鐘乳石磚", + "block.create.small_granite_brick_slab": "小花崗岩磚半磚", + "block.create.small_granite_brick_stairs": "小花崗岩磚階梯", + "block.create.small_granite_brick_wall": "小花崗岩磚牆", + "block.create.small_granite_bricks": "小花崗岩磚", + "block.create.small_limestone_brick_slab": "小石灰岩磚半磚", + "block.create.small_limestone_brick_stairs": "小石灰岩磚階梯", + "block.create.small_limestone_brick_wall": "小石灰岩磚牆", + "block.create.small_limestone_bricks": "小石灰岩磚", + "block.create.small_ochrum_brick_slab": "小赭金石磚半磚", + "block.create.small_ochrum_brick_stairs": "小赭金石磚階梯", + "block.create.small_ochrum_brick_wall": "小赭金石磚牆", + "block.create.small_ochrum_bricks": "小赭金石磚", + "block.create.small_rose_quartz_tiles": "小玫瑰石英磚瓦", + "block.create.small_scorchia_brick_slab": "小焦熔渣磚半磚", + "block.create.small_scorchia_brick_stairs": "小焦熔渣磚階梯", + "block.create.small_scorchia_brick_wall": "小焦熔渣磚牆", + "block.create.small_scorchia_bricks": "小焦熔渣磚", + "block.create.small_scoria_brick_slab": "小熔渣磚半磚", + "block.create.small_scoria_brick_stairs": "小熔渣磚階梯", + "block.create.small_scoria_brick_wall": "小熔渣磚牆", + "block.create.small_scoria_bricks": "小熔渣磚", + "block.create.small_tuff_brick_slab": "小凝灰岩磚半磚", + "block.create.small_tuff_brick_stairs": "小凝灰岩磚階梯", + "block.create.small_tuff_brick_wall": "小凝灰岩磚牆", + "block.create.small_tuff_bricks": "小凝灰岩磚", + "block.create.small_veridium_brick_slab": "小輝綠岩磚半磚", + "block.create.small_veridium_brick_stairs": "小輝綠岩磚階梯", + "block.create.small_veridium_brick_wall": "小輝綠岩磚牆", + "block.create.small_veridium_bricks": "小輝綠岩磚", + "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.steam_engine": "UNLOCALIZED: Steam Engine", - "block.create.steam_whistle": "UNLOCALIZED: Steam Whistle", - "block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension", + "block.create.steam_engine": "蒸汽機", + "block.create.steam_whistle": "汽笛", + "block.create.steam_whistle_extension": "汽笛管", "block.create.sticker": "方塊黏著器", "block.create.sticky_mechanical_piston": "黏性機械活塞", "block.create.stockpile_switch": "存量偵測器", - "block.create.stressometer": "動能錶", + "block.create.stressometer": "動力計", "block.create.tiled_glass": "十字玻璃窗", "block.create.tiled_glass_pane": "十字玻璃窗戶片", - "block.create.track": "UNLOCALIZED: Train Track", - "block.create.track_observer": "UNLOCALIZED: Train Observer", - "block.create.track_signal": "UNLOCALIZED: Train Signal", - "block.create.track_station": "UNLOCALIZED: Train Station", - "block.create.train_door": "UNLOCALIZED: Train Door", - "block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor", - "block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar", + "block.create.track": "火車軌道", + "block.create.track_observer": "火車感測器", + "block.create.track_signal": "火車訊號機", + "block.create.track_station": "火車站點", + "block.create.train_door": "火車車門", + "block.create.train_trapdoor": "火車地板門", + "block.create.tuff_pillar": "凝灰岩柱", "block.create.turntable": "轉盤", - "block.create.veridium": "UNLOCALIZED: Veridium", - "block.create.veridium_pillar": "UNLOCALIZED: Veridium Pillar", + "block.create.veridium": "輝綠岩", + "block.create.veridium_pillar": "輝綠岩柱", "block.create.vertical_framed_glass": "豎直邊框玻璃", "block.create.vertical_framed_glass_pane": "豎直邊框玻璃片", "block.create.warped_window": "扭曲蕈木窗戶", "block.create.warped_window_pane": "扭曲蕈木窗戶片", "block.create.water_wheel": "水車", - "block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab", - "block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs", - "block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles", - "block.create.waxed_copper_tile_slab": "UNLOCALIZED: Waxed Copper Tile Slab", - "block.create.waxed_copper_tile_stairs": "UNLOCALIZED: Waxed Copper Tile Stairs", - "block.create.waxed_copper_tiles": "UNLOCALIZED: Waxed Copper Tiles", - "block.create.waxed_exposed_copper_shingle_slab": "UNLOCALIZED: Waxed Exposed Copper Shingle Slab", - "block.create.waxed_exposed_copper_shingle_stairs": "UNLOCALIZED: Waxed Exposed Copper Shingle Stairs", - "block.create.waxed_exposed_copper_shingles": "UNLOCALIZED: Waxed Exposed Copper Shingles", - "block.create.waxed_exposed_copper_tile_slab": "UNLOCALIZED: Waxed Exposed Copper Tile Slab", - "block.create.waxed_exposed_copper_tile_stairs": "UNLOCALIZED: Waxed Exposed Copper Tile Stairs", - "block.create.waxed_exposed_copper_tiles": "UNLOCALIZED: Waxed Exposed Copper Tiles", - "block.create.waxed_oxidized_copper_shingle_slab": "UNLOCALIZED: Waxed Oxidized Copper Shingle Slab", - "block.create.waxed_oxidized_copper_shingle_stairs": "UNLOCALIZED: Waxed Oxidized Copper Shingle Stairs", - "block.create.waxed_oxidized_copper_shingles": "UNLOCALIZED: Waxed Oxidized Copper Shingles", - "block.create.waxed_oxidized_copper_tile_slab": "UNLOCALIZED: Waxed Oxidized Copper Tile Slab", - "block.create.waxed_oxidized_copper_tile_stairs": "UNLOCALIZED: Waxed Oxidized Copper Tile Stairs", - "block.create.waxed_oxidized_copper_tiles": "UNLOCALIZED: Waxed Oxidized Copper Tiles", - "block.create.waxed_weathered_copper_shingle_slab": "UNLOCALIZED: Waxed Weathered Copper Shingle Slab", - "block.create.waxed_weathered_copper_shingle_stairs": "UNLOCALIZED: Waxed Weathered Copper Shingle Stairs", - "block.create.waxed_weathered_copper_shingles": "UNLOCALIZED: Waxed Weathered Copper Shingles", - "block.create.waxed_weathered_copper_tile_slab": "UNLOCALIZED: Waxed Weathered Copper Tile Slab", - "block.create.waxed_weathered_copper_tile_stairs": "UNLOCALIZED: Waxed Weathered Copper Tile Stairs", - "block.create.waxed_weathered_copper_tiles": "UNLOCALIZED: Waxed Weathered Copper Tiles", - "block.create.weathered_copper_shingle_slab": "UNLOCALIZED: Weathered Copper Shingle Slab", - "block.create.weathered_copper_shingle_stairs": "UNLOCALIZED: Weathered Copper Shingle Stairs", - "block.create.weathered_copper_shingles": "UNLOCALIZED: Weathered Copper Shingles", - "block.create.weathered_copper_tile_slab": "UNLOCALIZED: Weathered Copper Tile Slab", - "block.create.weathered_copper_tile_stairs": "UNLOCALIZED: Weathered Copper Tile Stairs", - "block.create.weathered_copper_tiles": "UNLOCALIZED: Weathered Copper Tiles", - "block.create.weighted_ejector": "物品彈射器", + "block.create.waxed_copper_shingle_slab": "上蠟的銅屋瓦半磚", + "block.create.waxed_copper_shingle_stairs": "上蠟的銅屋瓦階梯", + "block.create.waxed_copper_shingles": "上蠟的銅屋瓦", + "block.create.waxed_copper_tile_slab": "上蠟的銅磚瓦半磚", + "block.create.waxed_copper_tile_stairs": "上蠟的銅磚瓦階梯", + "block.create.waxed_copper_tiles": "上蠟的銅磚瓦", + "block.create.waxed_exposed_copper_shingle_slab": "上蠟的斑駁銅屋瓦半磚", + "block.create.waxed_exposed_copper_shingle_stairs": "上蠟的斑駁銅屋瓦階梯", + "block.create.waxed_exposed_copper_shingles": "上蠟的斑駁銅屋瓦", + "block.create.waxed_exposed_copper_tile_slab": "上蠟的斑駁銅磚瓦半磚", + "block.create.waxed_exposed_copper_tile_stairs": "上蠟的斑駁銅磚瓦階梯", + "block.create.waxed_exposed_copper_tiles": "上蠟的斑駁銅磚瓦", + "block.create.waxed_oxidized_copper_shingle_slab": "上蠟的氧化銅屋瓦半磚", + "block.create.waxed_oxidized_copper_shingle_stairs": "上蠟的氧化銅屋瓦階梯", + "block.create.waxed_oxidized_copper_shingles": "上蠟的氧化銅屋瓦", + "block.create.waxed_oxidized_copper_tile_slab": "上蠟的氧化銅磚瓦半磚", + "block.create.waxed_oxidized_copper_tile_stairs": "上蠟的氧化銅磚瓦階梯", + "block.create.waxed_oxidized_copper_tiles": "上蠟的氧化銅磚瓦", + "block.create.waxed_weathered_copper_shingle_slab": "上蠟的風化銅屋瓦半磚", + "block.create.waxed_weathered_copper_shingle_stairs": "上蠟的風化銅屋瓦階梯", + "block.create.waxed_weathered_copper_shingles": "上蠟的風化銅屋瓦", + "block.create.waxed_weathered_copper_tile_slab": "上蠟的風化銅磚瓦半磚", + "block.create.waxed_weathered_copper_tile_stairs": "上蠟的風化銅磚瓦階梯", + "block.create.waxed_weathered_copper_tiles": "上蠟的風化銅磚瓦", + "block.create.weathered_copper_shingle_slab": "風化的銅屋瓦半磚", + "block.create.weathered_copper_shingle_stairs": "風化的銅屋瓦階梯", + "block.create.weathered_copper_shingles": "風化的銅屋瓦", + "block.create.weathered_copper_tile_slab": "風化的銅磚瓦半磚", + "block.create.weathered_copper_tile_stairs": "風化的銅磚瓦階梯", + "block.create.weathered_copper_tiles": "風化的銅磚瓦", + "block.create.weighted_ejector": "彈射置物台", "block.create.white_nixie_tube": "白色真空管", "block.create.white_sail": "白色風帆", "block.create.white_seat": "白色坐墊", - "block.create.white_toolbox": "UNLOCALIZED: White Toolbox", + "block.create.white_toolbox": "白色工具箱", "block.create.white_valve_handle": "白色閥門開關", "block.create.windmill_bearing": "風車軸承", "block.create.wooden_bracket": "木製支架", "block.create.yellow_nixie_tube": "黃色真空管", "block.create.yellow_sail": "黃色風帆", "block.create.yellow_seat": "黃色坐墊", - "block.create.yellow_toolbox": "UNLOCALIZED: Yellow Toolbox", + "block.create.yellow_toolbox": "黃色工具箱", "block.create.yellow_valve_handle": "黃色閥門開關", - "block.create.zinc_block": "鋅磚", + "block.create.zinc_block": "鋅方塊", "block.create.zinc_ore": "鋅礦石", "enchantment.create.capacity": "容量", - "enchantment.create.potato_recovery": "馬鈴薯恢復", + "enchantment.create.potato_recovery": "回收馬鈴薯", - "entity.create.carriage_contraption": "UNLOCALIZED: Carriage Contraption", + "entity.create.carriage_contraption": "運輸結構", "entity.create.contraption": "結構", "entity.create.crafting_blueprint": "合成藍圖", - "entity.create.gantry_contraption": "門式結構", + "entity.create.gantry_contraption": "橋式結構", "entity.create.potato_projectile": "馬鈴薯彈藥", "entity.create.seat": "坐墊", "entity.create.stationary_contraption": "固定結構", @@ -589,19 +589,19 @@ "item.create.brass_ingot": "黃銅錠", "item.create.brass_nugget": "黃銅粒", "item.create.brass_sheet": "黃銅板", - "item.create.builders_tea": "工人茶", + "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_backtank": "銅製後背包", - "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_backtank_placeable": "可放置的銅製後背包", "item.create.copper_nugget": "銅粒", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "合成器蓋板", "item.create.crafting_blueprint": "合成藍圖", - "item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake", + "item.create.creative_blaze_cake": "創造熔岩蛋糕", "item.create.crushed_aluminum_ore": "碎狀鋁礦石", "item.create.crushed_copper_ore": "碎狀銅礦石", "item.create.crushed_gold_ore": "碎狀金礦石", @@ -621,40 +621,40 @@ "item.create.electron_tube": "真空管", "item.create.empty_blaze_burner": "空的烈焰使者動力爐", "item.create.empty_schematic": "空白藍圖", - "item.create.experience_nugget": "UNLOCALIZED: Nugget of Experience", + "item.create.experience_nugget": "經驗金塊", "item.create.extendo_grip": "伸縮機械手", "item.create.filter": "過濾器", "item.create.furnace_minecart_contraption": "裝配過的機械礦車", - "item.create.goggles": "MR護目鏡", + "item.create.goggles": "工程師護目鏡", "item.create.golden_sheet": "金板", "item.create.handheld_worldshaper": "地形雕塑器", "item.create.honey_bucket": "蜂蜜桶", "item.create.honeyed_apple": "蜂蜜蘋果", - "item.create.incomplete_precision_mechanism": "未完成的精確控制器", - "item.create.incomplete_track": "UNLOCALIZED: Incomplete Track", + "item.create.incomplete_precision_mechanism": "未完成的精密機構", + "item.create.incomplete_track": "未完成的軌道", "item.create.iron_sheet": "鐵板", "item.create.linked_controller": "遙控器", "item.create.minecart_contraption": "裝修過的礦車", "item.create.minecart_coupling": "礦車連結器", - "item.create.polished_rose_quartz": "磨製玫瑰石英", + "item.create.polished_rose_quartz": "拋光玫瑰石英", "item.create.potato_cannon": "馬鈴薯大砲", "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.precision_mechanism": " 精確控制器", + "item.create.precision_mechanism": "精密機構", "item.create.propeller": "扇葉", - "item.create.raw_zinc": "UNLOCALIZED: Raw Zinc", + "item.create.raw_zinc": "鋅原礦", "item.create.red_sand_paper": "紅砂紙", "item.create.refined_radiance": "光輝石", "item.create.rose_quartz": "玫瑰石英", "item.create.sand_paper": "砂紙", - "item.create.schedule": "UNLOCALIZED: Train Schedule", + "item.create.schedule": "火車時刻表", "item.create.schematic": "藍圖", "item.create.schematic_and_quill": "藍圖與筆", "item.create.shadow_steel": "暗影鋼", - "item.create.sturdy_sheet": "UNLOCALIZED: Sturdy Sheet", + "item.create.sturdy_sheet": "高強度板", "item.create.super_glue": "強力膠", - "item.create.sweet_roll": "甜捲捲", + "item.create.sweet_roll": "蛋糕捲", "item.create.tree_fertilizer": "樹木肥料", - "item.create.unprocessed_obsidian_sheet": "UNLOCALIZED: Unprocessed Obsidian Sheet", + "item.create.unprocessed_obsidian_sheet": "未加工的黑曜石板", "item.create.vertical_gearbox": "豎直齒輪箱", "item.create.wand_of_symmetry": "對稱杖", "item.create.wheat_flour": "小麥粉", @@ -666,194 +666,194 @@ "_": "->------------------------] Advancements [------------------------<-", - "advancement.create.root": "感謝你安裝機械動力模組,強烈建議您安裝JEI配合本模組遊玩", - "advancement.create.root.desc": "該來製作一些超棒的機械結構了!", - "advancement.create.andesite_alloy": "原始人類的合金替代品", - "advancement.create.andesite_alloy.desc": "機械動力有著許多的材料和合金,但受限於技術,原始的人類們暫時只能製作出安山合金", + "advancement.create.root": "歡迎來到機械動力的世界", + "advancement.create.root.desc": "是製造機械的時候了", + "advancement.create.andesite_alloy": "更堅硬的岩石", + "advancement.create.andesite_alloy.desc": "獲得安山合金,機械動力最重要的資源", "advancement.create.andesite_casing": "安山時代", - "advancement.create.andesite_casing.desc": "使用安山合金和木頭來合成一個安山機殼", - "advancement.create.mechanical_press": "UNLOCALIZED: Bonk", - "advancement.create.mechanical_press.desc": "UNLOCALIZED: Create some sheets in a Mechanical Press", - "advancement.create.encased_fan": "UNLOCALIZED: Wind maker", - "advancement.create.encased_fan.desc": "UNLOCALIZED: Place and activate an Encased Fan", - "advancement.create.fan_processing": "UNLOCALIZED: Processing by Particle", - "advancement.create.fan_processing.desc": "UNLOCALIZED: Use an Encased Fan to process materials", - "advancement.create.saw_processing": "UNLOCALIZED: Workshop's most feared", - "advancement.create.saw_processing.desc": "UNLOCALIZED: Use an upright Mechanical Saw to process materials", - "advancement.create.compacting": "UNLOCALIZED: Compactification", - "advancement.create.compacting.desc": "UNLOCALIZED: Use a Press and a Basin to create less items from more items", + "advancement.create.andesite_casing.desc": "結合安山合金和木頭,製作機械的基本外殼", + "advancement.create.mechanical_press": "Bonk", + "advancement.create.mechanical_press.desc": "以機械鍛壓機鍛造板金", + "advancement.create.encased_fan": "吹風機", + "advancement.create.encased_fan.desc": "啟動鼓風機", + "advancement.create.fan_processing": "粒子技術", + "advancement.create.fan_processing.desc": "以鼓風機進行材料加工", + "advancement.create.saw_processing": "作坊中最深的恐懼", + "advancement.create.saw_processing.desc": "以面向上的機械圓鋸機進行材料加工", + "advancement.create.compacting": "緊緻的", + "advancement.create.compacting.desc": "以機械鍛壓機與作業盆將多個物品壓縮在一塊", "advancement.create.belt": "流水線作業", - "advancement.create.belt.desc": "用輸送帶連接兩個傳動軸", - "advancement.create.funnel": "UNLOCALIZED: Airport Aesthetic", - "advancement.create.funnel.desc": "UNLOCALIZED: Extract or insert items into a container using a Funnel", - "advancement.create.chute": "轟然倒塌", - "advancement.create.chute.desc": "放置一個滑道(垂直版本的輸送帶)。", - "advancement.create.mechanical_mixer": "UNLOCALIZED: Mixing it up", - "advancement.create.mechanical_mixer.desc": "UNLOCALIZED: Combine ingredients in a Mechanical Mixer", - "advancement.create.burner": "UNLOCALIZED: Sentient Fireplace", - "advancement.create.burner.desc": "UNLOCALIZED: Obtain a Blaze Burner", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一個水車並讓它開始旋轉", + "advancement.create.belt.desc": "將輸送帶連接兩個傳動軸", + "advancement.create.funnel": "航站美學", + "advancement.create.funnel.desc": "透過漏斗,自容器中輸入或輸出物品", + "advancement.create.chute": "垂直物流", + "advancement.create.chute.desc": "透過滑槽運輸物品", + "advancement.create.mechanical_mixer": "混和攪拌", + "advancement.create.mechanical_mixer.desc": "以機械攪拌器混和材料", + "advancement.create.burner": "活生生的壁爐", + "advancement.create.burner.desc": "獲得烈焰使者動力爐", + "advancement.create.water_wheel": "水力學", + "advancement.create.water_wheel.desc": "放置水車並讓它開始旋轉", "advancement.create.windmill": "微風拂過", - "advancement.create.windmill.desc": "組裝風車。", - "advancement.create.shifting_gears": "換檔,加速,起飛!", - "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,機械結構的轉速將會翻倍", - "advancement.create.millstone": "攜帶式粉碎機", - "advancement.create.millstone.desc": "放置一個石磨並且為其供能", - "advancement.create.super_glue": "UNLOCALIZED: Area of Connect", - "advancement.create.super_glue.desc": "UNLOCALIZED: Super Glue some blocks into a group", - "advancement.create.contraption_actors": "UNLOCALIZED: Moving with Purpose", - "advancement.create.contraption_actors.desc": "UNLOCALIZED: Create a contraption with drills, saws or harvesters on board", - "advancement.create.portable_storage_interface": "UNLOCALIZED: Drive-by exchange", - "advancement.create.portable_storage_interface.desc": "UNLOCALIZED: Use a Portable Storage Interface to take or insert items into a contraption", - "advancement.create.wrench_goggles": "UNLOCALIZED: Kitted out", - "advancement.create.wrench_goggles.desc": "UNLOCALIZED: Equip Engineer's goggles and a Wrench", + "advancement.create.windmill.desc": "組裝風車以產生扭矩", + "advancement.create.shifting_gears": "換檔", + "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,改變轉軸的速度", + "advancement.create.millstone": "石磨轉起", + "advancement.create.millstone.desc": "使用石磨研磨材料", + "advancement.create.super_glue": "將空間黏合", + "advancement.create.super_glue.desc": "用強力膠將多個方塊黏成一團", + "advancement.create.contraption_actors": "奉命出行", + "advancement.create.contraption_actors.desc": "製造帶有機械鑽頭、機械圓鋸機或機械收割機的移動裝置", + "advancement.create.portable_storage_interface": "得來速", + "advancement.create.portable_storage_interface.desc": "透過移動式物品口,自移動裝置中輸入或輸出物品", + "advancement.create.wrench_goggles": "裝備齊全", + "advancement.create.wrench_goggles.desc": "同時裝備工程師護目鏡及扳手", "advancement.create.stressometer": "精密的動能控制", - "advancement.create.stressometer.desc": "放置一個動能錶,並且戴上MR護目鏡來讀取數據", - "advancement.create.cuckoo_clock": "UNLOCALIZED: Is it Time?", - "advancement.create.cuckoo_clock.desc": "UNLOCALIZED: Witness your Cuckoo Clock announce bedtime", - "advancement.create.windmill_maxed": "UNLOCALIZED: A Strong Breeze", - "advancement.create.windmill_maxed.desc": "UNLOCALIZED: Assemble a windmill of maximum strength", - "advancement.create.ejector_maxed": "UNLOCALIZED: Springboard Champion", - "advancement.create.ejector_maxed.desc": "UNLOCALIZED: Get launched for more than 30 blocks by a Weighted Ejector", - "advancement.create.pulley_maxed": "UNLOCALIZED: Rope to Nowhere", - "advancement.create.pulley_maxed.desc": "UNLOCALIZED: Extend a Rope Pulley over 200 blocks deep", - "advancement.create.cart_pickup": "UNLOCALIZED: Strong Arms", - "advancement.create.cart_pickup.desc": "UNLOCALIZED: Pick up a Minecart Contraption with at least 200 attached blocks", - "advancement.create.anvil_plough": "UNLOCALIZED: Blacksmith Artillery", - "advancement.create.anvil_plough.desc": "UNLOCALIZED: Launch an Anvil with Mechanical ploughs", - "advancement.create.lava_wheel_00000": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel_00000.desc": "UNLOCALIZED: This shouldn't have worked§7\n(Hidden Advancement)", - "advancement.create.hand_crank_000": "UNLOCALIZED: Workout Session", - "advancement.create.hand_crank_000.desc": "UNLOCALIZED: Use a Hand Crank until fully exhausted§7\n(Hidden Advancement)", + "advancement.create.stressometer.desc": "透過工程師護目鏡和動力計讀取精確數值", + "advancement.create.cuckoo_clock": "到時間了嗎?", + "advancement.create.cuckoo_clock.desc": "目睹布穀鳥鐘提醒你睡覺", + "advancement.create.windmill_maxed": "強烈風暴", + "advancement.create.windmill_maxed.desc": "組裝出最高強度的風車", + "advancement.create.ejector_maxed": "跳板冠軍", + "advancement.create.ejector_maxed.desc": "被彈射置物台扔到 30 格以外", + "advancement.create.pulley_maxed": "深入虛空", + "advancement.create.pulley_maxed.desc": "用滑輪繩索延伸超過 200 格", + "advancement.create.cart_pickup": "壯碩的胳膊", + "advancement.create.cart_pickup.desc": "撿起至少含有 200 個方塊的礦車結構", + "advancement.create.anvil_plough": "鍛工的重砲", + "advancement.create.anvil_plough.desc": "用機械犁發射鐵砧", + "advancement.create.lava_wheel_00000": "風火輪", + "advancement.create.lava_wheel_00000.desc": "這不該奏效§7\n(隱藏成就)", + "advancement.create.hand_crank_000": "健身課程", + "advancement.create.hand_crank_000.desc": "轉動手搖把手直到挨餓§7\n(隱藏成就)", "advancement.create.belt_funnel_kiss": "比翼雙飛", - "advancement.create.belt_funnel_kiss.desc": "使兩個安裝在輸送帶上的漏斗相連。", - "advancement.create.stressometer_maxed": "UNLOCALIZED: Perfectly Stressed", - "advancement.create.stressometer_maxed.desc": "UNLOCALIZED: Get a 100% readout from a Stressometer§7\n(Hidden Advancement)", - "advancement.create.copper": "UNLOCALIZED: More Sturdier Rocks", - "advancement.create.copper.desc": "UNLOCALIZED: Amass some Copper for your exploits in Fluid Manipulation", + "advancement.create.belt_funnel_kiss.desc": "使安裝在輸送帶上的兩個漏斗相吻§7\n(隱藏成就)", + "advancement.create.stressometer_maxed": "完美的負荷", + "advancement.create.stressometer_maxed.desc": "在動力計目睹負荷滿載§7\n(隱藏成就)", + "advancement.create.copper": "更加堅硬的岩石", + "advancement.create.copper.desc": "為開發流體控制技術積攢一些銅", "advancement.create.copper_casing": "銅時代", - "advancement.create.copper_casing.desc": "使用銅和木頭製作一個銅製機殼", - "advancement.create.spout": "裝填!", - "advancement.create.spout.desc": "觀察注液器灌滿物品。", - "advancement.create.drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.drain.desc": "UNLOCALIZED: Watch a fluid containing item be emptied by an Item Drain", - "advancement.create.steam_engine": "UNLOCALIZED: The Powerhouse", - "advancement.create.steam_engine.desc": "UNLOCALIZED: Use a Steam engine to generate torque", - "advancement.create.steam_whistle": "UNLOCALIZED: Voice of an Angel", - "advancement.create.steam_whistle.desc": "UNLOCALIZED: Activate a Steam Whistle", - "advancement.create.backtank": "UNLOCALIZED: Pressure to Go", - "advancement.create.backtank.desc": "UNLOCALIZED: Create a copper backtank and make it accumulate Air Pressure", - "advancement.create.diving_suit": "UNLOCALIZED: Ready for the Depths", - "advancement.create.diving_suit.desc": "UNLOCALIZED: Equip a diving helmet together with your backtank and jump into water", - "advancement.create.mechanical_pump_0": "UNLOCALIZED: Under Pressure", - "advancement.create.mechanical_pump_0.desc": "UNLOCALIZED: Place and power a Mechanical Pump", - "advancement.create.glass_pipe": "偷窺液體", - "advancement.create.glass_pipe.desc": "透過窗戶觀察液體在管道中流動。使用板手可打開直線液體管道的窗戶。", - "advancement.create.water_supply": "UNLOCALIZED: Puddle Collector", - "advancement.create.water_supply.desc": "UNLOCALIZED: Use the pulling end of a pipe or pump to collect a water block", + "advancement.create.copper_casing.desc": "結合銅錠與木頭,為您的機械打造防水外殼", + "advancement.create.spout": "水花四濺", + "advancement.create.spout.desc": "看著流體灌注器注滿容器", + "advancement.create.drain": "細水慢流", + "advancement.create.drain.desc": "看著容器被分液池排空", + "advancement.create.steam_engine": "發電站", + "advancement.create.steam_engine.desc": "以蒸汽機產生動力", + "advancement.create.steam_whistle": "天籟之音", + "advancement.create.steam_whistle.desc": "鳴笛", + "advancement.create.backtank": "蓄勢待發", + "advancement.create.backtank.desc": "製造銅製後背包並加壓", + "advancement.create.diving_suit": "深潛準備", + "advancement.create.diving_suit.desc": "裝備潛水頭盔和銅製後背包,跳入水中", + "advancement.create.mechanical_pump_0": "施壓", + "advancement.create.mechanical_pump_0.desc": "驅動機械幫浦", + "advancement.create.glass_pipe": "窺視波流", + "advancement.create.glass_pipe.desc": "在液體流過的管道上使用扳手", + "advancement.create.water_supply": "取自水窪", + "advancement.create.water_supply.desc": "使用機械幫浦或軟管滑輪抽水", "advancement.create.hose_pulley": "工業排放", - "advancement.create.hose_pulley.desc": "放下一個軟管滑輪,觀察它排乾或充滿液體。", - "advancement.create.chocolate_bucket": "UNLOCALIZED: A World of Imagination", - "advancement.create.chocolate_bucket.desc": "UNLOCALIZED: Obtain a Bucket of Molten Chocolate", - "advancement.create.honey_drain": "UNLOCALIZED: Autonomous Bee-Keeping", - "advancement.create.honey_drain.desc": "UNLOCALIZED: Use pipes to pull honey from a Bee Nest or Bee House", - "advancement.create.hose_pulley_lava": "UNLOCALIZED: Tapping the Mantle", - "advancement.create.hose_pulley_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered infinite", - "advancement.create.steam_engine_maxed": "UNLOCALIZED: Full Steam", - "advancement.create.steam_engine_maxed.desc": "UNLOCALIZED: Run a boiler at the maximum level of power", - "advancement.create.foods": "UNLOCALIZED: Balanced Diet", - "advancement.create.foods.desc": "UNLOCALIZED: Create Chocolate Berries, a Honeyed Apple and a Sweet Roll; all from the same Spout", - "advancement.create.diving_suit_lava": "UNLOCALIZED: Swimming with the Striders", - "advancement.create.diving_suit_lava.desc": "UNLOCALIZED: Attempt to take a dive in lava with your Copper Diving Gear§7\n(Hidden Advancement)", - "advancement.create.chained_drain": "UNLOCALIZED: On a Roll", - "advancement.create.chained_drain.desc": "UNLOCALIZED: Watch an Item move across a row of Item Drains§7\n(Hidden Advancement)", - "advancement.create.cross_streams": "UNLOCALIZED: Don't cross the Streams!", - "advancement.create.cross_streams.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network§7\n(Hidden Advancement)", - "advancement.create.pipe_organ": "UNLOCALIZED: The Pipe Organ", - "advancement.create.pipe_organ.desc": "UNLOCALIZED: Attach 12 uniquely pitched Steam Whistles to a single fluid tank§7\n(Hidden Advancement)", + "advancement.create.hose_pulley.desc": "放下軟管滑輪,觀察它排出或抽取流體", + "advancement.create.chocolate_bucket": "幻想世界", + "advancement.create.chocolate_bucket.desc": "獲得一桶融化的巧克力", + "advancement.create.honey_drain": "自動養蜂場", + "advancement.create.honey_drain.desc": "使用流體管道從蜂巢或蜂屋中抽取蜂蜜", + "advancement.create.hose_pulley_lava": "迫近地函", + "advancement.create.hose_pulley_lava.desc": "從可被認定為無限容量的熔岩體抽出岩漿", + "advancement.create.steam_engine_maxed": "蒸氣充沛", + "advancement.create.steam_engine_maxed.desc": "以最大功率運行鍋爐", + "advancement.create.foods": "均衡飲食", + "advancement.create.foods.desc": "自同一個流體灌注器生產巧克力甜莓、蜂蜜蘋果和蛋糕捲", + "advancement.create.diving_suit_lava": "與熾足獸游泳", + "advancement.create.diving_suit_lava.desc": "嘗試使用您的銅製潛水裝備在熔岩中潛水§7\n(隱藏成就)", + "advancement.create.chained_drain": "走運了", + "advancement.create.chained_drain.desc": "看著物品滾過一整排分液池§7\n(隱藏成就)", + "advancement.create.cross_streams": "別混流", + "advancement.create.cross_streams.desc": "目睹兩種液體在管道中相遇§7\n(隱藏成就)", + "advancement.create.pipe_organ": "管風琴", + "advancement.create.pipe_organ.desc": "在一個流體儲存罐上裝設 12 個不同音高的汽笛§7\n(隱藏成就)", "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎鋅礦石和粉碎銅礦石來製作粉碎黃銅", + "advancement.create.brass.desc": "以烈焰使者動力爐加熱機械攪拌器,加入銅錠和鋅錠以製作黃銅", "advancement.create.brass_casing": "黃銅時代", - "advancement.create.brass_casing.desc": "用黃銅和木頭製作一個黃銅機殼", - "advancement.create.rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.rose_quartz.desc": "UNLOCALIZED: Polish some Rose Quartz", - "advancement.create.deployer": "指爽沒?", - "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手完美的複製品", - "advancement.create.precision_mechanism": "複雜的好奇心", - "advancement.create.precision_mechanism.desc": "組裝一個精確控制器", - "advancement.create.speed_controller": "攻城屍討厭他!", - "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置。", - "advancement.create.mechanical_arm": "忙碌的手!", - "advancement.create.mechanical_arm.desc": "製作機械手臂,選擇輸入和輸出,放置並給它動能; 然後看著它完成所有你交代的工作。", - "advancement.create.mechanical_crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.mechanical_crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters", - "advancement.create.crushing_wheel": "一對大傢伙", - "advancement.create.crushing_wheel.desc": "製作一對能更快粉碎物品的粉碎輪", - "advancement.create.haunted_bell": "UNLOCALIZED: Shadow Sense", - "advancement.create.haunted_bell.desc": "UNLOCALIZED: Toll a Haunted Bell", + "advancement.create.brass_casing.desc": "結合黃銅錠與木頭,為更複雜的機器製造外殼", + "advancement.create.rose_quartz": "粉色鑽石", + "advancement.create.rose_quartz.desc": "將玫瑰石英拋光", + "advancement.create.deployer": "人工智慧", + "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手的完美複製品", + "advancement.create.precision_mechanism": "關鍵工藝", + "advancement.create.precision_mechanism.desc": "組裝一個精密機構", + "advancement.create.speed_controller": "工程師的惡夢", + "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置", + "advancement.create.mechanical_arm": "忙碌的雙手", + "advancement.create.mechanical_arm.desc": "看著機械臂完成你所交代的任務", + "advancement.create.mechanical_crafter": "自動化產線", + "advancement.create.mechanical_crafter.desc": "為機械合成器提供動力", + "advancement.create.crushing_wheel": "一對巨匠", + "advancement.create.crushing_wheel.desc": "為一對粉碎輪提供動力", + "advancement.create.haunted_bell": "鬼影幢幢", + "advancement.create.haunted_bell.desc": "敲響靈魂鐘", "advancement.create.clockwork_bearing": "時差", - "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構。", - "advancement.create.display_link": "UNLOCALIZED: Big Data", - "advancement.create.display_link.desc": "UNLOCALIZED: Use a Display link to visualise information", + "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構", + "advancement.create.display_link": "大數據", + "advancement.create.display_link.desc": "使用顯示鏈路可視化訊息", "advancement.create.potato_cannon": "噗~碰", "advancement.create.potato_cannon.desc": "用馬鈴薯大砲擊殺一隻怪物", - "advancement.create.extendo_grip": "piu piu piu!", + "advancement.create.extendo_grip": "彈性極佳", "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", - "advancement.create.linked_controller": "UNLOCALIZED: Remote Activation", - "advancement.create.linked_controller.desc": "UNLOCALIZED: Activate a Redstone Link using a Linked Controller", - "advancement.create.arm_blaze_burner": "燃燒吧!烈焰使者!", - "advancement.create.arm_blaze_burner.desc": "指揮機械手臂給烈焰使者動力爐投食。", - "advancement.create.crusher_maxed_0000": "UNLOCALIZED: Crushing it", - "advancement.create.crusher_maxed_0000.desc": "UNLOCALIZED: Operate a Pair of Crushing wheels at max speed", - "advancement.create.arm_many_targets": "你是要累死我?", - "advancement.create.arm_many_targets.desc": "配置一隻有十個或更多輸出位置的機械手臂。", - "advancement.create.potato_cannon_collide": "UNLOCALIZED: Veggie Fireworks", - "advancement.create.potato_cannon_collide.desc": "UNLOCALIZED: Cause potato cannon projectiles of different types to collide with each other", - "advancement.create.self_deploying": "UNLOCALIZED: Self-Driving Cart", - "advancement.create.self_deploying.desc": "UNLOCALIZED: Create a Minecart Contraption that places tracks in front of itself", - "advancement.create.fist_bump": "朋友,來擊拳", - "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳", - "advancement.create.crafter_lazy_000": "UNLOCALIZED: Desperate Measures", - "advancement.create.crafter_lazy_000.desc": "UNLOCALIZED: Drastically slow down a Mechanical Crafter to procrastinate on proper infrastructure§7\n(Hidden Advancement)", - "advancement.create.extendo_grip_dual": "UNLOCALIZED: To full Extent", - "advancement.create.extendo_grip_dual.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach§7\n(Hidden Advancement)", - "advancement.create.musical_arm": "沒人能在我的BGM裡打敗我!", - "advancement.create.musical_arm.desc": "使用機械手臂播放唱片。", - "advancement.create.sturdy_sheet": "UNLOCALIZED: The Sturdiest Rocks", - "advancement.create.sturdy_sheet.desc": "UNLOCALIZED: Assemble a Sturdy Sheet from refining crushed Obsidian", - "advancement.create.train_casing_00": "UNLOCALIZED: The Logistical Age", - "advancement.create.train_casing_00.desc": "UNLOCALIZED: Use Sturdy Sheets to create a Casing for Railway Components", - "advancement.create.train": "UNLOCALIZED: All Aboard!", - "advancement.create.train.desc": "UNLOCALIZED: Assemble your first Train", - "advancement.create.conductor": "UNLOCALIZED: Conductor Instructor", - "advancement.create.conductor.desc": "UNLOCALIZED: Instruct a Train driver with a Schedule", - "advancement.create.track_signal": "UNLOCALIZED: Traffic Control", - "advancement.create.track_signal.desc": "UNLOCALIZED: Place a Train Signal", - "advancement.create.display_board_0": "UNLOCALIZED: Dynamic Timetables", - "advancement.create.display_board_0.desc": "UNLOCALIZED: Forecast a Train's arrival on your Display Board with the help of Display Links", - "advancement.create.track_0": "UNLOCALIZED: A new Gauge", - "advancement.create.track_0.desc": "UNLOCALIZED: Obtain some Train Tracks", - "advancement.create.train_whistle": "UNLOCALIZED: Choo choo!", - "advancement.create.train_whistle.desc": "UNLOCALIZED: Assemble a Steam Whistle to your Train and activate it while driving", - "advancement.create.train_portal": "UNLOCALIZED: Dimensional Commuter", - "advancement.create.train_portal.desc": "UNLOCALIZED: Ride a train through a Nether Portal", - "advancement.create.track_crafting_factory": "UNLOCALIZED: Track Factory", - "advancement.create.track_crafting_factory.desc": "UNLOCALIZED: Produce more than 1000 train tracks in the same Mechanical Press", - "advancement.create.long_bend": "UNLOCALIZED: The Longest Bend", - "advancement.create.long_bend.desc": "UNLOCALIZED: Create a Curved track section that spans more than 30 blocks in length", - "advancement.create.long_train": "UNLOCALIZED: Ambitious Endeavours", - "advancement.create.long_train.desc": "UNLOCALIZED: Create a Train with at least six Carriages", - "advancement.create.long_travel": "UNLOCALIZED: Field Trip", - "advancement.create.long_travel.desc": "UNLOCALIZED: Leave a Train Seat over 5000 blocks away from where you started travelling", - "advancement.create.train_roadkill": "UNLOCALIZED: Road Kill", - "advancement.create.train_roadkill.desc": "UNLOCALIZED: Run over an Enemy with your Train§7\n(Hidden Advancement)", - "advancement.create.red_signal": "UNLOCALIZED: Expert Driver", - "advancement.create.red_signal.desc": "UNLOCALIZED: Run a Red Signal with your Train§7\n(Hidden Advancement)", - "advancement.create.train_crash": "UNLOCALIZED: Terrible Service", - "advancement.create.train_crash.desc": "UNLOCALIZED: Witness a Train Crash as a Passenger§7\n(Hidden Advancement)", - "advancement.create.train_crash_backwards": "UNLOCALIZED: Blind Spot", - "advancement.create.train_crash_backwards.desc": "UNLOCALIZED: Crash into another Train while driving backwards§7\n(Hidden Advancement)", + "advancement.create.linked_controller": "遠端遙控", + "advancement.create.linked_controller.desc": "以遙控器開啟無線紅石鏈路", + "advancement.create.arm_blaze_burner": "補給燃料", + "advancement.create.arm_blaze_burner.desc": "吩咐機械臂餵食你的烈焰使者", + "advancement.create.crusher_maxed_0000": "粉碎一切", + "advancement.create.crusher_maxed_0000.desc": "讓一對粉碎輪以極速運作", + "advancement.create.arm_many_targets": "手忙手亂", + "advancement.create.arm_many_targets.desc": "讓機械臂擁有十個或更多的輸出位置", + "advancement.create.potato_cannon_collide": "蔬果花火", + "advancement.create.potato_cannon_collide.desc": "使兩座馬鈴薯大砲的砲彈相互碰撞", + "advancement.create.self_deploying": "自動駕駛", + "advancement.create.self_deploying.desc": "讓一個礦車結構為自己鋪設鐵軌", + "advancement.create.fist_bump": "朋友,擊拳吧", + "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳§7\n(隱藏成就)", + "advancement.create.crafter_lazy_000": "鋌而走險", + "advancement.create.crafter_lazy_000.desc": "使機械合成器大幅減速,適當的延遲基礎建設§7\n(隱藏成就)", + "advancement.create.extendo_grip_dual": "面面俱到", + "advancement.create.extendo_grip_dual.desc": "使用兩支伸縮機械手,以達到超人般的接觸距離§7\n(隱藏成就)", + "advancement.create.musical_arm": "DJ:機械師", + "advancement.create.musical_arm.desc": "目睹機械臂跳舞§7\n(隱藏成就)", + "advancement.create.sturdy_sheet": "堅不可摧", + "advancement.create.sturdy_sheet.desc": "以黑曜石粉末打造高強度板", + "advancement.create.train_casing_00": "物流時代", + "advancement.create.train_casing_00.desc": "以高強度板製作火車部件的機殼", + "advancement.create.train": "盡速上車", + "advancement.create.train.desc": "組裝你的第一列火車", + "advancement.create.conductor": "命令司機員", + "advancement.create.conductor.desc": "透過火車時刻表給予司機員指示", + "advancement.create.track_signal": "交通管制", + "advancement.create.track_signal.desc": "設置火車訊號機", + "advancement.create.display_board_0": "動態時刻表", + "advancement.create.display_board_0.desc": "在顯示鏈路的幫助下,透過顯示板預測火車的抵達時間", + "advancement.create.track_0": "新軌距", + "advancement.create.track_0.desc": "獲得一些火車軌道", + "advancement.create.train_whistle": "Choo Choo", + "advancement.create.train_whistle.desc": "將汽笛裝到火車上並在行駛時觸發", + "advancement.create.train_portal": "次元旅行者", + "advancement.create.train_portal.desc": "駕駛火車通過地獄門", + "advancement.create.track_crafting_factory": "軌道工廠", + "advancement.create.track_crafting_factory.desc": "在一台機械鍛壓機中製造超過 1000 條軌道", + "advancement.create.long_bend": "無際彎道", + "advancement.create.long_bend.desc": "鋪設長度超過 30 格的曲線軌道", + "advancement.create.long_train": "雄心勃勃", + "advancement.create.long_train.desc": "建造一列至少有六節車廂的火車", + "advancement.create.long_travel": "遠足", + "advancement.create.long_travel.desc": "從距離旅行起始點超過 5000 格的火車座位起身", + "advancement.create.train_roadkill": "路殺", + "advancement.create.train_roadkill.desc": "用火車輾死敵人§7\n(隱藏成就)", + "advancement.create.red_signal": "合格司機員", + "advancement.create.red_signal.desc": "駛過紅色訊號§7\n(隱藏成就)", + "advancement.create.train_crash": "服務爛透了", + "advancement.create.train_crash.desc": "乘車時目睹火車事故§7\n(隱藏成就)", + "advancement.create.train_crash_backwards": "盲點", + "advancement.create.train_crash_backwards.desc": "倒車時撞上另一列火車§7\n(隱藏成就)", "_": "->------------------------] UI & Messages [------------------------<-", @@ -861,29 +861,29 @@ "itemGroup.create.base": "動力機械", "itemGroup.create.palettes": "動力機械建築與裝飾方塊", - "death.attack.create.crush": "%1$s被壓扁了", + "death.attack.create.crush": "%1$s 被壓扁了", "death.attack.create.crush.player": "%1$s 被 %2$s 打包丟進粉碎輪", - "death.attack.create.fan_fire": "%1$s想接受熱風的洗禮", + "death.attack.create.fan_fire": "%1$s 想接受熱風的洗禮", "death.attack.create.fan_fire.player": "%1$s 被 %2$s 推入火坑", - "death.attack.create.fan_lava": "%1$s想接受熱風的洗禮但走火入魔", + "death.attack.create.fan_lava": "%1$s 想接受熱風的洗禮但走火入魔", "death.attack.create.fan_lava.player": "%1$s 被 %2$s 推進岩漿", - "death.attack.create.mechanical_drill": "%1$s被鑽頭鑽爆腦袋", + "death.attack.create.mechanical_drill": "%1$s 被鑽頭鑽爆腦袋", "death.attack.create.mechanical_drill.player": "%1$s 被 %2$s 當成礦物放在鑽頭前面而死", - "death.attack.create.mechanical_saw": "%1$s被鋸切成了兩半", + "death.attack.create.mechanical_saw": "%1$s 被鋸切成了兩半", "death.attack.create.mechanical_saw.player": "%1$s 被 %2$s 鋸掉了", "death.attack.create.potato_cannon": "%1$s 被 %2$s 的馬鈴薯大砲餵飽了", "death.attack.create.potato_cannon.item": "%1$s 被 %2$s 用馬鈴薯大砲塞了滿肚子 %3$s", "death.attack.create.cuckoo_clock_explosion": "%1$s 被布穀鳥鐘炸得粉身碎骨", "death.attack.create.cuckoo_clock_explosion.player": "%1$s 被布穀鳥鐘炸得粉身碎骨", - "death.attack.create.run_over": "UNLOCALIZED: %1$s was run over by %2$s", + "death.attack.create.run_over": "%1$s 被 %2$s 輾過", "create.block.deployer.damage_source_name": "機械手", - "create.block.cart_assembler.invalid": "將您的礦車裝修站放在鐵軌上", + "create.block.cart_assembler.invalid": "將你的礦車裝修站放在鐵軌上", "create.menu.return": "回到選單", "create.menu.configure": "設定", "create.menu.ponder_index": "示範目錄", - "create.menu.only_ingame": "UNLOCALIZED: Available in the Pause Menu", + "create.menu.only_ingame": "僅適用於暫停選單", "create.menu.report_bugs": "回報問題", "create.menu.support": "支持我們", @@ -893,42 +893,42 @@ "create.recipe.fan_washing.fan": "在水後放置鼓風機", "create.recipe.fan_smoking": "批次煙燻", "create.recipe.fan_smoking.fan": "在火焰後放置鼓風機", - "create.recipe.fan_haunting": "UNLOCALIZED: Bulk Haunting", - "create.recipe.fan_haunting.fan": "UNLOCALIZED: Fan behind Soul Fire", + "create.recipe.fan_haunting": "批次喚魂", + "create.recipe.fan_haunting.fan": "在靈魂火後放置鼓風機", "create.recipe.fan_blasting": "批次融煉", "create.recipe.fan_blasting.fan": "在熔岩後放置鼓風機", - "create.recipe.pressing": "金屬壓片", + "create.recipe.pressing": "金屬鍛造", "create.recipe.mixing": "混合攪拌", - "create.recipe.deploying": "UNLOCALIZED: Deploying", + "create.recipe.deploying": "使用", "create.recipe.automatic_shapeless": "自動攪拌", "create.recipe.automatic_brewing": "自動釀造", - "create.recipe.packing": "壓塊塑形", - "create.recipe.automatic_packing": "自動打包", - "create.recipe.sawing": "板材切割", - "create.recipe.mechanical_crafting": "自動合成", - "create.recipe.automatic_shaped": "自動合成", - "create.recipe.block_cutting": "方塊切割", - "create.recipe.wood_cutting": "木材切割", + "create.recipe.packing": "壓塑", + "create.recipe.automatic_packing": "自動壓塑", + "create.recipe.sawing": "切割", + "create.recipe.mechanical_crafting": "機械製造", + "create.recipe.automatic_shaped": "自動成型", + "create.recipe.block_cutting": "切割方塊", + "create.recipe.wood_cutting": "切割木材", "create.recipe.sandpaper_polishing": "砂紙打磨", - "create.recipe.mystery_conversion": "神秘轉化", - "create.recipe.spout_filling": "注液", + "create.recipe.mystery_conversion": "奧秘", + "create.recipe.spout_filling": "灌注", "create.recipe.draining": "分液", - "create.recipe.item_application": "UNLOCALIZED: Manual Item Application", - "create.recipe.item_application.any_axe": "UNLOCALIZED: Any Axe", - "create.recipe.sequenced_assembly": "排序中的步驟", + "create.recipe.item_application": "手動使用物品", + "create.recipe.item_application.any_axe": "任意的斧", + "create.recipe.sequenced_assembly": "步驟", "create.recipe.assembly.next": "下一步:%1$s", - "create.recipe.assembly.step": "步驟 %1$s:", + "create.recipe.assembly.step": "步驟 %1$s", "create.recipe.assembly.progress": "進度:%1$s/%2$s", - "create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press", - "create.recipe.assembly.spout_filling_fluid": "注入:%1$s", - "create.recipe.assembly.deploying_item": "使用:%1$s", + "create.recipe.assembly.pressing": "鍛造過程", + "create.recipe.assembly.spout_filling_fluid": "注入 %1$s", + "create.recipe.assembly.deploying_item": "使用 %1$s", "create.recipe.assembly.cutting": "用鋸子切", "create.recipe.assembly.repeat": "重複 %1$s 次", "create.recipe.assembly.junk": "有機率得到垃圾", - "create.recipe.processing.chance": "%1$s%%概率", - "create.recipe.deploying.not_consumed": "UNLOCALIZED: Not Consumed", + "create.recipe.processing.chance": "%1$s%% 概率", + "create.recipe.deploying.not_consumed": "不消耗", "create.recipe.heat_requirement.none": "不需要加熱", - "create.recipe.heat_requirement.heated": "普通加熱", + "create.recipe.heat_requirement.heated": "一般加熱", "create.recipe.heat_requirement.superheated": "超級加熱", "create.generic.range": "範圍", @@ -938,26 +938,26 @@ "create.generic.length": "長", "create.generic.speed": "速度", "create.generic.delay": "延時", - "create.generic.duration": "UNLOCALIZED: Duration", - "create.generic.timeUnit": "UNLOCALIZED: Time Unit", + "create.generic.duration": "間隔", + "create.generic.timeUnit": "時間單位", "create.generic.unit.ticks": "Ticks", "create.generic.unit.seconds": "秒", "create.generic.unit.minutes": "分", - "create.generic.daytime.hour": "UNLOCALIZED: Hour", - "create.generic.daytime.minute": "UNLOCALIZED: Minute", - "create.generic.daytime.second": "UNLOCALIZED: Second", - "create.generic.daytime.pm": "UNLOCALIZED: pm", - "create.generic.daytime.am": "UNLOCALIZED: am", + "create.generic.daytime.hour": "時", + "create.generic.daytime.minute": "分", + "create.generic.daytime.second": "秒", + "create.generic.daytime.pm": "PM", + "create.generic.daytime.am": "AM", "create.generic.unit.rpm": "RPM", "create.generic.unit.stress": "su", "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.unit.buckets": "UNLOCALIZED: B", + "create.generic.unit.millibuckets": "mB", + "create.generic.unit.buckets": "B", "create.generic.clockwise": "順時鐘方向", "create.generic.counter_clockwise": "逆時鐘方向", - "create.generic.in_quotes": "UNLOCALIZED: \"%1$s\"", - "create.generic.pitch": "UNLOCALIZED: Pitch: %1$s", - "create.generic.notes": "UNLOCALIZED: F#;F;E;D#;D;C#;C;B;A#;A;G#;G", + "create.generic.in_quotes": "\"%1$s\"", + "create.generic.pitch": "音高:%1$s", + "create.generic.notes": "F#;F;E;D#;D;C#;C;B;A#;A;G#;G", "create.action.scroll": "滾輪", "create.action.confirm": "確認", @@ -966,23 +966,23 @@ "create.action.discard": "放棄", "create.keyinfo.toolmenu": "選單", - "create.keyinfo.toolbelt": "UNLOCALIZED: Access Nearby Toolboxes", - "create.keyinfo.scrollup": "(遊戲中)向上滑鼠滾輪", - "create.keyinfo.scrolldown": "(遊戲中)向下滑鼠滾輪", + "create.keyinfo.toolbelt": "使用附近的工具箱", + "create.keyinfo.scrollup": "(遊戲中) 向上滑鼠滾輪", + "create.keyinfo.scrolldown": "(遊戲中) 向下滑鼠滾輪", - "create.gui.scrollInput.defaultTitle": "選擇一個選項:", + "create.gui.scrollInput.defaultTitle": "選擇一個選項:", "create.gui.scrollInput.scrollToModify": "滾動修改", "create.gui.scrollInput.scrollToAdjustAmount": "滾動修改數量", "create.gui.scrollInput.scrollToSelect": "滾動選擇", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滾動更快", + "create.gui.scrollInput.shiftScrollsFaster": "按住 Shift 滾動更快", "create.gui.toolmenu.focusKey": "按住 [%1$s] 滑鼠滾輪選擇", "create.gui.toolmenu.cycle": "[SCROLL] 循環", - "create.toolbox.unequip": "UNLOCALIZED: Unequip: %1$s", - "create.toolbox.outOfRange": "UNLOCALIZED: Toolbox of held item not in Range", - "create.toolbox.detach": "UNLOCALIZED: Stop tracking and keep item", - "create.toolbox.depositAll": "UNLOCALIZED: Return items to nearby Toolboxes", - "create.toolbox.depositBox": "UNLOCALIZED: Return items to Toolbox", + "create.toolbox.unequip": "解除: %1$s", + "create.toolbox.outOfRange": "手持的物品不在工具箱的範圍內", + "create.toolbox.detach": "停止追蹤工具箱,並保留物品", + "create.toolbox.depositAll": "歸還物品至附近所有的工具箱", + "create.toolbox.depositBox": "歸還物品至工具箱", "create.gui.symmetryWand.mirrorType": "鏡子類型", "create.gui.symmetryWand.orientation": "方向", @@ -994,13 +994,13 @@ "create.orientation.orthogonal": "垂直", "create.orientation.diagonal": "對角線", "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z軸對齊", - "create.orientation.alongX": "以x軸對齊", + "create.orientation.alongZ": "以 z軸 對齊", + "create.orientation.alongX": "以 x軸 對齊", "create.gui.terrainzapper.title": "地形雕塑器", "create.gui.terrainzapper.searchDiagonal": "跟隨對角線", "create.gui.terrainzapper.searchFuzzy": "忽略材質邊界", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", + "create.gui.terrainzapper.patternSection": "樣式", "create.gui.terrainzapper.pattern.solid": "填滿", "create.gui.terrainzapper.pattern.checkered": "棋盤狀", "create.gui.terrainzapper.pattern.inversecheckered": "反轉棋盤狀", @@ -1025,7 +1025,7 @@ "create.gui.terrainzapper.tool.overlay": "覆蓋", "create.gui.terrainzapper.tool.flatten": "平整", - "create.terrainzapper.shiftRightClickToSet": "Shift+滑鼠右鍵 以設定雕塑類型", + "create.terrainzapper.shiftRightClickToSet": "Shift + 滑鼠右鍵 以設定雕塑類型", "create.terrainzapper.usingBlock": "使用:%1$s", "create.terrainzapper.leftClickToSet": "左鍵點擊方塊可以設定材質", @@ -1054,46 +1054,46 @@ "create.logistics.filter": "過濾器", "create.logistics.recipe_filter": "配方過濾器", - "create.logistics.fluid_filter": "液體過濾器", + "create.logistics.fluid_filter": "流體過濾器", "create.logistics.firstFrequency": "頻道. #1", "create.logistics.secondFrequency": "頻道. #2", - "create.logistics.filter.apply": "將過濾器應用來%1$s。", - "create.logistics.filter.apply_click_again": "將過濾器應用來%1$s,再次點擊以復制數量。", - "create.logistics.filter.apply_count": "使用提取計數過濾。", + "create.logistics.filter.apply": "將過濾器應用來 %1$s", + "create.logistics.filter.apply_click_again": "將過濾器應用來 %1$s,再次點擊以複製數量", + "create.logistics.filter.apply_count": "使用提取計數過濾", - "create.gui.goggles.generator_stats": "產能器狀態:", - "create.gui.goggles.kinetic_stats": "機械狀態:", + "create.gui.goggles.generator_stats": "發動機狀態:", + "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.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": "結構中的方塊數量過多.\nThe 可放置的數量最大為: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\nThe 可放置的數量最大為: %1$s", + "create.gui.assembly.exception.structureTooLarge": "結構中的方塊數量過多\n可放置的數量最大為:%1$s", + "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\n可放置的數量最大為:%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.assembly.exception.not_enough_sails": "結構中所需的風帆類方塊數量不足:%1$s\n最少需要的數量為:%2$s", + "create.gui.gauge.info_header": "儀表訊息:", "create.gui.speedometer.title": "旋轉速度", - "create.gui.stressometer.title": "網路動能", - "create.gui.stressometer.capacity": "剩餘動能量", + "create.gui.stressometer.title": "網路負荷", + "create.gui.stressometer.capacity": "剩餘能量", "create.gui.stressometer.overstressed": "動能過載", "create.gui.stressometer.no_rotation": "無旋轉", - "create.gui.contraptions.not_fast_enough": "看起來%1$s 沒有達到足夠的工作轉速。", + "create.gui.contraptions.not_fast_enough": "看起來 %1$s 沒有達到足夠的工作轉速", "create.gui.contraptions.network_overstressed": "裝置似乎過載,減少高動能消耗的裝置或者增加更多更多動能", "create.gui.adjustable_crate.title": "板條箱", "create.gui.adjustable_crate.storageSpace": "儲存空間", "create.gui.stockpile_switch.title": "儲存開關", "create.gui.stockpile_switch.invert_signal": "反轉訊號", - "create.gui.stockpile_switch.move_to_lower_at": "移至下線%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "移至上線%1$s%%", + "create.gui.stockpile_switch.move_to_lower_at": "移至下限 %1$s%%", + "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.descriptive": "帶動 活塞/滑輪/門式起重機", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "帶動 活塞/滑輪/橋式起重機", "create.gui.sequenced_gearshift.instruction.turn_distance": "驅動活塞", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", "create.gui.sequenced_gearshift.instruction.delay.descriptive": "延遲時間", @@ -1109,23 +1109,23 @@ "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", "create.gui.sequenced_gearshift.speed.back_fast": "兩倍速,反向", - "create.schematicAndQuill.dimensions": "藍圖尺寸:%1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一個位置。", - "create.schematicAndQuill.secondPos": "第二個位置。", - "create.schematicAndQuill.noTarget": "按住Ctrl選擇空氣方塊。", - "create.schematicAndQuill.abort": "刪除選擇。", + "create.schematicAndQuill.dimensions": "藍圖尺寸:%1$sx%2$sx%3$s", + "create.schematicAndQuill.firstPos": "第一個位置", + "create.schematicAndQuill.secondPos": "第二個位置", + "create.schematicAndQuill.noTarget": "按住Ctrl選擇空氣方塊", + "create.schematicAndQuill.abort": "刪除選擇", "create.schematicAndQuill.title": "藍圖名:", "create.schematicAndQuill.convert": "立即存檔並發佈", "create.schematicAndQuill.fallbackName": "我的藍圖", - "create.schematicAndQuill.saved": "另存為%1$s", + "create.schematicAndQuill.saved": "另存為 %1$s", "create.schematic.invalid": "[!] 無效的項目", "create.schematic.position": "位置", "create.schematic.rotation": "旋轉", "create.schematic.rotation.none": "無", - "create.schematic.rotation.cw90": "順時鐘90", - "create.schematic.rotation.cw180": "順時鐘180", - "create.schematic.rotation.cw270": "順時鐘270", + "create.schematic.rotation.cw90": "順時鐘 90", + "create.schematic.rotation.cw180": "順時鐘 180", + "create.schematic.rotation.cw270": "順時鐘 270", "create.schematic.mirror": "鏡像", "create.schematic.mirror.none": "無", "create.schematic.mirror.frontBack": "前後", @@ -1136,47 +1136,47 @@ "create.schematic.tool.rotate": "旋轉", "create.schematic.tool.print": "列印", "create.schematic.tool.flip": "翻轉", - "create.schematic.tool.deploy.description.0": "將結構移到某個位置。", - "create.schematic.tool.deploy.description.1": "在地面上點擊滑鼠右鍵以放置。", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距離選擇。", - "create.schematic.tool.deploy.description.3": "按住Ctrl滑鼠滾動更改距離。", + "create.schematic.tool.deploy.description.0": "將結構移到某個位置", + "create.schematic.tool.deploy.description.1": "在地面上點擊滑鼠右鍵以放置", + "create.schematic.tool.deploy.description.2": "按住 Ctrl 以固定距離選擇", + "create.schematic.tool.deploy.description.3": "按住 Ctrl 滑鼠滾動更改距離", "create.schematic.tool.move.description.0": "水平移動藍圖", - "create.schematic.tool.move.description.1": "選定藍圖,然後按住Ctrl滑鼠滾動。", + "create.schematic.tool.move.description.1": "選定藍圖,然後按住 Ctrl 滑鼠滾動", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", "create.schematic.tool.movey.description.0": "垂直移動藍圖", - "create.schematic.tool.movey.description.1": "按住Ctrl滑鼠滾動上下移動", + "create.schematic.tool.movey.description.1": "按住 Ctrl 滑鼠滾動上下移動", "create.schematic.tool.movey.description.2": "", "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "圍繞藍圖中心旋轉藍圖。", - "create.schematic.tool.rotate.description.1": "按住Ctrl滑鼠滾動旋轉90度", + "create.schematic.tool.rotate.description.0": "圍繞藍圖中心旋轉藍圖", + "create.schematic.tool.rotate.description.1": "按住 Ctrl 滑鼠滾動旋轉 90 度", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematic.tool.print.description.0": "立即將結構放置在世界上", - "create.schematic.tool.print.description.1": "右鍵點擊確認目前位置。", - "create.schematic.tool.print.description.2": "該工具僅能用於創造模式。", + "create.schematic.tool.print.description.1": "右鍵點擊確認目前位置", + "create.schematic.tool.print.description.2": "該工具僅能用於創造模式", "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你選擇的面翻轉藍圖。", - "create.schematic.tool.flip.description.1": "指向藍圖,然後按住Ctrl滑鼠滾動將其翻轉。", + "create.schematic.tool.flip.description.0": "沿你選擇的面翻轉藍圖", + "create.schematic.tool.flip.description.1": "指向藍圖,然後按住 Ctrl 滑鼠滾動將其翻轉", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", - "create.schematics.synchronizing": "正在同步..", + "create.schematics.synchronizing": "正在同步…", "create.schematics.uploadTooLarge": "你的藍圖太大", - "create.schematics.maxAllowedSize": "允許的最大藍圖文件大小為:", + "create.schematics.maxAllowedSize": "允許的最大藍圖文件大小為:", "create.gui.schematicTable.refresh": "重新整理文件", "create.gui.schematicTable.open_folder": "打開資料夾", "create.gui.schematicTable.title": "藍圖桌", "create.gui.schematicTable.availableSchematics": "可用藍圖", "create.gui.schematicTable.noSchematics": "沒有存檔的藍圖", - "create.gui.schematicTable.uploading": "正在上傳...", - "create.gui.schematicTable.finished": "上傳完成!", + "create.gui.schematicTable.uploading": "正在上傳…", + "create.gui.schematicTable.finished": "上傳完成!", "create.gui.schematicannon.title": "藍圖加農炮", "create.gui.schematicannon.listPrinter": "物品清單列印機", - "create.gui.schematicannon.gunpowderLevel": "火藥%1$s%%", - "create.gui.schematicannon.shotsRemaining": "發射進度:%1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "備份:%1$s", + "create.gui.schematicannon.gunpowderLevel": "火藥 %1$s%%", + "create.gui.schematicannon.shotsRemaining": "發射進度:%1$s", + "create.gui.schematicannon.shotsRemainingWithBackup": "備份:%1$s", "create.gui.schematicannon.optionEnabled": "目前啟用", "create.gui.schematicannon.optionDisabled": "目前停用", "create.gui.schematicannon.showOptions": "顯示藍圖加農炮設定", @@ -1190,11 +1190,11 @@ "create.gui.schematicannon.slot.listPrinter": "在此處放置書以列印藍圖所需的材料清單", "create.gui.schematicannon.slot.schematic": "在此處添加你的藍圖,務必確保其已被部放置在特定位置", "create.gui.schematicannon.option.skipMissing.description": "如果材料不夠,藍圖大炮將忽略目前不夠的材料並且使用其他已有材料繼續工作", - "create.gui.schematicannon.option.skipTileEntities.description": "藍圖將避免更換儲存方塊,如箱子。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "藍圖加農炮將不會替換工作範圍內的任何固體方塊。", + "create.gui.schematicannon.option.skipTileEntities.description": "藍圖將避免更換儲存方塊,如箱子", + "create.gui.schematicannon.option.dontReplaceSolid.description": "藍圖加農炮將不會替換工作範圍內的任何固體方塊", "create.gui.schematicannon.option.replaceWithSolid.description": "藍圖加農炮會使用所提供的固體方塊來替換工作區域內的其他固體方塊", "create.gui.schematicannon.option.replaceWithAny.description": "藍圖加農炮會使用任何所提供的方塊來替換工作區域內的固體方塊", - "create.gui.schematicannon.option.replaceWithEmpty.description": "藍圖加農炮將清理和替換工作區域內所有原本的方塊。", + "create.gui.schematicannon.option.replaceWithEmpty.description": "藍圖加農炮將清理和替換工作區域內所有原本的方塊", "create.schematicannon.status.idle": "閒置", "create.schematicannon.status.ready": "準備", @@ -1207,7 +1207,7 @@ "create.schematicannon.status.targetOutsideRange": "定位目標太遠", "create.schematicannon.status.searching": "搜尋", "create.schematicannon.status.skipping": "跳過", - "create.schematicannon.status.missingBlock": "缺少方塊:", + "create.schematicannon.status.missingBlock": "缺少方塊:", "create.schematicannon.status.placing": "建築中", "create.schematicannon.status.clearing": "清除方塊中", "create.schematicannon.status.schematicInvalid": "藍圖無效", @@ -1215,7 +1215,7 @@ "create.schematicannon.status.schematicExpired": "藍圖文件已過期", "create.materialChecklist": "材料清單", - "create.materialChecklist.blocksNotLoaded": "*免責聲明* \n\n由於未讀取相關區塊,材料清單可能不正確。", + "create.materialChecklist.blocksNotLoaded": "*免責聲明* \n\n由於未讀取相關區塊,材料清單可能不正確", "create.gui.filter.deny_list": "黑名單", "create.gui.filter.deny_list.description": "只通過不在黑名單中的物品,如果黑名單為空,所有物品都可以通過", @@ -1230,14 +1230,14 @@ "create.item_attributes.placeable.inverted": "不可放置", "create.item_attributes.consumable": "可食用", "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.fluid_container": "UNLOCALIZED: can store fluids", - "create.item_attributes.fluid_container.inverted": "UNLOCALIZED: cannot store fluids", + "create.item_attributes.fluid_container": "可儲存流體", + "create.item_attributes.fluid_container.inverted": "不可儲存流體", "create.item_attributes.enchanted": "已被附魔", "create.item_attributes.enchanted.inverted": "未被附魔", "create.item_attributes.max_enchanted": "已達到最高附魔等級", "create.item_attributes.max_enchanted.inverted": "未達到最高附魔等級", - "create.item_attributes.renamed": "UNLOCALIZED: has a custom name", - "create.item_attributes.renamed.inverted": "UNLOCALIZED: does not have a custom name", + "create.item_attributes.renamed": "有自訂名稱", + "create.item_attributes.renamed.inverted": "沒有自訂名稱", "create.item_attributes.damaged": "已損壞", "create.item_attributes.damaged.inverted": "未損壞", "create.item_attributes.badly_damaged": "嚴重受損", @@ -1250,8 +1250,8 @@ "create.item_attributes.furnace_fuel.inverted": "不是燃料", "create.item_attributes.washable": "可被篩洗", "create.item_attributes.washable.inverted": "不可被篩洗", - "create.item_attributes.hauntable": "UNLOCALIZED: can be Haunted", - "create.item_attributes.hauntable.inverted": "UNLOCALIZED: cannot be Haunted", + "create.item_attributes.hauntable": "可被喚魂", + "create.item_attributes.hauntable.inverted": "不可被喚魂", "create.item_attributes.crushable": "可被粉碎", "create.item_attributes.crushable.inverted": "不可被粉碎", "create.item_attributes.smeltable": "可被熔爐融煉", @@ -1265,22 +1265,22 @@ "create.item_attributes.shulker_level.full": "滿的", "create.item_attributes.shulker_level.empty": "空的", "create.item_attributes.shulker_level.partial": "有裝東西但沒滿", - "create.item_attributes.in_tag": "標籤是%1$s", - "create.item_attributes.in_tag.inverted": "標籤不是%1$s", - "create.item_attributes.in_item_group": "屬於%1$s", - "create.item_attributes.in_item_group.inverted": "不屬於%1$s", - "create.item_attributes.added_by": "由%1$s添加", - "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.in_tag": "標籤是 %1$s", + "create.item_attributes.in_tag.inverted": "標籤不是 %1$s", + "create.item_attributes.in_item_group": "屬於 %1$s", + "create.item_attributes.in_item_group.inverted": "不屬於 %1$s", + "create.item_attributes.added_by": "由 %1$s 添加", + "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.has_fluid": "包含%1$s", - "create.item_attributes.has_fluid.inverted": "不包含%1$s", - "create.item_attributes.has_name": "有自定義名稱%1$s", - "create.item_attributes.has_name.inverted": "沒有自定義名稱%1$s", - "create.item_attributes.book_author": "由%1$s編寫", - "create.item_attributes.book_author.inverted": "未由%1$s編寫", + "create.item_attributes.has_fluid": "包含 %1$s", + "create.item_attributes.has_fluid.inverted": "不包含 %1$s", + "create.item_attributes.has_name": "有自定義名稱 %1$s", + "create.item_attributes.has_name.inverted": "沒有自定義名稱 %1$s", + "create.item_attributes.book_author": "由 %1$s 編寫", + "create.item_attributes.book_author.inverted": "未由 %1$s 編寫", "create.item_attributes.book_copy_original": "是原創的", "create.item_attributes.book_copy_original.inverted": "不是原創的", "create.item_attributes.book_copy_first": "是第一份複製", @@ -1289,22 +1289,22 @@ "create.item_attributes.book_copy_second.inverted": "不是第二份複製", "create.item_attributes.book_copy_tattered": "是第三份複製", "create.item_attributes.book_copy_tattered.inverted": "不是第三份複製", - "create.item_attributes.astralsorcery_amulet": "提升%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "不提升%1$s", - "create.item_attributes.astralsorcery_constellation": "與%1$s調諧", - "create.item_attributes.astralsorcery_constellation.inverted": "未與%1$s調諧", - "create.item_attributes.astralsorcery_crystal": "具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_perk_gem": "具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊屬性%1$s", + "create.item_attributes.astralsorcery_amulet": "提升 %1$s", + "create.item_attributes.astralsorcery_amulet.inverted": "不提升 %1$s", + "create.item_attributes.astralsorcery_constellation": "與 %1$s 調和", + "create.item_attributes.astralsorcery_constellation.inverted": "未與 %1$s 調和", + "create.item_attributes.astralsorcery_crystal": "具有晶體屬性 %1$s", + "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶體屬性 %1$s", + "create.item_attributes.astralsorcery_perk_gem": "具有特殊屬性 %1$s", + "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊屬性 %1$s", "create.gui.attribute_filter.no_selected_attributes": "沒有標記任何屬性", "create.gui.attribute_filter.selected_attributes": "已選擇的屬性:", "create.gui.attribute_filter.add_attribute": "向列表中添加屬性", "create.gui.attribute_filter.add_inverted_attribute": "向列表中添加相反屬性", - "create.gui.attribute_filter.allow_list_disjunctive": "任意比對白名單(任何)", + "create.gui.attribute_filter.allow_list_disjunctive": "任意比對白名單 (任何) ", "create.gui.attribute_filter.allow_list_disjunctive.description": "只要有其中一項屬性符合,就可以通過", - "create.gui.attribute_filter.allow_list_conjunctive": "全部比對白名單(全部)", + "create.gui.attribute_filter.allow_list_conjunctive": "全部比對白名單 (全部) ", "create.gui.attribute_filter.allow_list_conjunctive.description": "只有所有屬性都相符才可以通過", "create.gui.attribute_filter.deny_list": "黑名單", "create.gui.attribute_filter.deny_list.description": "只要沒有上述屬性,就可以通過", @@ -1314,28 +1314,28 @@ "create.tooltip.holdForControls": "按住 [%1$s] 來讀取控制方法", "create.tooltip.keyShift": "Shift", "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求速度:%1$s", + "create.tooltip.speedRequirement": "需求速度:%1$s", "create.tooltip.speedRequirement.none": "無", - "create.tooltip.speedRequirement.slow": "UNLOCALIZED: Slow", + "create.tooltip.speedRequirement.slow": "慢", "create.tooltip.speedRequirement.medium": "適當", "create.tooltip.speedRequirement.fast": "快", - "create.tooltip.stressImpact": "動能消耗:%1$s", + "create.tooltip.stressImpact": "動能消耗:%1$s", "create.tooltip.stressImpact.low": "低", "create.tooltip.stressImpact.medium": "中", "create.tooltip.stressImpact.high": "高", "create.tooltip.stressImpact.overstressed": "過載", - "create.tooltip.up_to": "UNLOCALIZED: Up to %1$s", - "create.tooltip.capacityProvided": "動能生產量:%1$s", + "create.tooltip.up_to": "最高 %1$s", + "create.tooltip.capacityProvided": "動能輸出:%1$s", "create.tooltip.capacityProvided.low": "小", "create.tooltip.capacityProvided.medium": "中", "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "產生%1$s %2$s", - "create.tooltip.analogStrength": "調節強度:%1$s/15", + "create.tooltip.generationSpeed": "產生 %1$s %2$s", + "create.tooltip.analogStrength": "訊號強度:%1$s/15", - "create.mechanical_arm.extract_from": "從%1$s 拿取物品", - "create.mechanical_arm.deposit_to": "向%1$s 儲存物品", - "create.mechanical_arm.summary": "機械手臂有%1$s 輸入以及 %2$s 輸出。", - "create.mechanical_arm.points_outside_range": "%1$s 由於距離限制,選定的交互點被移除。", + "create.mechanical_arm.extract_from": "從 %1$s 拿取物品", + "create.mechanical_arm.deposit_to": "向 %1$s 儲存物品", + "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": "彈射到鄰近的方塊 (目的地無效)", @@ -1357,7 +1357,7 @@ "create.tunnel.selection_mode.randomize": "隨機", "create.tunnel.selection_mode.synchronize": "同步輸入", - "create.tooltip.chute.header": "滑道訊息", + "create.tooltip.chute.header": "滑槽訊息", "create.tooltip.chute.items_move_down": "物品向下移動", "create.tooltip.chute.items_move_up": "物品向上移動", "create.tooltip.chute.no_fans_attached": "未安裝鼓風機", @@ -1381,7 +1381,7 @@ "create.linked_controller.frequency_slot_2": "按鍵:%1$s 頻道 #2", "create.crafting_blueprint.crafting_slot": "材料格", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", + "create.crafting_blueprint.filter_items_viable": "可使用進階物品過濾", "create.crafting_blueprint.display_slot": "顯示格", "create.crafting_blueprint.inferred": "根據配方推論", "create.crafting_blueprint.manually_assigned": "手動設定", @@ -1393,354 +1393,354 @@ "create.potato_cannon.ammo.knockback": "%1$s 擊退", "create.hint.hose_pulley.title": "無限供應", - "create.hint.hose_pulley": "目標液體為無限供應", + "create.hint.hose_pulley": "目標流體為無限供應", "create.hint.mechanical_arm_no_targets.title": "沒有目標", - "create.hint.mechanical_arm_no_targets": "看起來這個_機械手臂_沒有被分配任何_目標_。在手持機械手臂的同時,右鍵選取輸送帶、置物臺、漏斗或其他設備來設定目標。", + "create.hint.mechanical_arm_no_targets": "看起來這個_機械臂_沒有被分配任何_目標_。在手持機械臂的同時,右鍵選取輸送帶、置物臺、漏斗或其他設備來設定目標", "create.hint.empty_bearing.title": "更新軸承", - "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構。", + "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構", "create.hint.full_deployer.title": "機械手物品溢出", - "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決。", + "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決", - "create.backtank.low": "UNLOCALIZED: Backtank pressure low", - "create.backtank.depleted": "UNLOCALIZED: Backtank pressure depleted", + "create.backtank.low": "後背包壓力不足", + "create.backtank.depleted": "後背包壓力耗盡", - "create.hint.derailed_train.title": "UNLOCALIZED: Derailed Train", - "create.hint.derailed_train": "UNLOCALIZED: It appears this _Train_ is no longer sitting on a connected track piece. _Right-Click_ using a _wrench_ in order to relocate it to a nearby track.", + "create.hint.derailed_train.title": "出軌的火車", + "create.hint.derailed_train": "這列_火車_不在軌道上,用扳手_左鍵點擊_它以重置到附近的軌道", - "create.boiler.status": "UNLOCALIZED: Boiler Status: %1$s", - "create.boiler.status_short": "UNLOCALIZED: Boiler: %1$s", - "create.boiler.passive": "UNLOCALIZED: Passive", - "create.boiler.idle": "UNLOCALIZED: Idle", - "create.boiler.lvl": "UNLOCALIZED: Lvl %1$s", - "create.boiler.max_lvl": "UNLOCALIZED: Max", - "create.boiler.size": "UNLOCALIZED: Size", - "create.boiler.size_dots": "UNLOCALIZED: ....... ", - "create.boiler.water": "UNLOCALIZED: Water", - "create.boiler.water_dots": "UNLOCALIZED: ... ", - "create.boiler.heat": "UNLOCALIZED: Heat", - "create.boiler.heat_dots": "UNLOCALIZED: ...... ", - "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", - "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.boiler.status": "鍋爐狀態:%1$s", + "create.boiler.status_short": "鍋爐:%1$s", + "create.boiler.passive": "運作中", + "create.boiler.idle": "閒置", + "create.boiler.lvl": "Lvl %1$s", + "create.boiler.max_lvl": "Max", + "create.boiler.size": "尺寸", + "create.boiler.size_dots": "....... ", + "create.boiler.water": "水", + "create.boiler.water_dots": "... ", + "create.boiler.heat": "熱量", + "create.boiler.heat_dots": "...... ", + "create.boiler.via_one_engine": "透過 1 個引擎", + "create.boiler.via_engines": "透過 %1$s 個引擎", - "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", - "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", - "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", - "create.gui.schedule.remove_entry": "UNLOCALIZED: Remove Action", - "create.gui.schedule.add_entry": "UNLOCALIZED: Add Action", - "create.gui.schedule.move_up": "UNLOCALIZED: Move up", - "create.gui.schedule.move_down": "UNLOCALIZED: Move down", - "create.gui.schedule.add_condition": "UNLOCALIZED: Add Condition", - "create.gui.schedule.alternative_condition": "UNLOCALIZED: Alternative Condition", + "create.gui.schedule.lmb_edit": "左鍵點擊編輯", + "create.gui.schedule.rmb_remove": "右鍵點擊移除", + "create.gui.schedule.duplicate": "複製", + "create.gui.schedule.remove_entry": "移除動作", + "create.gui.schedule.add_entry": "增加動作", + "create.gui.schedule.move_up": "上移", + "create.gui.schedule.move_down": "下移", + "create.gui.schedule.add_condition": "增加條件", + "create.gui.schedule.alternative_condition": "增加替代條件", - "create.schedule.instruction_type": "UNLOCALIZED: Next Action:", - "create.schedule.instruction.editor": "UNLOCALIZED: Instruction Editor", - "create.schedule.instruction.destination": "UNLOCALIZED: Travel to Station", - "create.schedule.instruction.destination.summary": "UNLOCALIZED: Next Stop:", - "create.schedule.instruction.filter_edit_box": "UNLOCALIZED: Station Name", - "create.schedule.instruction.filter_edit_box_1": "UNLOCALIZED: Use * as a text wildcard", - "create.schedule.instruction.filter_edit_box_2": "UNLOCALIZED: Example: 'My Station, Platform *'", - "create.schedule.instruction.filter_edit_box_3": "UNLOCALIZED: Train picks nearest unoccupied match", - "create.schedule.instruction.rename": "UNLOCALIZED: Update Schedule Title", - "create.schedule.instruction.rename.summary": "UNLOCALIZED: New Title:", - "create.schedule.instruction.name_edit_box": "UNLOCALIZED: Schedule Title", - "create.schedule.instruction.name_edit_box_1": "UNLOCALIZED: Affects text shown on displays", - "create.schedule.instruction.name_edit_box_2": "UNLOCALIZED: Defaults to next destination's name", - "create.schedule.instruction.throttle": "UNLOCALIZED: Limit Max Speed", - "create.schedule.instruction.throttle.summary": "UNLOCALIZED: Change Max Speed to %1$s", - "create.schedule.instruction.throttle_edit_box": "UNLOCALIZED: Throttle", - "create.schedule.instruction.throttle_edit_box_1": "UNLOCALIZED: Affects the top speed of the Train", - "create.schedule.condition_type": "UNLOCALIZED: Continue if/after:", - "create.schedule.condition.editor": "UNLOCALIZED: Condition Editor", - "create.schedule.condition.delay": "UNLOCALIZED: Scheduled Delay", - "create.schedule.condition.delay_short": "UNLOCALIZED: Wait: %1$s", - "create.schedule.condition.delay.status": "UNLOCALIZED: Departs in %1$s", - "create.schedule.condition.idle": "UNLOCALIZED: Cargo Inactivity", - "create.schedule.condition.idle_short": "UNLOCALIZED: Cargo Idle: %1$s", - "create.schedule.condition.idle.status": "UNLOCALIZED: Cargo Idle for %1$s", - "create.schedule.condition.for_x_time": "UNLOCALIZED: for %1$s", - "create.schedule.condition.unloaded": "UNLOCALIZED: Chunk Unloaded", - "create.schedule.condition.unloaded.status": "UNLOCALIZED: Waiting for chunk unload", - "create.schedule.condition.powered": "UNLOCALIZED: Station Powered", - "create.schedule.condition.powered.status": "UNLOCALIZED: Waiting for redstone", - "create.schedule.condition.time_of_day": "UNLOCALIZED: Time of Day", - "create.schedule.condition.time_of_day.scheduled": "UNLOCALIZED: Scheduled Time: %1$s", - "create.schedule.condition.time_of_day.digital_format": "UNLOCALIZED: %1$s:%3$s %4$s", - "create.schedule.condition.time_of_day.rotation": "UNLOCALIZED: Rotation", - "create.schedule.condition.time_of_day.rotation.every_24": "UNLOCALIZED: Every Day", - "create.schedule.condition.time_of_day.rotation.every_12": "UNLOCALIZED: Every 12:00", - "create.schedule.condition.time_of_day.rotation.every_6": "UNLOCALIZED: Every 6:00", - "create.schedule.condition.time_of_day.rotation.every_4": "UNLOCALIZED: Every 4:00", - "create.schedule.condition.time_of_day.rotation.every_3": "UNLOCALIZED: Every 3:00", - "create.schedule.condition.time_of_day.rotation.every_2": "UNLOCALIZED: Every 2:00", - "create.schedule.condition.time_of_day.rotation.every_1": "UNLOCALIZED: Every 1:00", - "create.schedule.condition.time_of_day.rotation.every_0_45": "UNLOCALIZED: Every 0:45", - "create.schedule.condition.time_of_day.rotation.every_0_30": "UNLOCALIZED: Every 0:30", - "create.schedule.condition.time_of_day.rotation.every_0_15": "UNLOCALIZED: Every 0:15", - "create.schedule.condition.time_of_day.status": "UNLOCALIZED: Departs at ", - "create.schedule.condition.threshold.train_holds": "UNLOCALIZED: Train holds %1$s", - "create.schedule.condition.threshold.greater": "UNLOCALIZED: more than", - "create.schedule.condition.threshold.less": "UNLOCALIZED: less than", - "create.schedule.condition.threshold.equal": "UNLOCALIZED: exactly", - "create.schedule.condition.threshold.x_units_of_item": "UNLOCALIZED: %1$s %2$s of %3$s", - "create.schedule.condition.threshold.matching_content": "UNLOCALIZED: Matching Content", - "create.schedule.condition.threshold.item_measure": "UNLOCALIZED: Item Measure", - "create.schedule.condition.threshold.items": "UNLOCALIZED: Items", - "create.schedule.condition.threshold.stacks": "UNLOCALIZED: Stacks", - "create.schedule.condition.threshold.buckets": "UNLOCALIZED: Buckets", - "create.schedule.condition.threshold.status": "UNLOCALIZED: Cargo: %1$s/%2$s %3$s", - "create.schedule.condition.threshold.place_item": "UNLOCALIZED: Reference Item", - "create.schedule.condition.threshold.place_item_2": "UNLOCALIZED: Filters can be used", - "create.schedule.condition.fluid_threshold": "UNLOCALIZED: Fluid Cargo Condition", - "create.schedule.condition.item_threshold": "UNLOCALIZED: Item Cargo Condition", - "create.schedule.condition.redstone_link": "UNLOCALIZED: Redstone Link", - "create.schedule.condition.redstone_link.status": "UNLOCALIZED: Waiting for redstone link", - "create.schedule.condition.redstone_link_on": "UNLOCALIZED: Link On", - "create.schedule.condition.redstone_link_off": "UNLOCALIZED: Link Off", - "create.schedule.condition.redstone_link.powered": "UNLOCALIZED: Powered", - "create.schedule.condition.redstone_link.unpowered": "UNLOCALIZED: Not powered", - "create.schedule.condition.redstone_link.frequency_state": "UNLOCALIZED: Frequency state:", - "create.schedule.condition.redstone_link.frequency_powered": "UNLOCALIZED: Frequency powered:", - "create.schedule.condition.redstone_link.frequency_unpowered": "UNLOCALIZED: Frequency not powered:", - "create.schedule.condition.player_count": "UNLOCALIZED: Players Seated", - "create.schedule.condition.player_count.summary": "UNLOCALIZED: %1$s Player", - "create.schedule.condition.player_count.summary_plural": "UNLOCALIZED: %1$s Players", - "create.schedule.condition.player_count.seated": "UNLOCALIZED: %1$s seated", - "create.schedule.condition.player_count.players": "UNLOCALIZED: Players", - "create.schedule.condition.player_count.condition": "UNLOCALIZED: Conditional", - "create.schedule.condition.player_count.exactly": "UNLOCALIZED: Exactly", - "create.schedule.condition.player_count.or_above": "UNLOCALIZED: Or above", - "create.schedule.condition.player_count.status": "UNLOCALIZED: Passengers: %1$s/%2$s", - "create.schedule.loop": "UNLOCALIZED: Loop Forever", - "create.schedule.loop1": "UNLOCALIZED: Schedule starts over", - "create.schedule.loop2": "UNLOCALIZED: when completed", - "create.schedule.reset": "UNLOCALIZED: Reset Progress", - "create.schedule.skip": "UNLOCALIZED: Skip current Stop", - "create.schedule.applied_to_train": "UNLOCALIZED: Train is now following this Schedule", - "create.schedule.non_controlling_seat": "UNLOCALIZED: Conductor needs to sit in front of a Controls block", - "create.schedule.remove_with_empty_hand": "UNLOCALIZED: Remove current Schedule with an Empty Hand", - "create.schedule.auto_removed_from_train": "UNLOCALIZED: Auto-Schedule discarded", - "create.schedule.removed_from_train": "UNLOCALIZED: Schedule retrieved from Train", - "create.schedule.no_stops": "UNLOCALIZED: This Schedule does not have any Stops yet", - "create.schedule.continued": "UNLOCALIZED: Schedule resumed", + "create.schedule.instruction_type": "下一步:", + "create.schedule.instruction.editor": "指令編輯器", + "create.schedule.instruction.destination": "駛至車站", + "create.schedule.instruction.destination.summary": "下一站:", + "create.schedule.instruction.filter_edit_box": "站名", + "create.schedule.instruction.filter_edit_box_1": "使用「*」做為萬用字元", + "create.schedule.instruction.filter_edit_box_2": "例如:「我的車站,月台*」", + "create.schedule.instruction.filter_edit_box_3": "火車會選擇最近且未被使用的月台", + "create.schedule.instruction.rename": "更新時刻表標題", + "create.schedule.instruction.rename.summary": "新標題:", + "create.schedule.instruction.name_edit_box": "時刻表標題", + "create.schedule.instruction.name_edit_box_1": "影響顯示板上的文字", + "create.schedule.instruction.name_edit_box_2": "預設為下一個目的地的名稱", + "create.schedule.instruction.throttle": "極速限制", + "create.schedule.instruction.throttle.summary": "調整極速為 %1$s", + "create.schedule.instruction.throttle_edit_box": "油門", + "create.schedule.instruction.throttle_edit_box_1": "影響火車的極速", + "create.schedule.condition_type": "如果/之後…繼續", + "create.schedule.condition.editor": "條件編輯器", + "create.schedule.condition.delay": "延遲", + "create.schedule.condition.delay_short": "等待:%1$s", + "create.schedule.condition.delay.status": "%1$s 後出發", + "create.schedule.condition.idle": "閒置貨物", + "create.schedule.condition.idle_short": "貨物閒置:%1$s", + "create.schedule.condition.idle.status": "貨物閒置 %1$s", + "create.schedule.condition.for_x_time": "%1$s", + "create.schedule.condition.unloaded": "區塊卸載", + "create.schedule.condition.unloaded.status": "等待區塊卸載", + "create.schedule.condition.powered": "車站充能", + "create.schedule.condition.powered.status": "等待紅石訊號", + "create.schedule.condition.time_of_day": "日中時刻", + "create.schedule.condition.time_of_day.scheduled": "規劃時間:%1$s", + "create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s", + "create.schedule.condition.time_of_day.rotation": "重複", + "create.schedule.condition.time_of_day.rotation.every_24": "每日", + "create.schedule.condition.time_of_day.rotation.every_12": "每 12 小時", + "create.schedule.condition.time_of_day.rotation.every_6": "每 6 小時", + "create.schedule.condition.time_of_day.rotation.every_4": "每 4 小時", + "create.schedule.condition.time_of_day.rotation.every_3": "每 3 小時", + "create.schedule.condition.time_of_day.rotation.every_2": "每 2 小時", + "create.schedule.condition.time_of_day.rotation.every_1": "每 1 小時", + "create.schedule.condition.time_of_day.rotation.every_0_45": "每 45 分鐘", + "create.schedule.condition.time_of_day.rotation.every_0_30": "每 30 分鐘", + "create.schedule.condition.time_of_day.rotation.every_0_15": "每 15 分鐘", + "create.schedule.condition.time_of_day.status": "發車於", + "create.schedule.condition.threshold.train_holds": "火車上有 %1$s", + "create.schedule.condition.threshold.greater": "多於", + "create.schedule.condition.threshold.less": "少於", + "create.schedule.condition.threshold.equal": "剛好", + "create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s", + "create.schedule.condition.threshold.matching_content": "比對內容", + "create.schedule.condition.threshold.item_measure": "物品單位", + "create.schedule.condition.threshold.items": "個", + "create.schedule.condition.threshold.stacks": "組", + "create.schedule.condition.threshold.buckets": "桶", + "create.schedule.condition.threshold.status": "貨物:%1$s/%2$s %3$s", + "create.schedule.condition.threshold.place_item": "參考物品", + "create.schedule.condition.threshold.place_item_2": "可以使用過濾器", + "create.schedule.condition.fluid_threshold": "流體貨物條件", + "create.schedule.condition.item_threshold": "物品貨物條件", + "create.schedule.condition.redstone_link": "無線紅石連接", + "create.schedule.condition.redstone_link.status": "等待無線紅石連接", + "create.schedule.condition.redstone_link_on": "連線開啟", + "create.schedule.condition.redstone_link_off": "連線關閉", + "create.schedule.condition.redstone_link.powered": "開啟", + "create.schedule.condition.redstone_link.unpowered": "關閉", + "create.schedule.condition.redstone_link.frequency_state": "頻道狀態:", + "create.schedule.condition.redstone_link.frequency_powered": "頻道開啟:", + "create.schedule.condition.redstone_link.frequency_unpowered": "頻道關閉:", + "create.schedule.condition.player_count": "玩家入座", + "create.schedule.condition.player_count.summary": "%1$s玩家", + "create.schedule.condition.player_count.summary_plural": "%1$s玩家", + "create.schedule.condition.player_count.seated": "%1$s入座", + "create.schedule.condition.player_count.players": "玩家", + "create.schedule.condition.player_count.condition": "條件", + "create.schedule.condition.player_count.exactly": "剛好", + "create.schedule.condition.player_count.or_above": "或以上", + "create.schedule.condition.player_count.status": "乘客:%1$s/%2$s", + "create.schedule.loop": "持續循環", + "create.schedule.loop1": "時刻表結束後", + "create.schedule.loop2": "重新開始", + "create.schedule.reset": "重置進程", + "create.schedule.skip": "跳過現在的步驟", + "create.schedule.applied_to_train": "火車現在正照表操課", + "create.schedule.non_controlling_seat": "司機員必須坐在火車控制台前", + "create.schedule.remove_with_empty_hand": "空手移除現在的時刻表", + "create.schedule.auto_removed_from_train": "自動時刻表被棄置", + "create.schedule.removed_from_train": "從火車回收時刻表", + "create.schedule.no_stops": "這份時刻表沒有設定任何停靠站", + "create.schedule.continued": "時刻表已重新開始", - "create.track.selection_cleared": "UNLOCALIZED: Selection Cleared", - "create.track.valid_connection": "UNLOCALIZED: Can Connect ✔", - "create.track.second_point": "UNLOCALIZED: Place track or select a second point", - "create.track.too_far": "UNLOCALIZED: Too far away", - "create.track.original_missing": "UNLOCALIZED: Original block removed, Sneak-click to reset", - "create.track.perpendicular": "UNLOCALIZED: Cannot connect perpendicularly", - "create.track.ascending_s_curve": "UNLOCALIZED: Cannot create sloped S-Bends", - "create.track.too_sharp": "UNLOCALIZED: Turn too sharp", - "create.track.too_steep": "UNLOCALIZED: Slope too steep", - "create.track.slope_turn": "UNLOCALIZED: Cannot enter or leave slope on a turn", - "create.track.opposing_slopes": "UNLOCALIZED: Cannot connect opposing slopes", - "create.track.leave_slope_ascending": "UNLOCALIZED: Cannot leave this slope while ascending", - "create.track.leave_slope_descending": "UNLOCALIZED: Cannot leave this slope while descending", - "create.track.turn_90": "UNLOCALIZED: Can only turn up to 90 Degrees", - "create.track.junction_start": "UNLOCALIZED: Cannot start connection from a Junction", - "create.track.turn_start": "UNLOCALIZED: Cannot start connection from a Turn", - "create.track.not_enough_tracks": "UNLOCALIZED: Not holding enough tracks", - "create.track.not_enough_pavement": "UNLOCALIZED: Not holding enough pavement blocks", + "create.track.selection_cleared": "已清除選擇區域", + "create.track.valid_connection": "可以連接", + "create.track.second_point": "鋪設火車軌道或選擇第二處", + "create.track.too_far": "距離過遠", + "create.track.original_missing": "原方塊已被移除,潛行點擊以重置", + "create.track.perpendicular": "無法垂直連接軌道", + "create.track.ascending_s_curve": "無法鋪設有坡度的S形彎", + "create.track.too_sharp": "曲率過高", + "create.track.too_steep": "斜率過高", + "create.track.slope_turn": "轉彎時無法進入或離開斜坡", + "create.track.opposing_slopes": "無法連接下斜方向相反的斜坡", + "create.track.leave_slope_ascending": "無法在上升時離開這個斜坡", + "create.track.leave_slope_descending": "無法在下降時離開這個斜坡", + "create.track.turn_90": "單個彎最多只能轉 90 度", + "create.track.junction_start": "無法從道岔開始連接", + "create.track.turn_start": "無法從彎道開始連結", + "create.track.not_enough_tracks": "火車軌道不足", + "create.track.not_enough_pavement": "基座方塊不足", - "create.portal_track.failed": "UNLOCALIZED: Cannot place portal track:", - "create.portal_track.missing": "UNLOCALIZED: Target portal not generated yet", - "create.portal_track.blocked": "UNLOCALIZED: Target location blocked (%1$s,%2$s,%3$s)", + "create.portal_track.failed": "無法鋪設傳送門軌道:", + "create.portal_track.missing": "對向傳送門尚未生成", + "create.portal_track.blocked": "對向位址被堵塞 (%1$s,%2$s,%3$s)", - "create.station.idle": "UNLOCALIZED: Station is Idle", - "create.station.assembly_title": "UNLOCALIZED: Train Assembly", - "create.station.close": "UNLOCALIZED: Close Window", - "create.station.cancel": "UNLOCALIZED: Cancel Assembly", - "create.station.failed": "UNLOCALIZED: Assembly Failed", - "create.station.icon_type": "UNLOCALIZED: Icon Type", - "create.station.create_train": "UNLOCALIZED: Create new Train", - "create.station.assemble_train": "UNLOCALIZED: Assemble Train", - "create.station.disassemble_train": "UNLOCALIZED: Disassemble Train", - "create.station.remove_schedule": "UNLOCALIZED: Retrieve Schedule", - "create.station.remove_auto_schedule": "UNLOCALIZED: Discard Auto-Schedule", - "create.station.no_assembly_diagonal": "UNLOCALIZED: Cannot build trains", - "create.station.no_assembly_diagonal_1": "UNLOCALIZED: on diagonal tracks", - "create.station.no_assembly_curve": "UNLOCALIZED: Cannot build trains", - "create.station.no_assembly_curve_1": "UNLOCALIZED: on curved tracks", - "create.station.train_not_aligned": "UNLOCALIZED: Cannot disassemble,", - "create.station.train_not_aligned_1": "UNLOCALIZED: not all carriages aligned", - "create.station.carriage_number": "UNLOCALIZED: Carriage %1$s:", - "create.station.retry": "UNLOCALIZED: Resolve this and retry", - "create.station.no_bogeys": "UNLOCALIZED: No Bogeys", - "create.station.one_bogey": "UNLOCALIZED: 1 Bogey", - "create.station.more_bogeys": "UNLOCALIZED: %1$s Bogeys", - "create.station.how_to": "UNLOCALIZED: Use Train Casing on highlighted Tracks to create bogeys.", - "create.station.how_to_1": "UNLOCALIZED: Remove bogeys by breaking the block on top.", - "create.station.how_to_2": "UNLOCALIZED: Build carriages attached to one or two bogeys each.", + "create.station.idle": "車站閒置中", + "create.station.assembly_title": "組裝火車", + "create.station.close": "關閉視窗", + "create.station.cancel": "取消組裝", + "create.station.failed": "組裝失敗", + "create.station.icon_type": "圖樣類型", + "create.station.create_train": "創建新火車", + "create.station.assemble_train": "組裝火車", + "create.station.disassemble_train": "拆解火車", + "create.station.remove_schedule": "回收時刻表", + "create.station.remove_auto_schedule": "棄置自動時刻表", + "create.station.no_assembly_diagonal": "無法在對角線軌道上", + "create.station.no_assembly_diagonal_1": "組裝火車", + "create.station.no_assembly_curve": "無法在彎道上", + "create.station.no_assembly_curve_1": "組裝火車", + "create.station.train_not_aligned": "仍有車廂未對齊", + "create.station.train_not_aligned_1": "無法拆解", + "create.station.carriage_number": "車廂 %1$s:", + "create.station.retry": "解決問題並重新嘗試", + "create.station.no_bogeys": "無轉向架", + "create.station.one_bogey": "一座轉向架", + "create.station.more_bogeys": "%1$s 座轉向架", + "create.station.how_to": "在加亮軌道上放置火車機殼以創建轉向架", + "create.station.how_to_1": "破壞轉向架上方的方塊以移除轉向架", + "create.station.how_to_2": "搭建車廂時每個車廂都須與一或二座轉向架連接", - "create.train_assembly.too_many_bogeys": "UNLOCALIZED: Too many Bogeys attached: %1$s", - "create.train_assembly.frontmost_bogey_at_station": "UNLOCALIZED: Frontmost Bogey must be at Station Marker", - "create.train_assembly.no_bogeys": "UNLOCALIZED: No Bogeys Found", - "create.train_assembly.not_connected_in_order": "UNLOCALIZED: Bogeys are not connected in order", - "create.train_assembly.bogeys_too_close": "UNLOCALIZED: Bogeys %1$s and %2$s are too close to each other", - "create.train_assembly.single_bogey_carriage": "UNLOCALIZED: This Bogey type cannot support a carriage on its own", - "create.train_assembly.nothing_attached": "UNLOCALIZED: No structure attached to Bogey %1$s", - "create.train_assembly.no_controls": "UNLOCALIZED: At least one forward-facing controls block needs to be mounted on the train", - "create.train_assembly.sideways_controls": "UNLOCALIZED: A mounted controls block is facing sideways", - "create.train_assembly.bogey_created": "UNLOCALIZED: Bogey created. Click again to cycle type", - "create.train_assembly.requires_casing": "UNLOCALIZED: Use Railway Casing to create bogeys on tracks", + "create.train_assembly.too_many_bogeys": "轉向架連接過多:%1$s", + "create.train_assembly.frontmost_bogey_at_station": "最前方的轉向架需位於車站標記處", + "create.train_assembly.no_bogeys": "找無轉向架", + "create.train_assembly.not_connected_in_order": "轉向架未按順序連接", + "create.train_assembly.bogeys_too_close": "轉向架 %1$s 及 %2$s 距離過近", + "create.train_assembly.single_bogey_carriage": "這類轉向架無法單獨支撐一個車廂", + "create.train_assembly.nothing_attached": "沒有任何結構連接到轉向架 %1$s", + "create.train_assembly.no_controls": "火車上需安裝至少一個面向前方的火車控制台", + "create.train_assembly.sideways_controls": "某個已安裝的火車控制台面向火車側面", + "create.train_assembly.bogey_created": "已創建轉向架,再度點擊以循環改變種類", + "create.train_assembly.requires_casing": "在軌道上放置火車機殼以創建轉向架", - "create.track_target.set": "UNLOCALIZED: Targeted track selected", - "create.track_target.success": "UNLOCALIZED: Successfully bound to targeted track", - "create.track_target.clear": "UNLOCALIZED: Cleared track selection", - "create.track_target.missing": "UNLOCALIZED: Right-click the targeted train track first", - "create.track_target.too_far": "UNLOCALIZED: Targeted track is too far from here", - "create.track_target.no_junctions": "UNLOCALIZED: Targeted track cannot be an intersection", - "create.track_target.occupied": "UNLOCALIZED: Targeted track is occupied", - "create.track_target.invalid": "UNLOCALIZED: Cannot target this track here", + "create.track_target.set": "已選擇目標軌道", + "create.track_target.success": "成功綁定目標軌道", + "create.track_target.clear": "已清除選擇的軌道", + "create.track_target.missing": "先對目標火車軌道點擊右鍵", + "create.track_target.too_far": "目標軌道距離此處過遠", + "create.track_target.no_junctions": "目標軌道不能是道岔", + "create.track_target.occupied": "目標軌道被占用", + "create.track_target.invalid": "無法在此定位該軌道", - "create.train.unnamed": "UNLOCALIZED: Unnamed Train", - "create.train.cannot_relocate_moving": "UNLOCALIZED: Cannot relocate a moving Train", - "create.train.relocate": "UNLOCALIZED: Click a Track to Relocate %1$s to. Sneak-Click to abort", - "create.train.relocate.abort": "UNLOCALIZED: Relocation aborted", - "create.train.relocate.success": "UNLOCALIZED: Relocation successful", - "create.train.relocate.valid": "UNLOCALIZED: Can relocate to here, Click to Confirm", - "create.train.relocate.invalid": "UNLOCALIZED: Cannot relocate Train to here", - "create.train.relocate.too_far": "UNLOCALIZED: Cannot relocate Train this far away", - "create.train.departing_from": "UNLOCALIZED: Departing from %1$s", - "create.train.arrived_at": "UNLOCALIZED: Arrived at %1$s", - "create.train.status": "UNLOCALIZED: Information about Train: %1$s", - "create.train.status.back_on_track": "UNLOCALIZED: Train is back on Track", - "create.train.status.collision": "UNLOCALIZED: Collision with other Train", - "create.train.status.end_of_track": "UNLOCALIZED: A Carriage has reached the end of its Track", - "create.train.status.double_portal": "UNLOCALIZED: A Carriage cannot enter a portal whilst leaving another", - "create.train.status.coupling_stress": "UNLOCALIZED: Forced stop due to Stress on Couplings", - "create.train.status.track_missing": "UNLOCALIZED: Tracks are missing beneath the Train", - "create.train.status.paused_for_manual": "UNLOCALIZED: Schedule paused for manual controls", - "create.train.status.opposite_driver": "UNLOCALIZED: Path requires a driver facing the opposite direction", - "create.train.status.missing_driver": "UNLOCALIZED: Driver has gone missing", - "create.train.status.found_driver": "UNLOCALIZED: A new driver has been found", - "create.train.status.navigation_success": "UNLOCALIZED: Navigation succeeded", - "create.train.status.no_match": "UNLOCALIZED: No station on graph matches '%1$s'", - "create.train.status.no_path": "UNLOCALIZED: No suitable path to the next Scheduled destination could be found", + "create.train.unnamed": "未命名火車", + "create.train.cannot_relocate_moving": "無法重新設置移動中的火車", + "create.train.relocate": "點擊軌道以重新設置 %1$s,潛行點擊則取消", + "create.train.relocate.abort": "重新設置被取消", + "create.train.relocate.success": "重新設置成功", + "create.train.relocate.valid": "火車可重新設置於此,點擊確認", + "create.train.relocate.invalid": "無法重新設置火車於此", + "create.train.relocate.too_far": "無法重新設置火車於過遠的位置", + "create.train.departing_from": "自 %1$s 發車", + "create.train.arrived_at": "抵達 %1$s", + "create.train.status": " 火車資訊:%1$s", + "create.train.status.back_on_track": "火車已回到軌道上", + "create.train.status.collision": "與其他火車相撞", + "create.train.status.end_of_track": "車廂已至軌道末端", + "create.train.status.double_portal": "車廂不能同時進入與離開傳送門", + "create.train.status.coupling_stress": "因連結器受壓,火車已被強制停止", + "create.train.status.track_missing": "火車下方無軌道", + "create.train.status.paused_for_manual": "時刻表暫停運作,手動控制中", + "create.train.status.opposite_driver": "路線需要司機員面向反方向", + "create.train.status.missing_driver": "司機員失蹤", + "create.train.status.found_driver": "已找到新的司機員", + "create.train.status.navigation_success": "導航成功", + "create.train.status.no_match": "圖上無符合「%1$s」的車站", + "create.train.status.no_path": "找無通往下個目的地的路線", - "create.track_signal.cannot_change_mode": "UNLOCALIZED: Unable to switch mode of this Signal", - "create.track_signal.mode_change.entry_signal": "UNLOCALIZED: -> Allow passage if section unoccupied", - "create.track_signal.mode_change.cross_signal": "UNLOCALIZED: -> Allow passage if section fully traversable", + "create.track_signal.cannot_change_mode": "無法切換訊號模式", + "create.track_signal.mode_change.entry_signal": "-> 若區間未被占用則允許通行", + "create.track_signal.mode_change.cross_signal": "-> 若區間可穿越則允許通行", - "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", - "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", - "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.start_controlling": "正在控制:%1$s", + "create.contraption.controls.stop_controlling": "停止控制裝置", + "create.contraption.controls.approach_station": "按住 %1$s 以接近 %2$s", - "create.display_link.set": "UNLOCALIZED: Targeted position selected", - "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", - "create.display_link.clear": "UNLOCALIZED: Cleared position selection", - "create.display_link.too_far": "UNLOCALIZED: Targeted position is too far from here", - "create.display_link.invalid": "UNLOCALIZED: Link has no valid target, try placing it again", - "create.display_link.title": "UNLOCALIZED: Display Link", - "create.display_link.no_source": "UNLOCALIZED: Not a Display Source", - "create.display_link.no_target": "UNLOCALIZED: Not a Display Target", - "create.display_link.reading_from": "UNLOCALIZED: Read from:", - "create.display_link.writing_to": "UNLOCALIZED: Send to:", - "create.display_link.attached_side": "UNLOCALIZED: Block on attached side", - "create.display_link.targeted_location": "UNLOCALIZED: Block in targeted location", - "create.display_link.view_compatible": "UNLOCALIZED: Click to view all Compatible", - "create.display_link.information_type": "UNLOCALIZED: Type of Information", - "create.display_link.display_on": "UNLOCALIZED: Write data to:", - "create.display_link.display_on_multiline": "UNLOCALIZED: Start writing at:", + "create.display_link.set": "已選定目標位置", + "create.display_link.success": "成功綁定到目標位置", + "create.display_link.clear": "清除位置選擇", + "create.display_link.too_far": "目標位置離這裡太遠", + "create.display_link.invalid": "鏈路沒有有效的目標,請嘗試重新放置", + "create.display_link.title": "連接鏈路", + "create.display_link.no_source": "非訊號源", + "create.display_link.no_target": "非訊號目標", + "create.display_link.reading_from": "讀取自:", + "create.display_link.writing_to": "發送到:", + "create.display_link.attached_side": "在接收側的方塊", + "create.display_link.targeted_location": "在目標位置的方塊", + "create.display_link.view_compatible": "點擊查看所有相容項目", + "create.display_link.information_type": "訊息類型", + "create.display_link.display_on": "將數據寫入:", + "create.display_link.display_on_multiline": "首行發送到:", - "create.display_source.label": "UNLOCALIZED: Attached Label", - "create.display_source.combine_item_names": "UNLOCALIZED: Combine Item Names", - "create.display_source.count_items": "UNLOCALIZED: Amount of matching Items", - "create.display_source.list_items": "UNLOCALIZED: List matching Items", - "create.display_source.fluid_amount": "UNLOCALIZED: Amount of matching Fluids", - "create.display_source.list_fluids": "UNLOCALIZED: List matching Fluids", - "create.display_source.nixie_tube": "UNLOCALIZED: Copy Nixie Tubes", - "create.display_source.fill_level": "UNLOCALIZED: Container Fill Level", - "create.display_source.fill_level.display": "UNLOCALIZED: Display Format", - "create.display_source.fill_level.percent": "UNLOCALIZED: Percent", - "create.display_source.fill_level.progress_bar": "UNLOCALIZED: Progress Bar", - "create.display_source.value_list.display": "UNLOCALIZED: Value Display", - "create.display_source.value_list.shortened": "UNLOCALIZED: Shortened", - "create.display_source.value_list.full_number": "UNLOCALIZED: Full Number", - "create.display_source.value_list.thousand": "UNLOCALIZED: k", - "create.display_source.value_list.million": "UNLOCALIZED: m", - "create.display_source.player_deaths": "UNLOCALIZED: Player Deaths", - "create.display_source.scoreboard": "UNLOCALIZED: Scoreboard", - "create.display_source.scoreboard.objective": "UNLOCALIZED: Objective ID", - "create.display_source.scoreboard.objective_not_found": "UNLOCALIZED: '%1$s' not found", - "create.display_source.scoreboard.objective.deaths": "UNLOCALIZED: Player Deaths", - "create.display_source.time_of_day": "UNLOCALIZED: Time of Day", - "create.display_source.stop_watch": "UNLOCALIZED: Stopwatch", - "create.display_source.time.format": "UNLOCALIZED: Time Format", - "create.display_source.time.12_hour": "UNLOCALIZED: 12-hour", - "create.display_source.time.24_hour": "UNLOCALIZED: 24-hour", - "create.display_source.accumulate_items": "UNLOCALIZED: Accumulate Item Count", - "create.display_source.item_throughput": "UNLOCALIZED: Item Throughput", - "create.display_source.item_throughput.interval": "UNLOCALIZED: Interval", - "create.display_source.item_throughput.interval.second": "UNLOCALIZED: per Second", - "create.display_source.item_throughput.interval.minute": "UNLOCALIZED: per Minute", - "create.display_source.item_throughput.interval.hour": "UNLOCALIZED: per Hour", - "create.display_source.train_status": "UNLOCALIZED: Train Schedule Status", - "create.display_source.station_summary": "UNLOCALIZED: Train Station Summary", - "create.display_source.station_summary.filter": "UNLOCALIZED: Station name filter", - "create.display_source.station_summary.train_name_column": "UNLOCALIZED: Train column size", - "create.display_source.station_summary.platform_column": "UNLOCALIZED: Platform column size", - "create.display_source.station_summary.now": "UNLOCALIZED: now", - "create.display_source.station_summary.minutes": "UNLOCALIZED: min", - "create.display_source.station_summary.seconds": "UNLOCALIZED: %1$ss", - "create.display_source.observed_train_name": "UNLOCALIZED: Detected Train Name", - "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", - "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", - "create.display_source.entity_name": "UNLOCALIZED: Entity Name", - "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", - "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", - "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", - "create.display_source.kinetic_stress": "UNLOCALIZED: Network Stress", - "create.display_source.kinetic_stress.display": "UNLOCALIZED: Displayed Info", - "create.display_source.kinetic_stress.progress_bar": "UNLOCALIZED: Progress Bar", - "create.display_source.kinetic_stress.percent": "UNLOCALIZED: Percentage", - "create.display_source.kinetic_stress.current": "UNLOCALIZED: Stress in SU", - "create.display_source.kinetic_stress.max": "UNLOCALIZED: Total Capacity", - "create.display_source.kinetic_stress.remaining": "UNLOCALIZED: Remaining SU", - "create.display_source.redstone_power": "UNLOCALIZED: Redstone Power", - "create.display_source.redstone_power.display": "UNLOCALIZED: Display Format", - "create.display_source.redstone_power.number": "UNLOCALIZED: Number", - "create.display_source.redstone_power.progress_bar": "UNLOCALIZED: Progress Bar", - "create.display_source.boiler.not_enough_space": "UNLOCALIZED: Not enough space ", - "create.display_source.boiler.for_boiler_status": "UNLOCALIZED: for Boiler Status", + "create.display_source.label": "添加標籤", + "create.display_source.combine_item_names": "內含的物件名稱", + "create.display_source.count_items": "匹配的物品總量", + "create.display_source.list_items": "匹配的物品清單", + "create.display_source.fluid_amount": "匹配的流體總量", + "create.display_source.list_fluids": "匹配的流體清單", + "create.display_source.nixie_tube": "複製文字", + "create.display_source.fill_level": "容器充填程度", + "create.display_source.fill_level.display": "顯示格式", + "create.display_source.fill_level.percent": "百分比", + "create.display_source.fill_level.progress_bar": "進度條", + "create.display_source.value_list.display": "數值格式", + "create.display_source.value_list.shortened": "精簡", + "create.display_source.value_list.full_number": "完整", + "create.display_source.value_list.thousand": "k", + "create.display_source.value_list.million": "m", + "create.display_source.player_deaths": "玩家死亡次數", + "create.display_source.scoreboard": "計分板", + "create.display_source.scoreboard.objective": "計分項 ID", + "create.display_source.scoreboard.objective_not_found": "找不到 「%1$s」", + "create.display_source.scoreboard.objective.deaths": "玩家死亡次數", + "create.display_source.time_of_day": "當日時間", + "create.display_source.stop_watch": "碼表", + "create.display_source.time.format": "時間格式", + "create.display_source.time.12_hour": "12小時制", + "create.display_source.time.24_hour": "24小時制", + "create.display_source.accumulate_items": "累積物品數量", + "create.display_source.item_throughput": "物品吞吐量", + "create.display_source.item_throughput.interval": "間隔", + "create.display_source.item_throughput.interval.second": "每秒", + "create.display_source.item_throughput.interval.minute": "每分鐘", + "create.display_source.item_throughput.interval.hour": "每小時", + "create.display_source.train_status": "火車時刻表資訊", + "create.display_source.station_summary": "火車站點概要", + "create.display_source.station_summary.filter": "站名過濾器", + "create.display_source.station_summary.train_name_column": "火車判定尺寸", + "create.display_source.station_summary.platform_column": "月台判定尺寸", + "create.display_source.station_summary.now": "到站", + "create.display_source.station_summary.minutes": " 分鐘", + "create.display_source.station_summary.seconds": "%1$s 秒", + "create.display_source.observed_train_name": "檢測到的火車名稱", + "create.display_source.max_enchant_level": "最大附魔費用", + "create.display_source.boiler_status": "鍋爐狀態", + "create.display_source.entity_name": "實體名稱", + "create.display_source.kinetic_speed": "轉速 (RPM)", + "create.display_source.kinetic_speed.absolute": "無視轉向", + "create.display_source.kinetic_speed.directional": "顯示轉向", + "create.display_source.kinetic_stress": "網路負荷", + "create.display_source.kinetic_stress.display": "顯示訊息", + "create.display_source.kinetic_stress.progress_bar": "進度條", + "create.display_source.kinetic_stress.percent": "百分比", + "create.display_source.kinetic_stress.current": "動能負荷", + "create.display_source.kinetic_stress.max": "總能量", + "create.display_source.kinetic_stress.remaining": "剩餘動能", + "create.display_source.redstone_power": "紅石訊號強度", + "create.display_source.redstone_power.display": "顯示格式", + "create.display_source.redstone_power.number": "數值", + "create.display_source.redstone_power.progress_bar": "進度條", + "create.display_source.boiler.not_enough_space": "空間不足", + "create.display_source.boiler.for_boiler_status": "以顯示鍋爐狀態", - "create.display_target.line": "UNLOCALIZED: Line %1$s", - "create.display_target.page": "UNLOCALIZED: Page %1$s", - "create.display_target.single_line": "UNLOCALIZED: Single Line", + "create.display_target.line": "第 %1$s 行", + "create.display_target.page": "第 %1$s 頁", + "create.display_target.single_line": "單行", - "create.flap_display.cycles.alphabet": "UNLOCALIZED: ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", - "create.flap_display.cycles.numeric": "UNLOCALIZED: ;0;1;2;3;4;5;6;7;8;9", - "create.flap_display.cycles.arrival_time": "UNLOCALIZED: ; min;now;15s;30s;45s", - "create.flap_display.cycles.shortened_numbers": "UNLOCALIZED: ;K;M", - "create.flap_display.cycles.fluid_units": "UNLOCALIZED: mB;B ", - "create.flap_display.cycles.instant": "UNLOCALIZED: ; ", - "create.flap_display.cycles.pixel": "UNLOCALIZED: █;▓;▒", + "create.flap_display.cycles.alphabet": " ;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;X;Y;Z", + "create.flap_display.cycles.numeric": " ;0;1;2;3;4;5;6;7;8;9", + "create.flap_display.cycles.arrival_time": " ; min;now;15s;30s;45s", + "create.flap_display.cycles.shortened_numbers": " ;K;M", + "create.flap_display.cycles.fluid_units": "mB;B ", + "create.flap_display.cycles.instant": " ; ", + "create.flap_display.cycles.pixel": "█;▓;?", - "create.super_glue.too_far": "UNLOCALIZED: Selected area is too big", - "create.super_glue.cannot_reach": "UNLOCALIZED: Selected blocks must be connected", - "create.super_glue.click_to_confirm": "UNLOCALIZED: Click again to confirm", - "create.super_glue.click_to_discard": "UNLOCALIZED: Sneak-click to discard selection", - "create.super_glue.first_pos": "UNLOCALIZED: First position selected", - "create.super_glue.abort": "UNLOCALIZED: Selection discarded", - "create.super_glue.not_enough": "UNLOCALIZED: Not enough glue in inventory", - "create.super_glue.success": "UNLOCALIZED: Applying Glue...", + "create.super_glue.too_far": "選取的區域過大", + "create.super_glue.cannot_reach": "選取的方塊必須連通", + "create.super_glue.click_to_confirm": "再度點擊以確認", + "create.super_glue.click_to_discard": "潛行右鍵以放棄選取", + "create.super_glue.first_pos": "已選取第一個位置", + "create.super_glue.abort": "放棄選取", + "create.super_glue.not_enough": "庫存中沒有足夠的強力膠", + "create.super_glue.success": "塗抹強力膠…", "create.gui.config.overlay1": "嗨 :)", "create.gui.config.overlay2": "這是一個實例層", "create.gui.config.overlay3": "點擊拖拽你的滑鼠", "create.gui.config.overlay4": "來將它移動到前方", - "create.gui.config.overlay5": "ESC退出目前介面", + "create.gui.config.overlay5": "ESC 退出目前介面", "create.gui.config.overlay6": "並儲存新的位置", - "create.gui.config.overlay7": "輸入/create overlay reset", - "create.gui.config.overlay8": "重置到預設位置", + "create.gui.config.overlay7": "輸入 /create overlay reset", + "create.gui.config.overlay8": "重設到預設位置", "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 伺服器每秒TICK被降為 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 伺服器現在每秒TICK被降為 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 伺服器現在不延遲了,TPS正常 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 來讓伺服器的TPS速度恢復正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 來手動降低伺服器TPS", - "create.command.killTPSCommand.argument.tickTime": "tickTime", + "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 伺服器每秒 tick 被降為 %s ms :o", + "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 伺服器現在每秒 tick 被降為 >:)", + "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 伺服器現在不延遲了,fps 正常 :D", + "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 來讓伺服器的 fps 速度恢復正常", + "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 來手動降低伺服器 fps", + "create.command.killTPSCommand.argument.tickTime": "TickTime", "create.contraption.minecart_contraption_too_big": "這個礦車結構太大了而無法撿取", "create.contraption.minecart_contraption_illegal_pickup": "一股神秘的力量將這個礦車結構與世界綁在一起", @@ -1751,46 +1751,46 @@ "create.subtitle.contraption_disassemble": "結構停止", "create.subtitle.peculiar_bell_use": "黃銅鐘聲", "create.subtitle.worldshaper_place": "地形塑造器發射聲", - "create.subtitle.whistle_train_manual": "UNLOCALIZED: Train honks", - "create.subtitle.steam": "UNLOCALIZED: Steam noises", - "create.subtitle.saw_activate_stone": "機械鋸子聲", + "create.subtitle.whistle_train_manual": "火車汽笛聲", + "create.subtitle.steam": "蒸氣聲", + "create.subtitle.saw_activate_stone": "機械圓鋸機聲", "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", "create.subtitle.crafter_craft": "機械合成器合成聲", "create.subtitle.wrench_remove": "零件移除聲", - "create.subtitle.train3": "UNLOCALIZED: Bogey wheels rumble muffled", - "create.subtitle.whistle": "UNLOCALIZED: Whistling", + "create.subtitle.train3": "轉向架的車輪隆隆作響", + "create.subtitle.whistle": "汽笛聲", "create.subtitle.cogs": "齒輪隆隆聲", "create.subtitle.slime_added": "黏液擠壓", - "create.subtitle.whistle_train_low": "UNLOCALIZED: Low whistling", + "create.subtitle.whistle_train_low": "汽笛低嘯", "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", "create.subtitle.controller_take": "拿下遙控器", "create.subtitle.crafter_click": "機械合成器工作聲", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", + "create.subtitle.depot_plop": "物品著地", + "create.subtitle.confirm": "接受提示聲", "create.subtitle.mixing": "攪拌機噪音", "create.subtitle.mechanical_press_activation_belt": "液壓機工作", "create.subtitle.fwoomp": "馬鈴薯大砲發射", - "create.subtitle.sanding_long": "UNLOCALIZED: Sanding noises", - "create.subtitle.crushing_1": "粉碎機咀嚼聲", + "create.subtitle.sanding_long": "打磨的聲響", + "create.subtitle.crushing_1": "粉碎的聲響", "create.subtitle.depot_slide": "物品滑動聲", - "create.subtitle.blaze_munch": "烈焰使者開心地吃著", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel flaps", + "create.subtitle.blaze_munch": "烈焰使者咀嚼聲", + "create.subtitle.funnel_flap": "垂簾拍打", "create.subtitle.haunted_bell_use": "靈魂鐘敲響", "create.subtitle.scroll_value": "滾動輸入聲", "create.subtitle.controller_put": "遙控器放置聲", "create.subtitle.cranking": "手搖把手轉動聲", - "create.subtitle.sanding_short": "UNLOCALIZED: Sanding noises", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", + "create.subtitle.sanding_short": "打磨的聲響", + "create.subtitle.wrench_rotate": "使用扳手", "create.subtitle.potato_hit": "食物撞擊聲", - "create.subtitle.saw_activate_wood": "機械鋸子運作聲", - "create.subtitle.whistle_high": "UNLOCALIZED: High whistling", - "create.subtitle.whistle_train_manual_low": "UNLOCALIZED: Train honks", - "create.subtitle.whistle_train": "UNLOCALIZED: Whistling", + "create.subtitle.saw_activate_wood": "機械圓鋸機運作聲", + "create.subtitle.whistle_high": "汽笛高嘯", + "create.subtitle.whistle_train_manual_low": "火車汽笛聲", + "create.subtitle.whistle_train": "汽笛聲", "create.subtitle.haunted_bell_convert": "靈魂鐘轉化聲", - "create.subtitle.train": "UNLOCALIZED: Bogey wheels rumble", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", + "create.subtitle.train": "轉向架的車輪隆隆作響", + "create.subtitle.deny": "故障聲", "create.subtitle.controller_click": "遙控器按鍵聲", - "create.subtitle.whistle_low": "UNLOCALIZED: Low whistling", + "create.subtitle.whistle_low": "汽笛低嘯", "create.subtitle.copper_armor_equip": "潛水裝裝備聲", "create.subtitle.mechanical_press_activation": "液壓機工作", "create.subtitle.contraption_assemble": "結構移動", @@ -1801,30 +1801,30 @@ "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this。(behaviours show on shift)", + "item.create.example_item.tooltip.behaviour1": "Then this item does this(behaviours show on shift)", "item.create.example_item.tooltip.condition2": "And When this", "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", "item.create.example_item.tooltip.control1": "When Ctrl pressed", "item.create.example_item.tooltip.action1": "These controls are displayed.", "block.create.wooden_bracket.tooltip": "木製支架", - "block.create.wooden_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", + "block.create.wooden_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_", "block.create.metal_bracket.tooltip": "金屬支架", - "block.create.metal_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", + "block.create.metal_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_", "block.create.seat.tooltip": "坐墊", - "block.create.seat.tooltip.summary": "坐下來享受旅程吧!坐墊將會把玩家固定在一個移動裝置上。也可以用來作為居家裝飾,畢竟他有許多顏色。", + "block.create.seat.tooltip.summary": "坐下來享受旅程吧!坐墊將會把玩家固定在一個移動裝置上,也可以用來作為居家裝飾,畢竟他有許多顏色", "block.create.seat.tooltip.condition1": "對坐墊右鍵", - "block.create.seat.tooltip.behaviour1": "玩家將坐在_坐墊_上,Left-Shift可離開_坐墊_。", + "block.create.seat.tooltip.behaviour1": "玩家將坐在_坐墊_上,按左側 Shift 可離開_坐墊_", "item.create.blaze_cake.tooltip": "熔岩蛋糕", - "item.create.blaze_cake.tooltip.summary": "對辛苦的_烈焰使者_的美味款待。讓他們興奮起來吧!", + "item.create.blaze_cake.tooltip.summary": "為您辛勤工作的_烈焰使者_提供美味佳餚。讓牠們興奮起來吧!", "item.create.wand_of_symmetry.tooltip": "對稱杖", - "item.create.wand_of_symmetry.tooltip.summary": "完美地鏡面復制工作區域內的方塊放置於破壞", - "item.create.wand_of_symmetry.tooltip.condition1": "當在熱鍵欄時", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持續進行鏡面復制", + "item.create.wand_of_symmetry.tooltip.summary": "完美地鏡面複製工作區域內的方塊放置於破壞", + "item.create.wand_of_symmetry.tooltip.condition1": "當在快捷欄時", + "item.create.wand_of_symmetry.tooltip.behaviour1": "持續進行鏡面複製", "item.create.wand_of_symmetry.tooltip.control1": "當右鍵地面時", "item.create.wand_of_symmetry.tooltip.action1": "_創建_或_移動_鏡子", "item.create.wand_of_symmetry.tooltip.control2": "當右鍵空氣時", @@ -1832,26 +1832,26 @@ "item.create.wand_of_symmetry.tooltip.control3": "當潛行右鍵時", "item.create.wand_of_symmetry.tooltip.action3": "打開_gui介面_", - "item.create.handheld_worldshaper.tooltip": "環境塑形器", - "item.create.handheld_worldshaper.tooltip.summary": "_大面積_更改地形的手持工具", + "item.create.handheld_worldshaper.tooltip": "地形雕塑器", + "item.create.handheld_worldshaper.tooltip.summary": "用於創造_景觀_和_地形特徵_的便利工具", "item.create.handheld_worldshaper.tooltip.control1": "當左鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action1": "設定放置此方塊", + "item.create.handheld_worldshaper.tooltip.action1": "將地形雕塑器放置的方塊設定為所選的方塊", "item.create.handheld_worldshaper.tooltip.control2": "當右鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替換_目標方塊", + "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替換_所選的方塊", "item.create.handheld_worldshaper.tooltip.control3": "當潛行右鍵時", - "item.create.handheld_worldshaper.tooltip.action3": "打開工具的_gui介面_", + "item.create.handheld_worldshaper.tooltip.action3": "打開_操作介面_", "item.create.tree_fertilizer.tooltip": "樹木肥料", "item.create.tree_fertilizer.tooltip.summary": "適用來常見樹木的快速肥料", - "item.create.tree_fertilizer.tooltip.condition1": "在樹苗上使用時", + "item.create.tree_fertilizer.tooltip.condition1": "對樹苗使用時", "item.create.tree_fertilizer.tooltip.behaviour1": "無論_生長時間_多少,直接長大", "item.create.extendo_grip.tooltip": "伸縮機械手", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_。", + "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_", "item.create.extendo_grip.tooltip.condition1": "放置於副手欄時", - "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_。", + "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_", "item.create.extendo_grip.tooltip.condition2": "當裝備銅製後背包時", - "item.create.extendo_grip.tooltip.behaviour2": "_不會消耗耐久_ 但是會抽取銅製後背包裡的_壓縮空氣_", + "item.create.extendo_grip.tooltip.behaviour2": "_不會消耗耐久_,但是會抽取銅製後背包裡的_壓縮空氣_", "item.create.potato_cannon.tooltip": "馬鈴薯大砲", "item.create.potato_cannon.tooltip.summary": "噗~碰!用你種的蔬菜來攻擊敵人。可以用_銅製後背包_的壓縮空氣驅動", @@ -1861,143 +1861,143 @@ "item.create.potato_cannon.tooltip.behaviour2": "_不會消耗耐久_ 但是會抽取銅製後背包裡的_壓縮空氣_", "item.create.filter.tooltip": "過濾器", - "item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用。", - "item.create.filter.tooltip.condition1": "放置於過濾插槽中時", + "item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用", + "item.create.filter.tooltip.condition1": "當放置於過濾插槽中時", "item.create.filter.tooltip.behaviour1": "根據_過濾器_的設定,來_決定_物品是否能夠通過", - "item.create.filter.tooltip.condition2": "當右鍵時", + "item.create.filter.tooltip.condition2": "當點擊右鍵時", "item.create.filter.tooltip.behaviour2": "打開_設定面板_", "item.create.attribute_filter.tooltip": "屬性過濾器", "item.create.attribute_filter.tooltip.summary": "比起普通過濾器,_屬性過濾器_可以根據不同物品的_屬性_來進行過濾", - "item.create.attribute_filter.tooltip.condition1": "放置於過濾插槽中時", + "item.create.attribute_filter.tooltip.condition1": "當放置於過濾插槽中時", "item.create.attribute_filter.tooltip.behaviour1": "根據_過濾器_的配置,來_決定_物品是否能夠通過", - "item.create.attribute_filter.tooltip.condition2": "當右鍵時", + "item.create.attribute_filter.tooltip.condition2": "當點擊右鍵時", "item.create.attribute_filter.tooltip.behaviour2": "打開_配置面板_", "item.create.empty_schematic.tooltip": "空白藍圖", "item.create.empty_schematic.tooltip.summary": "可作為合成材料或在_藍圖桌_使用", "item.create.schematic.tooltip": "藍圖", - "item.create.schematic.tooltip.summary": "將工程結構的_設計圖_放置於_世界中_,並使用_藍圖加農炮_進行構建。", + "item.create.schematic.tooltip.summary": "將工程結構的_設計圖_放置於_世界中_,並使用_藍圖加農炮_進行構建", "item.create.schematic.tooltip.condition1": "當設計圖存在時", "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具調整位置", "item.create.schematic.tooltip.control1": "當潛行右鍵時", - "item.create.schematic.tooltip.action1": "打開一個用來輸入_精確坐標_的介面。", + "item.create.schematic.tooltip.action1": "打開一個用來輸入_精確坐標_的介面", "item.create.schematic_and_quill.tooltip": "藍圖與筆", - "item.create.schematic_and_quill.tooltip.summary": "用來將世界中的結構存到.nbt文件。", + "item.create.schematic_and_quill.tooltip.summary": "用來將世界中的結構存到 .nbt 文件", "item.create.schematic_and_quill.tooltip.condition1": "第一步", "item.create.schematic_and_quill.tooltip.behaviour1": "手持藍圖與右鍵旋轉兩個點", "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl滑鼠滾輪選擇選區大小,右鍵空白處存檔。", + "item.create.schematic_and_quill.tooltip.behaviour2": "按住 Ctrl 滑鼠滾輪選擇選區大小,右鍵空白處存檔", "item.create.schematic_and_quill.tooltip.control1": "右鍵", - "item.create.schematic_and_quill.tooltip.action1": "選取點/確認存檔", - "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl滑鼠滾輪", - "item.create.schematic_and_quill.tooltip.action2": "在_空中_選擇點滾動以調整距離。", + "item.create.schematic_and_quill.tooltip.action1": "選取點 / 確認存檔", + "item.create.schematic_and_quill.tooltip.control2": "按住 Ctrl 滑鼠滾輪", + "item.create.schematic_and_quill.tooltip.action2": "在_空中_選擇點滾動以調整距離", "item.create.schematic_and_quill.tooltip.control3": "當潛行右鍵時", - "item.create.schematic_and_quill.tooltip.action3": "_重置_並刪除選區。", + "item.create.schematic_and_quill.tooltip.action3": "_重設_並刪除選區", "block.create.schematicannon.tooltip": "藍圖加農炮", - "block.create.schematicannon.tooltip.summary": "通過發射方塊以在世界中重新構建已部署的_全息圖_,使用相鄰箱子中的物品及_火藥_作為燃料。", + "block.create.schematicannon.tooltip.summary": "通過發射方塊以在世界中重新構建已部署的_全息圖_,使用相鄰箱子中的物品及_火藥_作為燃料", "block.create.schematicannon.tooltip.condition1": "當你對加農砲右鍵時", "block.create.schematicannon.tooltip.behaviour1": "打開加農砲的設定介面", "block.create.schematic_table.tooltip": "藍圖桌", "block.create.schematic_table.tooltip.summary": "將保存的藍圖圖寫入_空白藍圖_", "block.create.schematic_table.tooltip.condition1": "放入空白藍圖時", - "block.create.schematic_table.tooltip.behaviour1": "從Schematics文件夾上傳所選文件", + "block.create.schematic_table.tooltip.behaviour1": "從 Schematics 文件夾上傳所選文件", - "item.create.goggles.tooltip": "MR護目鏡", - "item.create.goggles.tooltip.summary": "一副特殊的眼鏡,能夠讓你看見_動能_的信息。", + "item.create.goggles.tooltip": "工程師護目鏡", + "item.create.goggles.tooltip.summary": "一副特殊的眼鏡,能夠讓你看見_動能_的訊息", "item.create.goggles.tooltip.condition1": "當裝備後", - "item.create.goggles.tooltip.behaviour1": "將會顯示該機械元件的_速度_、_動能_等數值。", + "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.goggles.tooltip.behaviour2": "將會顯示該儀表所連接網路的_速度_、_動能_等數值", + "item.create.goggles.tooltip.condition3": "當裝備後看向流體容器時", + "item.create.goggles.tooltip.behaviour3": "將會顯示儲存在該容器內的 _流體_ 以及其 _容量_ 等資訊", - "item.create.wrench.tooltip": "板手", - "item.create.wrench.tooltip.summary": "一種常用的工具,能夠調整_動能_的_方向_、_配置_等。", - "item.create.wrench.tooltip.control1": "當右鍵點擊_動能元件_時", + "item.create.wrench.tooltip": "扳手", + "item.create.wrench.tooltip.summary": "一種常用的工具,能夠調整_動能_的_方向_、_配置_等", + "item.create.wrench.tooltip.control1": "右鍵動力元件時", "item.create.wrench.tooltip.action1": "以點擊的面為軸心_旋轉_點擊的方塊", "item.create.wrench.tooltip.control2": "當潛行右鍵時", - "item.create.wrench.tooltip.action2": "將物品_取下_並移動到你的背包中。", + "item.create.wrench.tooltip.action2": "將物品_取下_並移動到你的背包中", "block.create.nozzle.tooltip": "分散網", - "block.create.nozzle.tooltip.summary": "依附在鼓風機上,能夠將鼓風機的效果_分散_各個方向。", + "block.create.nozzle.tooltip.summary": "依附在鼓風機上,能夠將鼓風機的效果_分散_各個方向", "block.create.cuckoo_clock.tooltip": "布穀鳥鐘", "block.create.cuckoo_clock.tooltip.summary": "精美的布穀鳥鐘,能夠報時", - "block.create.cuckoo_clock.tooltip.condition1": "連接機械時", - "block.create.cuckoo_clock.tooltip.behaviour1": "顯示_現在時間_且一天會報時_兩次_。中午一次,黃昏可以睡覺時一次 ", + "block.create.cuckoo_clock.tooltip.condition1": "輸入動力時", + "block.create.cuckoo_clock.tooltip.behaviour1": "顯示_現在時間_且一天會報時_兩次_;中午一次,黃昏可以睡覺時一次 ", "block.create.turntable.tooltip": "轉盤", - "block.create.turntable.tooltip.summary": "讓旋轉機械給你帶來一場刺激的旋轉風車體驗。", + "block.create.turntable.tooltip.summary": "讓旋轉機械給你帶來一場刺激的旋轉風車體驗", - "block.create.toolbox.tooltip": "UNLOCALIZED: TOOLBOX", - "block.create.toolbox.tooltip.summary": "UNLOCALIZED: Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", - "block.create.toolbox.tooltip.condition1": "UNLOCALIZED: When Picked Up", - "block.create.toolbox.tooltip.behaviour1": "UNLOCALIZED: _Retains_ Inventory _Contents_.", - "block.create.toolbox.tooltip.condition2": "UNLOCALIZED: When placed in Range", - "block.create.toolbox.tooltip.behaviour2": "UNLOCALIZED: _Nearby_ _Players_ can hold the _Toolbox_ _Keybind_ to access its contents _Remotely_.", - "block.create.toolbox.tooltip.condition3": "UNLOCALIZED: When R-Clicked", - "block.create.toolbox.tooltip.behaviour3": "UNLOCALIZED: Opens the _Container Interface_.", + "block.create.toolbox.tooltip": "工具箱", + "block.create.toolbox.tooltip.summary": "發明家的好夥伴。便利且大量的_容納八種_物品", + "block.create.toolbox.tooltip.condition1": "拾取時", + "block.create.toolbox.tooltip.behaviour1": "_保留內容物_", + "block.create.toolbox.tooltip.condition2": "放置於一定範圍內時", + "block.create.toolbox.tooltip.behaviour2": "_附近玩家_可以按對應的_快捷鍵_ (預設ALT) _遠程_訪問內容物", + "block.create.toolbox.tooltip.condition3": "當點擊右鍵時", + "block.create.toolbox.tooltip.behaviour3": "開啟_工具箱介面_", "block.create.stockpile_switch.tooltip": "存量偵測器", - "block.create.stockpile_switch.tooltip.summary": "根據連接的容器_儲存空間_的占用情況切換紅石訊號強度。", - "block.create.stockpile_switch.tooltip.condition1": "低於_下線_或高於_上線_時", + "block.create.stockpile_switch.tooltip.summary": "根據連接的容器_儲存空間_的占用情況切換紅石訊號強度", + "block.create.stockpile_switch.tooltip.condition1": "低於下限或高於上限時", "block.create.stockpile_switch.tooltip.behaviour1": "提供紅石訊號", "block.create.content_observer.tooltip": "物品偵測器", - "block.create.content_observer.tooltip.summary": "偵測_容器_和_輸送帶_中過濾器匹配的物品。當觀察到包含匹配的物品時,此組件將發出_紅石訊號_。當觀察到的漏斗_轉移匹配的物品_時,此組件將發出_紅石脈沖_。", - "block.create.content_observer.tooltip.condition1": "UNLOCALIZED: When observing a Container", - "block.create.content_observer.tooltip.behaviour1": "UNLOCALIZED: Emits a _Redstone Signal_ while the observed container has _matching_ _content_.", - "block.create.content_observer.tooltip.condition2": "UNLOCALIZED: When observing a Funnel", - "block.create.content_observer.tooltip.behaviour2": "UNLOCALIZED: Emits a _Redstone Pulse_ when a _matching_ Item is _transferred_.", + "block.create.content_observer.tooltip.summary": "偵測_容器_、_管道_或_輸送帶_中,與_過濾器_設定相匹配的_物品_或_流體_", + "block.create.content_observer.tooltip.condition1": "偵測容器時", + "block.create.content_observer.tooltip.behaviour1": "偵測到容器內含_匹配的內容物_時,發出_紅石訊號_", + "block.create.content_observer.tooltip.condition2": "偵測漏斗時", + "block.create.content_observer.tooltip.behaviour2": "偵測到_匹配的物品_被_轉移_時,發出_紅石脈衝_", "block.create.creative_crate.tooltip": "創造板條箱", - "block.create.creative_crate.tooltip.summary": "這個容器可以給臨近的_藍圖大炮_提供無限物品以及燃料 (創造專用物品)", + "block.create.creative_crate.tooltip.summary": "這個容器可以給臨近的_藍圖大炮_提供無限物品以及燃料 (創造模式專屬) ", "block.create.creative_crate.tooltip.condition1": "當標記了物品時", "block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品,並且任何放置到容器中的物品都會被_送入虛空_", - "item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", - "item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.", - "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.", + "item.create.creative_blaze_cake.tooltip": "創造熔岩蛋糕", + "item.create.creative_blaze_cake.tooltip.summary": "為您的_烈焰使者_提供特別款待。吃完這個蛋糕後,烈焰使者將_永不耗盡燃料_", + "item.create.creative_blaze_cake.tooltip.condition1": "使用時", + "item.create.creative_blaze_cake.tooltip.behaviour1": "_循環地_更改烈焰使者的燃燒模式", "block.create.controller_rail.tooltip": "控制鐵軌", - "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。", - "block.create.controller_rail.tooltip.condition1": "被紅石激活時", - "block.create.controller_rail.tooltip.behaviour1": "根據訊號強度_加速_或_減速_經過的礦車。將紅石強度傳播到相鄰的控制鐵軌。", + "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度", + "block.create.controller_rail.tooltip.condition1": "輸入紅石訊號時", + "block.create.controller_rail.tooltip.behaviour1": "根據訊號強度_加速_或_減速_經過的礦車,並將紅石強度傳播到相鄰的控制鐵軌", "item.create.sand_paper.tooltip": "紅砂紙", - "item.create.sand_paper.tooltip.summary": "用來_打磨_物品的砂紙,可以用_機械手_來實現自動化。", + "item.create.sand_paper.tooltip.summary": "用來_打磨_物品的砂紙,可以用_機械手_來實現自動化", "item.create.sand_paper.tooltip.condition1": "使用時", - "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_準心所指_的物品。", + "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_準心所指_的物品", - "item.create.builders_tea.tooltip": "工人茶", - "item.create.builders_tea.tooltip.summary": "神清氣爽的一天,從這杯完美茶飲開始。恢復復_饑餓值_並獲得_加速_效果。", + "item.create.builders_tea.tooltip": "建築工的茶", + "item.create.builders_tea.tooltip.summary": "神清氣爽的一天,從這杯完美茶飲開始。恢復_饑餓值_並獲得_加速_效果", "item.create.refined_radiance.tooltip": "光輝石", - "item.create.refined_radiance.tooltip.summary": "一種用_光輝_鍛造的化合物材料。", + "item.create.refined_radiance.tooltip.summary": "一種用_光輝_鍛造的化合物材料", "item.create.refined_radiance.tooltip.condition1": "工作進度", "item.create.refined_radiance.tooltip.behaviour1": "在未來的更新中會更新更多用途", "item.create.shadow_steel.tooltip": "暗影鋼", - "item.create.shadow_steel.tooltip.summary": "一種用_虛空_鍛造的化合物材料。", + "item.create.shadow_steel.tooltip.summary": "一種用_虛空_鍛造的化合物材料", "item.create.shadow_steel.tooltip.condition1": "工作進度", "item.create.shadow_steel.tooltip.behaviour1": "在未來的更新中會更新更多用途", "item.create.linked_controller.tooltip": "遙控器", - "item.create.linked_controller.tooltip.summary": "提供_六個_連接到相對應_按鍵_的_無線紅石訊號機_ _手持的控制_", - "item.create.linked_controller.tooltip.condition1": "點擊右鍵時", - "item.create.linked_controller.tooltip.behaviour1": "_切換_遙控器,當遙控器啟動時你會失去_移動控制_", - "item.create.linked_controller.tooltip.condition2": "當右鍵時", + "item.create.linked_controller.tooltip.summary": "提供_六個_連接到對應_無線紅石鏈路頻道_的_遙控按鈕_", + "item.create.linked_controller.tooltip.condition1": "當點擊右鍵時", + "item.create.linked_controller.tooltip.behaviour1": "_切換_模式;遙控器啟動時會接管_移動控制_", + "item.create.linked_controller.tooltip.condition2": "當潛行右鍵時", "item.create.linked_controller.tooltip.behaviour2": "打開_設定面板_", - "item.create.linked_controller.tooltip.condition3": "當對無線紅石訊號機點右鍵時", - "item.create.linked_controller.tooltip.behaviour3": "開啟_綁定模式_。按_六個控制鍵_的其中一個來綁定_頻率_到遙控器上", - "item.create.linked_controller.tooltip.condition4": "當對講台按右鍵時", - "item.create.linked_controller.tooltip.behaviour4": "把遙控器放到講台上,可以更方便的控制它。(蹲下右鍵取回)", + "item.create.linked_controller.tooltip.condition3": "當右鍵無線紅石鏈路時", + "item.create.linked_controller.tooltip.behaviour3": "開啟_綁定模式_,按下_六個控制鍵_之一以綁定_頻率_", + "item.create.linked_controller.tooltip.condition4": "當右鍵講台時", + "item.create.linked_controller.tooltip.behaviour4": "把遙控器放到講台上,可以更方便的控制它 (潛行右鍵取回) ", "item.create.diving_helmet.tooltip": "潛水頭盔", "item.create.diving_helmet.tooltip.summary": "和_銅製後背包_一起裝備時可以延長在_水下呼吸_的時間", @@ -2011,39 +2011,39 @@ "item.create.copper_backtank.tooltip.condition2": "當放置時,由轉動來補充驅動", "item.create.copper_backtank.tooltip.behaviour2": "旋轉的速度決定收集_壓縮空氣_的速率", - "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", - "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", - "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", - "block.create.placard.tooltip.behaviour1": "UNLOCALIZED: _Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.", - "block.create.placard.tooltip.condition2": "UNLOCALIZED: When Punched", - "block.create.placard.tooltip.behaviour2": "UNLOCALIZED: _Removes_ the current _item_ in the frame.", + "block.create.placard.tooltip": "標示牌", + "block.create.placard.tooltip.summary": "用這個精美的牆板將你的_物品_用黃銅_框起來_。對器械安全!", + "block.create.placard.tooltip.condition1": "手持物品右鍵時", + "block.create.placard.tooltip.behaviour1": "_放入_手持的_物品_。若該物品已經存在,則_發出紅石脈衝_", + "block.create.placard.tooltip.condition2": "當點擊左鍵時", + "block.create.placard.tooltip.behaviour2": "_移除_標示牌當前的_物品_", - "block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL", - "block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.", - "block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.", + "block.create.flywheel.tooltip": "飛輪", + "block.create.flywheel.tooltip.summary": "用雄偉的黃銅飛輪_裝飾_你的_機械_", + "block.create.flywheel.tooltip.condition1": "以動力驅動時", + "block.create.flywheel.tooltip.behaviour1": "開始轉動", "item.create.diving_boots.tooltip": "潛水鞋", - "item.create.diving_boots.tooltip.summary": "一雙_沈重的鞋子_,提供更好的水下移動", + "item.create.diving_boots.tooltip.summary": "一雙_沈重的鞋子_,可以更順暢地穿越海底", "item.create.diving_boots.tooltip.condition1": "當裝備時", - "item.create.diving_boots.tooltip.behaviour1": "你可以在水下走得更快而且可以跳躍,但是不能游泳。穿著者不會被輸送帶移動。", + "item.create.diving_boots.tooltip.behaviour1": "你可以在水下走得更快而且可以跳躍,但是不能游泳。穿著者不會被輸送帶移動", "item.create.crafting_blueprint.tooltip": "合成藍圖", - "item.create.crafting_blueprint.tooltip.summary": "可以被放置在牆上、地上和天花板。指定一個合成配方,你可以更快速的合成物品。每一格代表一個合成配方", + "item.create.crafting_blueprint.tooltip.summary": "可以被放置在牆上、地上和天花板。指定一個合成配方,你可以更快速的合成物品;每一格代表一個合成配方", "item.create.crafting_blueprint.condition1": "右鍵點擊空格", "item.create.crafting_blueprint.behaviour1": "打開_合成界面_讓你_指定配方_和要顯示的物品", "item.create.crafting_blueprint.condition2": "右鍵點擊編輯過的格子", - "item.create.crafting_blueprint.behaviour2": "根據_物品欄_內的物品_使用_這個_配方_合成。_蹲下_點擊可以一次合成_一組_的物品", + "item.create.crafting_blueprint.behaviour2": "根據_物品欄_內的物品_使用_這個_配方_合成。_潛行右鍵_可以一次合成_一組_的物品", "item.create.minecart_coupling.tooltip": "礦車連軸器", - "item.create.minecart_coupling.tooltip.summary": "將多個_礦車_或運輸結構鏈接在一起,構成雄偉的火車。", - "item.create.minecart_coupling.tooltip.condition1": "作用與礦車時", - "item.create.minecart_coupling.tooltip.behaviour1": "將兩個礦車耦合在一起,在移動時將它們保持_恒定的距離_。", + "item.create.minecart_coupling.tooltip.summary": "將多個_礦車_或運輸結構鏈接在一起,構成雄偉的火車", + "item.create.minecart_coupling.tooltip.condition1": "作用於礦車時", + "item.create.minecart_coupling.tooltip.behaviour1": "將兩個礦車耦合在一起,在移動時將它們保持_恆定的距離_", - "item.create.experience_nugget.tooltip": "UNLOCALIZED: NUGGET OF EXPERIENCE", - "item.create.experience_nugget.tooltip.summary": "UNLOCALIZED: _Ding!_ A speck of _inspiration_ from your fantastic inventions.", - "item.create.experience_nugget.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.experience_nugget.tooltip.behaviour1": "UNLOCALIZED: _Redeems_ _Experience_ points contained within.", + "item.create.experience_nugget.tooltip": "經驗金塊", + "item.create.experience_nugget.tooltip.summary": "_叮!_來自奇妙發明的一點_靈感_", + "item.create.experience_nugget.tooltip.condition1": "使用時", + "item.create.experience_nugget.tooltip.behaviour1": "得到其中包含的_經驗值_", "block.create.peculiar_bell.tooltip": "黃銅鐘", "block.create.peculiar_bell.tooltip.summary": "一個裝飾性的_鐘_,放在_靈魂火_正上方會有意想不到的副作用", @@ -2058,13 +2058,13 @@ "create.ponder.hold_to_ponder": "按住 [%1$s] 來查看此物品的教學", "create.ponder.subject": "本場景的主題", - "create.ponder.pondering": "有關於...", + "create.ponder.pondering": "有關於…", "create.ponder.identify_mode": "暫停模式已啟動\n按 [%1$s] 來取消暫停模式", "create.ponder.associated": "相關物品", "create.ponder.close": "關閉", "create.ponder.identify": "暫停", "create.ponder.next": "下個場景", - "create.ponder.next_up": "UNLOCALIZED: Up Next:", + "create.ponder.next_up": "接下來:", "create.ponder.previous": "上個場景", "create.ponder.replay": "重播", "create.ponder.think_back": "返回", @@ -2081,67 +2081,67 @@ "create.ponder.shared.rpm8": "8 RPM", "create.ponder.shared.ctrl_and": "Ctrl +", "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.rpm16_source": "轉速: 16 RPM", + "create.ponder.shared.rpm16_source": "轉速:16 RPM", "create.ponder.shared.movement_anchors": "有了機殼底盤和強力膠就可以移動大型結構", "create.ponder.tag.redstone": "邏輯控制裝置", "create.ponder.tag.redstone.description": "這些裝置會在紅石電路中發揮用處", "create.ponder.tag.contraption_assembly": "方塊連接物件", "create.ponder.tag.contraption_assembly.description": "此物件用於連接各個零件以便組成一個成品", - "create.ponder.tag.fluids": "液體控制裝置", - "create.ponder.tag.fluids.description": "這些裝置可傳輸並利用液體", + "create.ponder.tag.fluids": "流體控制裝置", + "create.ponder.tag.fluids.description": "這些裝置可傳輸並利用流體", "create.ponder.tag.decoration": "裝飾", "create.ponder.tag.decoration.description": "這些零件通常用於裝飾", "create.ponder.tag.windmill_sails": "風車軸承的帆", "create.ponder.tag.windmill_sails.description": "建造風車時用於產生動能的帆,每個帆對風車產生的效果都是同等的", - "create.ponder.tag.arm_targets": "機械手臂的目標物", - "create.ponder.tag.arm_targets.description": "該裝置可作為機械手臂的工作目標", - "create.ponder.tag.kinetic_appliances": "動能利用裝置", - "create.ponder.tag.kinetic_appliances.description": "這些裝置利用動能運作", - "create.ponder.tag.kinetic_sources": "動能產生裝置", - "create.ponder.tag.kinetic_sources.description": "該裝置能夠產生動能", + "create.ponder.tag.arm_targets": "機械臂的目標物", + "create.ponder.tag.arm_targets.description": "該裝置可作為機械臂的工作目標", + "create.ponder.tag.kinetic_appliances": "動力器械", + "create.ponder.tag.kinetic_appliances.description": "該部件透過動力運作", + "create.ponder.tag.kinetic_sources": "動力源", + "create.ponder.tag.kinetic_sources.description": "該部件能夠產生動力", "create.ponder.tag.movement_anchor": "運動錨點", - "create.ponder.tag.movement_anchor.description": "允許建立移動裝置的元件,以各種方式為連接的結構設置動畫", - "create.ponder.tag.kinetic_relays": "動能傳遞方塊", - "create.ponder.tag.kinetic_relays.description": "該裝置用於傳遞動能", - "create.ponder.tag.contraption_actor": "特殊方塊", - "create.ponder.tag.contraption_actor.description": "附加到移動裝置上時表現出特殊行為的方塊", + "create.ponder.tag.movement_anchor.description": "允許建立移動裝置的部件,以各種方式為連接的結構設置動畫", + "create.ponder.tag.kinetic_relays": "動力傳輸方塊", + "create.ponder.tag.kinetic_relays.description": "該部件用於傳輸動力", + "create.ponder.tag.contraption_actor": "特殊行為裝置", + "create.ponder.tag.contraption_actor.description": "裝置在移動裝置時表現出特殊行為的方塊", "create.ponder.tag.creative": "創造模式", "create.ponder.tag.creative.description": "該裝置無法在生存模式中獲得", - "create.ponder.tag.display_sources": "UNLOCALIZED: Sources for Display Links", - "create.ponder.tag.display_sources.description": "UNLOCALIZED: Components or Blocks which offer some data that can be read with a Display Link", + "create.ponder.tag.display_sources": "顯示鏈路的訊號源", + "create.ponder.tag.display_sources.description": "可發送訊號供顯示鏈路讀取的部件或方塊", "create.ponder.tag.logistics": "傳輸物品", "create.ponder.tag.logistics.description": "該裝置用於物品的傳輸", - "create.ponder.tag.display_targets": "UNLOCALIZED: Targets for Display Links", - "create.ponder.tag.display_targets.description": "UNLOCALIZED: Components or Blocks which can process and display the data received from a Display Link", - "create.ponder.tag.train_related": "UNLOCALIZED: Railway Equipment", - "create.ponder.tag.train_related.description": "UNLOCALIZED: Components used in the construction or management of Train Contraptions", + "create.ponder.tag.display_targets": "顯示鏈路的目標", + "create.ponder.tag.display_targets.description": "可接收顯示鏈路的訊號,並處理或顯示訊息的部件或方塊", + "create.ponder.tag.train_related": "鐵道設備", + "create.ponder.tag.train_related.description": "製造或管理火車裝置的零件", "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.analog_lever.text_2": "右鍵以增加紅石訊號強度", + "create.ponder.analog_lever.text_3": "潛行右鍵以降低紅石訊號強度", "create.ponder.andesite_tunnel.header": "使用安山岩物品隧道", "create.ponder.andesite_tunnel.text_1": "安山岩物品隧道可以覆蓋在輸送帶上", - "create.ponder.andesite_tunnel.text_2": "當安山岩物品隧道側邊連接到另一條輸送帶時...", - "create.ponder.andesite_tunnel.text_3": "...隧道將會從經過的整組物品中拿出一個丟到另一條輸送帶上", + "create.ponder.andesite_tunnel.text_2": "當安山岩物品隧道側邊連接到另一條輸送帶時…", + "create.ponder.andesite_tunnel.text_3": "…隧道將會從經過的整組物品中拿出一個丟到另一條輸送帶上", "create.ponder.andesite_tunnel.text_4": "剩餘物品則按照原路輸出", - "create.ponder.auto_schedule.header": "UNLOCALIZED: Stations & Scheduling", - "create.ponder.auto_schedule.text_1": "UNLOCALIZED: Schedules can be used to provide drivers with a destination", - "create.ponder.auto_schedule.text_2": "UNLOCALIZED: Comparators will receive a signal whenever a Train is present", - "create.ponder.auto_schedule.text_3": "UNLOCALIZED: Mind that a Station can only be approached from the indicated direction", - "create.ponder.auto_schedule.text_4": "UNLOCALIZED: Stations can also be used to assign new Schedules automatically", - "create.ponder.auto_schedule.text_5": "UNLOCALIZED: The Schedule placed on a station will automatically copy itself to present trains", - "create.ponder.auto_schedule.text_6": "UNLOCALIZED: As opposed to manual scheduling, drivers will not take the item with them", + "create.ponder.auto_schedule.header": "車站與火車調度", + "create.ponder.auto_schedule.text_1": "時刻表可以提供司機員目的地", + "create.ponder.auto_schedule.text_2": "紅石比較器會在有火車時收到訊號", + "create.ponder.auto_schedule.text_3": "火車只能從指定的方向進入車站", + "create.ponder.auto_schedule.text_4": "車站也可以自動分配新的時刻表給司機員", + "create.ponder.auto_schedule.text_5": "置於車站上的時刻表會自動複製給當前的火車", + "create.ponder.auto_schedule.text_6": "與手動調度不同,自動調度並不會使司機員攜帶時刻表在身上", "create.ponder.basin.header": "在作業盆中處理物品", - "create.ponder.basin.text_1": "作業盆可以放入物品或液體來進行處理", - "create.ponder.basin.text_2": "在每次的處理完成後, 作業盆會試著輸出成品到他的側面下方", - "create.ponder.basin.text_3": "當側面下方有一個有效的容器或設備, 作業盆側面會出現一個輸出嘴", + "create.ponder.basin.text_1": "作業盆可以放入物品或流體來進行處理", + "create.ponder.basin.text_2": "在每次的處理完成後,作業盆會試著輸出成品到他的側面下方", + "create.ponder.basin.text_3": "當側面下方有一個有效的容器或設備,作業盆側面會出現一個輸出嘴", "create.ponder.basin.text_4": "有很多的容器或設備可以觸發上述現象", "create.ponder.basin.text_5": "作業盆輸出的成品會被儲存到該容器或設備內", - "create.ponder.basin.text_6": "如果側面沒有出現輸出嘴, 則作業盆內的成品則不會輸出", + "create.ponder.basin.text_6": "如果側面沒有出現輸出嘴,則作業盆內的成品則不會輸出", "create.ponder.basin.text_7": "這個原理用在產生的成品為下一輪處理的原料時相當有用", "create.ponder.basin.text_8": "期望的成品將會從作業盆中輸出", "create.ponder.basin.text_9": "加裝過濾器可防止未被處理的物品輸出", @@ -2156,7 +2156,7 @@ "create.ponder.belt_connector.header": "使用輸送帶", "create.ponder.belt_connector.text_1": "手持輸送帶對兩根傳動軸右鍵以安裝輸送帶", - "create.ponder.belt_connector.text_2": "不小心點到傳動軸的話可以用潛行+右鍵來取消選取", + "create.ponder.belt_connector.text_2": "不小心點到傳動軸的話可以潛行右鍵來取消選取", "create.ponder.belt_connector.text_3": "輸送帶間只要有空間就能安裝額外的傳動軸", "create.ponder.belt_connector.text_4": "相同輸送帶接出來的傳動軸轉速及轉向會相同", "create.ponder.belt_connector.text_5": "使用扳手可以移除已安裝的傳動軸", @@ -2168,7 +2168,7 @@ "create.ponder.belt_directions.text_3": "2. 輸送帶可以對角連結", "create.ponder.belt_directions.text_4": "3. 輸送帶可以垂直連結", "create.ponder.belt_directions.text_5": "4. 也可以連結在垂直的傳動軸上", - "create.ponder.belt_directions.text_6": "這些都是可以使用的連接方式,輸送帶可以放置的長度為2~20格", + "create.ponder.belt_directions.text_6": "這些都是可以使用的連接方式,輸送帶可以放置的長度為 2 至 20 格", "create.ponder.belt_transport.header": "將輸送帶用於後勤", "create.ponder.belt_transport.text_1": "被啟動的輸送帶能運送物品及實體", @@ -2178,7 +2178,7 @@ "create.ponder.blaze_burner.text_1": "烈焰使者動力爐可以用來加熱作業盆", "create.ponder.blaze_burner.text_2": "你需要餵食可以燃燒的物品來加熱作業盆", "create.ponder.blaze_burner.text_3": "餵食熔岩蛋糕可以讓烈焰使者動力爐加熱到另一個更高的境界", - "create.ponder.blaze_burner.text_4": "使用機械手或機械手臂來將餵食自動化", + "create.ponder.blaze_burner.text_4": "使用機械手或機械臂來將餵食自動化", "create.ponder.brass_funnel.header": "黃銅漏斗", "create.ponder.brass_funnel.text_1": "安山岩漏斗每次只能傳輸一個物品", @@ -2191,24 +2191,24 @@ "create.ponder.brass_tunnel.text_2": "黃銅隧道輸出入口上都有過濾格", "create.ponder.brass_tunnel.text_3": "在輸入口上的過濾器會阻擋不相符的物品", "create.ponder.brass_tunnel.text_4": "在輸出口上的過濾器可依種類整理排列物品", - "create.ponder.brass_tunnel.text_5": "如果數種與過濾相符的物品通過隧道, 隧道的分配模式將決定如何處理這些物品", + "create.ponder.brass_tunnel.text_5": "如果數種與過濾相符的物品通過隧道,隧道的分配模式將決定如何處理這些物品", "create.ponder.brass_tunnel.text_6": "在平行相鄰的輸送帶上,相鄰的黃銅隧道將會成為一組", "create.ponder.brass_tunnel.text_7": "輸入該組內的物品將會採用該組隧道的分配模式輸送", - "create.ponder.brass_tunnel.text_8": "在這個情況下, 物品也能被直接輸入到隧道方塊", + "create.ponder.brass_tunnel.text_8": "在這個情況下,物品也能被直接輸入到隧道方塊", "create.ponder.brass_tunnel_modes.header": "黃銅隧道的分配模式", "create.ponder.brass_tunnel_modes.text_1": "使用扳手來調整隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_10": "'同步輸入' 是一種黃銅隧道的特殊設定", + "create.ponder.brass_tunnel_modes.text_10": "「同步輸入」 是一種黃銅隧道的特殊設定", "create.ponder.brass_tunnel_modes.text_11": "當同組內的所有隧道都有一個可通過的物品時,所有隧道才可輸出物品", "create.ponder.brass_tunnel_modes.text_12": "這確保了同組隧道所在的輸送帶都能以同一速率輸出物品", - "create.ponder.brass_tunnel_modes.text_2": "'分流輸出' 此模式會將物品輸出到該組隧道可用的輸出口", + "create.ponder.brass_tunnel_modes.text_2": "「分流輸出」 此模式會將物品輸出到該組隧道可用的輸出口", "create.ponder.brass_tunnel_modes.text_3": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_4": "'強制分流輸出' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_5": "'輪詢輸入' 模式將會保持整組物品完整性, 然後在有輸出口可以輸出時才輸入物品", + "create.ponder.brass_tunnel_modes.text_4": "「強制分流輸出」 模式不會跳過某個無法輸出物品的輸出口,直到該輸出口可以輸出物品", + "create.ponder.brass_tunnel_modes.text_5": "「輪詢輸入」 模式將會保持整組物品完整性,然後在有輸出口可以輸出時才輸入物品", "create.ponder.brass_tunnel_modes.text_6": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_7": "'強制輪詢輸入' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_8": "'鄰近優先' 模式會將物品輸出到該組隧道離物品輸入口最近的出口", - "create.ponder.brass_tunnel_modes.text_9": "'隨機輸出' 模式會隨機選擇同組隧道的一個輸出口輸出", + "create.ponder.brass_tunnel_modes.text_7": "「強制輪詢輸入」 模式不會跳過某個無法輸出物品的輸出口,直到該輸出口可以輸出物品", + "create.ponder.brass_tunnel_modes.text_8": "「鄰近優先」 模式會將物品輸出到該組隧道離物品輸入口最近的出口", + "create.ponder.brass_tunnel_modes.text_9": "「隨機輸出」 模式會隨機選擇同組隧道的一個輸出口輸出", "create.ponder.cart_assembler.header": "使用礦車裝修站裝修礦車來移動結構", "create.ponder.cart_assembler.text_1": "礦車裝修站會將所有連接到礦車的結構裝在礦車上", @@ -2231,32 +2231,32 @@ "create.ponder.cart_assembler_rails.text_3": "有幾種礦車可以當作錨來使用", "create.ponder.cart_assembler_rails.text_4": "熔爐礦車會盡可能維持熔煉狀態,並會拿取鄰近儲存結構上的燃料", - "create.ponder.chain_drive.header": "使用鏈式傳動箱傳遞動能", - "create.ponder.chain_drive.text_1": "同一排上的鏈式傳動箱會互相傳遞動能", + "create.ponder.chain_drive.header": "使用鏈式傳動箱傳輸動力", + "create.ponder.chain_drive.text_1": "同一排上的鏈式傳動箱會互相傳輸動力", "create.ponder.chain_drive.text_2": "所有傳動軸此時會朝相同方向旋轉", - "create.ponder.chain_drive.text_3": "任一個鏈式傳動箱被旋轉90度時所有鏈式傳動箱仍可正常運作", + "create.ponder.chain_drive.text_3": "任一個鏈式傳動箱被旋轉 90 度時所有鏈式傳動箱仍可正常運作", "create.ponder.chain_gearshift.header": "使用可調式鏈式變速箱來調整轉速", "create.ponder.chain_gearshift.text_1": "未被控制的可調式鏈式變速箱與鏈式傳動箱無異", "create.ponder.chain_gearshift.text_2": "當可調式鏈式變速箱被啟動後,它會把轉速提升兩倍傳至其他鏈式傳動箱", "create.ponder.chain_gearshift.text_3": "當被啟動的可調式鏈式變速箱並不是動能輸入端,則它會把轉速減半", "create.ponder.chain_gearshift.text_4": "上述兩種狀況中,其他鏈式傳動箱都會被可調式鏈式變速箱提升兩倍的轉速", - "create.ponder.chain_gearshift.text_5": "利用紅石訊號的強弱可以調整轉速倍率為x1或x2", + "create.ponder.chain_gearshift.text_5": "利用紅石訊號的強度,轉速倍率可以在 1 至 2 倍之間調整", "create.ponder.chain_gearshift.text_6": "12 RPM", - "create.ponder.chute.header": "使用滑道向下輸送物品", - "create.ponder.chute.text_1": "滑道可以在兩個垂直的儲物空間中輸送物品", + "create.ponder.chute.header": "使用滑槽向下輸送物品", + "create.ponder.chute.text_1": "滑槽可以在兩個垂直的儲物空間中輸送物品", "create.ponder.chute.text_2": "使用扳手可以讓它產生一個觀景窗", - "create.ponder.chute.text_3": "在滑道的側面放置另一個滑道,會產生一個斜狀的滑道", + "create.ponder.chute.text_3": "在滑槽的側面放置另一個滑槽,會產生一個斜狀的滑槽", - "create.ponder.chute_upward.header": "使用滑道向上輸送物品", - "create.ponder.chute_upward.text_1": "在滑道上方或下方使用鼓風機時,物品會根據被向上或向下吹", - "create.ponder.chute_upward.text_2": "裝備MR護目鏡以觀測物品的傳輸方向", - "create.ponder.chute_upward.text_3": "如滑道底端被擋住,則物品只能由側邊進行輸出入", + "create.ponder.chute_upward.header": "使用滑槽向上輸送物品", + "create.ponder.chute_upward.text_1": "在滑槽上方或下方使用鼓風機時,物品會根據被向上或向下吹", + "create.ponder.chute_upward.text_2": "裝備工程師護目鏡以觀測物品的傳輸方向", + "create.ponder.chute_upward.text_3": "如滑槽底端被擋住,則物品只能由側邊進行輸出入", "create.ponder.clockwork_bearing.header": "使用時鐘軸承來建造時鐘結構", "create.ponder.clockwork_bearing.text_1": "時鐘軸承會黏住其前方方塊產生一個時針結構", - "create.ponder.clockwork_bearing.text_2": "在輸入動能後,該結構會依照遊戲時間來旋轉", + "create.ponder.clockwork_bearing.text_2": "在輸入動力後,該結構會依照遊戲時間來旋轉", "create.ponder.clockwork_bearing.text_3": "3:00", "create.ponder.clockwork_bearing.text_4": "4:00", "create.ponder.clockwork_bearing.text_5": "對軸承右鍵會使結構啟動或停止", @@ -2264,50 +2264,50 @@ "create.ponder.clockwork_bearing.text_7": "你必須確保時針分針結構間未被使用強力膠之類的相連零件", "create.ponder.clockwork_bearing.text_8": "分針結構此時將正常運作", - "create.ponder.clutch.header": "使用離合器控制動能", - "create.ponder.clutch.text_1": "離合器能將動能直線傳遞", - "create.ponder.clutch.text_2": "當離合器被啟動,離合器會中斷動能傳遞", + "create.ponder.clutch.header": "使用離合器控制動力", + "create.ponder.clutch.text_1": "離合器能將動力沿直線傳輸", + "create.ponder.clutch.text_2": "當離合器被啟動,離合器會中斷動力傳輸", "create.ponder.cog_speedup.header": "使用大小齒輪來變速", - "create.ponder.cog_speedup.text_1": "大齒輪與小齒輪可以斜向傳遞動能", - "create.ponder.cog_speedup.text_2": "從大齒輪傳遞動能至小齒輪時,轉速加倍", - "create.ponder.cog_speedup.text_3": "從小齒輪傳遞動能至大齒輪時,轉速減半", + "create.ponder.cog_speedup.text_1": "大齒輪與小齒輪可以斜向連接", + "create.ponder.cog_speedup.text_2": "大齒輪帶動小齒輪旋轉時,轉速加倍", + "create.ponder.cog_speedup.text_3": "小齒輪帶動大齒輪旋轉時,轉速減半", - "create.ponder.cogwheel.header": "使用齒輪來傳遞動能", - "create.ponder.cogwheel.text_1": "齒輪會將動力傳遞至臨近的齒輪", + "create.ponder.cogwheel.header": "使用齒輪來傳輸動力", + "create.ponder.cogwheel.text_1": "齒輪會將動力傳輸至臨近的齒輪", "create.ponder.cogwheel.text_2": "以此方式連接的齒輪,旋轉方向相反", - "create.ponder.cogwheel_casing.header": "UNLOCALIZED: Encasing Cogwheels", - "create.ponder.cogwheel_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Cogwheels", - "create.ponder.cogwheel_casing.text_2": "UNLOCALIZED: Components added after encasing will not connect to the shaft outputs", - "create.ponder.cogwheel_casing.text_3": "UNLOCALIZED: The Wrench can be used to toggle connections", + "create.ponder.cogwheel_casing.header": "齒輪裝殼", + "create.ponder.cogwheel_casing.text_1": "黃銅或安山岩機殼可用於裝飾齒輪", + "create.ponder.cogwheel_casing.text_2": "裝殼後添加的組件不會與傳動軸相連", + "create.ponder.cogwheel_casing.text_3": "扳手可用於切換連接", - "create.ponder.creative_fluid_tank.header": "創造液體除存罐", - "create.ponder.creative_fluid_tank.text_1": "創造液體除存罐可以提供無限的液體", - "create.ponder.creative_fluid_tank.text_2": "拿著一個液體物品點擊可以設定它", - "create.ponder.creative_fluid_tank.text_3": "現在管線網路可以無限制的從它抽取液體", - "create.ponder.creative_fluid_tank.text_4": "任何被抽進創造液體除存罐的液體都會消失", + "create.ponder.creative_fluid_tank.header": "創造流體儲存罐", + "create.ponder.creative_fluid_tank.text_1": "創造流體儲存罐可以提供無限的流體", + "create.ponder.creative_fluid_tank.text_2": "拿著一個流體物品點擊可以設定它", + "create.ponder.creative_fluid_tank.text_3": "現在管線網路可以無限制的從它抽取流體", + "create.ponder.creative_fluid_tank.text_4": "任何被抽進創造流體儲存罐的流體都會消失", - "create.ponder.creative_motor.header": "使用創造馬達產生動能", - "create.ponder.creative_motor.text_1": "創造馬達不僅能夠手動設定輸出動能,而且體積相當小巧", - "create.ponder.creative_motor.text_2": "對其背後面板滾動滾輪,可以改變馬達的轉速", + "create.ponder.creative_motor.header": "使用創造馬達產生動力", + "create.ponder.creative_motor.text_1": "創造馬達不僅能夠手動設定輸出動力,而且體積相當小巧", + "create.ponder.creative_motor.text_2": "對其背後面板滑動滾輪,可以改變馬達的轉速", - "create.ponder.creative_motor_mojang.header": "UNLOCALIZED: Mojang's Enigma", + "create.ponder.creative_motor_mojang.header": "Mojang's Enigma", "create.ponder.crushing_wheels.header": "使用粉碎輪處理物品", - "create.ponder.crushing_wheels.text_1": "一對粉碎輪,磨物快又準", - "create.ponder.crushing_wheels.text_2": "接入的動能必須使這兩個輪子契合轉動", + "create.ponder.crushing_wheels.text_1": "一對粉碎輪,可以有效地進行研磨", + "create.ponder.crushing_wheels.text_2": "它們的輸入軸必須使兩個輪子契合的轉動", "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都會被粉碎處理", "create.ponder.crushing_wheels.text_4": "你也可以使用自動化進行物品的輸入以及撿取", "create.ponder.deployer.header": "使用機械手", - "create.ponder.deployer.text_1": "在機械手獲得動能後能夠模仿玩家的各種行為", + "create.ponder.deployer.text_1": "在機械手獲得動力後能夠模仿玩家的各種行為", "create.ponder.deployer.text_10": "對機械手手部右鍵,即可將手上的物品給它使用", "create.ponder.deployer.text_11": "物品也可以自動化輸入到機械手內", "create.ponder.deployer.text_12": "機械手附帶一個過濾格", "create.ponder.deployer.text_13": "當設定了過濾後,只有當它的手中物品與過濾格相符時,它才會工作", - "create.ponder.deployer.text_14": "只有與過濾格相符的物品才可輸入...", - "create.ponder.deployer.text_15": "...不符的物品可被取出來", + "create.ponder.deployer.text_14": "只有與過濾格相符的物品才可輸入…", + "create.ponder.deployer.text_15": "…不符的物品可被取出來", "create.ponder.deployer.text_2": "它只會與它正前方兩格處的位置進行互動", "create.ponder.deployer.text_3": "放在在它面前的方塊不會阻攔它的工作", "create.ponder.deployer.text_4": "機械手可以:", @@ -2318,7 +2318,7 @@ "create.ponder.deployer.text_9": "以及攻擊生物", "create.ponder.deployer_contraption.header": "在裝置上使用機械手", - "create.ponder.deployer_contraption.text_1": "當機械手在移動的結構上時...", + "create.ponder.deployer_contraption.text_1": "當機械手在移動的結構上時…", "create.ponder.deployer_contraption.text_2": "機械手會對每一個經過的方塊使用裝置中任意容器內的物品", "create.ponder.deployer_contraption.text_3": "可以透過過濾格來指定其從存儲空間中抽取的物品", @@ -2326,11 +2326,11 @@ "create.ponder.deployer_modes.text_1": "在設設情況下,機械手模仿玩家的右鍵", "create.ponder.deployer_modes.text_2": "使用扳手可以將模式調整為模仿玩家的左鍵", - "create.ponder.deployer_processing.header": "用機器手處理物品", - "create.ponder.deployer_processing.text_1": "拿著適當物品的機器手可以處理下面的物品", + "create.ponder.deployer_processing.header": "用機械手處理物品", + "create.ponder.deployer_processing.text_1": "拿著適當物品的機械手可以處理下面的物品", "create.ponder.deployer_processing.text_2": "待處理的物品可以是掉落狀態或是被放在置物台上", - "create.ponder.deployer_processing.text_3": "當物品被放在輸送帶上時...", - "create.ponder.deployer_processing.text_4": "機器手會抓住他並且自動處理", + "create.ponder.deployer_processing.text_3": "當物品被放在輸送帶上時…", + "create.ponder.deployer_processing.text_4": "機械手會抓住他並且自動處理", "create.ponder.deployer_redstone.header": "使用紅石控制機械手", "create.ponder.deployer_redstone.text_1": "當機械手收到紅時訊號時會停止工作", @@ -2338,50 +2338,50 @@ "create.ponder.deployer_redstone.text_3": "因此,輸入脈衝訊號可以使其每次只進行一個週期的工作", "create.ponder.depot.header": "使用置物台", - "create.ponder.depot.text_1": "置物台可以被當成一個“靜止的”傳送帶原件使用", - "create.ponder.depot.text_2": "右擊可以手動放置或取下物品", - "create.ponder.depot.text_3": "與傳送帶一樣,它也可以將其內的物品轉送到其他設備中進行加工...", - "create.ponder.depot.text_4": "...同時物品也可以被機械手存取", + "create.ponder.depot.text_1": "置物台可以被當成一個「靜止的」傳送帶原件使用", + "create.ponder.depot.text_2": "右鍵可以手動放置或取下物品", + "create.ponder.depot.text_3": "與傳送帶一樣,它也可以將其內的物品轉送到其他設備中進行加工…", + "create.ponder.depot.text_4": "…同時物品也可以被機械手存取", - "create.ponder.display_board.header": "UNLOCALIZED: Using Display Boards", - "create.ponder.display_board.text_1": "UNLOCALIZED: Display Boards are a scalable alternative to the sign", - "create.ponder.display_board.text_2": "UNLOCALIZED: They require Rotational Force to operate", - "create.ponder.display_board.text_3": "UNLOCALIZED: Text can be displayed using Name Tags...", - "create.ponder.display_board.text_4": "UNLOCALIZED: ...or through the use of Display Links", - "create.ponder.display_board.text_5": "UNLOCALIZED: Dyes can be applied to individual lines of the board", - "create.ponder.display_board.text_6": "UNLOCALIZED: Lines can be reset by clicking them with an empty hand", + "create.ponder.display_board.header": "使用顯示板", + "create.ponder.display_board.text_1": "顯示板是可選擇性擴充的標誌", + "create.ponder.display_board.text_2": "它們需要動力才能運作", + "create.ponder.display_board.text_3": "可以透過命名牌顯示文字…", + "create.ponder.display_board.text_4": "…或透過顯示鏈路", + "create.ponder.display_board.text_5": "染料可以應用於顯示板的各行", + "create.ponder.display_board.text_6": "空手點擊可以重設", - "create.ponder.display_link.header": "UNLOCALIZED: Setting up Display Links", - "create.ponder.display_link.text_1": "UNLOCALIZED: Display Links can be used to visualise dynamic information", - "create.ponder.display_link.text_2": "UNLOCALIZED: First, right-click the target display...", - "create.ponder.display_link.text_3": "UNLOCALIZED: ...then attach it to the block to read from", - "create.ponder.display_link.text_4": "UNLOCALIZED: Open the Interface to select and configure what is sent", - "create.ponder.display_link.text_5": "UNLOCALIZED: The display will now receive information from the link", - "create.ponder.display_link.text_6": "UNLOCALIZED: Not every block can act as a source", - "create.ponder.display_link.text_7": "UNLOCALIZED: Each compatible block provides unique information", - "create.ponder.display_link.text_8": "UNLOCALIZED: The Display Link can work with several different displays", + "create.ponder.display_link.header": "設置顯示鏈路", + "create.ponder.display_link.text_1": "顯示鏈路用於可視化動態訊息", + "create.ponder.display_link.text_2": "首先,右鍵目標顯示器…", + "create.ponder.display_link.text_3": "…然後將其放到想要讀取的方塊上", + "create.ponder.display_link.text_4": "打開界面,以選擇和配置想發送的內容", + "create.ponder.display_link.text_5": "顯示器將從鏈路接收訊息", + "create.ponder.display_link.text_6": "並非所有方塊都可以作為訊號源", + "create.ponder.display_link.text_7": "每種相容的方塊都提供獨特的訊息", + "create.ponder.display_link.text_8": "顯示鏈路可以在多種不同的顯示器上運作", - "create.ponder.display_link_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.display_link_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Display Links stop sending updates", - "create.ponder.display_link_redstone.text_2": "UNLOCALIZED: Once unpowered, the Timer is reset and new info is sent immediately", - "create.ponder.display_link_redstone.text_3": "UNLOCALIZED: Signals emitted from the source do not affect the Link", + "create.ponder.display_link_redstone.header": "以紅石控制", + "create.ponder.display_link_redstone.text_1": "接收紅石訊號時,顯示鏈路將停止更新訊息", + "create.ponder.display_link_redstone.text_2": "紅石訊號一旦消失,計時器會重置並立即發送訊息", + "create.ponder.display_link_redstone.text_3": "從訊號源發出的紅石訊號不會造成影響", - "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃燒室", - "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃燒室右擊烈焰人來抓取烈焰人", - "create.ponder.empty_blaze_burner.text_2": "或者,也可以透過右擊烈焰人刷怪籠來填充啟動烈焰人燃燒室", + "create.ponder.empty_blaze_burner.header": "使用空的烈焰使者動力爐", + "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰使者動力爐右鍵烈焰使者來抓取烈焰使者", + "create.ponder.empty_blaze_burner.text_2": "或者,也可以透過右鍵烈焰使者刷怪籠來填充啟動烈焰使者動力爐", "create.ponder.empty_blaze_burner.text_3": "這樣,你便有了一個可供部分機器加工的熱源", - "create.ponder.empty_blaze_burner.text_4": "如果是為了美觀,空的烈焰人燃燒室也可以被打火石點燃", + "create.ponder.empty_blaze_burner.text_4": "如果是為了美觀,空的烈焰使者動力爐也可以被打火石點燃", "create.ponder.empty_blaze_burner.text_5": "可以放入靈魂物品將火焰轉化成靈魂火", - "create.ponder.empty_blaze_burner.text_6": "但是,這樣的熱源不足以給機器提加工供足夠的熱量", + "create.ponder.empty_blaze_burner.text_6": "但是,這樣的熱源不足以給機器加工提供足夠的熱量", - "create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes", - "create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes", - "create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state", - "create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed", + "create.ponder.encased_fluid_pipe.header": "流體管道箱", + "create.ponder.encased_fluid_pipe.text_1": "銅製機殼可以裝飾流體管道", + "create.ponder.encased_fluid_pipe.text_2": "除了遮蔽流體管道以外,流體管道箱並不會改變管道的連接狀態", + "create.ponder.encased_fluid_pipe.text_3": "流體管道箱不會因旁邊新增或移除管道而產生反應", "create.ponder.fan_direction.header": "鼓風機的氣流", - "create.ponder.fan_direction.text_1": "鼓風機使用動能來製造氣流", - "create.ponder.fan_direction.text_2": "流速以及方向由所接收動能的強弱以及方向而定", + "create.ponder.fan_direction.text_1": "鼓風機藉由動力製造氣流", + "create.ponder.fan_direction.text_2": "流速以及方向由輸入軸的強弱以及方向而定", "create.ponder.fan_processing.header": "使用鼓風機加工物品", "create.ponder.fan_processing.text_1": "當氣流吹過熔岩時,氣流會被加熱", @@ -2393,45 +2393,45 @@ "create.ponder.fan_processing.text_7": "鼓風機的轉速對加工的速度沒有影響,只影響氣流的吹拂距離", "create.ponder.fan_processing.text_8": "而那些放置在置物台或者傳送帶上的物品,鼓風機也是可以處理的", - "create.ponder.fluid_pipe_flow.header": "始用銅製管道來移動液體", - "create.ponder.fluid_pipe_flow.text_1": "液體管可以連接兩個或更多的液體來源與目標", + "create.ponder.fluid_pipe_flow.header": "始用銅製管道來移動流體", + "create.ponder.fluid_pipe_flow.text_1": "流體管可以連接兩個或更多的流體來源與目標", "create.ponder.fluid_pipe_flow.text_2": "使用扳手可以在一段直管線上開窗戶", "create.ponder.fluid_pipe_flow.text_3": "有窗戶的管線側面不會連接到其他管線", - "create.ponder.fluid_pipe_flow.text_4": "機械幫浦可以讓管線運輸液體", - "create.ponder.fluid_pipe_flow.text_5": "一開始不會有液體被抽出來", - "create.ponder.fluid_pipe_flow.text_6": "直到兩端被連接起來,才會有液體被抽過去", - "create.ponder.fluid_pipe_flow.text_7": "因此,管線裡不會『物理上的』含有液體", + "create.ponder.fluid_pipe_flow.text_4": "機械幫浦可以讓管線運輸流體", + "create.ponder.fluid_pipe_flow.text_5": "一開始不會有流體被抽出來", + "create.ponder.fluid_pipe_flow.text_6": "直到兩端被連接起來,才會有流體被抽過去", + "create.ponder.fluid_pipe_flow.text_7": "因此,管線裡不會「物理上的」含有流體", - "create.ponder.fluid_pipe_interaction.header": "抽取並填滿液體罐", + "create.ponder.fluid_pipe_interaction.header": "抽取並填滿流體罐", "create.ponder.fluid_pipe_interaction.text_1": "管線網路的終端可以和很多東西互動", "create.ponder.fluid_pipe_interaction.text_2": "任何有意體容量的方塊都可以被抽取和填滿", - "create.ponder.fluid_pipe_interaction.text_3": "在開放端口前的液體源方塊可以被抽走", - "create.ponder.fluid_pipe_interaction.text_4": "當液體被排放出來時會產生新的液體源方塊", + "create.ponder.fluid_pipe_interaction.text_3": "在開放端口前的流體源方塊可以被抽走", + "create.ponder.fluid_pipe_interaction.text_4": "當流體被排放出來時會產生新的流體源方塊", "create.ponder.fluid_pipe_interaction.text_5": "管線也可以直接從其他方塊中抽取流體", - "create.ponder.fluid_tank_sizes.header": "液體罐的尺寸", - "create.ponder.fluid_tank_sizes.text_1": "可以組合液體罐以增加總容量", - "create.ponder.fluid_tank_sizes.text_2": "底部最多可以是 3x3 的正方形 ......", - "create.ponder.fluid_tank_sizes.text_3": "...... 最多可以堆疊 30 層", + "create.ponder.fluid_tank_sizes.header": "流體罐的尺寸", + "create.ponder.fluid_tank_sizes.text_1": "可以組合流體罐以增加總容量", + "create.ponder.fluid_tank_sizes.text_2": "底部最多可以是 3x3 的正方形…", + "create.ponder.fluid_tank_sizes.text_3": "…最多可以堆疊 30 層", "create.ponder.fluid_tank_sizes.text_4": "扳手可以用來開關窗戶", - "create.ponder.fluid_tank_storage.header": "在液體罐中儲存液體", - "create.ponder.fluid_tank_storage.text_1": "液體罐中可儲存大量的液體", - "create.ponder.fluid_tank_storage.text_2": "管線體網路可以從任何一邊抽取或是輸入液體", - "create.ponder.fluid_tank_storage.text_3": "紅石比較器可以輸出液體容量", - "create.ponder.fluid_tank_storage.text_4": "但是,在生存模式你不能直接存入、取出液體", - "create.ponder.fluid_tank_storage.text_5": "你可以用作業盆、分液池或液體灌注器和管線網路互動", + "create.ponder.fluid_tank_storage.header": "在流體罐中儲存流體", + "create.ponder.fluid_tank_storage.text_1": "流體罐中可儲存大量的流體", + "create.ponder.fluid_tank_storage.text_2": "管線體網路可以從任何一邊抽取或是輸入流體", + "create.ponder.fluid_tank_storage.text_3": "紅石比較器可以輸出流體容量", + "create.ponder.fluid_tank_storage.text_4": "但是,在生存模式你不能直接存入、取出流體", + "create.ponder.fluid_tank_storage.text_5": "你可以用作業盆、分液池或流體灌注器和管線網路互動", "create.ponder.funnel_compat.header": "漏斗的相容性", "create.ponder.funnel_compat.text_1": "漏斗可以與一些其他組件互動", - "create.ponder.funnel_compat.text_2": "動力鋸", + "create.ponder.funnel_compat.text_2": "機械圓鋸機", "create.ponder.funnel_compat.text_3": "置物台", "create.ponder.funnel_compat.text_4": "分液池", "create.ponder.funnel_direction.header": "物流方向", "create.ponder.funnel_direction.text_1": "直接放置時,漏斗會將物品從容器中取出", - "create.ponder.funnel_direction.text_2": "潛行時放置時,漏斗會將物品置入容器中", - "create.ponder.funnel_direction.text_3": "使用扳手可以改變漏斗的存/取模式", + "create.ponder.funnel_direction.text_2": "潛行放置時,漏斗會將物品置入容器中", + "create.ponder.funnel_direction.text_3": "使用扳手可以改變漏斗的存取模式", "create.ponder.funnel_direction.text_4": "對大多數朝向放置的漏斗都具有此特性", "create.ponder.funnel_direction.text_5": "在傳送帶末端放置的漏斗會根據傳送帶的傳動方向存/取物品", @@ -2443,61 +2443,61 @@ "create.ponder.funnel_transfer.header": "直接運輸", "create.ponder.funnel_transfer.text_1": "漏斗無法將物品傳輸到非開放式的物品欄中", - "create.ponder.funnel_transfer.text_2": "溜槽和智慧溜槽更適用於這樣的場景", + "create.ponder.funnel_transfer.text_2": "滑槽和智慧滑槽更適用於這樣的場景", "create.ponder.funnel_transfer.text_3": "水平傳輸也是如此,也許傳送帶更方便快捷", - "create.ponder.gantry_carriage.header": "使用起重機取物器", - "create.ponder.gantry_carriage.text_1": "起重機取物器可以被放置在起重機杆上,並且可以沿著起重機杆運動", + "create.ponder.gantry_carriage.header": "使用起重機", + "create.ponder.gantry_carriage.text_1": "起重機可以被放置在起重機導軌上,並且可以沿著起重機導軌運動", "create.ponder.gantry_carriage.text_2": "起重機可以移動其黏附的方塊", "create.ponder.gantry_cascaded.header": "串聯起重機", - "create.ponder.gantry_cascaded.text_1": "無需強力膠,取物器便可與起重機杆相連", - "create.ponder.gantry_cascaded.text_2": "即使是在移動的起重機杆上也是如此", - "create.ponder.gantry_cascaded.text_3": "因此,起重機系統可以串聯起來,如此可以影響到多軸向的運動", + "create.ponder.gantry_cascaded.text_1": "無需強力膠,起重機便可與導軌相連", + "create.ponder.gantry_cascaded.text_2": "即使是在移動的起重機導軌上也是如此", + "create.ponder.gantry_cascaded.text_3": "因此,起重機系統可以串聯起來,以在多個軸上運動", "create.ponder.gantry_direction.header": "起重機移動方向", - "create.ponder.gantry_direction.text_1": "起重機杆可以有相反的方向", - "create.ponder.gantry_direction.text_2": "取物器的移動方向取決於起重機杆的方向", - "create.ponder.gantry_direction.text_3": "......以及起重機杆的旋轉方向", - "create.ponder.gantry_direction.text_4": "在旋轉傳遞中,此規則同樣適用", + "create.ponder.gantry_direction.text_1": "導軌可以以相反的方向運作", + "create.ponder.gantry_direction.text_2": "起重機的移動方向取決於導軌的朝向", + "create.ponder.gantry_direction.text_3": "…以及導軌的轉向", + "create.ponder.gantry_direction.text_4": "規則同樣適用於起重機的動力傳輸", - "create.ponder.gantry_redstone.header": "起重機的力傳遞", - "create.ponder.gantry_redstone.text_1": "被紅石訊號啟動的起重機,將不會移動其上的取物器", - "create.ponder.gantry_redstone.text_2": "作為替代,杆上的動能會傳遞到取物器的輸出杆上", + "create.ponder.gantry_redstone.header": "起重機的動力傳輸", + "create.ponder.gantry_redstone.text_1": "以紅石訊號充能導軌,可以讓起重機停止移動", + "create.ponder.gantry_redstone.text_2": "作為替代,導軌上的動力會傳輸到起重機的輸出軸上", - "create.ponder.gantry_shaft.header": "使用起重機杆", - "create.ponder.gantry_shaft.text_1": "起重機杆組成了起重機結構的基礎。與其相接的載物器可以沿著杆進行移動。", - "create.ponder.gantry_shaft.text_2": "起重機結構可以移動與其相接的方塊。", + "create.ponder.gantry_shaft.header": "使用起重機導軌", + "create.ponder.gantry_shaft.text_1": "起重機導軌組成了起重機結構的基礎,與其相接的起重機可以沿著杆進行移動", + "create.ponder.gantry_shaft.text_2": "起重機結構可以移動與其相接的方塊", - "create.ponder.gearbox.header": "使用十字齒輪箱傳遞動能", + "create.ponder.gearbox.header": "使用十字齒輪箱傳輸動力", "create.ponder.gearbox.text_1": "更改旋轉軸,很容易使得整個旋轉體系變得臃腫不堪", "create.ponder.gearbox.text_2": "十字齒輪箱則是替代方案,它的體積更為小巧緊", "create.ponder.gearbox.text_3": "側邊連接的傳動桿,旋轉方向與輸入端一致", "create.ponder.gearbox.text_4": "直線連接的傳動桿,旋轉方向會被反轉", - "create.ponder.gearshift.header": "使用反轉齒輪箱控制動能", + "create.ponder.gearshift.header": "使用反轉齒輪箱控制動力", "create.ponder.gearshift.text_1": "反轉齒輪箱可以直線傳輸旋轉", - "create.ponder.gearshift.text_2": "通入紅石訊號後,輸出端的旋轉方向會被反轉", + "create.ponder.gearshift.text_2": "輸入紅石訊號後,輸出端的旋轉方向會被反轉", - "create.ponder.hand_crank.header": "使用手搖把手產生動能", - "create.ponder.hand_crank.text_1": "玩家可以使用手搖把手來手動產生動能", + "create.ponder.hand_crank.header": "使用手搖把手產生動力", + "create.ponder.hand_crank.text_1": "玩家可以使用手搖把手來手動產生動力", "create.ponder.hand_crank.text_2": "按住右鍵可以逆時針旋轉它", "create.ponder.hand_crank.text_3": "它產生的轉速相對較高", "create.ponder.hand_crank.text_4": "潛行長按右鍵可以順時針旋轉它", - "create.ponder.hose_pulley.header": "使用軟管滑輪抽取、填滿液體", - "create.ponder.hose_pulley.text_1": "軟管滑輪可以用來抽取、填滿大量的液體", + "create.ponder.hose_pulley.header": "使用軟管滑輪抽取、填滿流體", + "create.ponder.hose_pulley.text_1": "軟管滑輪可以用來抽取、填滿大量的流體", "create.ponder.hose_pulley.text_2": "你可以透過輸入轉動來控制軟管的高度", "create.ponder.hose_pulley.text_3": "反轉時可以收回軟管", "create.ponder.hose_pulley.text_4": "另一邊可以連接管線", - "create.ponder.hose_pulley.text_5": "相連的管線網路可以提供液體 ......", - "create.ponder.hose_pulley.text_6": "...... 或是從池子裡抽取液體", + "create.ponder.hose_pulley.text_5": "相連的管線網路可以提供流體…", + "create.ponder.hose_pulley.text_6": "…或是從池子裡抽取流體", "create.ponder.hose_pulley.text_7": "抽取或填滿的速度取決於管線系統的吞吐量", - "create.ponder.hose_pulley_infinite.header": "被動填充和排放大量液體", - "create.ponder.hose_pulley_infinite.text_1": "將軟管滑輪接觸到足夠大的海洋中時 ......", - "create.ponder.hose_pulley_infinite.text_2": "海洋會被視為無限液體源", - "create.ponder.hose_pulley_infinite.text_3": "管線網路可以無限的抽取、排放液體到海洋中而不影響海洋", + "create.ponder.hose_pulley_infinite.header": "被動填充和排放大量流體", + "create.ponder.hose_pulley_infinite.text_1": "將軟管滑輪接觸到足夠大的海洋中時…", + "create.ponder.hose_pulley_infinite.text_2": "海洋會被視為無限流體源", + "create.ponder.hose_pulley_infinite.text_3": "管線網路可以無限的抽取、排放流體到海洋中而不影響海洋", "create.ponder.hose_pulley_level.header": "軟管滑輪抽取、填滿水平面", "create.ponder.hose_pulley_level.text_1": "完全縮回時,軟管滑輪無法操作", @@ -2506,32 +2506,32 @@ "create.ponder.hose_pulley_level.text_4": "而填充工作將由下而上進行將由上而下進行", "create.ponder.hose_pulley_level.text_5": "水平面不會超過軟管末端", - "create.ponder.item_drain.header": "使用分液池清空液體容器", - "create.ponder.item_drain.text_1": "分液池可以從液體容器中清空抽取液體", - "create.ponder.item_drain.text_2": "點擊右鍵可以把你手上的液體倒進去", - "create.ponder.item_drain.text_3": "當從旁邊輸入物品 ......", - "create.ponder.item_drain.text_4": "...... 他會從上方滑過,並清空裡面的液體", - "create.ponder.item_drain.text_5": "現在液體網路可以抽取分液池中的液體了", + "create.ponder.item_drain.header": "使用分液池清空流體容器", + "create.ponder.item_drain.text_1": "分液池可以從流體容器中清空抽取流體", + "create.ponder.item_drain.text_2": "點擊右鍵可以把你手上的流體倒進去", + "create.ponder.item_drain.text_3": "當從旁邊輸入物品…", + "create.ponder.item_drain.text_4": "…他會從上方滑過,並清空裡面的流體", + "create.ponder.item_drain.text_5": "現在流體網路可以抽取分液池中的流體了", - "create.ponder.item_vault_sizes.header": "UNLOCALIZED: Dimensions of an Item Vault", - "create.ponder.item_vault_sizes.text_1": "UNLOCALIZED: Item Vaults can be combined to increase the total capacity", - "create.ponder.item_vault_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...", - "create.ponder.item_vault_sizes.text_3": "UNLOCALIZED: ...and grow in length up to 3x their diameter", + "create.ponder.item_vault_sizes.header": "倉儲的尺寸", + "create.ponder.item_vault_sizes.text_1": "倉儲可以合併,以增加容量", + "create.ponder.item_vault_sizes.text_2": "它們的直徑可達 3 個方塊寬…", + "create.ponder.item_vault_sizes.text_3": "…而長度可以增長到直徑的 3 倍", - "create.ponder.item_vault_storage.header": "UNLOCALIZED: Storing Items in Vaults", - "create.ponder.item_vault_storage.text_1": "UNLOCALIZED: Item Vaults can be used to store large amounts of items", - "create.ponder.item_vault_storage.text_2": "UNLOCALIZED: However, contents cannot be added or taken manually", - "create.ponder.item_vault_storage.text_3": "UNLOCALIZED: Any components for item transfer can both insert...", - "create.ponder.item_vault_storage.text_4": "UNLOCALIZED: ...and take contents from this container", + "create.ponder.item_vault_storage.header": "儲存物品至倉儲", + "create.ponder.item_vault_storage.text_1": "倉儲可用於存儲大量物品", + "create.ponder.item_vault_storage.text_2": "但是,不能手動存放或提取內容物", + "create.ponder.item_vault_storage.text_3": "任何用於物品傳輸的部件都可以嵌入…", + "create.ponder.item_vault_storage.text_4": "…並從該容器中提取內容物", - "create.ponder.large_cogwheel.header": "使用大齒輪傳遞動能", + "create.ponder.large_cogwheel.header": "使用大齒輪傳輸動力", "create.ponder.large_cogwheel.text_1": "大齒輪可以以特定的角度相互連接", "create.ponder.large_cogwheel.text_2": "可以利用大齒輪變更旋轉軸向", "create.ponder.linear_chassis_attachment.header": "使用機殼底盤黏合方塊", "create.ponder.linear_chassis_attachment.text_1": "它的開放面可以變為黏性面", - "create.ponder.linear_chassis_attachment.text_2": "再次點擊黏性面,可以將它的相反面也變得具有黏性", - "create.ponder.linear_chassis_attachment.text_3": "空手潛行右擊可以移除此面的黏性物", + "create.ponder.linear_chassis_attachment.text_2": "再度點擊黏性面,可以將它的相反面也變得具有黏性", + "create.ponder.linear_chassis_attachment.text_3": "空手潛行右鍵可以移除此面的黏性物", "create.ponder.linear_chassis_attachment.text_4": "黏性面可以將此面前方的一長條方塊黏住", "create.ponder.linear_chassis_attachment.text_5": "使用扳手可以精確控制底盤的影響範圍", "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑動滾輪,你可以一次性調節所有底盤的影響範圍", @@ -2543,164 +2543,164 @@ "create.ponder.linear_chassis_group.text_2": "其中的一個底盤若被移動,其餘的底盤也會跟著移動", "create.ponder.linear_chassis_group.text_3": "不同種類的底盤,或者是朝向不一致的底盤,將不會相連", - "create.ponder.mechanical_arm.header": "設定動力臂", - "create.ponder.mechanical_arm.text_1": "你得在放置動力臂之前就設定好它的輸入以及輸出端", - "create.ponder.mechanical_arm.text_2": "手持動力臂右擊某個存儲空間,可以將其指定為目標", - "create.ponder.mechanical_arm.text_3": "再次右擊可以將其在輸入端(藍色)以及輸出端(橙色)之間切換", - "create.ponder.mechanical_arm.text_4": "左擊此組件可以移除選擇", - "create.ponder.mechanical_arm.text_5": "將動力臂放下來後,它會將此前選擇的方塊作為目標", - "create.ponder.mechanical_arm.text_6": "在有效範圍內,機械手臂可以有任意數量的輸出以及輸入端", + "create.ponder.mechanical_arm.header": "設置機械臂", + "create.ponder.mechanical_arm.text_1": "你得在放置機械臂之前就設定好它的輸入以及輸出端", + "create.ponder.mechanical_arm.text_2": "手持機械臂右鍵某個存儲空間,可以將其指定為目標", + "create.ponder.mechanical_arm.text_3": "再度右鍵可以將其在輸入端 (藍色) 以及輸出端 (橙色) 之間切換", + "create.ponder.mechanical_arm.text_4": "左鍵組件可以移除選擇", + "create.ponder.mechanical_arm.text_5": "將機械臂放下來後,它會將此前選擇的方塊作為目標", + "create.ponder.mechanical_arm.text_6": "在有效範圍內,機械臂可以有任意數量的輸出以及輸入端", "create.ponder.mechanical_arm.text_7": "然而,並不是所有的存儲空間可以被直接互動", "create.ponder.mechanical_arm.text_8": "在此情況下,漏斗和置物台可以解決此問題", - "create.ponder.mechanical_arm_filtering.header": "過濾動力臂的輸出端", + "create.ponder.mechanical_arm_filtering.header": "過濾機械臂的輸出端", "create.ponder.mechanical_arm_filtering.text_1": "輸入", "create.ponder.mechanical_arm_filtering.text_2": "輸出", "create.ponder.mechanical_arm_filtering.text_3": "有時,你會想著利用某種過濾限煞車力臂的目標", - "create.ponder.mechanical_arm_filtering.text_4": "動力臂自身並不提供任何過濾選項", - "create.ponder.mechanical_arm_filtering.text_5": "然而,若將黃銅漏斗作為目標,則漏斗的過濾槽則可以應用至動力臂上", - "create.ponder.mechanical_arm_filtering.text_6": "動力臂足夠智慧,它不會去拿取那些它無法分配的物品", + "create.ponder.mechanical_arm_filtering.text_4": "機械臂自身並不提供任何過濾選項", + "create.ponder.mechanical_arm_filtering.text_5": "然而,若將黃銅漏斗作為目標,則漏斗的過濾槽則可以應用至機械臂上", + "create.ponder.mechanical_arm_filtering.text_6": "機械臂足夠聰明,它不會去拿取那些它無法分配的物品", - "create.ponder.mechanical_arm_modes.header": "動力臂的分配模式", + "create.ponder.mechanical_arm_modes.header": "機械臂的分配模式", "create.ponder.mechanical_arm_modes.text_1": "輸入", "create.ponder.mechanical_arm_modes.text_2": "輸出", - "create.ponder.mechanical_arm_modes.text_3": "若動力臂必須在數個有效的輸出端之間作出選擇...", - "create.ponder.mechanical_arm_modes.text_4": "...它會依照自己的設定選擇特定的行為", + "create.ponder.mechanical_arm_modes.text_3": "若機械臂必須在數個有效的輸出端之間作出選擇…", + "create.ponder.mechanical_arm_modes.text_4": "…它會依照自己的設定選擇特定的行為", "create.ponder.mechanical_arm_modes.text_5": "手持扳手對其滑動滾輪,可以改變其設定", "create.ponder.mechanical_arm_modes.text_6": "輪詢調度模式很好理解,即循環輸出至所有有效的輸出端", "create.ponder.mechanical_arm_modes.text_7": "如果某個輸出端無法容納更多物品,則它會被跳過", - "create.ponder.mechanical_arm_modes.text_8": "強制輪詢調度不會跳過任何輸出端,動力臂會一直等待,直到輸出端有空位容納物品輸入", - "create.ponder.mechanical_arm_modes.text_9": "最近優先模式會使得動力臂先將物品輸出至更早被選擇的輸出端", + "create.ponder.mechanical_arm_modes.text_8": "強制輪詢調度不會跳過任何輸出端,機械臂會一直等待,直到輸出端有空位容納物品輸入", + "create.ponder.mechanical_arm_modes.text_9": "最近優先模式會使得機械臂先將物品輸出至更早被選擇的輸出端", - "create.ponder.mechanical_arm_redstone.header": "利用紅石訊號控制動力臂", - "create.ponder.mechanical_arm_redstone.text_1": "通入紅石訊號後,動力臂會停止工作", + "create.ponder.mechanical_arm_redstone.header": "利用紅石訊號控制機械臂", + "create.ponder.mechanical_arm_redstone.text_1": "輸入紅石訊號後,機械臂會停止工作", "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它會完成目前正在進行的工作週期", - "create.ponder.mechanical_arm_redstone.text_3": "因此,通入單次負紅石脈衝可以精確控制動力臂,使其每次只進行單個週期的工作", + "create.ponder.mechanical_arm_redstone.text_3": "因此,輸入單次負紅石脈衝可以精確控制機械臂,使其每次只進行單個週期的工作", - "create.ponder.mechanical_bearing.header": "使用動力軸承移動結構", - "create.ponder.mechanical_bearing.text_1": "動力軸承會與其前方的方塊黏合在一起", - "create.ponder.mechanical_bearing.text_2": "接收到動能後,它會將這一黏合結構組裝為旋轉裝置", + "create.ponder.mechanical_bearing.header": "使用機械軸承移動結構", + "create.ponder.mechanical_bearing.text_1": "機械軸承會與其前方的方塊黏合在一起", + "create.ponder.mechanical_bearing.text_2": "接收到動力後,它會將這一黏合結構組裝為旋轉裝置", - "create.ponder.mechanical_crafter.header": "設置動力合成器", - "create.ponder.mechanical_crafter.text_1": "動力合成器陣列可用於自動化任何合成配方的製作", + "create.ponder.mechanical_crafter.header": "設置機械合成器", + "create.ponder.mechanical_crafter.text_1": "機械合成器陣列可用於自動化任何合成配方的製作", "create.ponder.mechanical_crafter.text_2": "使用扳手可以調控合成器的合成通路", "create.ponder.mechanical_crafter.text_3": "所有的合成通路必須匯集到任意一側的一個出口,整套合成器方可算是設置正確", "create.ponder.mechanical_crafter.text_4": "輸出產物會被放入位於出口的存儲空間中", - "create.ponder.mechanical_crafter.text_5": "動力合成器的運轉需要動能的供應", - "create.ponder.mechanical_crafter.text_6": "右擊合成器正面,可以手動放入物品", + "create.ponder.mechanical_crafter.text_5": "機械合成器的運轉需要動力的供應", + "create.ponder.mechanical_crafter.text_6": "右鍵合成器正面,可以手動放入物品", "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就會開始", - "create.ponder.mechanical_crafter.text_8": "而對於那些沒有完全占滿所有合成器槽位的配方,你可以通入紅石訊號強制開啟合成", + "create.ponder.mechanical_crafter.text_8": "而對於那些沒有完全占滿所有合成器槽位的配方,你可以輸入紅石訊號強制啟動合成", "create.ponder.mechanical_crafter_connect.header": "為合成器連接物品欄", "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自動接受向其輸入的物品", "create.ponder.mechanical_crafter_connect.text_2": "對其背面使用扳手,可以連接合成器", "create.ponder.mechanical_crafter_connect.text_3": "所有相連的合成器可以訪問同一個位置的輸入", - "create.ponder.mechanical_crafter_covers.header": "蓋住動力合成器的合成槽", + "create.ponder.mechanical_crafter_covers.header": "蓋住機械合成器的合成槽", "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要額外的合成器,來補足合成通路上的間隙", "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽蓋板,合成器會在合成進行時的行為就如同一個空的合成槽位", "create.ponder.mechanical_crafter_covers.text_3": "被蓋住的合成器並不會阻斷共享輸入端的影響", "create.ponder.mechanical_drill.header": "使用機械鑽頭破壞方塊", - "create.ponder.mechanical_drill.text_1": "當向其通入動能後,機械鑽頭會破壞它面前的方塊", - "create.ponder.mechanical_drill.text_2": "它的挖掘速度取決於通入的動能轉速", + "create.ponder.mechanical_drill.text_1": "當向其輸入動力後,機械鑽頭會破壞它面前的方塊", + "create.ponder.mechanical_drill.text_2": "它的挖掘速度取決於輸入軸的轉速", "create.ponder.mechanical_drill_contraption.header": "在裝置中使用機械鑽頭", - "create.ponder.mechanical_drill_contraption.text_1": "在運動裝置中使用機械鑽頭時...", - "create.ponder.mechanical_drill_contraption.text_2": "...它會破壞掉它撞上的方塊", + "create.ponder.mechanical_drill_contraption.text_1": "在運動裝置中使用機械鑽頭時…", + "create.ponder.mechanical_drill_contraption.text_2": "…它會破壞掉它撞上的方塊", - "create.ponder.mechanical_harvester.header": "在裝置中使用動力收割機", - "create.ponder.mechanical_harvester.text_1": "在運動裝置中使用動力收割機時...", + "create.ponder.mechanical_harvester.header": "在裝置中使用機械收割機", + "create.ponder.mechanical_harvester.text_1": "在運動裝置中使用機械收割機時…", "create.ponder.mechanical_harvester.text_2": "它會採收其路徑上的作物,並重設這些作物的生長進度", - "create.ponder.mechanical_mixer.header": "使用動力攪拌器處理物品", + "create.ponder.mechanical_mixer.header": "使用機械攪拌器處理物品", "create.ponder.mechanical_mixer.text_1": "使用攪拌器和工作盆,你可以自動化某些合成配方", "create.ponder.mechanical_mixer.text_2": "有效配方包括各種無序合成配方,以及一些額外的配方", - "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃燒室提供熱量", + "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰使者動力爐提供熱量", "create.ponder.mechanical_mixer.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - "create.ponder.mechanical_piston.header": "使用動力活塞移動結構", - "create.ponder.mechanical_piston.text_1": "動力活塞可以移動它前方的方塊", - "create.ponder.mechanical_piston.text_2": "移動速度和方向取決於通入活塞的動能", - "create.ponder.mechanical_piston.text_3": "黏性動力活塞可以將相接的方塊拉回來", + "create.ponder.mechanical_piston.header": "使用機械活塞移動結構", + "create.ponder.mechanical_piston.text_1": "機械活塞可以移動它前方的方塊", + "create.ponder.mechanical_piston.text_2": "移動速度和方向取決於輸入軸", + "create.ponder.mechanical_piston.text_3": "黏性機械活塞可以將相接的方塊拉回來", - "create.ponder.mechanical_piston_modes.header": "動力活塞的移動模式", + "create.ponder.mechanical_piston_modes.header": "機械活塞的移動模式", "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移動的結構就會回退到方塊狀態", "create.ponder.mechanical_piston_modes.text_2": "你也可以將其設定為從不方塊化,或者只在起始位置方塊化", - "create.ponder.mechanical_plough.header": "在裝置中使用動力犁", - "create.ponder.mechanical_plough.text_1": "在運動裝置中使用動力犁時...", - "create.ponder.mechanical_plough.text_2": "...它會破壞掉那些不具有固體碰撞箱的方塊", - "create.ponder.mechanical_plough.text_3": "此外,動力犁可以耕地", - "create.ponder.mechanical_plough.text_4": "...它也可以在不傷害實體的情況下推動它們", + "create.ponder.mechanical_plough.header": "在裝置中使用機械犁", + "create.ponder.mechanical_plough.text_1": "在運動裝置中使用機械犁時…", + "create.ponder.mechanical_plough.text_2": "…它會破壞掉那些不具有固體碰撞箱的方塊", + "create.ponder.mechanical_plough.text_3": "此外,機械犁可以耕地", + "create.ponder.mechanical_plough.text_4": "…它也可以在不傷害實體的情況下推動它們", - "create.ponder.mechanical_press.header": "使用機械液壓機處理物品", - "create.ponder.mechanical_press.text_1": "機械液壓機可以處理位於其下方的物品", + "create.ponder.mechanical_press.header": "使用機械鍛壓機處理物品", + "create.ponder.mechanical_press.text_1": "機械鍛壓機可以處理位於其下方的物品", "create.ponder.mechanical_press.text_2": "在其下方丟入物品,或者將物品放在置物台上,都算作有效的物品輸入", - "create.ponder.mechanical_press.text_3": "若物品被輸入時正位於傳送帶上...", + "create.ponder.mechanical_press.text_3": "若物品被輸入時正位於傳送帶上…", "create.ponder.mechanical_press.text_4": "輥軋機會使物品停下,然後自動處理這一物品", - "create.ponder.mechanical_press_compacting.header": "使用機械液壓機壓縮物品", + "create.ponder.mechanical_press_compacting.header": "使用機械鍛壓機壓縮物品", "create.ponder.mechanical_press_compacting.text_1": "對放置於工作盆內的物品進行輥軋,可以將這些物品壓縮在一起", "create.ponder.mechanical_press_compacting.text_2": "壓縮意指任何同種物品填滿了 2x2 或者 3x3 網格的配方,以及一些額外的配方", - "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃燒室提供熱量", + "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰使者動力爐提供熱量", "create.ponder.mechanical_press_compacting.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - "create.ponder.mechanical_pump_flow.header": "使用機械幫浦抽運送液體", + "create.ponder.mechanical_pump_flow.header": "使用機械幫浦抽運送流體", "create.ponder.mechanical_pump_flow.text_1": "機械幫浦為與其連接的管線提供動力", - "create.ponder.mechanical_pump_flow.text_2": "轉動時,箭頭指向液體的方向", - "create.ponder.mechanical_pump_flow.text_3": "在他後面的網路現在可以抽取液體 ......", - "create.ponder.mechanical_pump_flow.text_4": "...... 當前面的網絡向外傳輸時", - "create.ponder.mechanical_pump_flow.text_5": "反轉輸入的動力可以反轉液體的方向", + "create.ponder.mechanical_pump_flow.text_2": "轉動時,箭頭指向流體的方向", + "create.ponder.mechanical_pump_flow.text_3": "在他後面的網路現在可以抽取流體…", + "create.ponder.mechanical_pump_flow.text_4": "…當前面的網路向外傳輸時", + "create.ponder.mechanical_pump_flow.text_5": "反轉輸入的動力可以反轉流體的方向", "create.ponder.mechanical_pump_flow.text_6": "扳手可以手動調整方向", "create.ponder.mechanical_pump_speed.header": "機械幫浦的吞吐量", "create.ponder.mechanical_pump_speed.text_1": "無論轉速如何,機械幫浦都只能影響相連的 16 個方塊以內的管線", - "create.ponder.mechanical_pump_speed.text_2": "加快旋轉速度會改變液動傳播的速度 ......", - "create.ponder.mechanical_pump_speed.text_3": "...... 以及流體轉移的速度", + "create.ponder.mechanical_pump_speed.text_2": "加快旋轉速度會改變液動傳播的速度…", + "create.ponder.mechanical_pump_speed.text_3": "…以及流體轉移的速度", "create.ponder.mechanical_pump_speed.text_4": "在同一個管線網路中機械幫浦可以結合他們的吞吐量", "create.ponder.mechanical_pump_speed.text_5": "改變它們的方向可以對齊它們的流動方向", - "create.ponder.mechanical_saw_breaker.header": "使用動力鋸伐木", - "create.ponder.mechanical_saw_breaker.text_1": "向其通入動能後,動力鋸可以直接砍伐掉它面前的樹木", + "create.ponder.mechanical_saw_breaker.header": "使用機械圓鋸機伐木", + "create.ponder.mechanical_saw_breaker.text_1": "向其輸入動力後,機械圓鋸機可以直接砍伐掉它面前的樹木", "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵樹,鋸子必須破壞掉樹與地面連接的最後一個方塊", - "create.ponder.mechanical_saw_contraption.header": "在裝置中使用動力鋸", - "create.ponder.mechanical_saw_contraption.text_1": "若在運動裝置中使用動力鋸...", - "create.ponder.mechanical_saw_contraption.text_2": "...它會將撞到它的樹木破壞掉", + "create.ponder.mechanical_saw_contraption.header": "在裝置中使用機械圓鋸機", + "create.ponder.mechanical_saw_contraption.text_1": "若在運動裝置中使用機械圓鋸機…", + "create.ponder.mechanical_saw_contraption.text_2": "…它會將撞到它的樹木破壞掉", - "create.ponder.mechanical_saw_processing.header": "使用動力鋸處理物品", - "create.ponder.mechanical_saw_processing.text_1": "面向朝上的動力鋸可以將物品處理為其變種", - "create.ponder.mechanical_saw_processing.text_2": "處理過後的物品的彈出方向始終與通入鋸中的旋轉轉向相反", - "create.ponder.mechanical_saw_processing.text_3": "鋸子可以", - "create.ponder.mechanical_saw_processing.text_4": "若輸入原料有多種可能產物,你可以用動力鋸上的過濾槽指定只產出某種產物", - "create.ponder.mechanical_saw_processing.text_5": "若沒有使用過濾槽,動力鋸會在各產物中按順序循環輸出", + "create.ponder.mechanical_saw_processing.header": "使用機械圓鋸機處理物品", + "create.ponder.mechanical_saw_processing.text_1": "面朝上方的機械圓鋸機可以加工各種物品", + "create.ponder.mechanical_saw_processing.text_2": "處理後的物品總是逆著機械圓鋸機的轉向移動", + "create.ponder.mechanical_saw_processing.text_3": "機械圓鋸機可以配合輸送帶運駔", + "create.ponder.mechanical_saw_processing.text_4": "當原料有多種可產出的產品時,過濾槽可以指定產品的種類", + "create.ponder.mechanical_saw_processing.text_5": "若沒有使用過濾槽,機械圓鋸機循環的生產可產出的產品", "create.ponder.millstone.header": "使用石磨處理物品", "create.ponder.millstone.text_1": "石磨會對輸入的物品進行磨製", - "create.ponder.millstone.text_2": "在其側邊使用齒輪與其相耦合,方可為其通入動力", + "create.ponder.millstone.text_2": "在其側邊使用齒輪與其相耦合,方可為其輸入動力", "create.ponder.millstone.text_3": "頂部可以丟入或者塞入物品", - "create.ponder.millstone.text_4": "一段時間過後,右擊石磨可以拿出其中的產物", + "create.ponder.millstone.text_4": "一段時間過後,右鍵石磨可以拿出其中的產物", "create.ponder.millstone.text_5": "產物的提取也是可以自動化的", "create.ponder.nixie_tube.header": "使用真空管顯示器", - "create.ponder.nixie_tube.text_1": "通入紅石訊號後,真空管顯示器會顯示出紅石訊號的強度", - "create.ponder.nixie_tube.text_2": "使用命名牌在鐵砧上為其命名,可以自訂它的顯示文本", + "create.ponder.nixie_tube.text_1": "輸入紅石訊號後,真空管顯示器會顯示出紅石訊號的強度", + "create.ponder.nixie_tube.text_2": "使用命名牌在鐵砧上為其命名,可以自訂它的顯示文字", "create.ponder.nixie_tube.text_3": "使用染料右鍵點擊可以上色", "create.ponder.piston_pole.header": "活塞延長杆", - "create.ponder.piston_pole.text_1": "若無相接的延長杆,動力活塞無法移動其他方塊", + "create.ponder.piston_pole.text_1": "若無相接的延長杆,機械活塞無法移動其他方塊", "create.ponder.piston_pole.text_2": "在其背面安裝的延長杆長度,決定了活塞的推動範圍", - "create.ponder.portable_fluid_interface.header": "移動式液體口", - "create.ponder.portable_fluid_interface.text_1": "任何管道線都無法與移動裝置上的液體罐連接", - "create.ponder.portable_fluid_interface.text_2": "該元件可以與液體罐相互作用,而無需停止裝置", + "create.ponder.portable_fluid_interface.header": "移動式流體口", + "create.ponder.portable_fluid_interface.text_1": "任何管道線都無法與移動裝置上的流體罐連接", + "create.ponder.portable_fluid_interface.text_2": "該元件可以與流體罐相互作用,而無需停止裝置", "create.ponder.portable_fluid_interface.text_3": "放置第二個,中間間隔 1 或 2 個方塊", - "create.ponder.portable_fluid_interface.text_4": "每當他們擦身而過時,他們就會建立聯繫", - "create.ponder.portable_fluid_interface.text_5": "啟用時,移動式液體口將代表裝置上的『所有』水箱", - "create.ponder.portable_fluid_interface.text_6": "現在可以輸入液體 ......", - "create.ponder.portable_fluid_interface.text_7": "...... 或從裝置中抽取", - "create.ponder.portable_fluid_interface.text_8": "一段時間沒有液體交換後,裝置將繼續前進", + "create.ponder.portable_fluid_interface.text_4": "每當它們擦身而過時,它們就會建立聯繫", + "create.ponder.portable_fluid_interface.text_5": "啟用時,移動式流體口將代表裝置上的「所有」水箱", + "create.ponder.portable_fluid_interface.text_6": "現在可以輸入流體…", + "create.ponder.portable_fluid_interface.text_7": "…或從裝置中抽取", + "create.ponder.portable_fluid_interface.text_8": "一段時間沒有流體交換後,裝置將繼續前進", "create.ponder.portable_storage_interface.header": "裝置存儲交換", "create.ponder.portable_storage_interface.text_1": "玩家無法與運動裝置內的存儲空間進行互動", @@ -2708,12 +2708,12 @@ "create.ponder.portable_storage_interface.text_3": "放置第二個介面時,記得要與裝置介面相隔 1 格或者 2 格的距離", "create.ponder.portable_storage_interface.text_4": "當它們彼此經過時,它們會連接在一起", "create.ponder.portable_storage_interface.text_5": "連接狀態下,固定側介面便會作為整個裝置的存儲空間代理", - "create.ponder.portable_storage_interface.text_6": "物品會被輸入到裝置內...", - "create.ponder.portable_storage_interface.text_7": "...或是從裝置中提取出來", + "create.ponder.portable_storage_interface.text_6": "物品會被輸入到裝置內…", + "create.ponder.portable_storage_interface.text_7": "…或是從裝置中提取出來", "create.ponder.portable_storage_interface.text_8": "物品交換完畢後,裝置仍然會停留在原地一小會,然後才會繼續前行", "create.ponder.portable_storage_interface_redstone.header": "紅石控制", - "create.ponder.portable_storage_interface_redstone.text_1": "通入紅石訊號可以阻止固定側介面的連接行為", + "create.ponder.portable_storage_interface_redstone.text_1": "輸入紅石訊號可以阻止固定側介面的連接行為", "create.ponder.powered_latch.header": "使用閂鎖器控制訊號", "create.ponder.powered_latch.text_1": "閂鎖器是一種可以用紅石訊號控制的拉杆", @@ -2724,277 +2724,277 @@ "create.ponder.powered_toggle_latch.header": "使用T型正反器控制訊號", "create.ponder.powered_toggle_latch.text_1": "T型正反器是一種可以用紅石訊號控制的拉杆", "create.ponder.powered_toggle_latch.text_2": "後方訊號輸入可以改變它的狀態", - "create.ponder.powered_toggle_latch.text_3": "...開啟或者是關閉", + "create.ponder.powered_toggle_latch.text_3": "…開啟或者是關閉", "create.ponder.powered_toggle_latch.text_4": "你也可以手動切換其狀態", - "create.ponder.pulse_extender.header": "UNLOCALIZED: Controlling signals using Pulse Extenders", - "create.ponder.pulse_extender.text_1": "UNLOCALIZED: Pulse Extenders can lengthen a signal passing through", - "create.ponder.pulse_extender.text_2": "UNLOCALIZED: They activate after a short delay...", - "create.ponder.pulse_extender.text_3": "UNLOCALIZED: ...and cool down for the configured duration", - "create.ponder.pulse_extender.text_4": "UNLOCALIZED: Using the mouse wheel, the discharge time can be configured", - "create.ponder.pulse_extender.text_5": "UNLOCALIZED: The configured duration can range up to 30 minutes", + "create.ponder.pulse_extender.header": "使用脈衝延長器控制訊號", + "create.ponder.pulse_extender.text_1": "脈衝延長器可以延長通過的訊號", + "create.ponder.pulse_extender.text_2": "它們會在短暫延遲後被開啟…", + "create.ponder.pulse_extender.text_3": "…並於設定的延遲過後關閉", + "create.ponder.pulse_extender.text_4": "使用滑鼠滾輪可以設定延遲", + "create.ponder.pulse_extender.text_5": "延遲最長可達 30 分鐘", "create.ponder.pulse_repeater.header": "使用脈衝中繼器控制訊號", - "create.ponder.pulse_repeater.text_1": "脈衝中繼器會將所有通入的紅石訊號縮減為一次脈衝", - "create.ponder.pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", + "create.ponder.pulse_repeater.text_1": "脈衝中繼器會在延遲後發出一個短脈衝", + "create.ponder.pulse_repeater.text_2": "使用滑鼠滾輪可以設定延遲", + "create.ponder.pulse_repeater.text_3": "延遲最長可達 30 分鐘", "create.ponder.radial_chassis.header": "使用旋轉底盤黏著方塊", "create.ponder.radial_chassis.text_1": "同一行上的旋轉底盤會相互連接在一起", "create.ponder.radial_chassis.text_2": "當其中的一個底盤被裝置帶動時,其餘的底盤也會被帶動", "create.ponder.radial_chassis.text_3": "底盤的側邊可以變為黏性面", - "create.ponder.radial_chassis.text_4": "再次點擊黏性面,可以讓其所有面都變得帶黏性", - "create.ponder.radial_chassis.text_5": "空手潛行右擊可以移除其上的黏性物", - "create.ponder.radial_chassis.text_6": "若有物品與底盤的黏性面相接觸...", - "create.ponder.radial_chassis.text_7": "...底盤便會與同層且位於半徑內的所有可及方塊黏著在一起", + "create.ponder.radial_chassis.text_4": "再度點擊黏性面,可以讓其所有面都變得帶黏性", + "create.ponder.radial_chassis.text_5": "空手潛行右鍵可以移除其上的黏性物", + "create.ponder.radial_chassis.text_6": "若有物品與底盤的黏性面相接觸…", + "create.ponder.radial_chassis.text_7": "…底盤便會與同層且位於半徑內的所有可及方塊黏著在一起", "create.ponder.radial_chassis.text_8": "使用扳手可以精確指定底盤的影響範圍", "create.ponder.radial_chassis.text_9": "黏性面一側的不可及方塊不會被黏著", - "create.ponder.redstone_contact.header": "接觸式紅石訊號發生器", - "create.ponder.redstone_contact.text_1": "當兩個接觸式紅石訊號發生器面對面時,它們會發出紅石訊號", - "create.ponder.redstone_contact.text_2": "並且,若有一方位於運動裝置上,此特性也能正常生效", + "create.ponder.redstone_contact.header": "接觸式偵測器", + "create.ponder.redstone_contact.text_1": "當兩個接觸式偵測器面對面時,它們會發出紅石訊號", + "create.ponder.redstone_contact.text_2": "若其中一方位於運動裝置上,它們仍正常生效", - "create.ponder.redstone_link.header": "使用無線紅石訊號機", - "create.ponder.redstone_link.text_1": "無線紅石訊號機可以無線傳輸紅石訊號", - "create.ponder.redstone_link.text_2": "潛行右擊可以改變其接收模式", - "create.ponder.redstone_link.text_3": "手持扳手右擊也可以", + "create.ponder.redstone_link.header": "使用無線紅石鏈路", + "create.ponder.redstone_link.text_1": "無線紅石鏈路可以無線傳輸紅石訊號", + "create.ponder.redstone_link.text_2": "潛行右鍵可以改變其接收模式", + "create.ponder.redstone_link.text_3": "手持扳手右鍵也可以", "create.ponder.redstone_link.text_4": "接收端會發出由傳輸端發來的訊號,有效距離為 128 格", "create.ponder.redstone_link.text_5": "在它們所帶的槽位中放上物品,可以為它們指定頻道", "create.ponder.redstone_link.text_6": "只有頻道相互匹配的機方可互通", "create.ponder.rope_pulley.header": "使用繩索滑輪移動結構", - "create.ponder.rope_pulley.text_1": "繩索滑輪在接受動能時可以垂直移動方塊結構", - "create.ponder.rope_pulley.text_2": "移動的方向及速度取決於提供的轉速", + "create.ponder.rope_pulley.text_1": "繩索滑輪在輸入動力時可以垂直移動方塊結構", + "create.ponder.rope_pulley.text_2": "移動的方向及速度取決於輸入軸", "create.ponder.rope_pulley_attachment.header": "繩索滑輪與裝置一同運動", - "create.ponder.rope_pulley_attachment.text_1": "當繩索滑輪本身在裝置中被帶動時...", - "create.ponder.rope_pulley_attachment.text_2": "...它附著在滑輪上的結構會被滑輪拉著一同移動", + "create.ponder.rope_pulley_attachment.text_1": "當繩索滑輪本身在裝置中被帶動時…", + "create.ponder.rope_pulley_attachment.text_2": "…它附著在滑輪上的結構會被滑輪拉著一同移動", "create.ponder.rope_pulley_attachment.text_3": "注意,只有繩索滑輪停止工作時才能被移動", "create.ponder.rope_pulley_modes.header": "繩索滑輪的運動模式", "create.ponder.rope_pulley_modes.text_1": "當繩索滑輪停止運動時,它所附屬的移動結構便會方塊化", "create.ponder.rope_pulley_modes.text_2": "你可以調整整個結構永不方塊化,或者僅在結構的初始位置方塊化", - "create.ponder.rose_quartz_lamp.header": "UNLOCALIZED: Rose Quartz Lamps", - "create.ponder.rose_quartz_lamp.text_1": "UNLOCALIZED: Rose Quartz Lamps activate on a Redstone signal", - "create.ponder.rose_quartz_lamp.text_2": "UNLOCALIZED: They will continue to emit redstone power afterwards", - "create.ponder.rose_quartz_lamp.text_3": "UNLOCALIZED: When multiple lamps are arranged in a group...", - "create.ponder.rose_quartz_lamp.text_4": "UNLOCALIZED: ...activating a Lamp will focus the signal to it, deactivating all others", - "create.ponder.rose_quartz_lamp.text_5": "UNLOCALIZED: Comparators output based on the distance to a powered lamp", - "create.ponder.rose_quartz_lamp.text_6": "UNLOCALIZED: The Lamps can also be toggled manually using a Wrench", + "create.ponder.rose_quartz_lamp.header": "玫瑰石英燈", + "create.ponder.rose_quartz_lamp.text_1": "玫瑰石英燈由紅石訊號開啟", + "create.ponder.rose_quartz_lamp.text_2": "之後它們會持續發出紅石能量", + "create.ponder.rose_quartz_lamp.text_3": "當多個燈排列成一組…", + "create.ponder.rose_quartz_lamp.text_4": "…訊號會集中到新開啟的燈,其餘的將熄滅", + "create.ponder.rose_quartz_lamp.text_5": "比較器的輸出強度,取決於開啟的燈的距離", + "create.ponder.rose_quartz_lamp.text_6": "也可以透過扳手手動切換", "create.ponder.rotation_speed_controller.header": "使用轉速控制器", - "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳遞至它上方的大齒輪", + "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳輸至它上方的大齒輪", "create.ponder.rotation_speed_controller.text_2": "在其側面滾動滑鼠滾輪,可以調節輸出轉速", "create.ponder.sail.header": "使用風帆來組裝風車", "create.ponder.sail.text_1": "風帆是製作風車的趁手材料", "create.ponder.sail.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", - "create.ponder.sail.text_3": "手持染料右擊可對其染色", - "create.ponder.sail.text_4": "手持剪刀右擊可剪除帆布,使其變迴風帆框架", + "create.ponder.sail.text_3": "手持染料右鍵可對其染色", + "create.ponder.sail.text_4": "手持剪刀右鍵可剪除帆布,使其變迴風帆框架", "create.ponder.sail_frame.header": "使用風帆框架來組裝風車", "create.ponder.sail_frame.text_1": "風帆框架是製作風車的趁手材料", "create.ponder.sail_frame.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", "create.ponder.sequenced_gearshift.header": "使用可編程齒輪箱來控制轉速", - "create.ponder.sequenced_gearshift.text_1": "可編程齒輪箱能夠根據玩家設置的預設時序表來傳遞旋轉", - "create.ponder.sequenced_gearshift.text_2": "對其右擊可以打開設置面板", + "create.ponder.sequenced_gearshift.text_1": "可編程齒輪箱能夠根據玩家設置的預設時序表來傳輸動力", + "create.ponder.sequenced_gearshift.text_2": "右鍵可以打開設置面板", "create.ponder.sequenced_gearshift.text_3": "接受紅石訊號時,它會開始執行其內部已設定好的時序指令表", - "create.ponder.sequenced_gearshift.text_4": "當完成時序指令表後,它會進入待機狀態,再次接受紅石訊號後,它才會再次執行時序指令表內容", + "create.ponder.sequenced_gearshift.text_4": "當完成時序指令表後,它會進入待機狀態,再度接受紅石訊號後,它才會再度執行時序指令表內容", "create.ponder.sequenced_gearshift.text_5": "紅石比較器可以讀取目前時序指令表完成進度", - "create.ponder.shaft.header": "使用傳動軸來傳送動能", - "create.ponder.shaft.text_1": "傳動軸可以直線傳送動能", + "create.ponder.shaft.header": "使用傳動軸來傳輸動力", + "create.ponder.shaft.text_1": "傳動軸可以直線傳輸動力", "create.ponder.shaft_casing.header": "包裹傳動軸", "create.ponder.shaft_casing.text_1": "黃銅及安山岩機殼可以用來裝飾傳動軸", - "create.ponder.smart_chute.header": "使用智慧滑道來過濾物品", - "create.ponder.smart_chute.text_1": "智慧滑道是一種可以被控制的滑道", - "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,溜槽只會傳輸這一指定標記的物品", + "create.ponder.smart_chute.header": "使用智慧滑槽來過濾物品", + "create.ponder.smart_chute.text_1": "智慧滑槽是一種可以被控制的滑槽", + "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,滑槽只會傳輸這一指定標記的物品", "create.ponder.smart_chute.text_3": "使用滑鼠滾輪可以指定被過濾的物品數量", - "create.ponder.smart_chute.text_4": "通入紅石訊號,智慧溜槽將會完全暫停工作", + "create.ponder.smart_chute.text_4": "輸入紅石訊號,智慧滑槽將會完全暫停工作", - "create.ponder.smart_pipe.header": "使用智慧液體管道控制液體", - "create.ponder.smart_pipe.text_1": "智慧液體管道可以按照液體類型控制液體流", - "create.ponder.smart_pipe.text_2": "當直接放置在源頭時,他們可以指定要提取的液體類型", - "create.ponder.smart_pipe.text_3": "只需用包含所需液體的任何項目右鍵點擊其過濾槽", - "create.ponder.smart_pipe.text_4": "在管網裡時,智慧液體管道只會讓匹配的液體經過", + "create.ponder.smart_pipe.header": "使用智慧流體管道控制流體", + "create.ponder.smart_pipe.text_1": "智慧流體管道可以按照流體類型控制流體流", + "create.ponder.smart_pipe.text_2": "當直接放置在源頭時,它們可以指定要提取的流體類型", + "create.ponder.smart_pipe.text_3": "只需用包含所需流體的任何項目右鍵點擊其過濾槽", + "create.ponder.smart_pipe.text_4": "在管網裡時,智慧流體管道只會讓匹配的流體經過", - "create.ponder.speedometer.header": "使用速度計來監測轉速", - "create.ponder.speedometer.text_1": "速度計能顯示相接組件的轉速", - "create.ponder.speedometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.speedometer.text_3": "紅石比較器可以根據速度計的數值輸出不同強弱的紅石訊號", + "create.ponder.speedometer.header": "使用轉速計來監測轉速", + "create.ponder.speedometer.text_1": "轉速計能顯示相接組件的轉速", + "create.ponder.speedometer.text_2": "當佩戴工程師護目鏡時,可以看到儀表所顯示的更詳細的數據", + "create.ponder.speedometer.text_3": "紅石比較器可以根據轉速計的數值輸出不同強弱的紅石訊號", - "create.ponder.spout_filling.header": "使用液體灌注器填充物品", - "create.ponder.spout_filling.text_1": "液體灌注器可以填充下方的液體容器", - "create.ponder.spout_filling.text_2": "無法手動接觸液體灌注器中的液體", - "create.ponder.spout_filling.text_3": "管道可用於為其提供液體", + "create.ponder.spout_filling.header": "使用流體灌注器填充物品", + "create.ponder.spout_filling.text_1": "流體灌注器可以填充下方的流體容器", + "create.ponder.spout_filling.text_2": "無法手動接觸流體灌注器中的流體", + "create.ponder.spout_filling.text_3": "管道可用於為其提供流體", "create.ponder.spout_filling.text_4": "輸入物品可以是掉落狀態或是被放在置物台上", - "create.ponder.spout_filling.text_5": "當物品放在輸送帶上時 ......", - "create.ponder.spout_filling.text_6": "液體灌注器會停下他並且自動填滿", + "create.ponder.spout_filling.text_5": "當物品放在輸送帶上時…", + "create.ponder.spout_filling.text_6": "流體灌注器會停下他並且自動填滿", "create.ponder.stabilized_bearings.header": "裝置固定朝向", - "create.ponder.stabilized_bearings.text_1": "當動力軸承在結構被帶動時...", - "create.ponder.stabilized_bearings.text_2": "...它會確保它轉盤的垂直朝向不變", - "create.ponder.stabilized_bearings.text_3": "跟預設的一樣,動力軸承會黏著它前方的方塊", + "create.ponder.stabilized_bearings.text_1": "當機械軸承在結構被帶動時…", + "create.ponder.stabilized_bearings.text_2": "…它會確保它轉盤的垂直朝向不變", + "create.ponder.stabilized_bearings.text_3": "跟預設的一樣,機械軸承會黏著它前方的方塊", "create.ponder.stabilized_bearings.text_4": "這種情況下,它所黏著的子結構的垂直朝向也不會改變", - "create.ponder.steam_engine.header": "UNLOCALIZED: Setting up Steam Engines", - "create.ponder.steam_engine.text_1": "UNLOCALIZED: Steam Engines can be placed on a Fluid Tank", - "create.ponder.steam_engine.text_10": "UNLOCALIZED: Lvl 4", - "create.ponder.steam_engine.text_11": "UNLOCALIZED: 4 Engines", - "create.ponder.steam_engine.text_12": "UNLOCALIZED: Lvl 8", - "create.ponder.steam_engine.text_13": "UNLOCALIZED: 8 Engines", - "create.ponder.steam_engine.text_2": "UNLOCALIZED: Clicking the engine with a Shaft creates the Kinetic Output", - "create.ponder.steam_engine.text_3": "UNLOCALIZED: With sufficient Heat, Water and Boiler space...", - "create.ponder.steam_engine.text_4": "UNLOCALIZED: ...they will generate Rotational Force", - "create.ponder.steam_engine.text_5": "UNLOCALIZED: The minimal setup requires 4 Fluid Tanks", - "create.ponder.steam_engine.text_6": "UNLOCALIZED: With the help of Blaze Burners, the power output can be increased", - "create.ponder.steam_engine.text_7": "UNLOCALIZED: Higher power levels require more Water, Size and Heat", - "create.ponder.steam_engine.text_8": "UNLOCALIZED: The boiler's current power level can be inspected with Engineer's Goggles", - "create.ponder.steam_engine.text_9": "UNLOCALIZED: With each added power level, an additional Engine can output at full capacity", + "create.ponder.steam_engine.header": "設置蒸汽機", + "create.ponder.steam_engine.text_1": "蒸汽機可以放置在流體儲存罐上", + "create.ponder.steam_engine.text_10": "Lvl 4", + "create.ponder.steam_engine.text_11": "4 個引擎", + "create.ponder.steam_engine.text_12": "Lvl 8", + "create.ponder.steam_engine.text_13": "8 個引擎", + "create.ponder.steam_engine.text_2": "手持傳動軸右鍵以輸出動力", + "create.ponder.steam_engine.text_3": "給予足夠的熱量、水和鍋爐空間…", + "create.ponder.steam_engine.text_4": "…它們會產生動力", + "create.ponder.steam_engine.text_5": "最低配備為 4 個流體儲存罐", + "create.ponder.steam_engine.text_6": "在烈焰使者動力爐的幫助下,功率可以得到提升", + "create.ponder.steam_engine.text_7": "更高的功率需要更多的熱量、水和空間", + "create.ponder.steam_engine.text_8": "可以使用工程師護目鏡檢查鍋爐的當前功率", + "create.ponder.steam_engine.text_9": "每提升一級功率,可以額外使一個蒸汽機滿負荷輸出", - "create.ponder.steam_whistle.header": "UNLOCALIZED: Setting up Steam Whistles", - "create.ponder.steam_whistle.text_1": "UNLOCALIZED: Steam Whistles can be placed on a Fluid Tank", - "create.ponder.steam_whistle.text_2": "UNLOCALIZED: If the tank receives sufficient heat...", - "create.ponder.steam_whistle.text_3": "UNLOCALIZED: ...the Whistle will play a note when activated", - "create.ponder.steam_whistle.text_4": "UNLOCALIZED: Use a Whistle item on the block to lower its pitch", - "create.ponder.steam_whistle.text_5": "UNLOCALIZED: Cycle between three different octaves using a Wrench", - "create.ponder.steam_whistle.text_6": "UNLOCALIZED: Engineer's Goggles can help to find out the current pitch of a Whistle", + "create.ponder.steam_whistle.header": "設置汽笛", + "create.ponder.steam_whistle.text_1": "汽笛可以放置在流體儲存罐上", + "create.ponder.steam_whistle.text_2": "當儲存罐的熱量足夠…", + "create.ponder.steam_whistle.text_3": "…汽笛將被觸發並發出一個音", + "create.ponder.steam_whistle.text_4": "增加汽笛以降低音高", + "create.ponder.steam_whistle.text_5": "使用扳手可以設置音調在三個八度間切換", + "create.ponder.steam_whistle.text_6": "工程師護目鏡可以查看汽笛的音高", "create.ponder.sticker.header": "使用方塊黏著器來黏取方塊", "create.ponder.sticker.text_1": "方塊黏著器是一個很棒的裝置,他受控於紅石訊號", "create.ponder.sticker.text_2": "當接收到訊號時,他會黏起面前的一個方塊", "create.ponder.sticker.text_3": "如果此時方塊黏著器被移動,被黏到的方塊會跟著移動", - "create.ponder.sticker.text_4": "再次接收到訊號後,黏著器會放下它面前的方塊", + "create.ponder.sticker.text_4": "再度接收到訊號後,黏著器會放下它面前的方塊", - "create.ponder.stressometer.header": "使用動能錶來監測應力", - "create.ponder.stressometer.text_1": "動能錶能顯示目前動能網路內的應力訊息", - "create.ponder.stressometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.stressometer.text_3": "紅石比較器可以根據動能錶的數值輸出不同強弱的紅石訊號", + "create.ponder.stressometer.header": "使用動力計來監測動力", + "create.ponder.stressometer.text_1": "動力計能顯示目前動能網路內的動力訊息", + "create.ponder.stressometer.text_2": "當佩戴工程師護目鏡時,可以看到儀表所顯示的更詳細的數據", + "create.ponder.stressometer.text_3": "紅石比較器可以根據動力計的數值輸出不同強弱的紅石訊號", "create.ponder.super_glue.header": "使用強力膠來黏附方塊", "create.ponder.super_glue.text_1": "強力膠可以在任意兩個方塊間使用", - "create.ponder.super_glue.text_2": "當被黏合的方塊被組裝為裝置時,他們會一起運動", - "create.ponder.super_glue.text_3": "當強力膠在副手時...", - "create.ponder.super_glue.text_4": "...新放置的方塊會自動被黏附在所放置方塊的面上", - "create.ponder.super_glue.text_5": "左擊可以清除強力膠", - "create.ponder.super_glue.text_6": "UNLOCALIZED: Blocks hanging on others usually do not require glue", + "create.ponder.super_glue.text_2": "當被黏合的方塊被組裝為裝置時,它們會一起運動", + "create.ponder.super_glue.text_3": "當強力膠在副手時…", + "create.ponder.super_glue.text_4": "…新放置的方塊會自動被黏附在所放置方塊的面上", + "create.ponder.super_glue.text_5": "左鍵可以清除強力膠", + "create.ponder.super_glue.text_6": "附掛在其他方塊之上的方塊通常不需要使用強力膠", - "create.ponder.track_chunks.header": "UNLOCALIZED: Traversing unloaded Chunks", - "create.ponder.track_chunks.text_1": "UNLOCALIZED: Tracks stay functional outside of loaded chunks", - "create.ponder.track_chunks.text_2": "UNLOCALIZED: Trains will travel through inactive sections of the world without issue", - "create.ponder.track_chunks.text_3": "UNLOCALIZED: They will still stop at stations or red signals", - "create.ponder.track_chunks.text_4": "UNLOCALIZED: However, Drills and other on-board machines will not operate", - "create.ponder.track_chunks.text_5": "UNLOCALIZED: Once near a Player, the train will re-appear", + "create.ponder.track_chunks.header": "通過未加載的區塊", + "create.ponder.track_chunks.text_1": "軌道在未加載的區塊仍會運作", + "create.ponder.track_chunks.text_2": "火車可以順利的通過未被加載的區域", + "create.ponder.track_chunks.text_3": "它們仍會在車站及紅色信號處停止", + "create.ponder.track_chunks.text_4": "但是機械鑽頭與其他車載機器會停止運作", + "create.ponder.track_chunks.text_5": "一旦接近玩家火車將重新出現", - "create.ponder.track_observer.header": "UNLOCALIZED: Detecting Trains", - "create.ponder.track_observer.text_1": "UNLOCALIZED: Select a Train Track then place the Observer nearby", - "create.ponder.track_observer.text_2": "UNLOCALIZED: The Observer will detect any Trains passing over the marker", - "create.ponder.track_observer.text_3": "UNLOCALIZED: Observers can be filtered to activate for matching cargo", + "create.ponder.track_observer.header": "偵測火車", + "create.ponder.track_observer.text_1": "選取一個火車軌道並將火車感測器放在旁邊", + "create.ponder.track_observer.text_2": "感測器會檢測所有經過標記的火車", + "create.ponder.track_observer.text_3": "感測器可以設定為當比對到特定貨物時才啟動", - "create.ponder.track_placement.header": "UNLOCALIZED: Placing Train Tracks", - "create.ponder.track_placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions", - "create.ponder.track_placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track", - "create.ponder.track_placement.text_3": "UNLOCALIZED: Then place or select a second track", - "create.ponder.track_placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes", - "create.ponder.track_placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized", - "create.ponder.track_placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...", - "create.ponder.track_placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead", - "create.ponder.track_placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically", + "create.ponder.track_placement.header": "鋪設火車軌道", + "create.ponder.track_placement.text_1": "一種專為火車裝置設計的新型鐵軌", + "create.ponder.track_placement.text_2": "若要同時鋪設多條軌道,右鍵點擊已鋪設的軌道", + "create.ponder.track_placement.text_3": "然後選擇或放置第二個軌道", + "create.ponder.track_placement.text_4": "軌道也可以鋪設成彎道或斜坡", + "create.ponder.track_placement.text_5": "軌道在連接時會嘗試讓每個彎道的大小相等", + "create.ponder.track_placement.text_6": "連接時按住衝刺鍵…", + "create.ponder.track_placement.text_7": "…將創建最長且適合的彎道", + "create.ponder.track_placement.text_8": "副手持有的材料會自動鋪設在軌道下方", - "create.ponder.track_portal.header": "UNLOCALIZED: Tracks and the Nether", - "create.ponder.track_portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...", - "create.ponder.track_portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side", - "create.ponder.track_portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions", + "create.ponder.track_portal.header": "軌道與地獄", + "create.ponder.track_portal.text_1": "對著地獄傳送門鋪設軌道…", + "create.ponder.track_portal.text_2": "…將嘗試在另一邊的傳送門鋪設成對的軌道", + "create.ponder.track_portal.text_3": "現在這條軌道上的火車可以跨次元旅行", - "create.ponder.train_assembly.header": "UNLOCALIZED: Assembling Trains", - "create.ponder.train_assembly.text_1": "UNLOCALIZED: Select a Train Track then place the Station nearby", - "create.ponder.train_assembly.text_10": "UNLOCALIZED: Every Train requires Train Controls on board", - "create.ponder.train_assembly.text_11": "UNLOCALIZED: An optional second one allows departure from Stations in both directions", - "create.ponder.train_assembly.text_12": "UNLOCALIZED: Open the Station UI and confirm the Assembly process", - "create.ponder.train_assembly.text_13": "UNLOCALIZED: Trains can be disassembled back into blocks at stations only", - "create.ponder.train_assembly.text_14": "UNLOCALIZED: When used on a station, maps will add a labeled marker at the location", - "create.ponder.train_assembly.text_15": "UNLOCALIZED: Assembled Trains can be relocated to nearby Tracks using the Wrench", - "create.ponder.train_assembly.text_2": "UNLOCALIZED: Stations are the Waypoints of your Track Network", - "create.ponder.train_assembly.text_3": "UNLOCALIZED: To create a new Train, open the UI and switch to Assembly Mode", - "create.ponder.train_assembly.text_4": "UNLOCALIZED: During Assembly no scheduled trains will approach this station", - "create.ponder.train_assembly.text_5": "UNLOCALIZED: Create new bogeys by using Train Casing on Tracks", - "create.ponder.train_assembly.text_6": "UNLOCALIZED: Click the track again to cycle between bogey designs", - "create.ponder.train_assembly.text_7": "UNLOCALIZED: Attach blocks with the help of Super Glue", - "create.ponder.train_assembly.text_8": "UNLOCALIZED: Assembled Trains will move faster if they can find fuel in assembled chests or barrels", - "create.ponder.train_assembly.text_9": "UNLOCALIZED: Fuel stored in Vaults will not be consumed by the train", + "create.ponder.train_assembly.header": "組裝火車", + "create.ponder.train_assembly.text_1": "選擇一截軌道並在旁邊設置車站", + "create.ponder.train_assembly.text_10": "每列火車都需要安裝火車控制台", + "create.ponder.train_assembly.text_11": "可選擇安裝第二個控制台讓火車從車站的兩個方向出發", + "create.ponder.train_assembly.text_12": "開啟車站介面並確認組裝", + "create.ponder.train_assembly.text_13": "火車只能在車站拆解成方塊", + "create.ponder.train_assembly.text_14": "地圖會在車站的位置畫上標記", + "create.ponder.train_assembly.text_15": "組裝好的火車可以用扳手重新設置到相鄰的軌道", + "create.ponder.train_assembly.text_2": "車站是軌道網的路徑點", + "create.ponder.train_assembly.text_3": "開啟UI並切換到組裝模式以打造新火車", + "create.ponder.train_assembly.text_4": "在組裝時,時刻表上的火車不會接近此車站", + "create.ponder.train_assembly.text_5": "在軌道上設置火車機殼以創建新的轉向架", + "create.ponder.train_assembly.text_6": "再度點擊軌道以循環改變轉向架種類", + "create.ponder.train_assembly.text_7": "用強力膠連接方塊", + "create.ponder.train_assembly.text_8": "若組裝好的火車可在安裝於上的箱子或桶子中找到燃料,可以移動得更快速", + "create.ponder.train_assembly.text_9": "保險庫中的燃料不會被火車消耗", - "create.ponder.train_controls.header": "UNLOCALIZED: Controlling Trains", - "create.ponder.train_controls.text_1": "UNLOCALIZED: Train Controls are required on every train contraption", - "create.ponder.train_controls.text_2": "UNLOCALIZED: Once assembled, right-click the block to start driving", - "create.ponder.train_controls.text_3": "UNLOCALIZED: Accelerate and steer the Train using movement keybinds", - "create.ponder.train_controls.text_4": "UNLOCALIZED: If desired, the top speed can be fine-tuned using the mouse wheel", - "create.ponder.train_controls.text_5": "UNLOCALIZED: Hold space to approach a nearby Station", - "create.ponder.train_controls.text_6": "UNLOCALIZED: Trains can only be disassembled back into blocks at Stations", - "create.ponder.train_controls.text_7": "UNLOCALIZED: Assembled Whistles can be activated with the sprint key", - "create.ponder.train_controls.text_8": "UNLOCALIZED: Sneak or click again to stop controlling the Train", + "create.ponder.train_controls.header": "控制火車", + "create.ponder.train_controls.text_1": "每列火車都需要火車控制台", + "create.ponder.train_controls.text_2": "組裝好後右鍵點擊控制台開始駕駛", + "create.ponder.train_controls.text_3": "使用移動鍵加速及導引火車方向", + "create.ponder.train_controls.text_4": "可以用滑鼠滾輪微調極速", + "create.ponder.train_controls.text_5": "按住空白鍵以接近最近的車站", + "create.ponder.train_controls.text_6": "火車只能在車站被拆解成方塊", + "create.ponder.train_controls.text_7": "安裝的汽笛可以按衝刺鍵觸發", + "create.ponder.train_controls.text_8": "潛行或再度點擊可以停止控制火車", - "create.ponder.train_schedule.header": "UNLOCALIZED: Using Train Schedules", - "create.ponder.train_schedule.text_1": "UNLOCALIZED: Schedules allow Trains to be controlled by other Drivers", - "create.ponder.train_schedule.text_2": "UNLOCALIZED: Right-click with the item in hand to open its Interface", - "create.ponder.train_schedule.text_3": "UNLOCALIZED: Once programmed, the Schedule can be handed off to a Train Driver", - "create.ponder.train_schedule.text_4": "UNLOCALIZED: Any mob or blaze burner sitting in front of Train Controls is an eligible conductor", - "create.ponder.train_schedule.text_5": "UNLOCALIZED: Creatures on a lead can be given their seat more conveniently", - "create.ponder.train_schedule.text_6": "UNLOCALIZED: Schedules can be retrieved from Drivers at any moment", + "create.ponder.train_schedule.header": "使用火車時刻表", + "create.ponder.train_schedule.text_1": "時刻表讓其他司機員可以控制列車", + "create.ponder.train_schedule.text_2": "將時刻表拿在手上右鍵開啟介面", + "create.ponder.train_schedule.text_3": "計畫完成後就可以將時刻表給司機員", + "create.ponder.train_schedule.text_4": "任何坐在火車控制台前的生物及烈焰使者動力爐,都是合格的司機員", + "create.ponder.train_schedule.text_5": "用栓繩拴住生物可以使牠們更方便地坐上座位", + "create.ponder.train_schedule.text_6": "時刻表可以隨時從司機員身上回收", - "create.ponder.train_signal_placement.header": "UNLOCALIZED: Placing Train Signals", - "create.ponder.train_signal_placement.text_1": "UNLOCALIZED: Select a Train Track then place the Signal nearby", - "create.ponder.train_signal_placement.text_2": "UNLOCALIZED: Signals control the flow of Trains not driven by players", - "create.ponder.train_signal_placement.text_3": "UNLOCALIZED: Scheduled Trains will never cross signals in the opposite direction", - "create.ponder.train_signal_placement.text_4": "UNLOCALIZED: ...unless a second signal is added facing the opposite way.", - "create.ponder.train_signal_placement.text_5": "UNLOCALIZED: Nixie tubes can be attached to make a signal's lights more visible", + "create.ponder.train_signal_placement.header": "設置火車訊號機", + "create.ponder.train_signal_placement.text_1": "選擇一截軌道並在旁邊設置訊號機", + "create.ponder.train_signal_placement.text_2": "訊號機會控制非玩家駕駛的火車", + "create.ponder.train_signal_placement.text_3": "被調度的火車不會以反方向穿越訊號", + "create.ponder.train_signal_placement.text_4": "…除非添加第二個反方向的訊號", + "create.ponder.train_signal_placement.text_5": "連接真空管顯示器可以讓訊號燈更顯眼", - "create.ponder.train_signal_redstone.header": "UNLOCALIZED: Signals & Redstone", - "create.ponder.train_signal_redstone.text_1": "UNLOCALIZED: Signals can be forced red by a redstone signal", - "create.ponder.train_signal_redstone.text_2": "UNLOCALIZED: Reversely, red signals emit a comparator output", + "create.ponder.train_signal_redstone.header": "訊號與紅石", + "create.ponder.train_signal_redstone.text_1": "紅石訊號會使訊號機保持紅色", + "create.ponder.train_signal_redstone.text_2": "相反地,紅色訊號會使紅石比較器輸出紅石訊號", - "create.ponder.train_signal_signaling.header": "UNLOCALIZED: Collision Prevention with Signals", - "create.ponder.train_signal_signaling.text_1": "UNLOCALIZED: Train Signals divide a track into segments", - "create.ponder.train_signal_signaling.text_2": "UNLOCALIZED: If a Segment is occupied, no other Trains will be allowed entry", - "create.ponder.train_signal_signaling.text_3": "UNLOCALIZED: Thus, each Segment will contain only one Train at a time", - "create.ponder.train_signal_signaling.text_4": "UNLOCALIZED: A second Signal mode is available via the Wrench", - "create.ponder.train_signal_signaling.text_5": "UNLOCALIZED: Segments of a brass signal usually lead into standard signals", - "create.ponder.train_signal_signaling.text_6": "UNLOCALIZED: This special Signal can stop trains under a second condition", - "create.ponder.train_signal_signaling.text_7": "UNLOCALIZED: It will stop Trains, which, upon entering...", - "create.ponder.train_signal_signaling.text_8": "UNLOCALIZED: ...would not be able to leave the Segment immediately", - "create.ponder.train_signal_signaling.text_9": "UNLOCALIZED: This helps keeping queued Trains out of a busy Segment", + "create.ponder.train_signal_signaling.header": "使用訊號避免相撞", + "create.ponder.train_signal_signaling.text_1": "火車訊號機將一條軌道分成許多區間", + "create.ponder.train_signal_signaling.text_2": "若一個區間被占用,則不允許其他火車進入該區間", + "create.ponder.train_signal_signaling.text_3": "因此每個區間只能同時有一列火車", + "create.ponder.train_signal_signaling.text_4": "扳手可以設定第二種訊號模式", + "create.ponder.train_signal_signaling.text_5": "黃銅訊號區間通常會產生標準訊號", + "create.ponder.train_signal_signaling.text_6": "這種特殊訊號會讓火車在第二種情形下停止", + "create.ponder.train_signal_signaling.text_7": "它會使火車在進入區間時停止…", + "create.ponder.train_signal_signaling.text_8": "…讓火車無法離開這個區間", + "create.ponder.train_signal_signaling.text_9": "這協助排隊等候的火車遠離繁忙的區間", - "create.ponder.valve_handle.header": "使用閥門手輪產生動能", - "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪來產生動能", - "create.ponder.valve_handle.text_2": "右擊可使它逆時針旋轉", + "create.ponder.valve_handle.header": "使用閥門手輪產生動力", + "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪以產生動力", + "create.ponder.valve_handle.text_2": "右鍵可使它逆時針旋轉", "create.ponder.valve_handle.text_3": "它的轉速慢而精確", - "create.ponder.valve_handle.text_4": "潛行右擊可使它順時針旋轉", + "create.ponder.valve_handle.text_4": "潛行右鍵可使它順時針旋轉", "create.ponder.valve_handle.text_5": "可以透過染色來美化閥門手輪", - "create.ponder.valve_pipe.header": "使用液體閥門控制液體流量", - "create.ponder.valve_pipe.text_1": "閥門管道有助於控制通過管線網路傳播的液體", - "create.ponder.valve_pipe.text_2": "用轉動輸入控制現在是否允許液體通過", - "create.ponder.valve_pipe.text_3": "打開方向旋轉,液體閥門將會打開", + "create.ponder.valve_pipe.header": "使用流體閥門控制流體流量", + "create.ponder.valve_pipe.text_1": "閥門管道有助於控制通過管線網路傳輸的流體", + "create.ponder.valve_pipe.text_2": "它們的轉軸控制了流體是否允許通過", + "create.ponder.valve_pipe.text_3": "沿開啟的方向旋轉,流體閥門將會打開", "create.ponder.valve_pipe.text_4": "反方向的旋轉會關閉閥門", - "create.ponder.water_wheel.header": "使用水車產生動能", - "create.ponder.water_wheel.text_1": "水車利用臨近的水流來進行應力發生", - "create.ponder.water_wheel.text_2": "水車接觸水流的麵越多,它的轉速越高", + "create.ponder.water_wheel.header": "使用水車產生動力", + "create.ponder.water_wheel.text_1": "水車利用臨近的水流產生動力", + "create.ponder.water_wheel.text_2": "水車接觸水流的面越多,它的轉速越高", "create.ponder.water_wheel.text_3": "水車葉片應逆著水流方向擺放", "create.ponder.water_wheel.text_4": "如果順著水流擺放,它的效率則會降低", "create.ponder.weighted_ejector.header": "使用彈射置物台", - "create.ponder.weighted_ejector.text_1": "手持彈射置物台時,潛行時右擊可以設置彈射目標位置", + "create.ponder.weighted_ejector.text_1": "手持彈射置物台時,潛行右鍵可以設置彈射目標位置", "create.ponder.weighted_ejector.text_10": "現在,只有等被放置的物品數量等於所設定數量時,彈射置物台才會彈射物品", "create.ponder.weighted_ejector.text_11": "當其他實體站在彈射置物台上時會被直接彈射", "create.ponder.weighted_ejector.text_2": "現在,放置下的彈射置物台會將物品彈射至目標位置", "create.ponder.weighted_ejector.text_3": "限制範圍內的任意距離和高度均可作為有效目標地點", "create.ponder.weighted_ejector.text_4": "但是,目標位置與置物台的連線,必須垂直於置物台的側面", "create.ponder.weighted_ejector.text_5": "如果沒有設置有效目標位置,彈射置物台會直接將其前方一格設為默認目標位置", - "create.ponder.weighted_ejector.text_6": "提供動能可為其蓄力", + "create.ponder.weighted_ejector.text_6": "提供動力可為其蓄力", "create.ponder.weighted_ejector.text_7": "蓄力完畢後,放置在它上方的物品會被立刻彈射出去", "create.ponder.weighted_ejector.text_8": "如果目標為容器,則彈射置物台會等待容器有位置後再彈射物品", "create.ponder.weighted_ejector.text_9": "使用扳手可以調整彈射所要求的物品數量", @@ -3005,22 +3005,22 @@ "create.ponder.weighted_ejector_tunnel.header": "使用彈射置物台來分流物品", "create.ponder.weighted_ejector_tunnel.text_1": "與黃銅隧道搭配使用時,彈射置物台可以將物品以特定數量進行分流", - "create.ponder.weighted_ejector_tunnel.text_2": "首先,將黃銅隧道調整為“最近優先”模式,從而讓它優先側面輸出", + "create.ponder.weighted_ejector_tunnel.text_2": "首先,將黃銅隧道調整為「最近優先」模式,從而讓它優先側面輸出", "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所設置的物品數量則為被分流出去的物品數量", - "create.ponder.weighted_ejector_tunnel.text_4": "當所設置的物品數量被分流出去後...", - "create.ponder.weighted_ejector_tunnel.text_5": "...剩餘的物品則會繼續前進", + "create.ponder.weighted_ejector_tunnel.text_4": "當所設置的物品數量被分流出去後…", + "create.ponder.weighted_ejector_tunnel.text_5": "…剩餘的物品則會繼續前進", - "create.ponder.windmill_source.header": "使用風車軸承產生動能", - "create.ponder.windmill_source.text_1": "風車軸承會黏著它面前的方塊結構", - "create.ponder.windmill_source.text_2": "如果黏著的方塊結構包含足夠的風帆方塊即為風車", - "create.ponder.windmill_source.text_3": "右鍵啟動風車後,風車開始提供動能", - "create.ponder.windmill_source.text_4": "產生的動能將取決於所黏風帆方塊之數量", - "create.ponder.windmill_source.text_5": "使用扳手來調整其旋轉方向", - "create.ponder.windmill_source.text_6": "對風車軸承右鍵可使其停止方便你維修風車", - "create.ponder.windmill_source.text_7": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", + "create.ponder.windmill_source.header": "使用風車軸承產生動力", + "create.ponder.windmill_source.text_1": "風車軸承會黏住它面前的結構", + "create.ponder.windmill_source.text_2": "藉由強力膠建造可動結構", + "create.ponder.windmill_source.text_3": "如果該結構包含足夠多的風帆,他能作為風車運作", + "create.ponder.windmill_source.text_4": "右鍵啟動風車後,風車軸承將提供動力", + "create.ponder.windmill_source.text_5": "風帆的數量決定了旋轉的轉速", + "create.ponder.windmill_source.text_6": "使用扳手來調整其旋轉方向", + "create.ponder.windmill_source.text_7": "對風車軸承右鍵可使其停止,方便你維修風車", "create.ponder.windmill_structure.header": "風車結構", - "create.ponder.windmill_structure.text_1": "任一包含至少8個風帆方塊的結構即為有效的風車", + "create.ponder.windmill_structure.text_1": "任一包含至少 8 個風帆方塊的結構即為有效的風車", "_": "Thank you for translating Create!" diff --git a/src/main/resources/assets/create/lang/uk_ua b/src/main/resources/assets/create/lang/uk_ua.json similarity index 100% rename from src/main/resources/assets/create/lang/uk_ua rename to src/main/resources/assets/create/lang/uk_ua.json From a1b949c084153237f7a3e123de3149b22dc98444 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 13 Aug 2022 18:13:20 +0200 Subject: [PATCH 21/32] Graddle me this - Temporarily regress to FG 5.1.53 --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + build.gradle | 2 +- gradle.properties | 4 ++-- src/main/java/com/simibubi/create/Create.java | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 37521770e..26c78676c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -49,6 +49,7 @@ body: label: Mod Version description: The version of the mod you were using when the bug occured options: + - "0.5.0d" - "0.5.0c" - "0.5.0b" - "0.5.0a" diff --git a/build.gradle b/build.gradle index d84384f8d..eeac97fb9 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { maven { url = 'https://maven.parchmentmc.org' } } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: "${forgegradle_version}", changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: "${forgegradle_version}", changing: false classpath "org.spongepowered:mixingradle:${mixingradle_version}" classpath "org.parchmentmc:librarian:${librarian_version}" } diff --git a/gradle.properties b/gradle.properties index 6178a3b83..5f273d168 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,14 +4,14 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.5.0.c +mod_version = 0.5.0.d artifact_minecraft_version = 1.18.2 minecraft_version = 1.18.2 forge_version = 40.1.60 # build dependency versions -forgegradle_version = 5.1.+ +forgegradle_version = 5.1.53 mixingradle_version = 0.7-SNAPSHOT mixin_version = 0.8.5 librarian_version = 1.+ diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 3d985d579..20d4d3082 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -66,7 +66,7 @@ public class Create { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.5c"; + public static final String VERSION = "0.5d"; public static final Logger LOGGER = LogManager.getLogger(); From 65073e84bd8ee0c897b581cf7b3cfca1337c0acc Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 13 Aug 2022 23:19:44 +0200 Subject: [PATCH 22/32] Patch D --- gradle.properties | 2 +- src/main/java/com/simibubi/create/compat/jei/CreateJEI.java | 2 +- .../compat/jei/category/MysteriousItemConversionCategory.java | 4 ++-- .../com/simibubi/create/foundation/utility/RemapHelper.java | 2 ++ src/main/resources/META-INF/mods.toml | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5f273d168..7c4f65984 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ parchment_version = 2022.07.10 # dependency versions registrate_version = MC1.18.2-1.1.3 flywheel_minecraft_version = 1.18.2 -flywheel_version = 0.6.4-90 +flywheel_version = 0.6.5-91 jei_minecraft_version = 1.18.2 jei_version = 9.7.0.209 curios_minecraft_version = 1.18.2 diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index ee5664e19..d70a09af5 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -307,7 +307,7 @@ public class CreateJEI implements IModPlugin { mysteryConversion = builder(ConversionRecipe.class) .addRecipes(() -> MysteriousItemConversionCategory.RECIPES) - .itemIcon(AllItems.CHROMATIC_COMPOUND.get()) + .itemIcon(AllBlocks.PECULIAR_BELL.get()) .emptyBackground(177, 50) .build("mystery_conversion", MysteriousItemConversionCategory::new); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java index a6b4ef243..bfaf9ec76 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java @@ -24,8 +24,8 @@ public class MysteriousItemConversionCategory extends CreateRecipeCategory info) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java index a7a74c928..9c579b473 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java @@ -167,6 +167,8 @@ public class RemapHelper { remapPaletteBlock("dolomite", "calcite", false); remapPaletteBlock("weathered_limestone", "tuff", false); + reMap.put("natural_scoria", asResource("scoria")); + reMap.put("empty_blueprint", SCHEMATIC.getId()); reMap.put("gold_sheet", GOLDEN_SHEET.getId()); reMap.put("flour", WHEAT_FLOUR.getId()); diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 5bdb2b8e7..10430dbe9 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -33,6 +33,6 @@ Technology that empowers the player.''' [[dependencies.create]] modId="flywheel" mandatory=true - versionRange="[0.6.4,0.6.5)" + versionRange="[0.6.5,0.6.6)" ordering="AFTER" side="CLIENT" From 49ccae2db787d5d49e7069c123089b4dec580dcc Mon Sep 17 00:00:00 2001 From: swwind Date: Thu, 18 Aug 2022 20:08:46 +0800 Subject: [PATCH 23/32] fix: wrong chance in jei when chance < 0.01 --- .../create/compat/jei/category/SequencedAssemblyCategory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java index 0a2d32836..43a22f27e 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java @@ -157,7 +157,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory= minX && mouseX < maxX && mouseY >= minY && mouseY < maxY) { float chance = recipe.getOutputChance(); tooltip.add(junk); - tooltip.add(Lang.translateDirect("recipe.processing.chance", chance < 0.01 ? "<1" : 100 - (int) (chance * 100)) + tooltip.add(Lang.translateDirect("recipe.processing.chance", chance < 0.01 ? ">99" : 100 - (int) (chance * 100)) .withStyle(ChatFormatting.GOLD)); return tooltip; } From 08591b3411fcace699969ef56b7a706c24552013 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Thu, 18 Aug 2022 08:52:16 -0700 Subject: [PATCH 24/32] Little things - Check for spectator mode before rendering the toolbox overlay - Tag sturdy sheets with forge:plates - Remove empty event handler - Remove Github Actions building configuration --- .github/workflows/gradle.yml | 26 ------------------- src/generated/resources/.cache/cache | 2 +- .../data/forge/tags/items/plates.json | 1 + .../java/com/simibubi/create/AllItems.java | 2 +- .../toolbox/ToolboxHandlerClient.java | 2 +- .../simibubi/create/events/ClientEvents.java | 4 --- 6 files changed, 4 insertions(+), 33 deletions(-) delete mode 100644 .github/workflows/gradle.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml deleted file mode 100644 index 6f3057225..000000000 --- a/.github/workflows/gradle.yml +++ /dev/null @@ -1,26 +0,0 @@ -# This workflow will build a Java project with Gradle -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle - -name: Java CI with Gradle - -on: - push: - branches: [ mc1.15/dev ] - pull_request: - branches: [ mc1.15/dev ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Build with Gradle - run: ./gradlew build diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 3dd959ef5..bc1f5d466 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -5702,7 +5702,7 @@ cc82188fe8d986f4457301ed4f75ae833d263601 data/forge/tags/items/nuggets/brass.jso 6eec92869baa44d3ac53aec6a7a92c15147b59f0 data/forge/tags/items/ores/zinc.json 9fc688d8fac1033c7b8f4b8de1138e56d2faf527 data/forge/tags/items/ores_in_ground/deepslate.json d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/items/ores_in_ground/stone.json -5d5ec04a61ff2b1ad19210e2859a9c96cc246ef8 data/forge/tags/items/plates.json +e32b78851bc4fce0745d8b72c85cbd4e89e8c221 data/forge/tags/items/plates.json 39f0d70ec10597e85df7c4783bbc5e0e4a5ffb80 data/forge/tags/items/plates/brass.json c3dab5fe379bc1b7b10d4a0ba7009eee1b75a27c data/forge/tags/items/plates/copper.json fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json diff --git a/src/generated/resources/data/forge/tags/items/plates.json b/src/generated/resources/data/forge/tags/items/plates.json index c294488df..f07ec2353 100644 --- a/src/generated/resources/data/forge/tags/items/plates.json +++ b/src/generated/resources/data/forge/tags/items/plates.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ + "create:sturdy_sheet", "create:copper_sheet", "create:brass_sheet", "create:iron_sheet", diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index e6e6cf473..ad474e17c 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -85,7 +85,7 @@ public class AllItems { DOUGH = taggedIngredient("dough", forgeItemTag("dough"), forgeItemTag("dough/wheat")), CINDER_FLOUR = ingredient("cinder_flour"), ROSE_QUARTZ = ingredient("rose_quartz"), POLISHED_ROSE_QUARTZ = ingredient("polished_rose_quartz"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), - STURDY_SHEET = taggedIngredient("sturdy_sheet", forgeItemTag("plates/obsidian")), + STURDY_SHEET = taggedIngredient("sturdy_sheet", forgeItemTag("plates/obsidian"), PLATES.tag), PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"), CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube"); diff --git a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java index a4c61f2fc..644aa7fc5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/curiosities/toolbox/ToolboxHandlerClient.java @@ -157,7 +157,7 @@ public class ToolboxHandlerClient { public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui) + if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; int x = width / 2 - 90; diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index 8ff0941e4..e3830192a 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -83,7 +83,6 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.ConfigGuiHandler; import net.minecraftforge.client.event.ClientPlayerNetworkEvent; -import net.minecraftforge.client.event.DrawSelectionEvent; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.EntityViewRenderEvent; import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; @@ -173,9 +172,6 @@ public class ClientEvents { TrainHUD.tick(); } - @SubscribeEvent - public static void onRenderSelection(DrawSelectionEvent event) {} - @SubscribeEvent public static void onJoin(ClientPlayerNetworkEvent.LoggedInEvent event) { CreateClient.checkGraphicsFanciness(); From bea62d06310293ecc7e3fde6e999922a69e55e4a Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 18 Aug 2022 18:07:43 +0200 Subject: [PATCH 25/32] Chance precision - Tweaked jei display of seq. assembly success chance to display <1 and >99 respectively - Adjusted mechanism recipe to a more rounded success chance (.80537 -> .8) --- src/generated/resources/.cache/cache | 2 +- .../sequenced_assembly/precision_mechanism.json | 8 ++++---- .../jei/category/SequencedAssemblyCategory.java | 12 ++++++++---- .../data/recipe/SequencedAssemblyRecipeGen.java | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index bc1f5d466..57579baa9 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -5359,7 +5359,7 @@ f6e2fb5725f3730d01fae4a2b1a04d11095eab5f data/create/recipes/scorchia_pillar_fro 66e8559dc15ce13042bd007247e2851022362b9e data/create/recipes/scorchia_pillar_from_stone_types_scorchia_stonecutting.json 2e0ecbd3619f080d0fc6fe48307c5a5bcc2e91b4 data/create/recipes/scoria_pillar_from_scoria_stonecutting.json d6e16599de7424513e1457b07acb6370815d2bd7 data/create/recipes/scoria_pillar_from_stone_types_scoria_stonecutting.json -b49a0da57a179edc087eee224221ded22fd1be01 data/create/recipes/sequenced_assembly/precision_mechanism.json +b3fad45a09a05b285de31283a720b32e6fc63dc6 data/create/recipes/sequenced_assembly/precision_mechanism.json de17d82738a5e0242eb3109fd2a75337160fc843 data/create/recipes/sequenced_assembly/sturdy_sheet.json 7610e0be633b1ade7ae39db3dbbfe1bd14aa333a data/create/recipes/sequenced_assembly/track.json 5e7648d55555c263539a2696b8d1f8d352a71dc9 data/create/recipes/small_andesite_brick_slab.json diff --git a/src/generated/resources/data/create/recipes/sequenced_assembly/precision_mechanism.json b/src/generated/resources/data/create/recipes/sequenced_assembly/precision_mechanism.json index c130de722..581708a72 100644 --- a/src/generated/resources/data/create/recipes/sequenced_assembly/precision_mechanism.json +++ b/src/generated/resources/data/create/recipes/sequenced_assembly/precision_mechanism.json @@ -73,6 +73,10 @@ "item": "create:cogwheel", "chance": 5.0 }, + { + "item": "minecraft:gold_nugget", + "chance": 3.0 + }, { "item": "create:shaft", "chance": 2.0 @@ -81,10 +85,6 @@ "item": "create:crushed_gold_ore", "chance": 2.0 }, - { - "item": "minecraft:gold_nugget", - "chance": 2.0 - }, { "item": "minecraft:iron_ingot" }, diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java index 43a22f27e..1dbcd15ad 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java @@ -57,8 +57,7 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory= minX && mouseX < maxX && mouseY >= minY && mouseY < maxY) { float chance = recipe.getOutputChance(); tooltip.add(junk); - tooltip.add(Lang.translateDirect("recipe.processing.chance", chance < 0.01 ? ">99" : 100 - (int) (chance * 100)) - .withStyle(ChatFormatting.GOLD)); + tooltip.add(chanceComponent(1 - chance)); return tooltip; } @@ -198,4 +196,10 @@ public class SequencedAssemblyCategory extends CreateRecipeCategory 0.99 ? ">99" : String.valueOf(Math.round(chance * 100)); + return Lang.translateDirect("recipe.processing.chance", number) + .withStyle(ChatFormatting.GOLD); + } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java index bda6fda47..8a26855b5 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/SequencedAssemblyRecipeGen.java @@ -41,9 +41,9 @@ public class SequencedAssemblyRecipeGen extends CreateRecipeProvider { .addOutput(AllItems.GOLDEN_SHEET.get(), 8) .addOutput(AllItems.ANDESITE_ALLOY.get(), 8) .addOutput(AllBlocks.COGWHEEL.get(), 5) + .addOutput(Items.GOLD_NUGGET, 3) .addOutput(AllBlocks.SHAFT.get(), 2) .addOutput(AllItems.CRUSHED_GOLD.get(), 2) - .addOutput(Items.GOLD_NUGGET, 2) .addOutput(Items.IRON_INGOT, 1) .addOutput(Items.CLOCK, 1) .loops(5) From efdcbb4154e95cb95144cc0306930b461d81f048 Mon Sep 17 00:00:00 2001 From: wenqingl <86453680+wenqingl@users.noreply.github.com> Date: Thu, 18 Aug 2022 09:09:11 -0700 Subject: [PATCH 26/32] Update README.md (#3232) * Update README.md comma before and * Update README.md cahgne to verb instead noun * Update README.md though -> through Co-authored-by: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 405e4e45f..987cb9d1a 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@

-

Welcome to Create, a mod offering a variety of tools and blocks for Building, Decoration and Aesthetic Automation.

-

The added elements of tech are designed to leave as many design choices to the player as possible. With Create, the game isn't played inside a bunch of UIs, it challenges you to setup contraptions of animated components working together in many possible arrangements.

+

Welcome to Create, a mod offering a variety of tools and blocks for Building, Decoration, and Aesthetic Automation.

+

The added elements of tech are designed to leave as many design choices to the player as possible. With Create, the game isn't played inside a bunch of UIs, it challenges you to set up contraptions of animated components working together in many possible arrangements.

Create's visual in-game documentation called 'Ponder' will guide you through all added mechanics and gadgets.

 

From 1b602c00d5a055b2feaf2dabb8f899749dc7546f Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 31 Aug 2022 18:06:32 +0200 Subject: [PATCH 27/32] Curse of the simulation - Fixed fluid pipes occasionally losing fluid content when distributing to multiple containers --- .../contraptions/fluids/FluidNetwork.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java index ee559d9ae..eeaf6000d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java @@ -4,6 +4,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.IdentityHashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -183,6 +184,8 @@ public class FluidNetwork { } int flowSpeed = transferSpeed; + Map accumulatedFill = new IdentityHashMap<>(); + for (boolean simulate : Iterate.trueAndFalse) { FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; @@ -211,8 +214,9 @@ public class FluidNetwork { return; if (simulate) flowSpeed = transfer.getAmount(); - + List>> availableOutputs = new ArrayList<>(targets); + while (!availableOutputs.isEmpty() && transfer.getAmount() > 0) { int dividedTransfer = transfer.getAmount() / availableOutputs.size(); int remainder = transfer.getAmount() % availableOutputs.size(); @@ -234,12 +238,22 @@ public class FluidNetwork { iterator.remove(); continue; } - + + int simulatedTransfer = toTransfer; + if (simulate) + simulatedTransfer += accumulatedFill.getOrDefault(targetHandler, 0); + FluidStack divided = transfer.copy(); - divided.setAmount(toTransfer); + divided.setAmount(simulatedTransfer); int fill = targetHandler.fill(divided, action); + + if (simulate) { + accumulatedFill.put(targetHandler, Integer.valueOf(fill)); + fill -= simulatedTransfer - toTransfer; + } + transfer.setAmount(transfer.getAmount() - fill); - if (fill < toTransfer) + if (fill < simulatedTransfer) iterator.remove(); } From 6ed8d31af0f23f3b119eb832363ad6f67a72ffa6 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Sat, 3 Sep 2022 13:33:53 -0700 Subject: [PATCH 28/32] Allow configuring max amount of firework ingredients - Replace boolean allowBiggerFireworksInCrafter config with int maxFireworkIngredientsInCrafter config --- .../components/crafter/RecipeGridHandler.java | 15 +++++++++------ .../create/foundation/config/CRecipes.java | 8 ++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java index 8f6be9a34..8f6d69715 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Predicate; -import java.util.stream.IntStream; import org.apache.commons.lang3.tuple.Pair; @@ -159,12 +158,16 @@ public class RecipeGridHandler { } public static boolean isRecipeAllowed(CraftingRecipe recipe, CraftingContainer inventory) { - if (!AllConfigs.SERVER.recipes.allowBiggerFireworksInCrafter.get() && recipe instanceof FireworkRocketRecipe) { - int numItems = IntStream.range(0, inventory.getContainerSize()) - .map(i -> inventory.getItem(i).isEmpty() ? 0 : 1) - .sum(); - if (numItems > 9) + if (recipe instanceof FireworkRocketRecipe) { + int numItems = 0; + for (int i = 0; i < inventory.getContainerSize(); i++) { + if (!inventory.getItem(i).isEmpty()) { + numItems++; + } + } + if (numItems > AllConfigs.SERVER.recipes.maxFireworkIngredientsInCrafter.get()) { return false; + } } if (AllRecipeTypes.shouldIgnoreInAutomation(recipe)) return false; diff --git a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java index ec35f974f..18b0a54fe 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java @@ -8,8 +8,8 @@ public class CRecipes extends ConfigBase { public final ConfigBool allowShapedSquareInPress = b(true, "allowShapedSquareInPress", Comments.allowShapedSquareInPress); public final ConfigBool allowRegularCraftingInCrafter = b(true, "allowRegularCraftingInCrafter", Comments.allowRegularCraftingInCrafter); - public final ConfigBool allowBiggerFireworksInCrafter = - b(false, "allowBiggerFireworksInCrafter", Comments.allowBiggerFireworksInCrafter); + public final ConfigInt maxFireworkIngredientsInCrafter = + i(9, 1, "maxFireworkIngredientsInCrafter", Comments.maxFireworkIngredientsInCrafter); public final ConfigBool allowStonecuttingOnSaw = b(true, "allowStonecuttingOnSaw", Comments.allowStonecuttingOnSaw); public final ConfigBool allowWoodcuttingOnSaw = b(true, "allowWoodcuttingOnSaw", Comments.allowWoodcuttingOnSaw); public final ConfigBool allowCastingBySpout = b(true, "allowCastingBySpout", Comments.allowCastingBySpout); @@ -34,8 +34,8 @@ public class CRecipes extends ConfigBase { "Allow any single-ingredient 2x2 or 3x3 crafting recipes to be processed by a Mechanical Press + Basin."; static String allowRegularCraftingInCrafter = "Allow any standard crafting recipes to be processed by Mechanical Crafters."; - static String allowBiggerFireworksInCrafter = - "Allow Firework Rockets with more than 9 ingredients to be crafted using Mechanical Crafters."; + static String maxFireworkIngredientsInCrafter = + "The Maximum amount of ingredients that can be used to craft Firework Rockets using Mechanical Crafters."; static String allowStonecuttingOnSaw = "Allow any stonecutting recipes to be processed by a Mechanical Saw."; static String allowWoodcuttingOnSaw = From 3e89d9a8788ff69d388b7deab2dac259829d3484 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 6 Sep 2022 15:41:17 +0200 Subject: [PATCH 29/32] Lag science - Trains now try to wait for chunks to load in when player passengers are present - Trains now sync clientside speed with the servers' tps to avoid overcorrection - Hoppers can now be picked up by the wrench --- src/generated/resources/.cache/cache | 2 +- .../create/tags/blocks/wrench_pickup.json | 3 +- .../java/com/simibubi/create/AllTags.java | 2 +- .../logistics/trains/entity/Carriage.java | 44 ++++++++++++++++--- .../trains/entity/CarriageSyncData.java | 15 ++++++- .../logistics/trains/entity/Train.java | 13 +++--- 6 files changed, 60 insertions(+), 19 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 57579baa9..bc6fa1798 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -5636,7 +5636,7 @@ d063e12c9ef75f39518c6d129ea35d833464d547 data/create/tags/blocks/toolboxes.json 50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/windowable.json -893a01e6004d6d8272bd1658e98da88bb572ee57 data/create/tags/blocks/wrench_pickup.json +c71f8ee0103d0c1b0d1b0727f1ecdc4d1999f1f6 data/create/tags/blocks/wrench_pickup.json a8bdc387cfa6296ebcc4af14323e2ddb632234dc data/create/tags/fluids/bottomless/allow.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/fluids/bottomless/deny.json 74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/items/blaze_burner_fuel/regular.json diff --git a/src/generated/resources/data/create/tags/blocks/wrench_pickup.json b/src/generated/resources/data/create/tags/blocks/wrench_pickup.json index c3da555b0..1e8c3abd1 100644 --- a/src/generated/resources/data/create/tags/blocks/wrench_pickup.json +++ b/src/generated/resources/data/create/tags/blocks/wrench_pickup.json @@ -16,6 +16,7 @@ "minecraft:tripwire", "minecraft:tripwire_hook", "minecraft:daylight_detector", - "minecraft:target" + "minecraft:target", + "minecraft:hopper" ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index f5c1153d9..a513e70d0 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -412,7 +412,7 @@ public class AllTags { AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.PRESSURE_PLATES); AllBlockTags.WRENCH_PICKUP.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER, Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON, - Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET); + Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER); AllBlockTags.ORE_OVERRIDE_STONE.includeAll(BlockTags.STONE_ORE_REPLACEABLES); diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java index 43fbb12ee..6b4b71e51 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Carriage.java @@ -118,9 +118,14 @@ public class Carriage { return entities.get(dimension); } - public double travel(Level level, TrackGraph graph, double distance, - Function forwardControl, - Function backwardControl, int type) { + public double travel(Level level, TrackGraph graph, double distance, TravellingPoint toFollowForward, + TravellingPoint toFollowBackward, int type) { + + Function forwardControl = + toFollowForward == null ? train.navigation::control : mp -> mp.follow(toFollowForward); + Function backwardControl = + toFollowBackward == null ? train.navigation::control : mp -> mp.follow(toFollowBackward); + boolean onTwoBogeys = isOnTwoBogeys(); double stress = train.derailed ? 0 : onTwoBogeys ? bogeySpacing - getAnchorDiff() : 0; blocked = false; @@ -825,13 +830,38 @@ public class Carriage { double diffY = positionVec.y - coupledVec.y; double diffZ = positionVec.z - coupledVec.z; - if (!entity.level.isClientSide()) - entity.setServerSidePrevPosition(); - - entity.setPos(positionAnchor); entity.prevYaw = entity.yaw; entity.prevPitch = entity.pitch; + if (!entity.level.isClientSide()) { + Vec3 lookahead = positionAnchor.add(positionAnchor.subtract(entity.position()) + .normalize() + .scale(16)); + + for (Entity e : entity.getPassengers()) { + if (!(e instanceof Player)) + continue; + if (e.distanceToSqr(entity) > 32 * 32) + continue; + if (CarriageEntityHandler.isActiveChunk(entity.level, new BlockPos(lookahead))) + break; + train.carriageWaitingForChunks = id; + return; + } + + if (entity.getPassengers() + .stream() + .anyMatch(p -> p instanceof Player) + ) { + } + + if (train.carriageWaitingForChunks == id) + train.carriageWaitingForChunks = -1; + + entity.setServerSidePrevPosition(); + } + + entity.setPos(positionAnchor); entity.yaw = (float) (Mth.atan2(diffZ, diffX) * 180 / Math.PI) + 180; entity.pitch = (float) (Math.atan2(diffY, Math.sqrt(diffX * diffX + diffZ * diffZ)) * 180 / Math.PI) * -1; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageSyncData.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageSyncData.java index 1cf7226cb..54ebac747 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageSyncData.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/CarriageSyncData.java @@ -21,6 +21,7 @@ import com.simibubi.create.content.logistics.trains.entity.TravellingPoint.ITrac import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Pair; +import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.VecHelper; import net.minecraft.network.FriendlyByteBuf; @@ -39,6 +40,7 @@ public class CarriageSyncData { private TravellingPoint[] pointsToApproach; private float[] pointDistanceSnapshot; private float destinationDistanceSnapshot; + private int ticksSince; public CarriageSyncData() { wheelLocations = new Vector<>(4); @@ -48,6 +50,7 @@ public class CarriageSyncData { fallbackPointSnapshot = null; destinationDistanceSnapshot = 0; leadingCarriage = false; + ticksSince = 0; for (int i = 0; i < 4; i++) { wheelLocations.add(null); pointsToApproach[i] = new TravellingPoint(); @@ -92,6 +95,7 @@ public class CarriageSyncData { public void read(FriendlyByteBuf buffer) { leadingCarriage = buffer.readBoolean(); boolean fallback = buffer.readBoolean(); + ticksSince = 0; if (fallback) { fallbackLocations = @@ -212,8 +216,17 @@ public class CarriageSyncData { destinationDistanceSnapshot = (float) (distanceToDestination - carriage.train.navigation.distanceToDestination); } - public void approach(CarriageContraptionEntity entity, Carriage carriage, float partial) { + public void approach(CarriageContraptionEntity entity, Carriage carriage, float partialIn) { DimensionalCarriageEntity dce = carriage.getDimensional(entity.level); + + int updateInterval = entity.getType() + .updateInterval(); + if (ticksSince >= updateInterval * 2) + partialIn /= ticksSince - updateInterval * 2 + 1; + partialIn *= ServerSpeedProvider.get(); + final float partial = partialIn; + + ticksSince++; if (fallbackLocations != null && fallbackPointSnapshot != null) { dce.positionAnchor = approachVector(partial, dce.positionAnchor, fallbackLocations.getFirst(), diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java index 148c06159..a5a371013 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/entity/Train.java @@ -14,7 +14,6 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; -import java.util.function.Function; import javax.annotation.Nullable; @@ -32,7 +31,6 @@ import com.simibubi.create.content.logistics.trains.TrackGraph; import com.simibubi.create.content.logistics.trains.TrackNode; import com.simibubi.create.content.logistics.trains.entity.Carriage.DimensionalCarriageEntity; import com.simibubi.create.content.logistics.trains.entity.TravellingPoint.IEdgePointListener; -import com.simibubi.create.content.logistics.trains.entity.TravellingPoint.ITrackSelector; import com.simibubi.create.content.logistics.trains.entity.TravellingPoint.SteerDirection; import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgeData; import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePointType; @@ -82,6 +80,7 @@ public class Train { public double speed = 0; public double targetSpeed = 0; public Double speedBeforeStall = null; + public int carriageWaitingForChunks = -1; public double throttle = 1; public boolean honk = false; @@ -278,6 +277,9 @@ public class Train { int carriageCount = carriages.size(); boolean stalled = false; double maxStress = 0; + + if (carriageWaitingForChunks != -1) + distance = 0; for (int i = 0; i < carriageCount; i++) { Carriage carriage = carriages.get(i); @@ -366,18 +368,13 @@ public class Train { : carriages.get(i + 1) .getLeadingPoint(); - Function forwardControl = - toFollowForward == null ? navigation::control : mp -> mp.follow(toFollowForward); - Function backwardControl = - toFollowBackward == null ? navigation::control : mp -> mp.follow(toFollowBackward); - double totalStress = derailed ? 0 : leadingStress + trailingStress; boolean first = i == 0; boolean last = i == carriageCount - 1; int carriageType = first ? last ? Carriage.BOTH : Carriage.FIRST : last ? Carriage.LAST : Carriage.MIDDLE; double actualDistance = - carriage.travel(level, graph, distance + totalStress, forwardControl, backwardControl, carriageType); + carriage.travel(level, graph, distance + totalStress, toFollowForward, toFollowBackward, carriageType); blocked |= carriage.blocked; boolean onTwoBogeys = carriage.isOnTwoBogeys(); From dfe13d4ad7389f55b1d26a9cf018a6ecab1db37e Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Wed, 7 Sep 2022 18:34:43 -0700 Subject: [PATCH 30/32] One mechanical arm's trash is another mechanical arm's treasure - Fix arms not being able to place more than one item into a composter - Add COMPOSTABLE item attribute - Tweak BLASTABLE attribute's descriptions --- src/generated/resources/.cache/cache | 34 +++++++++--------- .../resources/assets/create/lang/en_us.json | 6 ++-- .../assets/create/lang/unfinished/de_de.json | 4 ++- .../assets/create/lang/unfinished/es_cl.json | 4 ++- .../assets/create/lang/unfinished/es_es.json | 4 ++- .../assets/create/lang/unfinished/fr_fr.json | 4 ++- .../assets/create/lang/unfinished/it_it.json | 4 ++- .../assets/create/lang/unfinished/ja_jp.json | 4 ++- .../assets/create/lang/unfinished/ko_kr.json | 4 ++- .../assets/create/lang/unfinished/nl_nl.json | 8 +++-- .../assets/create/lang/unfinished/pl_pl.json | 4 ++- .../assets/create/lang/unfinished/pt_br.json | 4 ++- .../assets/create/lang/unfinished/pt_pt.json | 8 +++-- .../assets/create/lang/unfinished/ro_ro.json | 4 ++- .../assets/create/lang/unfinished/ru_ru.json | 4 ++- .../assets/create/lang/unfinished/uk_ua.json | 4 ++- .../assets/create/lang/unfinished/zh_cn.json | 4 ++- .../assets/create/lang/unfinished/zh_tw.json | 4 ++- .../AllArmInteractionPointTypes.java | 36 ++++++++++++------- .../logistics/item/filter/ItemAttribute.java | 4 ++- .../assets/create/lang/default/interface.json | 6 ++-- 21 files changed, 104 insertions(+), 54 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index bc6fa1798..0437edd08 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -559,23 +559,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -b093292a09f18cce236ddb4ab0461891c5a70fe6 assets/create/lang/en_us.json -603af7f8a80b09da7ef5765f2aa863bbef1fc8ea assets/create/lang/unfinished/de_de.json -48858781b80b77a0d00b6fab733482ae4a9115fc assets/create/lang/unfinished/es_cl.json -ee47168049448ffa0959210d8f06b8f4b7219c85 assets/create/lang/unfinished/es_es.json -8fd4488ce0579f7b71a7cf20fe5556cdbb515834 assets/create/lang/unfinished/fr_fr.json -d4266c22c1265a2ef0784a13b223e4bb17ec11d0 assets/create/lang/unfinished/it_it.json -6578c40b206d61ac0aad1311d02c9bdbcd5f9d45 assets/create/lang/unfinished/ja_jp.json -f642160ce3c6ffe0ded12c7e05a15cb6536c4def assets/create/lang/unfinished/ko_kr.json -fdc3bda8618e963b6023af13caa0050f48ba0c26 assets/create/lang/unfinished/nl_nl.json -c498bb7eb6f030b7b4934882e8bfc418dd8f6174 assets/create/lang/unfinished/pl_pl.json -b9e51c59ae50ae274d0c56f60803d8a397524547 assets/create/lang/unfinished/pt_br.json -2b1ecada0e99852d604fd718e6ef87dbaff180e6 assets/create/lang/unfinished/pt_pt.json -71d01c97da2fd3c15576fb183871833b272174bf assets/create/lang/unfinished/ro_ro.json -6be78dc74952189c50f70df3182c3614cd49fdec assets/create/lang/unfinished/ru_ru.json -573a499be537300fb93d254b45923de80978d434 assets/create/lang/unfinished/uk_ua.json -2e6e637071b2ea70de178c77fe8b85544cc89a6b assets/create/lang/unfinished/zh_cn.json -5ec18f7aee828e35dcf76d491b26d76fc81b010e assets/create/lang/unfinished/zh_tw.json +11fd391ac3015f4dace8138ab1ec423ee822c7b4 assets/create/lang/en_us.json +34ab109f0935b7d0a7dd306188e0bd3056a77f93 assets/create/lang/unfinished/de_de.json +b5487949ee53302706c15051157316bb60dfa070 assets/create/lang/unfinished/es_cl.json +6df40ff1c18bfb83a33bc17e4458feeeee058bf1 assets/create/lang/unfinished/es_es.json +bca24c29adf91e0ee09db39783c59fac843acb46 assets/create/lang/unfinished/fr_fr.json +d7b53a16d03be2f854dfba1e90e2a149c2abecbd assets/create/lang/unfinished/it_it.json +42a6713a509ecd676e7eae6e6492da1e20e79102 assets/create/lang/unfinished/ja_jp.json +38e01a060e0e468a51b1ca4f0bcbec203837ce04 assets/create/lang/unfinished/ko_kr.json +83d812a1003fa3f25a3c28bbf54bf93f583c594a assets/create/lang/unfinished/nl_nl.json +c8c60fe2405f37cce7309326fb62cdb9aa1b49ff assets/create/lang/unfinished/pl_pl.json +11b3809e9c4c3c61687f7789979fdbf2332fd6a4 assets/create/lang/unfinished/pt_br.json +dd52b8df6ea92c1218e398197a1cedae066b4e0e assets/create/lang/unfinished/pt_pt.json +954a947034232204bd415e4bfb6c59a3a448b604 assets/create/lang/unfinished/ro_ro.json +54a92b2d667b55675c694904752760b594ab1424 assets/create/lang/unfinished/ru_ru.json +2f084cc7b66fe4ea82f5ac3338a1245caf67c54d assets/create/lang/unfinished/uk_ua.json +82490ac29a0c35c07cde11c340634bf8b416b6a3 assets/create/lang/unfinished/zh_cn.json +426b06805f08ef3fed15f404e9637b2d7082d660 assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 2da1a5d09..9d201a099 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1257,8 +1257,10 @@ "create.item_attributes.smeltable.inverted": "cannot be Smelted", "create.item_attributes.smokable": "can be Smoked", "create.item_attributes.smokable.inverted": "cannot be Smoked", - "create.item_attributes.blastable": "is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "is not smeltable in Blast Furnace", + "create.item_attributes.blastable": "can be Smelted in a Blast Furnace", + "create.item_attributes.blastable.inverted": "cannot be Smelted in a Blast Furnace", + "create.item_attributes.compostable": "can be composted", + "create.item_attributes.compostable.inverted": "cannot be composted", "create.item_attributes.shulker_level": "is shulker %1$s", "create.item_attributes.shulker_level.inverted": "is shulker not %1$s", "create.item_attributes.shulker_level.full": "full", 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 4cfa2ea3a..c1743a7fd 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: 838", + "_": "Missing Localizations: 840", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "kann nicht geräuchert werden", "create.item_attributes.blastable": "ist im Schmelzofen schmelzbar", "create.item_attributes.blastable.inverted": "ist nicht im Schmelzofen schmelzbar", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "ist Shulker %1$s", "create.item_attributes.shulker_level.inverted": "ist Shulker nicht %1$s", "create.item_attributes.shulker_level.full": "voll", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index edf9286e0..19a6d4e3a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 984", + "_": "Missing Localizations: 986", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "no puede ser Ahumado", "create.item_attributes.blastable": "puede ser cocinado en un Alto Horno", "create.item_attributes.blastable.inverted": "no puede ser cocinado en un Alto Horno", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "es un shulker %1$s", "create.item_attributes.shulker_level.inverted": "no es un shulker %1$s", "create.item_attributes.shulker_level.full": "lleno", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index cd7858cf6..408d3722f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 4", + "_": "Missing Localizations: 6", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "no puede ser ahumado", "create.item_attributes.blastable": "es fundible en el alto horno", "create.item_attributes.blastable.inverted": "no es fundible en el alto horno", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "es shulker %1$s", "create.item_attributes.shulker_level.inverted": "no es shulker %1$s", "create.item_attributes.shulker_level.full": "lleno", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index e0e717886..968ed3cff 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2135", + "_": "Missing Localizations: 2137", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "ne peut pas être fumé", "create.item_attributes.blastable": "est fondable dans un Haut fourneau", "create.item_attributes.blastable.inverted": "n'est pas fondable dans un Haut fourneau", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 0f3874f03..bced0d3ec 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 4", + "_": "Missing Localizations: 6", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "non può essere affumicato", "create.item_attributes.blastable": "è fondibile in un forno fusorio", "create.item_attributes.blastable.inverted": "non è fondibile in un forno fusorio", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "è uno shulker %1$s", "create.item_attributes.shulker_level.inverted": "non è uno shulker %1$s", "create.item_attributes.shulker_level.full": "pieno", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 931b1f96b..ab56d3d1d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 0", + "_": "Missing Localizations: 2", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "燻製器で調理できないか", "create.item_attributes.blastable": "溶鉱炉で精錬できるかか", "create.item_attributes.blastable.inverted": "溶鉱炉で精錬できないか", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "%1$sシュルカーか", "create.item_attributes.shulker_level.inverted": "%1$sシュルカーでないか", "create.item_attributes.shulker_level.full": "満杯の", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index 0731039b0..448da4f33 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 4", + "_": "Missing Localizations: 6", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "훈연될 수 없음", "create.item_attributes.blastable": "용광로에 녹일 수 있음", "create.item_attributes.blastable.inverted": "용광로에 녹일 수 없음", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "셜커가 %1$s있음", "create.item_attributes.shulker_level.inverted": "셜커가 %1$s있지 않음", "create.item_attributes.shulker_level.full": "가득 차", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index c84094e49..d0da85c4b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2483", + "_": "Missing Localizations: 2485", "_": "->------------------------] Game Elements [------------------------<-", @@ -1258,8 +1258,10 @@ "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", + "create.item_attributes.blastable": "UNLOCALIZED: can be Smelted in a Blast Furnace", + "create.item_attributes.blastable.inverted": "UNLOCALIZED: cannot be Smelted in a Blast Furnace", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index 43ab34a65..18d89979d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 8", + "_": "Missing Localizations: 10", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "nie może być wędzony", "create.item_attributes.blastable": "może być stopiony w piecu hutniczym", "create.item_attributes.blastable.inverted": "nie może być stopiony w piecu hutniczym", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "jest %1$s", "create.item_attributes.shulker_level.inverted": "nie jest %1$s", "create.item_attributes.shulker_level.full": "pełna", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 4a8761223..52acd0236 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1327", + "_": "Missing Localizations: 1329", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "Não pode ser defumado", "create.item_attributes.blastable": "È fundível no alto-forno", "create.item_attributes.blastable.inverted": "Não é fundível no alto-forno", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "O shulker é %1$s", "create.item_attributes.shulker_level.inverted": "O shulker não é %1$s", "create.item_attributes.shulker_level.full": "Cheio", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 29041f07f..f750b5a9f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2192", + "_": "Missing Localizations: 2194", "_": "->------------------------] Game Elements [------------------------<-", @@ -1258,8 +1258,10 @@ "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", + "create.item_attributes.blastable": "UNLOCALIZED: can be Smelted in a Blast Furnace", + "create.item_attributes.blastable.inverted": "UNLOCALIZED: cannot be Smelted in a Blast Furnace", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s", "create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s", "create.item_attributes.shulker_level.full": "UNLOCALIZED: full", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 26c30e017..2d85ce256 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 651", + "_": "Missing Localizations: 653", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "nu poate fi Afumat", "create.item_attributes.blastable": "poate fi topit în Furnal", "create.item_attributes.blastable.inverted": "nu poate fi topit în Furnal", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "este shulkerul %1$s", "create.item_attributes.shulker_level.inverted": "nu este shulkerul %1$s", "create.item_attributes.shulker_level.full": "plin", 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 e4df406f7..830e8aafa 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: 0", + "_": "Missing Localizations: 2", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "нельзя прокоптить", "create.item_attributes.blastable": "плавится в доменной печи", "create.item_attributes.blastable.inverted": "не плавится в доменной печи", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "шалкер %1$s", "create.item_attributes.shulker_level.inverted": "шалкер не %1$s", "create.item_attributes.shulker_level.full": "полный", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index e0a1907e6..3bd7b8953 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 982", + "_": "Missing Localizations: 984", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "не можна Коптити", "create.item_attributes.blastable": "плавиться в Плавильній печі", "create.item_attributes.blastable.inverted": "не плавиться в Плавильній печі", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "шалкер %1$s", "create.item_attributes.shulker_level.inverted": "шалкер не %1$s", "create.item_attributes.shulker_level.full": "повний", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 459b5f282..03c8d3828 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 0", + "_": "Missing Localizations: 2", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "不可被烟熏", "create.item_attributes.blastable": "可被高炉冶炼", "create.item_attributes.blastable.inverted": "不可被高炉冶炼", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "潜影盒是%1$s的", "create.item_attributes.shulker_level.inverted": "潜影盒不是%1$s的", "create.item_attributes.shulker_level.full": "满", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index 7c0ccee4b..2ee8e9a6c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 4", + "_": "Missing Localizations: 6", "_": "->------------------------] Game Elements [------------------------<-", @@ -1260,6 +1260,8 @@ "create.item_attributes.smokable.inverted": "不可被煙熏", "create.item_attributes.blastable": "可被高爐融煉", "create.item_attributes.blastable.inverted": "不可被高爐融煉", + "create.item_attributes.compostable": "UNLOCALIZED: can be composted", + "create.item_attributes.compostable.inverted": "UNLOCALIZED: cannot be composted", "create.item_attributes.shulker_level": "界伏盒是 %1$s", "create.item_attributes.shulker_level.inverted": "界伏盒不是 %1$s", "create.item_attributes.shulker_level.full": "滿的", diff --git a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java index 5a47eda71..c72e81221 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/AllArmInteractionPointTypes.java @@ -55,9 +55,8 @@ import net.minecraft.world.level.block.entity.JukeboxBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.wrapper.SidedInvWrapper; public class AllArmInteractionPointTypes { @@ -605,16 +604,29 @@ public class AllArmInteractionPointTypes { @Nullable @Override protected IItemHandler getHandler() { - if (!cachedHandler.isPresent()) { - cachedHandler = LazyOptional.of(() -> { - ComposterBlock composterBlock = (ComposterBlock) Blocks.COMPOSTER; - WorldlyContainer container = composterBlock.getContainer(cachedState, level, pos); - SidedInvWrapper insertionHandler = new SidedInvWrapper(container, Direction.UP); - SidedInvWrapper extractionHandler = new SidedInvWrapper(container, Direction.DOWN); - return new CombinedInvWrapper(insertionHandler, extractionHandler); - }); - } - return cachedHandler.orElse(null); + return null; + } + + protected WorldlyContainer getContainer() { + ComposterBlock composterBlock = (ComposterBlock) Blocks.COMPOSTER; + return composterBlock.getContainer(cachedState, level, pos); + } + + @Override + public ItemStack insert(ItemStack stack, boolean simulate) { + IItemHandler handler = new SidedInvWrapper(getContainer(), Direction.UP); + return ItemHandlerHelper.insertItem(handler, stack, simulate); + } + + @Override + public ItemStack extract(int slot, int amount, boolean simulate) { + IItemHandler handler = new SidedInvWrapper(getContainer(), Direction.DOWN); + return handler.extractItem(slot, amount, simulate); + } + + @Override + public int getSlotCount() { + return 2; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java index 55cef5970..0dd9f81f8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/ItemAttribute.java @@ -42,6 +42,7 @@ import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.ComposterBlock; import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -148,7 +149,8 @@ public interface ItemAttribute { || testRecipe(s, w, AllRecipeTypes.MILLING.getType())), SMELTABLE((s, w) -> testRecipe(s, w, RecipeType.SMELTING)), SMOKABLE((s, w) -> testRecipe(s, w, RecipeType.SMOKING)), - BLASTABLE((s, w) -> testRecipe(s, w, RecipeType.BLASTING)); + BLASTABLE((s, w) -> testRecipe(s, w, RecipeType.BLASTING)), + COMPOSTABLE(s -> ComposterBlock.COMPOSTABLES.containsKey(s.getItem())); private static final RecipeWrapper RECIPE_WRAPPER = new RecipeWrapper(new ItemStackHandler(1)); private Predicate test; diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index c8a052b74..0f57cb0aa 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -414,8 +414,10 @@ "create.item_attributes.smeltable.inverted": "cannot be Smelted", "create.item_attributes.smokable": "can be Smoked", "create.item_attributes.smokable.inverted": "cannot be Smoked", - "create.item_attributes.blastable": "is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "is not smeltable in Blast Furnace", + "create.item_attributes.blastable": "can be Smelted in a Blast Furnace", + "create.item_attributes.blastable.inverted": "cannot be Smelted in a Blast Furnace", + "create.item_attributes.compostable": "can be composted", + "create.item_attributes.compostable.inverted": "cannot be composted", "create.item_attributes.shulker_level": "is shulker %1$s", "create.item_attributes.shulker_level.inverted": "is shulker not %1$s", From 32b0b2a33484c3804c14cd3d11043286184afeb0 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Fri, 9 Sep 2022 12:10:34 -0700 Subject: [PATCH 31/32] Ordered blaze transformations - Fix parts of blaze burners not rendering correctly on rotated contraptions - AbstractContraptionEntity#doLocalTransforms -> applyLocalTransforms and change PoseStack[] argument to PoseStack --- .../AbstractContraptionEntity.java | 2 +- .../ControlledContraptionEntity.java | 13 +- .../OrientedContraptionEntity.java | 36 +++-- .../gantry/GantryContraptionEntity.java | 2 +- .../render/ContraptionMatrices.java | 2 +- .../burner/BlazeBurnerRenderer.java | 136 +++++++++++------- .../renderer/SafeTileEntityRenderer.java | 7 +- 7 files changed, 113 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index eff5279e6..9853a7371 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -831,7 +831,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit } @OnlyIn(Dist.CLIENT) - public abstract void doLocalTransforms(float partialTicks, PoseStack[] matrixStacks); + public abstract void applyLocalTransforms(PoseStack matrixStack, float partialTicks); public static class ContraptionRotationState { public static final ContraptionRotationState NONE = new ContraptionRotationState(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java index c00fa8cad..46d7b8ac8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java @@ -226,15 +226,14 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { @Override @OnlyIn(Dist.CLIENT) - public void doLocalTransforms(float partialTicks, PoseStack[] matrixStacks) { + public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) { float angle = getAngle(partialTicks); Axis axis = getRotationAxis(); - for (PoseStack stack : matrixStacks) - TransformStack.cast(stack) - .nudge(getId()) - .centre() - .rotate(angle, axis) - .unCentre(); + TransformStack.cast(matrixStack) + .nudge(getId()) + .centre() + .rotate(angle, axis) + .unCentre(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java index 6738e4769..9abd65cf4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java @@ -514,52 +514,48 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity { @Override @OnlyIn(Dist.CLIENT) - public void doLocalTransforms(float partialTicks, PoseStack[] matrixStacks) { + public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) { float angleInitialYaw = getInitialYaw(); float angleYaw = getViewYRot(partialTicks); float anglePitch = getViewXRot(partialTicks); - for (PoseStack stack : matrixStacks) - stack.translate(-.5f, 0, -.5f); + matrixStack.translate(-.5f, 0, -.5f); Entity ridingEntity = getVehicle(); if (ridingEntity instanceof AbstractMinecart) - repositionOnCart(partialTicks, matrixStacks, ridingEntity); + repositionOnCart(matrixStack, partialTicks, ridingEntity); else if (ridingEntity instanceof AbstractContraptionEntity) { if (ridingEntity.getVehicle() instanceof AbstractMinecart) - repositionOnCart(partialTicks, matrixStacks, ridingEntity.getVehicle()); + repositionOnCart(matrixStack, partialTicks, ridingEntity.getVehicle()); else - repositionOnContraption(partialTicks, matrixStacks, ridingEntity); + repositionOnContraption(matrixStack, partialTicks, ridingEntity); } - for (PoseStack stack : matrixStacks) - TransformStack.cast(stack) - .nudge(getId()) - .centre() - .rotateY(angleYaw) - .rotateZ(anglePitch) - .rotateY(angleInitialYaw) - .unCentre(); + TransformStack.cast(matrixStack) + .nudge(getId()) + .centre() + .rotateY(angleYaw) + .rotateZ(anglePitch) + .rotateY(angleInitialYaw) + .unCentre(); } @OnlyIn(Dist.CLIENT) - private void repositionOnContraption(float partialTicks, PoseStack[] matrixStacks, Entity ridingEntity) { + private void repositionOnContraption(PoseStack matrixStack, float partialTicks, Entity ridingEntity) { Vec3 pos = getContraptionOffset(partialTicks, ridingEntity); - for (PoseStack stack : matrixStacks) - stack.translate(pos.x, pos.y, pos.z); + matrixStack.translate(pos.x, pos.y, pos.z); } // Minecarts do not always render at their exact location, so the contraption // has to adjust aswell @OnlyIn(Dist.CLIENT) - private void repositionOnCart(float partialTicks, PoseStack[] matrixStacks, Entity ridingEntity) { + private void repositionOnCart(PoseStack matrixStack, float partialTicks, Entity ridingEntity) { Vec3 cartPos = getCartOffset(partialTicks, ridingEntity); if (cartPos == Vec3.ZERO) return; - for (PoseStack stack : matrixStacks) - stack.translate(cartPos.x, cartPos.y, cartPos.z); + matrixStack.translate(cartPos.x, cartPos.y, cartPos.z); } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java index f088e9236..845dc6caa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java @@ -176,7 +176,7 @@ public class GantryContraptionEntity extends AbstractContraptionEntity { } @Override - public void doLocalTransforms(float partialTicks, PoseStack[] matrixStacks) { } + public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) { } public void updateClientMotion() { float modifier = movementAxis.getAxisDirection() diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java index a685a2553..1b6ab8520 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java @@ -34,7 +34,7 @@ public class ContraptionMatrices { this.viewProjection.pushPose(); transform(this.viewProjection, viewProjection); model.pushPose(); - entity.doLocalTransforms(partialTicks, new PoseStack[] { model }); + entity.applyLocalTransforms(model, partialTicks); modelViewProjection.pushPose(); transform(modelViewProjection, viewProjection); diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java index 8e9c113c8..8ee5ef9bb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java @@ -33,52 +33,67 @@ public class BlazeBurnerRenderer extends SafeTileEntityRenderer 0.125f; - HeatLevel heatLevel = BlazeBurnerBlock.getHeatLevelOf(blockState); float time = AnimationTickHolder.getRenderTime(level); float renderTick = time + (hashCode % 13) * 16f; float offsetMult = heatLevel.isAtLeast(HeatLevel.FADING) ? 64 : 16; float offset = Mth.sin((float) ((renderTick / 16f) % (2 * Math.PI))) / offsetMult; float offset1 = Mth.sin((float) ((renderTick / 16f + Math.PI) % (2 * Math.PI))) / offsetMult; float offset2 = Mth.sin((float) ((renderTick / 16f + Math.PI / 2) % (2 * Math.PI))) / offsetMult; + float headY = offset - (animation * .75f); - VertexConsumer solid = buffer.getBuffer(RenderType.solid()); - VertexConsumer cutout = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer solid = bufferSource.getBuffer(RenderType.solid()); + VertexConsumer cutout = bufferSource.getBuffer(RenderType.cutoutMipped()); ms.pushPose(); - if (modelTransform == null && heatLevel.isAtLeast(HeatLevel.FADING) && blockAbove) { + if (canDrawFlame && blockAbove) { SpriteShiftEntry spriteShift = heatLevel == HeatLevel.SEETHING ? AllSpriteShifts.SUPER_BURNER_FLAME : AllSpriteShifts.BURNER_FLAME; @@ -102,68 +117,87 @@ public class BlazeBurnerRenderer extends SafeTileEntityRenderer implements BlockEntityRenderer { - @Override - public final void render(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, + public final void render(T te, float partialTicks, PoseStack ms, MultiBufferSource bufferSource, int light, int overlay) { if (isInvalid(te)) return; - renderSafe(te, partialTicks, ms, buffer, light, overlay); + renderSafe(te, partialTicks, ms, bufferSource, light, overlay); } - protected abstract void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, + protected abstract void renderSafe(T te, float partialTicks, PoseStack ms, MultiBufferSource bufferSource, int light, int overlay); public boolean isInvalid(T te) { From b5fce16f0b5275107a4260205fc87877fb7b3d82 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 10 Sep 2022 14:01:28 +0200 Subject: [PATCH 32/32] Oops, no applied - Update ae2 compat recipes --- .../compat/ae2/milling/certus_quartz.json | 4 ++-- .../compat/ae2/milling/ender_pearl.json | 4 ++-- .../compat/ae2/milling/fluix_crystal.json | 6 +++--- .../recipes/compat/ae2/milling/gold.json | 21 ------------------- .../recipes/compat/ae2/milling/iron.json | 21 ------------------- .../compat/ae2/milling/nether_quartz.json | 21 ------------------- .../compat/ae2/milling/sky_stone_block.json | 6 +++--- .../compat/ae2/mixing/fluix_crystal.json | 6 +++--- 8 files changed, 13 insertions(+), 76 deletions(-) delete mode 100644 src/main/resources/data/create/recipes/compat/ae2/milling/gold.json delete mode 100644 src/main/resources/data/create/recipes/compat/ae2/milling/iron.json delete mode 100644 src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json b/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json index 6f8022a4a..4e3003c1c 100644 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json +++ b/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json @@ -2,7 +2,7 @@ "conditions": [ { "type": "forge:mod_loaded", - "modid": "appliedenergistics2" + "modid": "ae2" } ], "type": "create:milling", @@ -13,7 +13,7 @@ ], "results": [ { - "item": "appliedenergistics2:certus_quartz_dust", + "item": "ae2:certus_quartz_dust", "count": 1 } ], diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json b/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json index abab859dd..bedd57a27 100644 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json +++ b/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json @@ -2,7 +2,7 @@ "conditions": [ { "type": "forge:mod_loaded", - "modid": "appliedenergistics2" + "modid": "ae2" } ], "type": "create:milling", @@ -13,7 +13,7 @@ ], "results": [ { - "item": "appliedenergistics2:ender_dust", + "item": "ae2:ender_dust", "count": 1 } ], diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json b/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json index a1571b58f..5c414e995 100644 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json +++ b/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json @@ -2,18 +2,18 @@ "conditions": [ { "type": "forge:mod_loaded", - "modid": "appliedenergistics2" + "modid": "ae2" } ], "type": "create:milling", "ingredients": [ { - "item": "appliedenergistics2:fluix_crystal" + "item": "ae2:fluix_crystal" } ], "results": [ { - "item": "appliedenergistics2:fluix_dust", + "item": "ae2:fluix_dust", "count": 1 } ], diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/gold.json b/src/main/resources/data/create/recipes/compat/ae2/milling/gold.json deleted file mode 100644 index bfbc249f2..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/gold.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ingots/gold" - } - ], - "results": [ - { - "item": "appliedenergistics2:gold_dust", - "count": 1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/iron.json b/src/main/resources/data/create/recipes/compat/ae2/milling/iron.json deleted file mode 100644 index a7f0e56e5..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/iron.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ingots/iron" - } - ], - "results": [ - { - "item": "appliedenergistics2:iron_dust", - "count": 1 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json b/src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json deleted file mode 100644 index e9b4aa015..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:gems/quartz" - } - ], - "results": [ - { - "item": "appliedenergistics2:nether_quartz_dust", - "count": 1 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json b/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json index 145402282..72a93999e 100644 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json +++ b/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json @@ -2,18 +2,18 @@ "conditions": [ { "type": "forge:mod_loaded", - "modid": "appliedenergistics2" + "modid": "ae2" } ], "type": "create:milling", "ingredients": [ { - "item": "appliedenergistics2:sky_stone_block" + "item": "ae2:sky_stone_block" } ], "results": [ { - "item": "appliedenergistics2:sky_dust", + "item": "ae2:sky_dust", "count": 1 } ], diff --git a/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json b/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json index c3cef0d65..a3d6de188 100644 --- a/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json +++ b/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json @@ -2,7 +2,7 @@ "conditions": [ { "type": "forge:mod_loaded", - "modid": "appliedenergistics2" + "modid": "ae2" } ], "type": "create:mixing", @@ -16,7 +16,7 @@ "amount": 250 }, { - "item": "appliedenergistics2:charged_certus_quartz_crystal" + "item": "ae2:charged_certus_quartz_crystal" }, { "tag": "forge:gems/quartz" @@ -24,7 +24,7 @@ ], "results": [ { - "item": "appliedenergistics2:fluix_crystal", + "item": "ae2:fluix_crystal", "count": 2 } ],